Начало работы
Документация LLMTOKENAPI
Подключайте поиск в интернете, тексты страниц и языковые модели через один API. Здесь собраны рабочие примеры, scopes и форматы ответов.Запрос
{
"query": "Документация LLMTOKENAPI",
"limit": 5,
"mode": "balanced"
}Ответ
{
"data": [{
"title": "Документация LLMTOKENAPI",
"url": "https://llmtokenapi.ru/docs"
}]
}Начало работы
Первый запрос за три шага
Создайте ключ
Откройте кабинет, создайте ключ и выберите минимально необходимые scopes.
Задайте вопрос
Опишите, что нужно найти. Для поиска достаточно scope search:read.
Отправьте запрос
Передайте ключ в Bearer-заголовке. Получите ссылки и фрагменты для контекста агента.
curl https://api.llmtokenapi.ru/v1/search \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"Документация LLMTOKENAPI","limit":5,"mode":"balanced"}'Доступ
Авторизация и scopes
API-ключ начинается с llmt_. Полное значение показывается только один раз. Обычно передавайте его в Authorization: Bearer; Anthropic-совместимый endpoint также принимает x-api-key. Не помещайте ключ в браузерный код, URL или публичный репозиторий.
llm:readТекстовые модели и изображенияembeddings:readВекторные представленияaudio:readТранскрипция и синтез речиsearch:readПоискweb:readПолучение и обработка страницjobs:writeСоздание и отмена заданийjobs:readСтатусы и результатыbilling:readПрайс организацииAPI Reference
Все публичные методы
Выберите метод для своей задачи. Каталог моделей и цены доступны без ключа; для остальных методов нужен API-ключ с указанными правами доступа.
Каталог
GET/v1/modelsВсе активные модели и их типыGET/v1/pricesПубличный прайс standard или at_costGET/v1/account/pricesЭффективный прайс организацииМодели
POST/v1/responsesResponses API, tools и streamingPOST/v1/chat/completionsOpenAI-совместимые chat completionsPOST/v1/messagesAnthropic Messages для Claude CodePOST/v1/images/generationsГенерация изображенийPOST/v1/embeddingsВекторные представления текстаPOST/v1/audio/transcriptionsРаспознавание аудиоPOST/v1/audio/speechСинтез речиИнтернет-поиск
POST/v1/searchПоисковая выдача для приложений и агентовPOST/v1/answerГотовый ответ с проверяемыми цитатамиPOST/v1/contentsСодержимое нескольких страницPOST/v1/fetchБезопасное получение URLPOST/v1/scrapeИзвлечение контента страницыPOST/v1/mapАсинхронная карта сайтаPOST/v1/crawlАсинхронный обход сайтаAgent
POST/v1/agent/runsЗапустить многошаговое исследованиеGET/v1/agent/runsСписок запусковGET/v1/agent/runs/{id}Статус и результатGET/v1/agent/runs/{id}/eventsСобытия и SSE replayPOST/v1/agent/runs/{id}/cancelОтменить запускDELETE/v1/agent/runs/{id}Удалить запускWeb Intelligence
POST/v1/web-intelligence/jobsПолучить структурированные web-данныеPOST/v1/web-intelligence/templatesСохранить или запланировать сценарийGET/v1/web-intelligence/templates/{id}/runsИстория запусков шаблонаКаталог
GET/v1/models
Возвращает активные публичные ID. Поле type принимает llm, image, embedding, audio_transcription или audio_speech.
Без авторизации
Пример запроса
curl https://api.llmtokenapi.ru/v1/modelsПример ответа
{
"object": "list",
"data": [
{"id": "YOUR_MODEL_ID", "object": "model", "owned_by": "llmtokenapi", "name": "Model name", "type": "llm"}
]
}Каталог
GET/v1/prices
Возвращает опубликованный прайс в рублях. Без параметра используется standard. Передайте billing_plan=at_cost, чтобы получить полный публичный прайс тарифа по себестоимости. Web-операции тарифицируются за 1000 запросов.
Без авторизации
Параметры
| Параметр | Тип | Описание |
|---|---|---|
billing_plan | standard | at_cost | Публичный тариф. По умолчанию standard. |
Пример запроса
curl "https://api.llmtokenapi.ru/v1/prices?billing_plan=at_cost"Каталог
GET/v1/account/prices
Возвращает эффективный прайс организации с учётом её тарифа. Используйте этот метод в кабинете и перед расчётом расходов.
Scope: billing:read
Пример запроса
curl https://api.llmtokenapi.ru/v1/account/prices \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY"Модели
POST/v1/responses
Основной метод для новых LLM-интеграций. Поддерживает строковый или составной input, function tools, структурированный текст и streaming.
Scope: llm:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
modelобязательный | string | Публичный ID из GET /v1/models. |
stream | boolean | Включает потоковый ответ. По умолчанию false. |
inputобязательный | string | array | Текст или массив входных элементов. |
max_output_tokens | integer | Максимум выходных токенов, до 1 000 000. |
tools | array | Описание доступных модели инструментов. |
text | object | Настройки текстового и структурированного ответа. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/responses \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"input": "Назови три риска при запуске API-сервиса",
"max_output_tokens": 300
}'Модели
POST/v1/chat/completions
Совместимый метод для существующих OpenAI SDK и приложений, работающих с массивом messages.
Scope: llm:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
modelобязательный | string | Публичный ID из GET /v1/models. |
stream | boolean | Включает потоковый ответ. По умолчанию false. |
messagesобязательный | array | Сообщения с ролями system, developer, user, assistant или tool. |
temperature | number | Температура от 0 до 2. |
max_tokens | integer | Максимум выходных токенов, до 1 000 000. |
tools | array | Function tools в OpenAI-совместимом формате. |
response_format | object | Настройки JSON или JSON Schema ответа. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/chat/completions \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"messages": [
{"role": "system", "content": "Отвечай кратко"},
{"role": "user", "content": "Что такое идемпотентность?"}
]
}'Coding agents
POST/v1/messages
Anthropic-совместимый Messages API для Claude Code. Поддерживает system, streaming, tool_use/tool_result и авторизацию через x-api-key или Bearer.
Scope: llm:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
modelобязательный | string | Публичный ID из GET /v1/models. |
stream | boolean | Включает потоковый ответ. По умолчанию false. |
messagesобязательный | array | Сообщения user и assistant в Anthropic-формате. |
max_tokensобязательный | integer | Максимум выходных токенов. |
system | string | array | Системная инструкция. |
tools | array | Инструменты с name и input_schema. |
Для предварительной оценки контекста доступен POST /v1/messages/count_tokens. Этот метод не запускает модель.
Пример запроса
curl https://api.llmtokenapi.ru/v1/messages \
-H "x-api-key: $LLMTOKENAPI_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai-deepseek-v4-flash-0731",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Проверь проект"}]
}'Изображения
POST/v1/images/generations
Генерирует до 4 изображений за запрос. Ответ провайдера возвращается в совместимом формате, включая b64_json, если модель поддерживает такой результат.
Scope: llm:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
modelобязательный | string | ID image-модели из GET /v1/models. |
promptобязательный | string | Промпт длиной до 8000 символов. |
n | integer | Количество изображений от 1 до 4. По умолчанию 1. |
quality | low | medium | high | Качество. По умолчанию medium. |
size | 1024x1024 | 1024x1536 | 1536x1024 | Размер результата. |
output_format | png | webp | jpeg | Формат файла. |
output_compression | integer | Сжатие от 0 до 100, если формат его поддерживает. |
background | auto | opaque | transparent | Режим фона. |
moderation | auto | low | Режим проверки безопасности. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/images/generations \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Минималистичный светящийся routing core на чёрном фоне",
"quality": "medium",
"size": "1024x1024",
"output_format": "webp"
}'Embeddings
POST/v1/embeddings
Создаёт embeddings для строки, массива строк или массивов token ID. Списание идёт только по входным токенам.
Scope: embeddings:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
modelобязательный | string | ID embedding-модели из GET /v1/models. |
inputобязательный | string | string[] | number[] | number[][] | Один или несколько входов. |
encoding_format | float | base64 | Формат вектора. По умолчанию float. |
dimensions | integer | Размерность, если модель поддерживает настройку. |
user | string | Стабильный идентификатор конечного пользователя. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/embeddings \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_EMBEDDING_MODEL_ID",
"input": ["Первый документ", "Второй документ"],
"encoding_format": "float"
}'Аудио
POST/v1/audio/transcriptions
Распознаёт речь из файла, переданного в multipart/form-data. Формат, размер и длительность проверяются до резервирования стоимости.
Scope: audio:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
modelобязательный | string | ID модели типа audio_transcription. |
fileобязательный | file | FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV или WebM до 10 МБ и 4 часов. |
language | string | Язык в формате ISO-639-1. |
prompt | string | Подсказка модели до 4096 символов. |
response_format | json | text | srt | verbose_json | vtt | diarized_json | Формат ответа. По умолчанию json. |
temperature | number | От 0 до 1. |
stream | boolean | Потоковый ответ, если его поддерживает модель. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/audio/transcriptions \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-F "model=YOUR_TRANSCRIPTION_MODEL_ID" \
-F "file=@./recording.mp3" \
-F "language=ru" \
-F "response_format=json"Аудио
POST/v1/audio/speech
Синтезирует речь и возвращает бинарный аудиопоток. Списание рассчитывается по числу входных символов.
Scope: audio:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
modelобязательный | string | ID модели типа audio_speech. |
inputобязательный | string | Текст до 4096 символов. |
voiceобязательный | string | {id} | Встроенный голос или ID пользовательского голоса. |
instructions | string | Инструкции по манере речи, если поддерживаются. |
response_format | mp3 | opus | aac | flac | wav | pcm | Формат аудио. По умолчанию mp3. |
speed | number | Скорость от 0.25 до 4. |
stream_format | audio | sse | Бинарный поток или SSE. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/audio/speech \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_SPEECH_MODEL_ID",
"input": "Добро пожаловать в LLMTOKENAPI",
"voice": "alloy",
"response_format": "mp3"
}' --output speech.mp3Пробный баланс API
GET/v1/account/trial-balance
После подтверждения почты рабочая область получает 150 ₽ на 30 дней для проверки моделей, изображений, embeddings, аудио, баз знаний и Web API. Привязка карты не нужна; пробный баланс расходуется раньше основного баланса и не увеличивается при создании дополнительных ключей.
Scope: billing:read
Пример запроса
curl https://api.llmtokenapi.ru/v1/account/trial-balance \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY"Пример ответа
{
"object": "api.trial_balance",
"grantedKopecks": 15000,
"usedKopecks": 180,
"reservedKopecks": 0,
"remainingKopecks": 14820,
"expiresAt": "2026-09-29T12:00:00.000Z",
"active": true
}Интернет-поиск
POST/v1/search
Возвращает готовую поисковую выдачу для приложения или AI-агента: заголовок, URL, фрагмент и оценку релевантности. Единый пробный баланс API может покрыть поиск, чтение полного текста страниц и смысловую пересортировку.
Scope: search:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
queryобязательный | string | Поисковый запрос до 2000 символов. |
mode | fast | balanced | deep | Глубина поиска. По умолчанию balanced. |
limit | integer | От 1 до 100 результатов. По умолчанию 10. |
language | string | Код или название языка. |
country | string | Двухбуквенный код страны. |
timeRange | day | week | month | year | Ограничение по времени. |
includeDomains | string[] | Разрешённые домены, до 50. |
excludeDomains | string[] | Исключённые домены, до 50. |
rerank | boolean | Включить смысловую сортировку результатов. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/search \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "новости российского рынка LLM API",
"limit": 10,
"language": "ru"
}'Пример ответа
{
"object": "search.results",
"data": [{"title": "...", "url": "https://...", "snippet": "...", "score": 0.82}],
"usage": {"requests": 1, "results": 1, "charged_kopecks": 0, "list_price_kopecks": 15, "promotional_kopecks": 15, "trial_applied": true, "web_trial_remaining_kopecks": 14985}
}Ответ с цитатами
POST/v1/answer
Ищет актуальные источники и формирует готовый ответ. В citations попадают только использованные страницы; при недостатке свидетельств сервис прямо отказывается от предположения и возвращает пустой массив цитат.
Scope: search:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
queryобязательный | string | Вопрос до 2000 символов. |
stream | boolean | Вернуть SSE-фрагменты content и финальный фрагмент citations. |
text | boolean | Добавить к цитатам точные подтверждающие фрагменты, использованные при ответе. |
systemPrompt | string | Дополнительная инструкция по стилю ответа до 8000 символов. Она не может отключить привязку к источникам. |
userLocation | string | Регион пользователя для локального контекста. |
outputSchema | JSON Schema | Структура поля answer. Цитаты всегда возвращаются отдельно. |
При stream: true ответ приходит как SSE: текст — во фрагментах content, использованные источники — в финальном citations. Структурированный объект сначала проверяется целиком и затем отправляется одним фрагментом content.
Пример запроса
curl https://api.llmtokenapi.ru/v1/answer \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "Какие ограничения есть у Responses API?",
"text": false
}'Пример ответа
{
"answer": "Responses API поддерживает потоковые ответы и вызов инструментов.",
"citations": [{"id": "https://example.com/docs", "url": "https://example.com/docs", "title": "Документация API"}],
"requestId": "...",
"usage": {"searches": 1, "extracted_pages": 6, "input_tokens": 4200, "output_tokens": 180, "charged_kopecks": 12}
}Web API
POST/v1/contents
Получает чистое содержимое до 100 публичных URL, включая PDF. Умеет возвращать проверяемые фрагменты, AI-сводки, целевые вложенные страницы и управлять свежестью. Успешные страницы находятся в results, а statuses содержит результат каждого исходного URL. Оплата начисляется за успешно обработанные страницы и фактические токены только успешно подготовленных сводок.
Scope: web:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
urlsобязательный | URL[] | От 1 до 100 публичных HTTP или HTTPS URL. |
text | boolean | object | Возвращать полный текст; maxCharacters ограничивает размер каждой страницы. |
highlights | boolean | object | Вернуть проверяемые фрагменты по query и их scores. dynamic распределяет общий контекст между страницами и требует заголовок LLMTOKENAPI-Beta: dynamic-highlights-2026-08-28. |
summary | boolean | object | AI-сводка по каждой странице; query задаёт фокус, schema — безопасную JSON Schema Draft 7 для структурированного результата. |
extras.links | boolean | integer | Добавить все либо ограниченное число нормализованных HTTP/HTTPS-ссылок страницы. |
maxAgeHours | integer | 0 — всегда обновить, -1 — только кэш, 1–720 — допустимый возраст сохранённой версии. |
livecrawlTimeout | integer | Таймаут получения одной страницы до 90000 мс. |
subpages | integer | До 100 вложенных страниц того же сайта. |
subpageTarget | string | string[] | Слова для приоритизации нужных вложенных страниц. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/contents \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://example.com/article", "https://example.com/docs"],
"text": {"maxCharacters": 100000},
"highlights": {"query": "ограничения API", "maxCharacters": 4000},
"summary": {"query": "Кратко изложи возможности и ограничения"},
"extras": {"links": true},
"maxAgeHours": 24,
"subpages": 3,
"subpageTarget": ["docs", "pricing"]
}'Пример ответа
{
"object": "contents.results",
"results": [{"url": "https://example.com/article", "title": "...", "text": "...", "highlights": ["..."], "highlightScores": [0.91], "summary": "...", "subpages": []}],
"statuses": [{"id": "https://example.com/article", "status": "success", "source": "cached"}],
"usage": {"successful_pages": 1, "summary_pages": 1, "summary_input_tokens": 840, "summary_output_tokens": 92}
}Web Intelligence
POST/v1/web-intelligence/jobs
Принимает бизнес-вопрос, URL или домен, безопасную JSON Schema, фильтры свежести и верхний бюджет. Возвращает асинхронное research-задание, которое собирает источники и проверяет итоговый JSON или таблицу по схеме.
Scope: research:write
Параметры
| Параметр | Тип | Описание |
|---|---|---|
questionобязательный | string | Вопрос или инструкция до 20 000 символов. |
urls | URL[] | До 100 исходных публичных URL. Нельзя передавать вместе с domain. |
domain | URL | Один сайт как область исследования. |
outputSchemaобязательный | JSON Schema | Безопасное подмножество JSON Schema Draft 7, до 500 узлов. |
outputFormat | json | table | Форма результата. По умолчанию json. |
filters | object | Тема, язык, страна, даты, разрешённые и исключённые домены или пути. |
maxAgeHours | integer | Свежесть от -1 до 8760 часов. По умолчанию 168. |
maxSources | integer | От 1 до 100 источников. |
maxSpendKopecksобязательный | integer | Жёсткий верхний бюджет в целых копейках. |
webhookEndpointId | UUID | Сохранённый webhook для события завершения. |
Idempotency-Key обязателен. Статус доступен по GET /v1/web-intelligence/jobs/{id}; готовый structured result содержит использованные источники.
Пример запроса
curl https://api.llmtokenapi.ru/v1/web-intelligence/jobs \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: competitor-prices-2026-08-31" \
-d '{
"question": "Собери актуальные тарифы API для LLM и ссылки на страницы цен",
"domain": "https://example.com",
"outputFormat": "table",
"outputSchema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"plan": {"type": "string"},
"price": {"type": "string"},
"sourceUrl": {"type": "string"}
},
"required": ["plan", "price", "sourceUrl"]
}
},
"filters": {"language": "ru", "includePaths": ["/pricing/**"]},
"maxAgeHours": 24,
"maxSources": 20,
"maxSpendKopecks": 500
}'Пример ответа
{
"id": "2f35e4dd-3d29-4e9d-a979-59581918fd8e",
"type": "research",
"status": "queued",
"progress": {"completed": 0, "total": null}
}Web Intelligence
POST/v1/web-intelligence/templates
Сохраняет повторяемый сценарий. intervalMinutes включает запуск каждые 15 минут или реже, null оставляет ручной режим; runImmediately создаёт первый job в том же запросе.
Scope: research:write
Параметры
| Параметр | Тип | Описание |
|---|---|---|
nameобязательный | string | Имя шаблона до 200 символов. |
intervalMinutes | integer | null | Интервал 15–43 200 минут либо ручной режим. |
runImmediately | boolean | Сразу создать первый запуск. |
question, outputSchema, filtersобязательный | object | Те же параметры, что у разового задания. |
Шаблон можно читать, менять, ставить на паузу и удалять. Ручной запуск: POST /v1/web-intelligence/templates/{id}/runs; история: GET того же маршрута.
Пример запроса
curl https://api.llmtokenapi.ru/v1/web-intelligence/templates \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Ежедневные цены конкурентов",
"question": "Собери тарифы и отметь изменения",
"urls": ["https://example.com/pricing"],
"outputSchema": {"type": "array", "items": {"type": "object"}},
"outputFormat": "table",
"maxSpendKopecks": 500,
"intervalMinutes": 1440,
"runImmediately": true
}'Website Knowledge Sync
POST/v1/knowledge-bases/{id}/sources
Подключает публичный сайт к существующей базе знаний. Регулярно обновляет разрешённые страницы. Поиск остаётся доступен во время обновления; неизменившийся контент не требует повторной оплаты индексации.
Scope: knowledge:write
Параметры
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | UUID | ID существующей базы знаний. |
urlобязательный | URL | Корневой публичный HTTP или HTTPS URL. |
includePaths / excludePaths | string[] | До 100 правил путей каждого типа. |
maxPages | integer | От 1 до 10 000 страниц. |
maxDepth | integer | Глубина обхода от 0 до 20. |
intervalMinutes | integer | null | Период 15–43 200 минут либо только ручной запуск. |
maxSpendKopecksобязательный | integer | Верхний бюджет одного обхода и индексации в копейках. |
syncNow | boolean | Запустить первый обход сразу. По умолчанию true. |
После готовности используйте существующие /search и /answer. Цитаты ответа содержат URL страницы сайта. Источники можно читать, менять, ставить на паузу или удалять.
Пример запроса
curl https://api.llmtokenapi.ru/v1/knowledge-bases/BASE_ID/sources \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: docs-sync-example-001" \
-d '{
"url": "https://docs.example.com",
"name": "Документация продукта",
"includePaths": ["/guides/**", "/api/**"],
"excludePaths": ["/archive/**"],
"maxPages": 500,
"maxDepth": 8,
"intervalMinutes": 1440,
"maxSpendKopecks": 1000,
"syncNow": true
}'Website Knowledge Sync
POST/v1/knowledge-bases/{id}/sources/{sourceId}/sync
Запускает обход вручную. Один и тот же Idempotency-Key безопасно возвращает созданное ранее задание без второго резервирования.
Scope: knowledge:write
Параметры
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | UUID | ID базы знаний. |
sourceIdобязательный | UUID | ID подключённого сайта. |
Пример запроса
curl -X POST https://api.llmtokenapi.ru/v1/knowledge-bases/BASE_ID/sources/SOURCE_ID/sync \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Idempotency-Key: docs-sync-manual-002"Пример ответа
{
"id": "2f35e4dd-3d29-4e9d-a979-59581918fd8e",
"type": "crawl",
"status": "queued",
"createdAt": "2026-08-27T10:00:00.000Z",
"expiresAt": "2026-08-28T10:00:00.000Z",
"progress": { "completed": 0, "total": null },
"error": null
}Agent API
POST/v1/agent/runs
Запускает асинхронное многошаговое web-исследование, сбор списка или обогащение входных строк. Результат содержит только проверяемые публичные источники и фактическую стоимость.
Scope: research:write
Параметры
| Параметр | Тип | Описание |
|---|---|---|
queryобязательный | string | Задача агента до 20 000 символов. |
effort | minimal | low | medium | high | xhigh | auto | max | Глубина работы. По умолчанию auto. |
input.data | object[] | До 1000 исходных строк для проверки или обогащения. |
input.exclusion | object[] | До 1000 сущностей, которые нельзя возвращать повторно. |
outputSchema | JSON Schema | Строгая структура итогового результата. |
previousRunId | UUID | Продолжить завершённый запуск этой же рабочей области. |
maxSources | integer | От 3 до 100 источников. |
maxSpendKopecks | integer | Верхний бюджет запуска в копейках. |
Повтор с тем же Idempotency-Key не создаёт второе задание или списание. Ссылка на события возвращается в заголовке Link.
Пример запроса
curl https://api.llmtokenapi.ru/v1/agent/runs \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: market-research-001" \
-d '{
"query": "Сравни российские сервисы LLM API и верни таблицу с источниками",
"effort": "medium",
"maxSources": 20,
"maxSpendKopecks": 500
}'Пример ответа
{
"id": "...",
"object": "agent_run",
"status": "queued",
"stopReason": null,
"output": {"text": "", "structured": null, "grounding": []},
"usage": {"searches": 0, "extractedPages": 0, "iterations": 0},
"costKopecks": 0
}Agent API
GET/v1/agent/runs
Возвращает запуски текущей рабочей области с cursor pagination.
Scope: research:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
limit | integer | От 1 до 100, по умолчанию 20. |
cursor | UUID | Курсор из nextCursor предыдущей страницы. |
Пример запроса
curl "https://api.llmtokenapi.ru/v1/agent/runs?limit=20" \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY"Agent API
GET/v1/agent/runs/{id}
Возвращает исходный запрос, текущий статус, текстовый или структурированный результат, использованные источники, usage и стоимость.
Scope: research:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | UUID | ID запуска. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/agent/runs/RUN_ID \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY"Agent API
GET/v1/agent/runs/{id}/events
Без SSE возвращает страницу сохранённых lifecycle-событий. С Accept: text/event-stream воспроизводит историю и продолжает поток до завершения запуска.
Scope: research:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | UUID | ID запуска. |
cursor | integer | Последовательность последнего принятого события. |
Last-Event-ID | header | Возобновить SSE после последнего принятого события. |
Пример запроса
curl -N https://api.llmtokenapi.ru/v1/agent/runs/RUN_ID/events \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Accept: text/event-stream" \
-H "Last-Event-ID: 0"Agent API
POST/v1/agent/runs/{id}/cancel
Кооперативно отменяет активный запуск. До начала работы резерв освобождается полностью; после начала оплачиваются только уже выполненные операции.
Scope: research:write
Параметры
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | UUID | ID запуска. |
Пример запроса
curl -X POST https://api.llmtokenapi.ru/v1/agent/runs/RUN_ID/cancel \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY"Agent API
DELETE/v1/agent/runs/{id}
Удаляет только завершённый, отменённый или ошибочный запуск вместе с сохранённым результатом.
Scope: research:write
Параметры
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | UUID | ID конечного запуска. |
Пример запроса
curl -X DELETE https://api.llmtokenapi.ru/v1/agent/runs/RUN_ID \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY"Web API
POST/v1/fetch
Загружает URL после проверки DNS, редиректов и конечного IP. Private, loopback, link-local и metadata-адреса блокируются.
Scope: web:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
urlобязательный | URL | Публичный HTTP или HTTPS URL. |
timeoutMs | integer | Таймаут от 1000 до 60000 мс. По умолчанию 20000. |
maxBytes | integer | Лимит ответа от 1024 до 10 000 000 байт. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/fetch \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/article",
"timeoutMs": 20000,
"maxBytes": 2000000
}'Web API
POST/v1/scrape
Получает и очищает страницу, затем возвращает выбранные форматы. Для страниц с JavaScript можно включить browser.
Scope: web:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
urlобязательный | URL | Публичный HTTP или HTTPS URL. |
formats | array | markdown, html, links и metadata. По умолчанию markdown. |
waitForMs | integer | Ожидание рендера от 0 до 15000 мс. |
browser | boolean | Разрешает браузерный маршрут. По умолчанию false. |
timeoutMs | integer | Таймаут получения страницы. |
maxBytes | integer | Максимальный размер ответа. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/scrape \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/article",
"formats": ["markdown", "links", "metadata"],
"browser": false
}'Фоновое задание
POST/v1/map
Собирает URL сайта асинхронно. Стоимость одной операции резервируется при запуске; ответ 202 содержит Location со ссылкой на статус задания.
Scope: jobs:write
Параметры
| Параметр | Тип | Описание |
|---|---|---|
urlобязательный | URL | Стартовый URL. |
limit | integer | До 10 000 URL. По умолчанию 500. |
search | string | Дополнительный фильтр до 500 символов. |
includeSubdomains | boolean | Включать поддомены. По умолчанию false. |
webhookUrl | URL | HTTPS URL для уведомления о завершении. |
Заголовок Idempotency-Key обязателен. Повторите запрос с тем же ключом, чтобы безопасно восстановить уже созданное задание.
Пример запроса
curl https://api.llmtokenapi.ru/v1/map \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: map-example-com-001" \
-d '{
"url": "https://example.com",
"limit": 500,
"includeSubdomains": false
}'Пример ответа
{
"id": "2f35e4dd-3d29-4e9d-a979-59581918fd8e",
"type": "crawl",
"status": "queued",
"createdAt": "2026-08-27T10:00:00.000Z",
"expiresAt": "2026-08-28T10:00:00.000Z",
"progress": { "completed": 0, "total": null },
"error": null
}Фоновое задание
POST/v1/crawl
Обходит страницы сайта, сохраняет очищенные результаты и отдаёт их через endpoint результатов. Результаты удаляются через 24 часа.
Scope: jobs:write
Параметры
| Параметр | Тип | Описание |
|---|---|---|
urlобязательный | URL | Стартовый URL. |
limit | integer | До 10 000 страниц. По умолчанию 100. |
maxDepth | integer | Глубина от 0 до 20. По умолчанию 5. |
includePaths | string[] | Разрешённые пути, до 100 правил. |
excludePaths | string[] | Исключённые пути, до 100 правил. |
webhookUrl | URL | HTTPS URL для уведомления о завершении. |
Для каждого логического запуска используйте отдельный Idempotency-Key. Частично выполненный crawl может вернуть доступные результаты вместе со статусом failed.
Пример запроса
curl https://api.llmtokenapi.ru/v1/crawl \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: crawl-example-com-001" \
-d '{
"url": "https://example.com",
"limit": 100,
"maxDepth": 5,
"includePaths": ["/docs/**"]
}'Пример ответа
{
"id": "2f35e4dd-3d29-4e9d-a979-59581918fd8e",
"type": "crawl",
"status": "queued",
"createdAt": "2026-08-27T10:00:00.000Z",
"expiresAt": "2026-08-28T10:00:00.000Z",
"progress": { "completed": 0, "total": null },
"error": null
}Задания
GET/v1/jobs/{id}
Возвращает состояние, прогресс, сроки хранения и ошибку map или crawl задания.
Scope: jobs:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | UUID | ID из ответа POST /v1/map или POST /v1/crawl. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/jobs/JOB_ID \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY"Пример ответа
{
"id": "2f35e4dd-3d29-4e9d-a979-59581918fd8e",
"type": "crawl",
"status": "queued",
"createdAt": "2026-08-27T10:00:00.000Z",
"expiresAt": "2026-08-28T10:00:00.000Z",
"progress": { "completed": 0, "total": null },
"error": null
}Задания
GET/v1/jobs/{id}/results
Возвращает готовый результат. До завершения отвечает 409 job_not_ready. Для частично завершившегося задания данные могут быть доступны со статусом failed.
Scope: jobs:read
Параметры
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | UUID | ID задания. |
Пример запроса
curl https://api.llmtokenapi.ru/v1/jobs/JOB_ID/results \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY"Задания
DELETE/v1/jobs/{id}
Отменяет задание, если оно ещё не перешло в конечное состояние. Неиспользованный резерв освобождается.
Scope: jobs:write
Параметры
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | UUID | ID задания. |
Пример запроса
curl -X DELETE https://api.llmtokenapi.ru/v1/jobs/JOB_ID \
-H "Authorization: Bearer $LLMTOKENAPI_API_KEY"Справочник
Streaming
Передайте stream: true в Responses или Chat Completions, чтобы получать ответ по частям. Если модель временно недоступна до начала ответа, сервис может автоматически повторить запрос к той же модели.
{
"model": "YOUR_MODEL_ID",
"input": "Напиши короткий план запуска",
"stream": true
}Coding agents
Codex, OpenCode и Claude Code
Подписочный DeepSeek поддерживает потоковые ответы и вызовы инструментов через три совместимых протокола. Для подключения в клиенте достаточно указать base URL, модель и ключ.
Codex · config.toml
model = "deepseek-ai-deepseek-v4-flash-0731"
model_provider = "llmtokenapi"
[model_providers.llmtokenapi]
name = "LLMTOKENAPI"
base_url = "https://api.llmtokenapi.ru/v1"
env_key = "LLMTOKENAPI_API_KEY"
wire_api = "responses"
requires_openai_auth = false
stream_idle_timeout_ms = 300000OpenCode · opencode.json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"llmtokenapi": {
"npm": "@ai-sdk/openai-compatible",
"name": "LLMTOKENAPI",
"options": {
"baseURL": "https://api.llmtokenapi.ru/v1",
"apiKey": "{env:LLMTOKENAPI_API_KEY}"
},
"models": {
"deepseek-ai-deepseek-v4-flash-0731": {"name": "DeepSeek V4 Flash — безлимит"}
}
}
},
"model": "llmtokenapi/deepseek-ai-deepseek-v4-flash-0731"
}Claude Code · переменные окружения
export ANTHROPIC_BASE_URL="https://api.llmtokenapi.ru"
export ANTHROPIC_AUTH_TOKEN="$LLMTOKENAPI_API_KEY"
export ANTHROPIC_MODEL="deepseek-ai-deepseek-v4-flash-0731"
export CLAUDE_CODE_MAX_OUTPUT_TOKENS="16000"
claudeСправочник
Webhooks
Для map и crawl можно передать webhookUrl. Подпись HMAC SHA-256 строится по строке timestamp.eventId.body. Проверяйте подпись, допустимое время события и повторный event ID.
x-llmtokenapi-event-idx-llmtokenapi-timestampx-llmtokenapi-signature: v1=...Справочник
Ошибки
Каждая ошибка содержит стабильный code, сообщение и requestId. Тот же ID возвращается в заголовке x-request-id. Передавайте его поддержке при разборе запроса.
| HTTP | Код | Значение |
|---|---|---|
| 400 | idempotency_key_required | Нет ключа для map или crawl |
| 400 | unsafe_url | Адрес запрещён политикой безопасности |
| 400 | invalid_audio_file | Формат, размер или длительность аудио не подходят |
| 400 | moderation_blocked | Генерация остановлена проверкой безопасности |
| 400 | image_generation_failed | Запрос изображения отклонён или не выполнен |
| 400 | embedding_failed | Запрос embeddings отклонён |
| 400 | audio_generation_failed | Синтез речи отклонён |
| 400 | audio_transcription_failed | Транскрипция отклонена |
| 401 | invalid_api_key | Ключ отсутствует, неверен или отозван |
| 402 | insufficient_balance | Недостаточно доступного баланса |
| 403 | insufficient_scope | Ключу не хватает scope |
| 403 | account_blocked | Организация заблокирована |
| 403 | outstanding_debt | На балансе есть задолженность |
| 403 | terms_not_accepted | Не приняты действующие условия |
| 404 | job_not_found | Задание не найдено |
| 404 | not_found | Маршрут API не найден |
| 409 | job_not_ready | Результат ещё не готов |
| 429 | rate_limit_exceeded | Лимит запросов временно исчерпан |
| 500 | internal_error | Внутренняя ошибка сервиса |
| 502 | upstream_error | Запрос временно не выполнен |
| 503 | model_unavailable | Модель временно недоступна |
| 503 | pricing_unavailable | Прайс не опубликован |
| 503 | upstream_unavailable | Сервис временно недоступен |
{
"error": {
"code": "insufficient_balance",
"message": "Недостаточно средств для резервирования запроса",
"requestId": "7fe2b1cc-6a3a-4bb4-8729-850854df9186"
}
}