Аутентификация
Все запросы к API требуют API-ключ в заголовке Authorization.
# HTTP заголовок Authorization: Bearer YOUR_API_KEY Content-Type: application/json
API-ключ доступен в панели управления на metamode.site/dashboard после регистрации. Базовая версия (100 req/day) — бесплатно.
Быстрый старт
Минимальный запрос для анализа текста:
curl -X POST https://api.metamode.site/v2/analyze \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "text": "Ваш текст для анализа", "lang": "ru", "features": ["keywords", "entities", "sentiment"] }'
Пример ответа:
{
"id": "req_01HX9...",
"status": "completed",
"lang": "ru",
"keywords": [
{ "text": "анализ", "score": 0.94 },
{ "text": "данные", "score": 0.87 }
],
"entities": [],
"sentiment": { "label": "neutral", "score": 0.72 },
"processing_ms": 1243
}
API-эндпоинты
POST
/v2/analyze
Анализ текста или URL. Поддерживает все функции META.
POST
/v2/batch
Batch-обработка до 100 документов в одном запросе.
GET
/v2/jobs/{job_id}
Получение результата асинхронного задания.
POST
/v2/webhooks
Создание нового Webhook-эндпоинта.
GET
/v2/webhooks
Список зарегистрированных Webhook-эндпоинтов.
DEL
/v2/webhooks/{id}
Удаление Webhook-эндпоинта.
GET
/v2/usage
Статистика использования API за период.
Параметры запроса /analyze
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
text | string | да* | Текст для анализа (макс. 500 000 символов) |
url | string | да* | URL страницы для анализа (альтернатива text) |
lang | string | нет | Язык текста (auto-detect если не указан) |
features | array | нет | Список функций: keywords, entities, sentiment, topics, duplicates, readability |
max_keywords | integer | нет | Макс. количество ключевых слов (1–50, по умолч. 10) |
webhook_url | string | нет | URL для отправки результата по завершении |
async | boolean | нет | Асинхронный режим для больших документов |
* Обязателен один из параметров: text или url.
Webhooks
Webhooks позволяют META отправлять результаты анализа на ваш сервер автоматически.
Регистрация Webhook:
curl -X POST https://api.metamode.site/v2/webhooks \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "url": "https://your-server.com/meta-webhook", "events": ["analysis.completed", "batch.completed"], "secret": "your_webhook_secret" }'
Структура Webhook Payload
{
"event": "analysis.completed",
"timestamp": "2024-11-15T12:34:56Z",
"job_id": "job_01HX9...",
"data": {
// полный результат анализа
}
}
Поля payload:
eventТип события: analysis.completed, batch.completed, analysis.failed
timestampISO 8601 время отправки
job_idУникальный ID задания
dataОбъект с результатами анализа
Верификация подписи Webhook
Каждый запрос содержит заголовок X-Meta-Signature — HMAC-SHA256 подпись body с вашим секретом:
# Python — проверка подписи import hmac, hashlib def verify_webhook(payload_body, signature, secret): expected = hmac.new( secret.encode(), payload_body, hashlib.sha256 ).hexdigest() return hmac.compare_digest( f"sha256={expected}", signature )
SDK
# Установка
pip install meta-sdk
from meta_sdk import MetaClient client = MetaClient(api_key="YOUR_API_KEY") # Анализ текста result = client.analyze( text="Текст для анализа", lang="ru", features=["keywords", "entities", "sentiment"] ) print(result.keywords) print(result.sentiment) # Batch-анализ batch = client.batch([ {"url": "https://example.com/page1"}, {"url": "https://example.com/page2"}, ]) # Webhook client.webhooks.create( url="https://your.server/webhook", events=["analysis.completed"], secret="your_secret" )
# npm / yarn
npm install @metamode/sdk
import { MetaClient } from '@metamode/sdk' const client = new MetaClient({ apiKey: 'YOUR_API_KEY' }) // Анализ текста const result = await client.analyze({ text: 'Текст для анализа', lang: 'ru', features: ['keywords', 'entities'] }) console.log(result.keywords) // Batch const batch = await client.batch([ { url: 'https://example.com/page1' }, { url: 'https://example.com/page2' }, ]) // TypeScript типы включены
Rate limits
При превышении лимитов возвращается код
429 Too Many Requests. Заголовок Retry-After указывает время ожидания в секундах.