API Текстовода и MCP-сервер
Через API и MCP доступны те же сервисы, что на сайте: проверки текста, антиплагиат, ИИ-детектор, ИИ-сервисы, перевод субтитров, озвучка текста, распознавание записей и детектор ИИ-картинок. Запросы тратят знаки вашего ПРО, общие с сайтом.
Содержание
- С чего начать
- Как устроен запрос
- Сервисы
- Что лежит в result
- Распознавание аудио и видео
- Детектор ИИ-картинок
- Остатки
- Оплата и лимиты
- MCP-сервер
- Описание OpenAPI
- API 1, прежняя версия
С чего начать
- Подключите ПРО: запросы списывают знаки ПРО.
- Создайте ключ на странице ключей API. Ключ показывается один раз.
- Передавайте ключ в заголовке
Authorization: Bearer ваш_ключ.
Как устроен запрос
Работа идёт в два шага: отправить текст и получить результат по номеру задачи. Запросы и ответы в JSON, кодировка UTF-8.
Отправить текст
POST https://textovod.com/api/v2/text/{сервис}
Authorization: Bearer ваш_ключ
Content-Type: application/json
Accept: application/json
{"text": "Ваш текст", "lang": "ru"}
| Поле | Значение |
|---|---|
text | Текст. Обязательное поле, пределы длины зависят от сервиса. |
lang | Язык текста для проверок или язык ответа для ИИ-сервисов. По умолчанию ru. |
id | Только для чата: номер предыдущей задачи, чтобы продолжить диалог. |
search | Только для чата: поиск в интернете перед ответом — on (всегда), auto (только для вопросов о фактах, новостях, ценах и законах) или off (по умолчанию). Каждый поиск — ещё 2 000 знаков ИИ; в ответе — поле result.sources с источниками, на которые ссылается текст ([1], [2]…). |
mode | Только для перефраза: стиль — standard (по умолчанию), formal (официальный), simple (простыми словами), creative (творческий), shorten (короче примерно на 30 %), expand (длиннее примерно на 30 %). |
strength | Только для перефраза: сила изменений — 1 лёгкая правка, 2 обычная (по умолчанию), 3 максимальная уникальность. |
freeze | Только для перефраза: слова и фразы через запятую, которые нужно оставить без изменений (термины, имена), до 300 знаков. |
deny_domain | Только для уникальности: сайты через запятую, совпадения с которыми не учитываются (например, ваш сайт), поддомены тоже. В ответе — поле excluded. |
voice | Только для озвучки: голос — olga (по умолчанию), vera, nina, daria, pavel, igor, andrey или artem. |
Ответ:
{"status": 3, "id": "9f1c2b7e-..."}
Получить результат
Пока задача в работе, приходит только статус. Готовый результат лежит в поле result. Результат хранится 7 дней.
POST https://textovod.com/api/v2/text/{сервис}/result
Authorization: Bearer ваш_ключ
Content-Type: application/json
{"id": "9f1c2b7e-..."}
Ответ:
{"status": 2, "id": "9f1c2b7e-...", "result": {"text": "..."}}
Статусы
3 | задача в очереди |
1 | задача выполняется |
2 | готово, результат в поле result |
0 | ошибка, текст в messages, код в error |
30 | нечем платить: знаки ПРО закончились или ПРО не подключён |
Коды ошибок
no_chars | Знаки ПРО закончились. Докупите знаки на странице ПРО. |
need_pro | ПРО не подключён и остатка баланса нет. |
too_short | Текст короче минимальной длины сервиса. |
unavailable | Сервис временно недоступен, знаки не списаны. |
in_progress | Предыдущее сообщение чата ещё обрабатывается. |
failed | Задачу выполнить не удалось. |
rejected | Запрос отклонён, причина в messages. |
bad_file | Файл не подходит: формат, размер или картинка слишком маленькая, причина в messages. |
too_long | Запись длиннее предела одного файла. |
too_many_tasks | Слишком много задач этого сервиса в работе одновременно или минут записи за час. Дождитесь результата предыдущих. |
expired | Файл результата уже удалён по истечении срока хранения. |
{"status": 30, "error": "no_chars", "messages": ["Знаки ПРО закончились. Каждая оплата ПРО сразу добавляет знаки: https://textovod.com/pro"]}
Коды HTTP
401 | ключ не передан или отозван |
403 | задача принадлежит другому пользователю |
404 | задача не найдена |
422 | неверные поля запроса, подробности в errors |
429 | слишком много запросов |
Сервисы
| Сервис | Что делает | Длина текста | Знаки | Языки |
|---|---|---|---|---|
spelling |
Проверка орфографии. Находит орфографические ошибки и предлагает варианты исправления. Результат приходит сразу. | 1 – 500 000 | ИИ | ru, en, de, fr, es, it, pt |
punctuation |
Проверка пунктуации. Расставляет запятые и другие знаки препинания. | 1 – 100 000 | ИИ | ru, en, fr, es, de, it, pt |
unique |
Проверка уникальности. Антиплагиат: ищет совпадения текста в интернете и считает уникальность в процентах. | 100 – 200 000 | антиплагиат | не задаётся |
ai-detector |
ИИ-детектор. Оценивает, написан ли текст нейросетью, и показывает подозрительные фрагменты. | 250 – 200 000 | антиплагиат | не задаётся |
grammar |
Автокорректор. Исправляет грамматические, орфографические и пунктуационные ошибки, сохраняя смысл и стиль. | 1 – 35 000 | ИИ | больше 100 языков |
paraphrase |
Перефразирование. Переписывает текст другими словами с сохранением смысла. | 1 – 35 000 | ИИ | больше 100 языков |
rewrite |
Рерайт. Автоматический рерайт: заменяет слова и обороты, повышая уникальность текста. | 1 – 100 000 | ИИ | ru |
translate |
Переводчик. Переводит текст на язык, указанный в поле lang. | 1 – 35 000 | ИИ | больше 100 языков |
summarize |
Сокращение текста. Сокращает текст, оставляя главное. | 1 – 35 000 | ИИ | больше 100 языков |
expand |
Расширение текста. Дополняет и развивает текст. | 1 – 35 000 | ИИ | больше 100 языков |
write |
Написать текст по теме. Пишет текст по теме или заданию из поля text. | 1 – 35 000 | ИИ | больше 100 языков |
titletext |
Заголовок для текста. Придумывает заголовок к тексту. | 1 – 35 000 | ИИ | больше 100 языков |
dream |
Толкование снов. Толкует сон, описанный в тексте. | 1 – 35 000 | ИИ | больше 100 языков |
chat |
Чат с нейросетью. Отвечает на сообщение. Чтобы продолжить диалог, передайте id предыдущей задачи. | 1 – 35 000 | ИИ | больше 100 языков |
subtitle-translate |
Перевод субтитров. Переводит субтитры SRT на язык lang. Номера и таймкоды остаются как в исходнике, переводится только текст реплик; длинный файл переводится частями. | 5 – 200 000 | ИИ | больше 100 языков |
text-to-speech |
Озвучка текста. Читает текст вслух естественным голосом и возвращает MP3. Каждый знак текста тратит 2 знака ИИ. | 2 – 50 000 | ИИ | ru, en, pt, es, fr, de, it |
Что лежит в result
spelling |
count — число найденных ошибок; matches — список ошибок: offset и length — положение в тексте, mes — описание, rep — варианты замены; text — проверенный текст. Результат приходит сразу в ответе на отправку. |
punctuation |
text — текст с расставленными знаками; marked — тот же текст, добавленные знаки в теге mark; details — правки по абзацам и статистика; paragraphs — абзацы текста после очистки, к которым относятся правки; original — исходный текст. Правка в details.punctuation: add — знак rep вставляется сразу после символа с номером offset; delete — убираются length символов начиная с offset; register — length символов начиная с offset заменяются на rep (смена регистра); ok — знак на месте. Правки абзаца применяются от конца к началу, по убыванию offset. |
unique |
originality — уникальность в процентах; sources — источники совпадений: url, domain, similarity — доля совпадений в процентах; text — проверенный текст. |
ai-detector |
verdict и verdict_title — итог; stats — доля ИИ-текста и подозрительных фрагментов; segments — фрагменты: start, end, type, confidence. Тот же текст, проверенный за последнюю неделю, знаков не тратит: готовый результат приходит сразу со статусом 2. |
grammar |
text — исправленный текст. |
paraphrase |
text — перефразированный текст. |
rewrite |
text — переписанный текст; original — исходный текст. |
translate |
text — перевод. |
summarize |
text — сокращённый текст. |
expand |
text — расширенный текст. |
write |
text — готовый текст. |
titletext |
text — заголовок. |
dream |
text — толкование. |
chat |
text — ответ; messages — весь диалог. |
subtitle-translate |
text — переведённые субтитры SRT. |
text-to-speech |
url — ссылка на MP3, работает без ключа до expires_at (24 часа); seconds — длительность звука; chars, voice, lang. |
У ИИ-сервисов вместе с result приходит поле messages со всем диалогом, как и раньше.
Распознавание аудио и видео
Аудио или видео в текст с временем реплик и разделением по говорящим. Файл до 50 МБ отправляется одним запросом в поле file, больше — частями, до 2048 МБ и 5 часов записи. Только API 2, в MCP этого сервиса нет.
curl -X POST https://textovod.com/api/v2/media/transcribe \
-H "Authorization: Bearer ваш_ключ" -H "Accept: application/json" \
-F "file=@interview.mp3" -F "lang=ru" -F "speakers=1"
{"status": 3, "id": "5b0e8d1a-...", "minutes": 12}
| Поле | Значение |
|---|---|
file | mp3, wav, m4a, ogg, oga, opus, flac, aac, wma, amr, 3gp, mp4, mov, webm, mkv, avi, mpeg, mpg, m4v, wmv |
upload | Загрузка частями: начните её с именем файла и размером в байтах, отправьте части по порядку (index с нуля, размер части приходит в поле chunk), затем передайте номер загрузки в поле upload вместо file. Незаконченная загрузка удаляется через 2 часа. |
lang | Язык записи: auto (по умолчанию, определяется по первым 30 секундам) или ru, en, uk, be, kk, de, fr, es, it, pt, pl, tr, zh, ja, ko, ar. |
speakers | 1 — разделить текст по говорящим: реплики «Спикер 1: …» и номер говорящего у каждой реплики. |
POST https://textovod.com/api/v2/media/transcribe/upload
{"name": "lecture.mp4", "size": 734003200}
→ {"upload": "c41f...", "chunk": 8388608}
POST https://textovod.com/api/v2/media/transcribe/upload/c41f... (multipart: index=0, chunk=@part0)
→ {"received": 8388608}
POST https://textovod.com/api/v2/media/transcribe
{"upload": "c41f...", "lang": "auto"}
- Минута записи тратит 1000 знаков ИИ, минуты округляются вверх; если распознать не удалось — знаки возвращаются. Одновременно в работе до 2 записей и не больше 600 минут записи за час, иначе отказ too_many_tasks.
- Файл записи удаляется сразу после распознавания, текст хранится 7 дней.
POST https://textovod.com/api/v2/media/transcribe/result
{"id": "5b0e8d1a-..."}
{"status": 2, "id": "5b0e8d1a-...", "result": {"text": "Спикер 1: Добрый день.\nСпикер 2: Здравствуйте.", "lang": "ru", "duration": 704, "speaker_count": 2,
"segments": [{"start": 0.4, "end": 1.6, "speaker": 1, "text": "Добрый день."}, {"start": 2.1, "end": 3.0, "speaker": 2, "text": "Здравствуйте."}], "file_name": "interview.mp3"}}
text — весь текст (с «Спикер N:», если говорящих разделяли); lang — язык записи; duration — длительность в секундах; speaker_count — сколько говорящих; segments — реплики: start и end в секундах, speaker — номер говорящего с единицы или null, text; file_name. Пока запись распознаётся, в ответе со статусом 1 есть progress в процентах.
Субтитры SRT или VTT готовой записи:
POST https://textovod.com/api/v2/media/transcribe/subtitles
{"id": "5b0e8d1a-...", "format": "srt"}
Детектор ИИ-картинок
Сервисы с файлом на входе есть только в API 2: в MCP модель не может передать инструменту файл. Картинка отправляется в multipart/form-data, результат забирается по номеру задачи, как у текстовых сервисов.
curl -X POST https://textovod.com/api/v2/media/ai-image-detector \
-H "Authorization: Bearer ваш_ключ" -H "Accept: application/json" \
-F "image=@photo.jpg"
{"status": 3, "id": "9f1c2b7e-..."}
- Картинка: JPG, PNG, WebP или HEIC до 50 МБ, короткая сторона не меньше 128 px.
- Картинка тратит 100 знаков антиплагиата, если проверить не удалось — знаки возвращаются. Одновременно в работе до 20 картинок, следующая получает отказ too_many_tasks.
- Файл удаляется сразу после проверки, результат хранится 7 дней. Оценка — вероятность, а не доказательство.
POST https://textovod.com/api/v2/media/ai-image-detector/result
Authorization: Bearer ваш_ключ
Content-Type: application/json
{"id": "9f1c2b7e-..."}
{"status": 2, "id": "9f1c2b7e-...", "result": {"verdict": "ai", "score": 0.9731, "percent": 97, "percent_label": "97 %", "label": null, "generator": null, "width": 1024, "height": 1024, "file_name": "photo.jpg"}}
verdict — ai (похоже на ИИ), uncertain (не уверены), human (похоже на фото) или small (картинка слишком маленькая для вывода); score — оценка модели от 0 до 1; percent и percent_label — она же в процентах для показа; label — метка происхождения в самом файле (ai — файл помечен как созданный ИИ), generator — генератор из метки; width, height и file_name.
PDF-отчёт о готовой проверке:
POST https://textovod.com/api/v2/media/ai-image-detector/report
Authorization: Bearer ваш_ключ
Content-Type: application/json
{"id": "9f1c2b7e-..."}
Остатки
Знаки ПРО по двум счётчикам, срок ПРО и остаток старого рублёвого баланса. Поле pack совпадает с pro.ai, pro.images — сколько картинок хватит проверить детектором ИИ-картинок, pro.audio_minutes — сколько минут записи хватит распознать.
POST https://textovod.com/api/v2/text/balance
Authorization: Bearer ваш_ключ
{"balance": 0, "pack": 500000, "pro": {"active": true, "until": "2026-10-31 12:00:00", "unique": 300000, "ai": 500000, "images": 3000, "audio_minutes": 500}}
Оплата и лимиты
- Проверка уникальности, ИИ-детектор и детектор ИИ-картинок тратят знаки антиплагиата, все остальные сервисы, включая распознавание записи, тратят знаки ИИ.
- Сначала тратится месячная квота ПРО, потом запас. Если знаки закончились, списывается остаток старого баланса, пока он есть.
- У ИИ-сервисов считаются и текст запроса, и ответ.
- Расход по дням виден в кабинете на странице «Расход знаков».
- Лимит: 300 запросов в минуту на ключ, включая получение результата.
MCP-сервер
MCP позволяет подключить сервисы Текстовода к ИИ-клиентам: Claude Code, Cursor и другим программам с поддержкой MCP. Адрес сервера: https://textovod.com/mcp
Список инструментов открыт без ключа. Для вызова инструмента нужен тот же ключ API в заголовке Authorization: Bearer.
Инструмент ждёт результат до 20 секунд. Если задача ещё в работе, он возвращает её номер, а результат отдаёт инструмент get-result. Проверка уникальности и ИИ-детектор идут дольше и сразу возвращают номер задачи.
Подключение в Claude Code:
claude mcp add --transport http textovod https://textovod.com/mcp --header "Authorization: Bearer ваш_ключ"
Подключение через файл настроек (Cursor и другие клиенты):
{
"mcpServers": {
"textovod": {
"url": "https://textovod.com/mcp",
"headers": {"Authorization": "Bearer ваш_ключ"}
}
}
}
Инструменты
| Инструмент | Что делает |
|---|---|
check-spelling | Проверка орфографии |
check-punctuation | Проверка пунктуации |
check-uniqueness | Проверка уникальности |
detect-ai-text | ИИ-детектор |
autocorrect | Автокорректор |
paraphrase | Перефразирование |
rewrite | Рерайт |
translate | Переводчик |
summarize | Сокращение текста |
expand | Расширение текста |
write-text | Написать текст по теме |
make-title | Заголовок для текста |
interpret-dream | Толкование снов |
chat | Чат с нейросетью |
translate-subtitles | Перевод субтитров |
text-to-speech | Озвучка текста |
get-result | Результат задачи, которую инструмент не успел дождаться. Знаки не тратит. |
get-balance | Остатки знаков ПРО, срок ПРО и баланс. |
Описание OpenAPI
Машинное описание API 2 для генерации клиентов и проверки запросов: https://textovod.com/api-docs/openapi.json
API 1, прежняя версия
API 1 отключается 1 декабря 2026. До этого дня он работает без изменений. Перейдите на API 2: в нём те же четыре сервиса и единый формат.
Номер пользователя и ключ передаются в теле запроса. Они указаны на странице ключей API. Сервисы: punctuation, spelling, unique, rewrite.
POST https://textovod.com/api/{сервис}/user/add
{"user_id": 123, "api_key": "ваш_ключ", "text": "Ваш текст", "lang": "ru"}
POST https://textovod.com/api/{сервис}/user/status
{"user_id": 123, "api_key": "ваш_ключ", "text_id": "..."}
Статусы: 0 — ошибка, 3 — в очереди, 1 — обработка, 2 — готово. Орфография отвечает сразу статусом 1. Ошибка приходит в поле info.
В готовом ответе пунктуации приходят поля punctuation, result, text и resultText; уникальности — originality, position, text и urls; орфографии — result, count и text; рерайта — rewrite и text. Списки result и urls приходят строкой JSON.
Лимит: 60 запросов в минуту, для уникальности 180. Слишком длинный текст обрезается: пунктуация и рерайт до 100 тыс. знаков, уникальность до 200 тыс., орфография до 500 тыс.