Перейти к основному содержимому

Все REST-запросы и MCP-инструменты

Здесь перечислены все 103 публичных операций реестра. Сайт использует и внутренние маршруты; они не являются публичным API для клиентов. REST: https://api.signailist.com/v1. MCP: https://api.signailist.com/mcp.

OpenAPI · Подключение MCP · Промпты и сценарии · Приём и вебхуки

Как читать справочник​

REST использует API-ключ одного workspace; MCP — OAuth-согласие. Все примеры требуют замены ID и заполнителей своими значениями. Секрет в SIGNAILIST_API_KEY должен поступать из вашего хранилища секретов. Для изменяющих запросов обязателен постоянный Idempotency-Key: повтор прежнего намерения использует прежний ключ и тело. GET не требует этого заголовка. Примеры — формы запросов, они не выполняются документацией.

Метка платного запуска отражает реестр, а не гарантирует бесплатное выполнение всей последующей цепочки. Включение расписания может запустить будущие платные этапы. Создание источника с автоматическим получением названия может потребовать run и платный запрос метаданных. Сначала проверяйте возможности, готовность и бюджет.

Таблица полей и сворачиваемая JSON Schema показывают фактическую схему публичной проверки. У операций с общей object-схемой дополнительные ограничения применяет общий обработчик: это не разрешение передавать произвольные поля. Для таких операций используйте описанные примеры сценариев; request.json нужно заполнить телом своей операции. Существующие write-поля не обязаны совпадать с полями строки в ответе списка. Не передавайте пользовательский workspaceId: пространство закреплено ключом. Исключение — проверяемое совпадение workspaceId внутри сохраняемого документа.

Курсоры возвращаются только указанными ниже постраничными операциями: items и nextCursor. billing_usage использует page/pageSize. list_webhooks возвращает до 100 подписок без курсора. Остальные ответы могут быть объектами, массивами или вложенными структурами; не считайте их универсальным списком.

Общие результаты и ошибки​

200/201 означают ответ/создание, 202 — приём работы, 204 — успех без тела. Конкретный обработчик может вернуть 200 или 201 вместе с идентификатором очереди: это не доказательство готового результата. Сохраняйте ID и проверяйте задание, источник, дайджест или квитанцию доставки. Нет единого поля jobId для всех запусков.

{
"error": {
"code": "INSUFFICIENT_SCOPE",
"requestId": "REQUEST_ID",
"retryable": false
}
}

400 — неверный ввод; 401 — ключ/токен отсутствует, истёк или отозван; 402 — баланс/суточный лимит; 403 — права/workspace; 404 — объект/маршрут; 409 — конфликт версии/идемпотентности или неопределённый результат; 413 — размер; 429 — частота/параллельность, учитывайте Retry-After. Максимум 120 запросов в минуту на подключение, пять параллельных мутаций или платных этапов. OAuth использует собственные стандартные ошибки.

Каталог​

