ГлавнаяАлгоритмыО проекте КейсыРазработчикамБлог ПоддержкаУстановить

Для разработчиков

REST API, Webhooks и SDK для интеграции META в ваши продукты и пайплайны.

Base URL: api.metamode.site/v2 JSON • REST • HTTPS

Аутентификация

Все запросы к 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

ПараметрТипОбяз.Описание
textstringда*Текст для анализа (макс. 500 000 символов)
urlstringда*URL страницы для анализа (альтернатива text)
langstringнетЯзык текста (auto-detect если не указан)
featuresarrayнетСписок функций: keywords, entities, sentiment, topics, duplicates, readability
max_keywordsintegerнетМакс. количество ключевых слов (1–50, по умолч. 10)
webhook_urlstringнетURL для отправки результата по завершении
asyncbooleanнетАсинхронный режим для больших документов

* Обязателен один из параметров: 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

Тариф
Запросов / день
Batch размер
Req/sec
Бесплатный
100
до 10
1
Профессиональный
Без лимита
до 100
10
Корпоративный
Без лимита
до 1 000
Договорной
При превышении лимитов возвращается код 429 Too Many Requests. Заголовок Retry-After указывает время ожидания в секундах.