Прочитать выполнение и его трассировку
Читайте статус выполнения, пока оно идёт, и его трассировку по узлам, когда оно продвинулось.
Выполнение — это один запрос, пройденный через флоу. Его открывает запрос к флоу — POST /v1/operations/execute, — и оно сохраняет версию флоу, на которой началось. Операции этой страницы его читают: его статус, которого ждёт клиент, и его трассировку по узлам. Консоль показывает ту же трассировку на странице выполнения, которую открывают с вкладки Выполнения флоу.
Статус и трассировка
GET /v1/executions/{id}/statusотвечает полями ответа на запрос:status,output,error_code,error_message,cost,cache,waiting_onиtrace_url. Пока выполнение не закончилось, он добавляетretry_after_seconds— паузу, которую Slen советует сделать перед следующим чтением. Читайте его, чтобы дождаться выполнения.GET /v1/executions/{id}отвечает трассировкой: выполнение с его флоу —flow_name— это имя флоу, каким оно стало сейчас, — его версией, временем начала и конца и двумя списками —nodesиevents.
Обе операции требуют разрешения read. Ключ читает выполнения своего проекта. Выполнение другого проекта или несуществующее отвечает 404 с кодом flow_execution_not_found. Выполнения одного флоу перечислены в статье Флоу.
Что содержит трассировка
В
nodesесть строка для каждого узла, который выполнение прошло: порт, через который он вышел, вoutput_port, его стоимость, сколько он занял. Узел записывается, когда он закончен, поэтому узла, у которого выполнение ждёт, там ещё нет. У узла, который завершает путь, — Вернуть ответ, Отклонить запрос — порта нет, иoutput_portравенnull.Строка ещё называет узел и то, что он решил.
label— имя, которое автор дал узлу в этой версии,null, если его нет.code— собственное решение узла — отказ Проверка бюджета, код Отклонить запрос,approvedу согласования — и может отличаться отerror_codeвыполнения: тот код получил вызывающий.model— модель последней попытки узла AI-модель или модель, для которой Проверка бюджета прочитал бюджет узла.Вызов модели перечисляет свои попытки в строке своего узла AI-модель: одна попытка на каждое подключение провайдера, которое он пробовал, с подключением, пулом, отправленной моделью (
model_code) и тем, чем она закончилась.eventsрассказывает о проходе по порядку, с номерами вseq: оценки и холды, ответы и сбои провайдеров, паузы и решения. Событие несёт суммы, id и решения — никогда не промпт, не вход флоу и не ответ модели.
События трассировки хранятся 30 дней, а выполнение с его узлами — 90 дней, если сервис не настроен иначе.
Чем закончилось выполнение
status говорит, чем закончился запрос, а статья Что говорит ответ перечисляет все статусы. error_code и error_message говорят, почему выполнение не завершилось успешно. Кроме кодов API, среда выполнения закрывает выполнение, которое больше не может пройти, собственным кодом — Коды ошибок показывают, как такое выполнение выглядит.
uncertain— неизвестно, чем закончился вызов модели этого выполнения: провайдер не ответил вовремя, или о вызове, который он выполнял в фоне, больше нельзя было спросить.error_codeравенoperation_uncertain. Холд вызова остаётся, пока не истечёт, потому что провайдеру могли заплатить, и Slen вызов не повторяет. Статья Когда исход неизвестен говорит, что делать.failedсbackground_hold_expired— вызов модели шёл в фоне, и его холд закрыло другое списание, пока он ждал. Вызов закончился, не спросив у провайдера ответ, и провайдер всё ещё может выставить за него счёт.failedсexecution_timeout— у прохода вышло время. Если модель уже ответила, её вызов оплачен, иcost.actualвсё равно придёт.
Стоимость выполнения
cost.estimated — сумма оценок, по которым авторизованы вызовы моделей этого выполнения. cost.actual — то, на что они списаны, и оно приходит после ответа: вызовы рассчитываются в фоне, обычно в течение минуты-двух.
cost.actualостаётсяnull, пока выполнение идёт и пока хотя бы один его вызов ждёт списания, поэтому выполнение с двумя вызовами модели никогда не показывает стоимость одного.Оно остаётся
nullнавсегда, когда ничего не списано: отказ, ответ из кеша, сбой у провайдера.Когда оно задано, оно больше не меняется.
Чтение трассировки догоняет стоимость, расчёт которой был пропущен, поэтому трассировка, прочитанная после расчёта, её показывает.
Операции
Описания операций и полей приведены на английском.
Трассировка одного запуска флоу
GET /v1/executions/{id}
- Разрешение:
read - Доступно в SDK для PHP и Node.js
Node by node, event by event, with the cost on each.
Параметры
| Параметр | Описание |
|---|---|
id обязательноpath | Snowflake identifier, as a string.
|
Ответы
The execution trace
{
"data": {
"execution_id": "74438200973594624",
"flow_id": "74438200973594624",
"flow_version_id": "74438200973594624",
"operation": "generate_email",
"operation_id": "74438200973594624",
"status": "running",
"error_code": "string",
"error_message": "string",
"cost": {
"estimated": "0.02700000",
"actual": "0.02700000"
},
"cache": {
"hit": true,
"cached_at": "2026-10-02T09:30:00Z"
},
"started_at": "2026-10-02T09:30:00Z",
"finished_at": "2026-10-02T09:30:00Z",
"duration_ms": 1,
"flow_name": "string",
"nodes": [
{
"node_key": "string",
"node_type": "sdk_request",
"status": "completed",
"output_port": "string",
"cost": "0.02700000",
"duration_ms": 1,
"started_at": "2026-10-02T09:30:00Z",
"finished_at": "2026-10-02T09:30:00Z",
"metadata": {},
"attempts": [
{
"attempt_id": "74438200973594624",
"attempt_number": 1,
"connection_id": "74438200973594624",
"pool_id": "74438200973594624",
"status": "string",
"error_code": "string",
"latency_ms": 1,
"cost": "0.02700000",
"provider_request_id": "74438200973594624",
"model_code": "gpt-4o-mini"
}
],
"label": "string",
"model": "gpt-4o-mini",
"code": "string"
}
],
"events": [
{
"seq": 1,
"type": "accepted",
"node_key": "string",
"occurred_at": "2026-10-02T09:30:00Z",
"payload": {}
}
]
}
}Ошибки
| Статус | Коды | Когда |
|---|---|---|
| 401 | No credential, or one that is not valid | |
| 403 | Authenticated, but not allowed: scope ( | |
| 404 | No such resource for this tenant. Somebody else's resource — and a resource of a project the caller does not reach — answers the same way on purpose: the two must not be distinguishable. |
Заголовки
X-Request-Id
Тело каждой ошибки — конверт ошибки.
Статус запуска флоу для опроса
GET /v1/executions/{id}/status
- Разрешение:
read - Доступно в SDK для PHP и Node.js
Status, cost, what the run waits on, and the answer once there is one — the endpoint an SDK polls. Answered from a Redis snapshot when there is one and from the row otherwise, byte for byte the same either way. A run of a project the caller does not reach is 404 either way — the snapshot carries its project. Use GET /v1/executions/{id} for the node-by-node trace.
Параметры
| Параметр | Описание |
|---|---|
id обязательноpath | Snowflake identifier, as a string.
|
Ответы
The current state of the execution
{
"data": {
"execution_id": "74438200973594624",
"status": "running",
"operation": "generate_email",
"output": {},
"error_code": "string",
"error_message": "string",
"cost": {
"estimated": "0.02700000",
"actual": "0.02700000"
},
"cache": {
"hit": true,
"cached_at": "2026-10-02T09:30:00Z"
},
"waiting_on": {
"node_key": "string",
"type": "queue_node",
"resume_at": "2026-10-02T09:30:00Z"
},
"trace_url": "string",
"retry_after_seconds": 1
}
}Ошибки
| Статус | Коды | Когда |
|---|---|---|
| 401 | No credential, or one that is not valid | |
| 403 | Authenticated, but not allowed: scope ( | |
| 404 | No such resource for this tenant. Somebody else's resource — and a resource of a project the caller does not reach — answers the same way on purpose: the two must not be distinguishable. |
Заголовки
X-Request-Id
Тело каждой ошибки — конверт ошибки.
Примеры
Прочитать трассировку
id — это execution_id ответа на запрос. Ответ — выполнение с его nodes и events в форме, которую описывает блок выше.
curl https://api.slen.ai/api/v1/executions/74438200973594700 \
-H "Authorization: Bearer $SLEN_API_KEY"Прочитать статус
Выполнение ждёт у своего узла review решения человека. resume_at нет, а retry_after_seconds советует, когда прочитать снова.
curl https://api.slen.ai/api/v1/executions/74443028719599616/status \
-H "Authorization: Bearer $SLEN_API_KEY"{
"data": {
"execution_id": "74443028719599616",
"status": "waiting",
"operation": "generate_email",
"output": null,
"error_code": null,
"error_message": null,
"cost": {
"estimated": null,
"actual": null
},
"cache": {
"hit": false,
"cached_at": null
},
"waiting_on": {
"node_key": "review",
"type": "approval",
"resume_at": null
},
"trace_url": "/v1/executions/74443028719599616",
"retry_after_seconds": 30
}
}Что читать дальше
Асинхронные запуски и ожидание — дождитесь выполнения через SDK.
Когда исход неизвестен — выполнение, которое закончилось со статусом
uncertain.Операции — запрос, который открывает выполнение, и запись каждого вызова модели.
Разбор выполнения — те же выполнения в консоли.
Собрано из openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d