MCPRESTПравоПлатный запуск
author_overviewGET /v1/author/overviewreadНет¹
edit_telegram_publicationPOST /v1/accounts/telegram/{id}/messages/editpublishНет¹
verify_telegram_publicationsPOST /v1/accounts/telegram/{id}/messages/checkreadНет¹
regenerate_author_versionPOST /v1/author/editions/{id}/regenerate-versionrunДа
resume_author_editionPOST /v1/author/editions/{id}/resumerunДа
check_telegram_channelsPOST /v1/accounts/telegram/{id}/channels/checkconfigureНет¹
sync_telegram_channelsPOST /v1/accounts/telegram/{id}/channels/syncconfigureНет¹
list_content_catalogsGET /v1/author/catalogsreadНет¹
create_content_catalogPOST /v1/author/catalogsconfigureНет¹
get_content_catalogGET /v1/author/catalogs/{id}readНет¹
sync_content_catalogPOST /v1/author/catalogs/{id}/syncconfigureНет¹
list_catalog_itemsGET /v1/author/catalogs/{id}/itemsreadНет¹
put_catalog_itemPUT /v1/author/catalogs/{id}/itemsconfigureНет¹
list_author_seriesGET /v1/author/seriesreadНет¹
create_author_seriesPOST /v1/author/seriesconfigureНет¹
get_author_seriesGET /v1/author/series/{id}readНет¹
update_author_seriesPUT /v1/author/series/{id}configureНет¹
set_author_automationPOST /v1/author/series/{id}/automationconfigureНет¹
trial_author_seriesPOST /v1/author/series/{id}/trialrunДа
list_author_editionsGET /v1/author/series/{id}/editionsreadНет¹
get_author_editionGET /v1/author/editions/{id}readНет¹
publish_author_editionPOST /v1/author/editions/{id}/publishpublishДа
delete_sourceDELETE /v1/sources/{id}configureНет¹
delete_templateDELETE /v1/templates/{id}configureНет¹
delete_scheduleDELETE /v1/schedules/{id}configureНет¹
list_publicationsGET /v1/publicationsreadНет¹
list_telegram_accountsGET /v1/accounts/telegramreadНет¹
get_source_topic_trackingGET /v1/source-topic-trackingreadНет¹
list_sourcesGET /v1/sourcesreadНет¹
create_sourcePOST /v1/sourcesconfigureНет¹
update_sourcePATCH /v1/sources/{id}configureНет¹
collect_sourcePOST /v1/sources/{id}/collectrunДа
prepare_sourcePOST /v1/sources/{id}/preparerunДа
track_source_topicsPOST /v1/source-topic-trackingconfigureНет¹
source_statusGET /v1/sources/{id}/analysis-statusreadНет¹
source_materialsGET /v1/sources/{id}/materialsreadНет¹
source_resultsGET /v1/sources/{id}/resultsreadНет¹
list_topicsGET /v1/topicsreadНет¹
create_topicPOST /v1/topicsconfigureНет¹
update_topicPATCH /v1/topics/{id}configureНет¹
delete_topicDELETE /v1/topics/{id}configureНет¹
list_templatesGET /v1/templatesreadНет¹
create_templatePOST /v1/templatesconfigureНет¹
update_templatePATCH /v1/templates/{id}configureНет¹
generate_templatePOST /v1/templates/generaterunДа
list_digestsGET /v1/digestsreadНет¹
digest_candidatesGET /v1/digest-candidatesreadНет¹
create_digestPOST /v1/digestsconfigureНет¹
get_digestGET /v1/digests/{id}readНет¹
update_digestPATCH /v1/digests/{id}configureНет¹
generate_digest_textPOST /v1/digests/{id}/generate-textrunДа
generate_digest_imagePOST /v1/digests/{id}/generate-imagerunДа
score_materialPOST /v1/materials/{id}/scorerunДа
get_documentGET /v1/digests/{id}/documentreadНет¹
save_documentPUT /v1/digests/{id}/documentconfigureНет¹
approve_documentPOST /v1/digests/{id}/approvepublishНет¹
publish_documentPOST /v1/digests/{id}/publishpublishДа
list_connectionsGET /v1/connectionsreadНет¹
create_discord_connectionPOST /v1/connectionspublishНет¹
revoke_connectionPOST /v1/connections/{id}/revokepublishНет¹
list_targetsGET /v1/targetsreadНет¹
create_targetPOST /v1/targetspublishНет¹
update_targetPATCH /v1/targets/{id}publishНет¹
list_schedulesGET /v1/schedulesreadНет¹
create_schedulePOST /v1/schedulesconfigureНет¹
update_schedulePATCH /v1/schedules/{id}publishНет¹
enable_schedulePOST /v1/schedules/{id}/enablepublishНет¹
pause_schedulePOST /v1/schedules/{id}/pauseconfigureНет¹
trigger_schedulePOST /v1/schedules/{id}/triggerpublishДа
list_candidatesGET /v1/publication-candidatesreadНет¹
approve_candidatePOST /v1/publication-candidates/{id}/approvepublishДа
reject_candidatePOST /v1/publication-candidates/{id}/rejectpublishНет¹
get_deliveryGET /v1/deliveries/{id}readНет¹
retry_deliveryPOST /v1/deliveries/{id}/retrypublishДа
cancel_publicationPOST /v1/publications/{id}/cancelconfigureНет¹
list_jobsGET /v1/jobsreadНет¹
cancel_jobPOST /v1/jobs/{id}/cancelconfigureНет¹
list_assetsGET /v1/assetsreadНет¹
upload_assetPOST /v1/assetsrunДа
list_signalsGET /v1/signalsreadНет¹
create_signalPOST /v1/signalsconfigureНет¹
update_signalPATCH /v1/signals/{id}configureНет¹
enable_signalPOST /v1/signals/{id}/enablerunНет¹
pause_signalPOST /v1/signals/{id}/pauseconfigureНет¹
billing_summaryGET /v1/billing/summarybilling:readНет¹
billing_usageGET /v1/billing/usagebilling:readНет¹
get_jobGET /v1/jobs/{id}readНет¹
list_modelsGET /v1/modelsreadНет¹
list_reservationsGET /v1/reservationsbilling:readНет¹
capabilitiesGET /v1/capabilitiesreadНет¹
create_external_sourcePOST /v1/external-sourcesconfigureНет¹
ingest_materialsPOST /v1/external-sources/{id}/itemsingestНет¹
budgetGET /v1/budgetbilling:readНет¹
estimatePOST /v1/estimatesbilling:readНет¹
get_integrationGET /v1/integrationreadНет¹
revoke_integrationPOST /v1/integration/revokereadНет¹
create_webhookPOST /v1/webhookswebhooksНет¹
list_webhooksGET /v1/webhookswebhooksНет¹
list_webhook_deliveriesGET /v1/webhooks/deliverieswebhooksНет¹
rotate_webhookPOST /v1/webhooks/{id}/rotatewebhooksНет¹
pause_webhookPOST /v1/webhooks/{id}/pausewebhooksНет¹
resume_webhookPOST /v1/webhooks/{id}/resumewebhooksНет¹
retry_webhookPOST /v1/webhooks/deliveries/{id}/retrywebhooksНет¹

¹ Последующие этапы могут быть платными; см. пояснение выше и биллинг.

Подключение и возможности​

list_models​

Получить доступные модели AI

REST: GET /v1/models · MCP: list_models · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/models' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

capabilities​

Получить доступные возможности и ограничения

REST: GET /v1/capabilities · MCP: capabilities · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/capabilities' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

get_integration​

Прочитать своё подключение и лимиты

REST: GET /v1/integration · MCP: get_integration · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/integration' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

revoke_integration​

Отозвать собственное подключение

REST: POST /v1/integration/revoke · MCP: revoke_integration · Право: read

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/integration/revoke' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Источники и назначения темам​

delete_source​

Удалить неиспользуемый источник

REST: DELETE /v1/sources/{id} · MCP: delete_source · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request DELETE 'https://api.signailist.com/v1/sources/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

get_source_topic_tracking​

Прочитать назначения источников темам

REST: GET /v1/source-topic-tracking · MCP: get_source_topic_tracking · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/source-topic-tracking' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

list_sources​

Получить источники и состояние сбора

REST: GET /v1/sources · MCP: list_sources · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/sources' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

create_source​

Создать выключенный Telegram/RSS-источник

REST: POST /v1/sources · MCP: create_source · Право: configure

Поле телаОбязательноТип
providerНетstring
titleНетstring
urlНетstring (uri)
usernameНетstring
enabledНетboolean
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"rss",
"telegram"
]
},
"title": {
"type": "string",
"maxLength": 500
},
"url": {
"type": "string",
"format": "uri"
},
"username": {
"type": "string"
},
"enabled": {
"type": "boolean"
}
},
"additionalProperties": {}
}
Пример тела
{
"provider": "rss",
"title": "NASA",
"url": "https://www.nasa.gov/news-release/feed/",
"enabled": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/sources' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

update_source​

Изменить источник или приостановить сбор

REST: PATCH /v1/sources/{id} · MCP: update_source · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{
"enabled": false
}
curl --fail-with-body --request PATCH 'https://api.signailist.com/v1/sources/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

collect_source​

Запустить сбор источника

REST: POST /v1/sources/{id}/collect · MCP: collect_source · Право: run

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/sources/OBJECT_ID/collect' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

prepare_source​

Подготовить сохранённые материалы к обработке

REST: POST /v1/sources/{id}/prepare · MCP: prepare_source · Право: run

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/sources/OBJECT_ID/prepare' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

track_source_topics​

Назначить источники теме

REST: POST /v1/source-topic-tracking · MCP: track_source_topics · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{
"topicId": "TOPIC_ID",
"sourceIds": [
"SOURCE_ID"
],
"enabled": true
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/source-topic-tracking' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

source_status​

Получить состояние анализа источника

REST: GET /v1/sources/{id}/analysis-status · MCP: source_status · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/sources/OBJECT_ID/analysis-status' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

source_materials​

Получить сохранённые материалы источника

REST: GET /v1/sources/{id}/materials · MCP: source_materials · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/sources/OBJECT_ID/materials' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

source_results​

Получить обработанные материалы источника

REST: GET /v1/sources/{id}/results · MCP: source_results · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/sources/OBJECT_ID/results' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

Темы анализа​

list_topics​

Получить темы анализа

REST: GET /v1/topics · MCP: list_topics · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/topics' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

create_topic​

Создать тему анализа

REST: POST /v1/topics · MCP: create_topic · Право: configure

Поле телаОбязательноТип
nameДаstring
promptДаstring
negativePromptНетstring
aiModelНетstring
isActiveНетboolean
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"prompt": {
"type": "string",
"minLength": 1
},
"negativePrompt": {
"type": "string"
},
"aiModel": {
"type": "string"
},
"isActive": {
"type": "boolean"
}
},
"required": [
"name",
"prompt"
],
"additionalProperties": {}
}
Пример тела
{
"name": "Science",
"prompt": "Score factual science news.",
"aiModel": "openai/gpt-6-luna"
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/topics' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

update_topic​

Изменить тему анализа

REST: PATCH /v1/topics/{id} · MCP: update_topic · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{
"name": "Science news"
}
curl --fail-with-body --request PATCH 'https://api.signailist.com/v1/topics/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

delete_topic​

Удалить тему анализа

REST: DELETE /v1/topics/{id} · MCP: delete_topic · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request DELETE 'https://api.signailist.com/v1/topics/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Шаблоны дайджеста​

delete_template​

Удалить шаблон дайджеста

REST: DELETE /v1/templates/{id} · MCP: delete_template · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request DELETE 'https://api.signailist.com/v1/templates/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

list_templates​

Получить шаблоны дайджеста

REST: GET /v1/templates · MCP: list_templates · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/templates' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

create_template​

Создать шаблон дайджеста

REST: POST /v1/templates · MCP: create_template · Право: configure

Поле телаОбязательноТип
nameДаstring
tonePromptДаstring
renderTemplateДаstring
sourceIdНетstring
imageEnabledНетboolean
textAiModelНетstring
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"tonePrompt": {
"type": "string",
"minLength": 1,
"maxLength": 20000
},
"renderTemplate": {
"type": "string",
"minLength": 1,
"maxLength": 40000
},
"sourceId": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"imageEnabled": {
"type": "boolean"
},
"textAiModel": {
"type": "string"
}
},
"required": [
"name",
"tonePrompt",
"renderTemplate"
],
"additionalProperties": {}
}
Пример тела
{
"name": "Weekly digest",
"tonePrompt": "Summarize the previous seven days with source links.",
"renderTemplate": "{{ai}}",
"textAiModel": "openai/gpt-6-luna",
"imageEnabled": false,
"periodDays": 7
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/templates' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

update_template​

Изменить шаблон дайджеста

REST: PATCH /v1/templates/{id} · MCP: update_template · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{
"textAiModel": "openai/gpt-6-luna"
}
curl --fail-with-body --request PATCH 'https://api.signailist.com/v1/templates/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

generate_template​

Запустить AI-генерацию шаблона

REST: POST /v1/templates/generate · MCP: generate_template · Право: run

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/templates/generate' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Дайджесты и AI​

author_overview​

Прочитать текущие рубрики, недавние выпуски и квитанции отправок по каналам

REST: GET /v1/author/overview · MCP: author_overview · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/author/overview' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

edit_telegram_publication​

Изменить текст отправленной публикации с проверкой текущего текста, сохранив ID и фото

REST: POST /v1/accounts/telegram/{id}/messages/edit · MCP: edit_telegram_publication · Право: publish

Поле телаОбязательноТип
publicationJobIdДаstring
expectedTextДаstring
textДаstring
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"publicationJobId": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"expectedText": {
"type": "string",
"maxLength": 4096
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 8000
}
},
"required": [
"publicationJobId",
"expectedText",
"text"
],
"additionalProperties": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/accounts/telegram/OBJECT_ID/messages/edit' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

verify_telegram_publications​

Прочитать отправленные публикации для проверки текста и фотографии без отправки сообщений

REST: POST /v1/accounts/telegram/{id}/messages/check · MCP: verify_telegram_publications · Право: read

Поле телаОбязательноТип
publicationJobIdsДаarray
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"publicationJobIds": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
}
},
"required": [
"publicationJobIds"
],
"additionalProperties": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/accounts/telegram/OBJECT_ID/messages/check' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

regenerate_author_version​

Пересоздать только неопубликованную версию с прежними исходниками и общей картинкой

REST: POST /v1/author/editions/{id}/regenerate-version · MCP: regenerate_author_version · Право: run

Поле телаОбязательноТип
versionIdДаstring
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"versionId": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
},
"required": [
"versionId"
],
"additionalProperties": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/author/editions/OBJECT_ID/regenerate-version' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

resume_author_edition​

Продолжить сохранённый выпуск с переиспользованием оплаченных результатов

REST: POST /v1/author/editions/{id}/resume · MCP: resume_author_edition · Право: run

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/author/editions/OBJECT_ID/resume' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

check_telegram_channels​

Проверить права публикации и обсуждение без отправки сообщений

REST: POST /v1/accounts/telegram/{id}/channels/check · MCP: check_telegram_channels · Право: configure

Поле телаОбязательноТип
channelsДаarray
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"channels": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"pattern": "^@[a-zA-Z0-9_]{4,32}$"
}
}
},
"required": [
"channels"
],
"additionalProperties": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/accounts/telegram/OBJECT_ID/channels/check' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

sync_telegram_channels​

Синхронизировать каналы Telegram

REST: POST /v1/accounts/telegram/{id}/channels/sync · MCP: sync_telegram_channels · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/accounts/telegram/OBJECT_ID/channels/sync' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

list_content_catalogs​

Получить каталоги авторского контента

REST: GET /v1/author/catalogs · MCP: list_content_catalogs · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/author/catalogs' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

create_content_catalog​

Создать ручной или API-каталог

REST: POST /v1/author/catalogs · MCP: create_content_catalog · Право: configure

Поле телаОбязательноТип
kindДаstring
titleДаstring
baseUrlНетstring (uri)
bearerTokenНетstring
manifestНетobject
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"api",
"manual"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"baseUrl": {
"type": "string",
"format": "uri"
},
"bearerToken": {
"type": "string",
"maxLength": 2000
},
"manifest": {
"type": "object",
"properties": {
"schemaVersion": {
"type": "number",
"const": 1
},
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"languages": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 35
}
},
"collections": {
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"id",
"title"
],
"additionalProperties": false
}
}
},
"required": [
"schemaVersion",
"id",
"title",
"languages",
"collections"
],
"additionalProperties": false
}
},
"required": [
"kind",
"title"
],
"additionalProperties": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/author/catalogs' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

get_content_catalog​

Прочитать каталог и статус синхронизации

REST: GET /v1/author/catalogs/{id} · MCP: get_content_catalog · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/author/catalogs/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

sync_content_catalog​

Проверить и синхронизировать внешний каталог

REST: POST /v1/author/catalogs/{id}/sync · MCP: sync_content_catalog · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/author/catalogs/OBJECT_ID/sync' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

list_catalog_items​

Получить объекты каталога

REST: GET /v1/author/catalogs/{id}/items · MCP: list_catalog_items · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/author/catalogs/OBJECT_ID/items' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

put_catalog_item​

Сохранить ручной объект с изображениями

REST: PUT /v1/author/catalogs/{id}/items · MCP: put_catalog_item · Право: configure

Поле телаОбязательноТип
idДаstring
revisionДаstring
localizedДаobject
tagsДаarray
attributesДаobject
imagesДаarray
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"revision": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"localized": {
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$"
},
"additionalProperties": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 500
},
"description": {
"type": "string",
"maxLength": 30000
}
},
"required": [
"title",
"description"
],
"additionalProperties": false
}
},
"tags": {
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
},
"attributes": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"images": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"url": {
"type": "string",
"maxLength": 2048,
"format": "uri"
},
"collectionId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"mimeType": {
"type": "string",
"enum": [
"image/jpeg",
"image/png",
"image/webp"
]
},
"revision": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"description": {
"type": "string",
"maxLength": 4000
}
},
"required": [
"id",
"url",
"collectionId",
"mimeType",
"revision",
"description"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"revision",
"localized",
"tags",
"attributes",
"images"
],
"additionalProperties": false
}
curl --fail-with-body --request PUT 'https://api.signailist.com/v1/author/catalogs/OBJECT_ID/items' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

list_author_series​

Получить авторские рубрики

REST: GET /v1/author/series · MCP: list_author_series · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/author/series' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

create_author_series​

Создать рубрику с версиями и размещениями

REST: POST /v1/author/series · MCP: create_author_series · Право: configure

Поле телаОбязательноТип
titleДаstring
catalogIdДаstring
configДаobject
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"catalogId": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"config": {
"type": "object",
"properties": {
"count": {
"default": 2,
"type": "integer",
"minimum": 1,
"maximum": 10
},
"selection": {
"default": "random",
"type": "string",
"enum": [
"random",
"sequential",
"tags"
]
},
"tags": {
"default": [],
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
},
"repeatWindow": {
"default": 7,
"type": "integer",
"minimum": 0,
"maximum": 365
},
"instruction": {
"type": "string",
"minLength": 1,
"maxLength": 16000
},
"generation": {
"type": "object",
"properties": {
"titles": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"minLength": 1,
"maxLength": 180
}
},
"includeItemTitles": {
"default": true,
"type": "boolean"
},
"itemRoles": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 180
}
}
},
"sections": {
"default": [],
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
},
"titles": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"minLength": 1,
"maxLength": 180
}
},
"instruction": {
"default": "",
"type": "string",
"maxLength": 2000
}
},
"required": [
"id",
"titles",
"instruction"
],
"additionalProperties": false
}
},
"maxCharacters": {
"default": 3000,
"type": "integer",
"minimum": 300,
"maximum": 10000
},
"maxTokens": {
"default": 3200,
"type": "integer",
"minimum": 500,
"maximum": 8000
}
},
"required": [
"titles",
"includeItemTitles",
"itemRoles",
"sections",
"maxCharacters",
"maxTokens"
],
"additionalProperties": false
},
"presentation": {
"type": "object",
"properties": {
"headingEmoji": {
"default": "",
"type": "string",
"maxLength": 16
},
"boldHeading": {
"default": false,
"type": "boolean"
},
"ctaUrl": {
"type": "string",
"format": "uri"
},
"ctaLabels": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"maxLength": 180
}
}
},
"required": [
"headingEmoji",
"boldHeading",
"ctaLabels"
],
"additionalProperties": false
},
"image": {
"type": "object",
"properties": {
"mode": {
"default": "generate",
"type": "string",
"enum": [
"none",
"original",
"album",
"generate"
]
},
"required": {
"default": true,
"type": "boolean"
},
"collectionId": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"model": {
"default": "google/nano-banana-2",
"type": "string",
"enum": [
"google/nano-banana-2",
"google/nano-banana-pro"
]
},
"prompt": {
"default": "Create an original composition based on the supplied subject images. Preserve recognizable subjects. No added text, labels or watermarks.",
"type": "string",
"maxLength": 12000
},
"styleReferenceAssetIds": {
"default": [],
"maxItems": 2,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 180
}
}
},
"required": [
"mode",
"required",
"model",
"prompt",
"styleReferenceAssetIds"
],
"additionalProperties": false
},
"schedule": {
"type": "object",
"properties": {
"kind": {
"default": "daily",
"type": "string",
"enum": [
"daily",
"weekly",
"monthly"
]
},
"time": {
"type": "string"
},
"timezone": {
"type": "string"
},
"weekdays": {
"default": [],
"type": "array",
"items": {
"type": "integer",
"minimum": 1,
"maximum": 7
}
},
"monthDays": {
"default": [],
"type": "array",
"items": {
"type": "integer",
"minimum": 1,
"maximum": 31
}
}
},
"required": [
"kind",
"time",
"timezone",
"weekdays",
"monthDays"
],
"additionalProperties": false
},
"versions": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"language": {
"type": "string",
"pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$"
},
"templateId": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"image": {
"type": "object",
"properties": {
"mode": {
"default": "generate",
"type": "string",
"enum": [
"none",
"original",
"album",
"generate"
]
},
"required": {
"default": true,
"type": "boolean"
},
"collectionId": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"model": {
"default": "google/nano-banana-2",
"type": "string",
"enum": [
"google/nano-banana-2",
"google/nano-banana-pro"
]
},
"prompt": {
"default": "Create an original composition based on the supplied subject images. Preserve recognizable subjects. No added text, labels or watermarks.",
"type": "string",
"maxLength": 12000
},
"styleReferenceAssetIds": {
"default": [],
"maxItems": 2,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 180
}
}
},
"required": [
"mode",
"required",
"model",
"prompt",
"styleReferenceAssetIds"
],
"additionalProperties": false
}
},
"required": [
"id",
"language",
"templateId"
],
"additionalProperties": false
}
},
"placements": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"versionId": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"targetId": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"time": {
"type": "string"
},
"timezone": {
"type": "string"
}
},
"required": [
"id",
"versionId",
"targetId",
"time",
"timezone"
],
"additionalProperties": false
}
}
},
"required": [
"count",
"selection",
"tags",
"repeatWindow",
"instruction",
"image",
"schedule",
"versions",
"placements"
],
"additionalProperties": false
}
},
"required": [
"title",
"catalogId",
"config"
],
"additionalProperties": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/author/series' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

get_author_series​

Прочитать настройки рубрики

REST: GET /v1/author/series/{id} · MCP: get_author_series · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/author/series/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

update_author_series​

Изменить будущие выпуски рубрики

REST: PUT /v1/author/series/{id} · MCP: update_author_series · Право: configure

Поле телаОбязательноТип
expectedRevisionНетstring
titleДаstring
catalogIdДаstring
configДаobject
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedRevision": {
"type": "string",
"maxLength": 100
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"catalogId": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"config": {
"type": "object",
"properties": {
"count": {
"default": 2,
"type": "integer",
"minimum": 1,
"maximum": 10
},
"selection": {
"default": "random",
"type": "string",
"enum": [
"random",
"sequential",
"tags"
]
},
"tags": {
"default": [],
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
},
"repeatWindow": {
"default": 7,
"type": "integer",
"minimum": 0,
"maximum": 365
},
"instruction": {
"type": "string",
"minLength": 1,
"maxLength": 16000
},
"generation": {
"type": "object",
"properties": {
"titles": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"minLength": 1,
"maxLength": 180
}
},
"includeItemTitles": {
"default": true,
"type": "boolean"
},
"itemRoles": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 180
}
}
},
"sections": {
"default": [],
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
},
"titles": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"minLength": 1,
"maxLength": 180
}
},
"instruction": {
"default": "",
"type": "string",
"maxLength": 2000
}
},
"required": [
"id",
"titles",
"instruction"
],
"additionalProperties": false
}
},
"maxCharacters": {
"default": 3000,
"type": "integer",
"minimum": 300,
"maximum": 10000
},
"maxTokens": {
"default": 3200,
"type": "integer",
"minimum": 500,
"maximum": 8000
}
},
"required": [
"titles",
"includeItemTitles",
"itemRoles",
"sections",
"maxCharacters",
"maxTokens"
],
"additionalProperties": false
},
"presentation": {
"type": "object",
"properties": {
"headingEmoji": {
"default": "",
"type": "string",
"maxLength": 16
},
"boldHeading": {
"default": false,
"type": "boolean"
},
"ctaUrl": {
"type": "string",
"format": "uri"
},
"ctaLabels": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"maxLength": 180
}
}
},
"required": [
"headingEmoji",
"boldHeading",
"ctaLabels"
],
"additionalProperties": false
},
"image": {
"type": "object",
"properties": {
"mode": {
"default": "generate",
"type": "string",
"enum": [
"none",
"original",
"album",
"generate"
]
},
"required": {
"default": true,
"type": "boolean"
},
"collectionId": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"model": {
"default": "google/nano-banana-2",
"type": "string",
"enum": [
"google/nano-banana-2",
"google/nano-banana-pro"
]
},
"prompt": {
"default": "Create an original composition based on the supplied subject images. Preserve recognizable subjects. No added text, labels or watermarks.",
"type": "string",
"maxLength": 12000
},
"styleReferenceAssetIds": {
"default": [],
"maxItems": 2,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 180
}
}
},
"required": [
"mode",
"required",
"model",
"prompt",
"styleReferenceAssetIds"
],
"additionalProperties": false
},
"schedule": {
"type": "object",
"properties": {
"kind": {
"default": "daily",
"type": "string",
"enum": [
"daily",
"weekly",
"monthly"
]
},
"time": {
"type": "string"
},
"timezone": {
"type": "string"
},
"weekdays": {
"default": [],
"type": "array",
"items": {
"type": "integer",
"minimum": 1,
"maximum": 7
}
},
"monthDays": {
"default": [],
"type": "array",
"items": {
"type": "integer",
"minimum": 1,
"maximum": 31
}
}
},
"required": [
"kind",
"time",
"timezone",
"weekdays",
"monthDays"
],
"additionalProperties": false
},
"versions": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"language": {
"type": "string",
"pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$"
},
"templateId": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"image": {
"type": "object",
"properties": {
"mode": {
"default": "generate",
"type": "string",
"enum": [
"none",
"original",
"album",
"generate"
]
},
"required": {
"default": true,
"type": "boolean"
},
"collectionId": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"model": {
"default": "google/nano-banana-2",
"type": "string",
"enum": [
"google/nano-banana-2",
"google/nano-banana-pro"
]
},
"prompt": {
"default": "Create an original composition based on the supplied subject images. Preserve recognizable subjects. No added text, labels or watermarks.",
"type": "string",
"maxLength": 12000
},
"styleReferenceAssetIds": {
"default": [],
"maxItems": 2,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 180
}
}
},
"required": [
"mode",
"required",
"model",
"prompt",
"styleReferenceAssetIds"
],
"additionalProperties": false
}
},
"required": [
"id",
"language",
"templateId"
],
"additionalProperties": false
}
},
"placements": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"versionId": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"targetId": {
"type": "string",
"minLength": 1,
"maxLength": 180
},
"time": {
"type": "string"
},
"timezone": {
"type": "string"
}
},
"required": [
"id",
"versionId",
"targetId",
"time",
"timezone"
],
"additionalProperties": false
}
}
},
"required": [
"count",
"selection",
"tags",
"repeatWindow",
"instruction",
"image",
"schedule",
"versions",
"placements"
],
"additionalProperties": false
}
},
"required": [
"title",
"catalogId",
"config"
],
"additionalProperties": false
}
curl --fail-with-body --request PUT 'https://api.signailist.com/v1/author/series/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

set_author_automation​

Включить или приостановить расписание и явную автопубликацию

REST: POST /v1/author/series/{id}/automation · MCP: set_author_automation · Право: configure

Поле телаОбязательноТип
enabledДаboolean
autoPublishДаboolean
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"autoPublish": {
"type": "boolean"
}
},
"required": [
"enabled",
"autoPublish"
],
"additionalProperties": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/author/series/OBJECT_ID/automation' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

trial_author_series​

Создать платный пробный выпуск без публикации

REST: POST /v1/author/series/{id}/trial · MCP: trial_author_series · Право: run

Поле телаОбязательноТип
intentKeyДаstring
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"intentKey": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"required": [
"intentKey"
],
"additionalProperties": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/author/series/OBJECT_ID/trial' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

list_author_editions​

Получить выпуски рубрики

REST: GET /v1/author/series/{id}/editions · MCP: list_author_editions · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/author/series/OBJECT_ID/editions' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

get_author_edition​

Прочитать исходники, версии и результаты доставки

REST: GET /v1/author/editions/{id} · MCP: get_author_edition · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/author/editions/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

publish_author_edition​

Утвердить и отправить готовые версии выпуска

REST: POST /v1/author/editions/{id}/publish · MCP: publish_author_edition · Право: publish

Поле телаОбязательноТип
immediateНетboolean
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"immediate": {
"type": "boolean"
}
},
"additionalProperties": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/author/editions/OBJECT_ID/publish' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

list_digests​

Получить дайджесты

REST: GET /v1/digests · MCP: list_digests · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/digests' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

digest_candidates​

Выбрать материалы для дайджеста

REST: GET /v1/digest-candidates · MCP: digest_candidates · Право: read

Query-полеОбязательноФормат
periodStartДаstring (date-time)
periodEndДаstring (date-time)
sourceIdsНетstring
qНетstring
aiНетstring
limitНетinteger; default=200; max=500
curl --fail-with-body --request GET 'https://api.signailist.com/v1/digest-candidates?periodStart=2026-10-19T00%3A00%3A00Z&periodEnd=2026-10-26T00%3A00%3A00Z' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

create_digest​

Создать черновик из выбранных материалов

REST: POST /v1/digests · MCP: create_digest · Право: configure

Поле телаОбязательноТип
templateIdДаstring
periodStartДаstring (date-time)
periodEndДаstring (date-time)
selectedProcessedItemIdsДаarray
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"templateId": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"periodStart": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"periodEnd": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"selectedProcessedItemIds": {
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
}
},
"required": [
"templateId",
"periodStart",
"periodEnd",
"selectedProcessedItemIds"
],
"additionalProperties": {}
}
Пример тела
{
"templateId": "TEMPLATE_ID",
"periodStart": "2026-10-19T00:00:00Z",
"periodEnd": "2026-10-26T00:00:00Z",
"selectedProcessedItemIds": [
"PROCESSED_ID"
]
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/digests' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

get_digest​

Прочитать дайджест и результат генерации

REST: GET /v1/digests/{id} · MCP: get_digest · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/digests/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

update_digest​

Изменить черновик дайджеста

REST: PATCH /v1/digests/{id} · MCP: update_digest · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request PATCH 'https://api.signailist.com/v1/digests/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

generate_digest_text​

Запустить генерацию текста дайджеста

REST: POST /v1/digests/{id}/generate-text · MCP: generate_digest_text · Право: run

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/digests/OBJECT_ID/generate-text' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

generate_digest_image​

Запустить генерацию обложки

REST: POST /v1/digests/{id}/generate-image · MCP: generate_digest_image · Право: run

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/digests/OBJECT_ID/generate-image' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

score_material​

Запустить AI-оценку материала

REST: POST /v1/materials/{id}/score · MCP: score_material · Право: run

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/materials/OBJECT_ID/score' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Приём материалов​

create_external_source​

Создать приватный внешний источник

REST: POST /v1/external-sources · MCP: create_external_source · Право: configure

Поле телаОбязательноТип
titleДаstring
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 160
}
},
"required": [
"title"
],
"additionalProperties": false
}
Пример тела
{
"title": "Our system"
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/external-sources' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

ingest_materials​

Принять пакет версионированных материалов

REST: POST /v1/external-sources/{id}/items · MCP: ingest_materials · Право: ingest

Поле телаОбязательноТип
itemsДаarray
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"items": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"externalId": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 65536
},
"publishedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"url": {
"type": "string",
"format": "uri"
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"externalId",
"version",
"title",
"text",
"publishedAt"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
}
Пример тела
{
"items": [
{
"externalId": "article-42",
"version": "1",
"title": "Release",
"text": "Release is available.",
"publishedAt": "2026-10-20T12:00:00Z"
}
]
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/external-sources/OBJECT_ID/items' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Провайдеры и назначения​

list_telegram_accounts​

Получить подключённые аккаунты Telegram

REST: GET /v1/accounts/telegram · MCP: list_telegram_accounts · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/accounts/telegram' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

list_connections​

Получить подключения провайдеров без секретов

REST: GET /v1/connections · MCP: list_connections · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/connections' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

create_discord_connection​

Подключить Discord webhook

REST: POST /v1/connections · MCP: create_discord_connection · Право: publish

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{
"label": "Our Discord",
"webhookUrl": "https://discord.com/api/webhooks/WEBHOOK_ID/WEBHOOK_TOKEN"
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/connections' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

revoke_connection​

Отозвать подключение провайдера

REST: POST /v1/connections/{id}/revoke · MCP: revoke_connection · Право: publish

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/connections/OBJECT_ID/revoke' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

list_targets​

Получить назначения публикаций

REST: GET /v1/targets · MCP: list_targets · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/targets' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

create_target​

Настроить назначение публикации

REST: POST /v1/targets · MCP: create_target · Право: publish

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{
"provider": "discord",
"connectionId": "CONNECTION_ID",
"channelTitle": "Our Discord"
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/targets' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

update_target​

Изменить назначение публикации

REST: PATCH /v1/targets/{id} · MCP: update_target · Право: publish

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request PATCH 'https://api.signailist.com/v1/targets/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Расписания и кандидаты​

delete_schedule​

Удалить расписание

REST: DELETE /v1/schedules/{id} · MCP: delete_schedule · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request DELETE 'https://api.signailist.com/v1/schedules/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

list_schedules​

Получить расписания публикаций

REST: GET /v1/schedules · MCP: list_schedules · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/schedules' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

create_schedule​

Создать выключенное расписание

REST: POST /v1/schedules · MCP: create_schedule · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{
"name": "Weekly digest",
"triggerMode": "schedule",
"topicId": "TOPIC_ID",
"templateId": "TEMPLATE_ID",
"publicationTargetId": "TARGET_ID",
"schedule": {
"kind": "weekly",
"weekdays": [
1
],
"time": "09:00",
"timezone": "Asia/Tbilisi",
"sourceIds": [
"SOURCE_ID"
]
},
"confirmationMode": "site",
"generateText": true,
"generateImage": false,
"isActive": false,
"clientMutationId": "weekly-setup-1"
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/schedules' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

update_schedule​

Изменить расписание

REST: PATCH /v1/schedules/{id} · MCP: update_schedule · Право: publish

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{
"name": "Weekly digest"
}
curl --fail-with-body --request PATCH 'https://api.signailist.com/v1/schedules/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

enable_schedule​

Включить расписание публикаций

REST: POST /v1/schedules/{id}/enable · MCP: enable_schedule · Право: publish

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/schedules/OBJECT_ID/enable' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

pause_schedule​

Приостановить расписание

REST: POST /v1/schedules/{id}/pause · MCP: pause_schedule · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/schedules/OBJECT_ID/pause' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

trigger_schedule​

Запустить расписание сейчас

REST: POST /v1/schedules/{id}/trigger · MCP: trigger_schedule · Право: publish

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/schedules/OBJECT_ID/trigger' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

list_candidates​

Получить кандидатов публикации

REST: GET /v1/publication-candidates · MCP: list_candidates · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/publication-candidates' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

approve_candidate​

Утвердить кандидата публикации

REST: POST /v1/publication-candidates/{id}/approve · MCP: approve_candidate · Право: publish

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/publication-candidates/OBJECT_ID/approve' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

reject_candidate​

Отклонить кандидата публикации

REST: POST /v1/publication-candidates/{id}/reject · MCP: reject_candidate · Право: publish

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/publication-candidates/OBJECT_ID/reject' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Документы и доставка публикаций​

list_publications​

Получить историю публикаций

REST: GET /v1/publications · MCP: list_publications · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/publications' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

get_document​

Прочитать документ, ревизию и предпросмотр

REST: GET /v1/digests/{id}/document · MCP: get_document · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/digests/OBJECT_ID/document' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

save_document​

Сохранить документ с expectedRevision

REST: PUT /v1/digests/{id}/document · MCP: save_document · Право: configure

Поле телаОбязательноТип
expectedRevisionДаinteger
documentДаobject
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"document": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"expectedRevision",
"document"
],
"additionalProperties": false
}
Пример тела
{
"expectedRevision": 0,
"document": {
"schemaVersion": 1,
"id": "DOCUMENT_ID",
"workspaceId": "CONNECTED_WORKSPACE_ID",
"revision": 1,
"title": null,
"blocks": [
{
"type": "paragraph",
"text": "Reviewed text."
}
],
"attribution": null,
"sources": []
}
}
curl --fail-with-body --request PUT 'https://api.signailist.com/v1/digests/OBJECT_ID/document' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

approve_document​

Утвердить точную ревизию документа

REST: POST /v1/digests/{id}/approve · MCP: approve_document · Право: publish

Поле телаОбязательноТип
revisionДаinteger
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"revision"
],
"additionalProperties": false
}
Пример тела
{
"revision": 1
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/digests/OBJECT_ID/approve' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

publish_document​

Отправить утверждённую ревизию в назначения

REST: POST /v1/digests/{id}/publish · MCP: publish_document · Право: publish

Поле телаОбязательноТип
revisionДаinteger
targetIdsДаarray
logicalPublicationIdДаstring
scheduledAtНетstring (date-time)
publisherAccountIdНетstring
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"targetIds": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
},
"logicalPublicationId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"publisherAccountId": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
},
"required": [
"revision",
"targetIds",
"logicalPublicationId"
],
"additionalProperties": false
}
Пример тела
{
"revision": 1,
"targetIds": [
"TARGET_ID"
],
"logicalPublicationId": "weekly-2026-10-26"
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/digests/OBJECT_ID/publish' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

get_delivery​

Прочитать квитанции доставки публикации

REST: GET /v1/deliveries/{id} · MCP: get_delivery · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/deliveries/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

retry_delivery​

Повторить доставку с учётом риска дубля

REST: POST /v1/deliveries/{id}/retry · MCP: retry_delivery · Право: publish

Поле телаОбязательноТип
acknowledgeDuplicateRiskНетboolean
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"acknowledgeDuplicateRisk": {
"type": "boolean"
}
},
"additionalProperties": false
}
Пример тела
{
"acknowledgeDuplicateRisk": false
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/deliveries/OBJECT_ID/retry' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

cancel_publication​

Отменить ожидающую публикацию

REST: POST /v1/publications/{id}/cancel · MCP: cancel_publication · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/publications/OBJECT_ID/cancel' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Задания​

list_jobs​

Получить задания очереди

REST: GET /v1/jobs · MCP: list_jobs · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/jobs' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

cancel_job​

Отменить ожидающее задание

REST: POST /v1/jobs/{id}/cancel · MCP: cancel_job · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/jobs/OBJECT_ID/cancel' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

get_job​

Прочитать состояние задания

REST: GET /v1/jobs/{id} · MCP: get_job · Право: read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/jobs/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

Ассеты​

list_assets​

Получить сохранённые изображения

REST: GET /v1/assets · MCP: list_assets · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/assets' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

upload_asset​

Загрузить изображение

REST: POST /v1/assets · MCP: upload_asset · Право: run

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/assets' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Сигналы​

list_signals​

Получить правила сигналов и уведомлений

REST: GET /v1/signals · MCP: list_signals · Право: read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/signals' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

create_signal​

Создать выключенное правило уведомлений

REST: POST /v1/signals · MCP: create_signal · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/signals' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

update_signal​

Изменить правило уведомлений

REST: PATCH /v1/signals/{id} · MCP: update_signal · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
curl --fail-with-body --request PATCH 'https://api.signailist.com/v1/signals/OBJECT_ID' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

enable_signal​

Включить правило уведомлений

REST: POST /v1/signals/{id}/enable · MCP: enable_signal · Право: run

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/signals/OBJECT_ID/enable' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

pause_signal​

Приостановить правило уведомлений

REST: POST /v1/signals/{id}/pause · MCP: pause_signal · Право: configure

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/signals/OBJECT_ID/pause' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Исходящие вебхуки​

create_webhook​

Создать подписку исходящих вебхуков

REST: POST /v1/webhooks · MCP: create_webhook · Право: webhooks

Поле телаОбязательноТип
nameДаstring
urlДаstring (uri)
eventsДаarray
includeResultНетboolean
JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"url": {
"type": "string",
"format": "uri"
},
"events": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
},
"includeResult": {
"type": "boolean"
}
},
"required": [
"name",
"url",
"events"
],
"additionalProperties": false
}
Пример тела
{
"name": "Result receiver",
"url": "https://receiver.example.com/signailist",
"events": [
"processing.completed"
],
"includeResult": true
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/webhooks' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

list_webhooks​

Получить подписки вебхуков

REST: GET /v1/webhooks · MCP: list_webhooks · Право: webhooks

curl --fail-with-body --request GET 'https://api.signailist.com/v1/webhooks' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

list_webhook_deliveries​

Получить историю доставки вебхуков

REST: GET /v1/webhooks/deliveries · MCP: list_webhook_deliveries · Право: webhooks

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/webhooks/deliveries' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

rotate_webhook​

Сменить секрет подписи вебхука

REST: POST /v1/webhooks/{id}/rotate · MCP: rotate_webhook · Право: webhooks

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/webhooks/OBJECT_ID/rotate' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

pause_webhook​

Приостановить доставку вебхука

REST: POST /v1/webhooks/{id}/pause · MCP: pause_webhook · Право: webhooks

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/webhooks/OBJECT_ID/pause' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

resume_webhook​

Возобновить доставку вебхука

REST: POST /v1/webhooks/{id}/resume · MCP: resume_webhook · Право: webhooks

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/webhooks/OBJECT_ID/resume' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

retry_webhook​

Повторить неуспешную платную доставку вебхука

REST: POST /v1/webhooks/deliveries/{id}/retry · MCP: retry_webhook · Право: webhooks

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/webhooks/deliveries/OBJECT_ID/retry' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data '{}'

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Биллинг и резервы​

billing_summary​

Прочитать баланс и расходы workspace

REST: GET /v1/billing/summary · MCP: billing_summary · Право: billing:read

Query-полеОбязательноФормат
fromНетstring (date-time)
toНетstring (date-time)
daysНетinteger; default=30; max=3650
curl --fail-with-body --request GET 'https://api.signailist.com/v1/billing/summary' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

billing_usage​

Получить историю расходов

REST: GET /v1/billing/usage · MCP: billing_usage · Право: billing:read

Query-полеОбязательноФормат
fromНетstring (date-time)
toНетstring (date-time)
daysНетinteger; default=30; max=3650
pageНетinteger; default=1
pageSizeНетinteger; default=20; max=200
groupByНетstring
operationНетstring
platformНетstring
sourceIdНетstring
curl --fail-with-body --request GET 'https://api.signailist.com/v1/billing/usage' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

list_reservations​

Получить резервы и прерванные операции

REST: GET /v1/reservations · MCP: list_reservations · Право: billing:read

Query-полеОбязательноФормат
cursorНетstring
limitНетinteger; default=50; max=100

Ответ: { items, nextCursor }. Передайте nextCursor в cursor следующего запроса; null означает конец.

curl --fail-with-body --request GET 'https://api.signailist.com/v1/reservations' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

budget​

Прочитать баланс, резервы и доступную сумму

REST: GET /v1/budget · MCP: budget · Право: billing:read

curl --fail-with-body --request GET 'https://api.signailist.com/v1/budget' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY"

estimate​

Оценить стоимость по реестру биллинга

REST: POST /v1/estimates · MCP: estimate · Право: billing:read

Тело: JSON-объект общего обработчика; конкретные write-поля см. в сценариях и примере ниже. Общая схема не исчерпывает бизнес-проверки.

JSON Schema тела
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
Пример тела
{
"operation": "generateDigest",
"model": "openai/gpt-6-luna",
"usage": {
"inputTokens": 1000,
"outputTokens": 500
}
}
curl --fail-with-body --request POST 'https://api.signailist.com/v1/estimates' \
--header "Authorization: Bearer $SIGNAILIST_API_KEY" \
--header "Idempotency-Key: YOUR_STABLE_REQUEST_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.json

В MCP передайте те же поля в body, ID объекта отдельно в id (если он есть в пути), а постоянный ключ — в idempotencyKey. В REST ID должен быть закодирован для URL. Одноразовые секреты исключаются из повторного ответа.

Авторизация и служебные публичные адреса​

Это HTTP-адреса протокола и схем, а не дополнительные бизнес-инструменты. Административные и session-only маршруты сайта не входят в публичный REST API.

MethodURL/pathPurpose
GET/.well-known/oauth-protected-resourceOAuth resource metadata
GET/.well-known/oauth-authorization-serverOAuth server metadata
POST/oauth/registerDynamic client registration
GET/oauth/authorizeBrowser sign-in/consent redirect
POST/oauth/tokenCode/refresh token exchange
POST/oauth/revokeToken revocation
POST/mcpAuthenticated MCP JSON-RPC, not an arbitrary REST proxy
GET/v1/openapi.jsonPublic API specification

Относительные адреса относятся к https://api.signailist.com. Владелец создаёт ключи, задаёт финансовые лимиты и разбирает зависшие резервы в интерфейсе интеграций. Эти привилегированные действия не выдаются агенту как способ повысить свой доступ.