API reference
Executions
Read call results, logs, recordings and webhook deliveries.
An execution is the record of one call, inbound or outbound. It holds the status, the transcript, the cost breakdown, telephony details, the summary and extracted data. Executions are created by Make a call, by batches, by workflows and by inbound calls. You cannot create or edit one directly.
All routes except the recording download need Authorization: Bearer <key>. An unknown or foreign execution id answers 404 with Execution not found.
| Operation | Method and path |
|---|---|
| Get an execution | GET /executions/{execution_id} |
| Get an execution's logs | GET /executions/{execution_id}/log |
| Get an execution of an agent | GET /agent/{agent_id}/execution/{execution_id} |
| List an agent's executions | GET /v2/agent/{agent_id}/executions |
| List all of an agent's executions | GET /agent/{agent_id}/executions |
| List webhook deliveries | GET /executions/{execution_id}/webhooks |
| Resend the webhook | POST /executions/{execution_id}/webhook:resend |
| Download a recording | GET /recordings/{execution_id}.wav |
Statuses
| Group | Statuses |
|---|---|
| Not dialed yet | scheduled, prepared, queued, rescheduled |
| Live | initiated, ringing, in-progress |
| Wrapping up | call-disconnected (the call ended; post-call work is running) |
| Final | completed, no-answer, busy, failed, canceled, stopped, error, balance-low |
Nothing leaves a final status, with one exception: a call with retry_config.enabled that ends in a retryable status goes back to scheduled under the same id.
The execution object
| Field | Type | Description |
|---|---|---|
id | string | Execution id. |
agent_id | string | The agent that ran the call. |
batch_id | string | Present for batch calls. |
status | string | See Statuses. |
conversation_duration | number | Seconds of conversation. |
total_cost | number | Total cost of the call, in minor units (hundredths) of currency. |
currency | string | The billing currency of the costs on this execution, a three-letter code from the deployment's price book. |
cost_breakdown | object | llm, network, platform, synthesizer, transcriber. The parts add up to total_cost. |
transcript | string | One role: text line per turn. |
summary | string | Present when the agent has call_summary_enabled. |
extracted_data | object | Answers to the agent's dispositions: {category: {name: {subjective, objective}}}. |
telephony_data | object | to_number, from_number, provider, call_type, provider_call_id, duration (a string), recording_url, hangup_by, hangup_reason and similar. |
transfer_call_data | object | Details of a call transfer, when one happened. |
tool_call_logs | array | Function tool calls made during the call. |
context_details | object | Per-call context, such as recipient_data, retry_count and rescheduled_reason. |
answered_by_voice_mail | boolean | Present when voicemail detection ran. |
error_message | string | Present when the call failed. |
scheduled_at | string | Present for scheduled or rescheduled calls. |
user_number, agent_number | string | The customer's and the agent's numbers, whatever the call direction. |
retry_count, retry_config | integer, object | Present when retries are enabled. |
batch_run_details | object | Present for batch calls: status, created_at, updated_at, retried. |
node_path, node_extracted_data | array, object | Present for graph agents. |
created_at, updated_at | string | UTC timestamps with microseconds. |
Fields with no value are left out of the response; they are never null.
Operations
Get an execution
GET /executions/{execution_id}
Returns one execution.
Auth: API key or session token. Role: viewer and up.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
execution_id | path | string (UUID) | yes | The execution. |
Request
curl https://api.sevennadi.si/executions/0b6c2c4e-7a55-4b0f-9a07-3d6b1f9f2a11 \
-H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"Response 200 OK
{
"id": "0b6c2c4e-7a55-4b0f-9a07-3d6b1f9f2a11",
"agent_id": "f412f2b1-3493-4458-bcf2-8676cc798edd",
"conversation_duration": 21.4,
"total_cost": 3.2,
"status": "completed",
"transcript": "assistant: Hi Asha, this is Example Bank calling.\nuser: Yes, speaking.\nassistant: Sure. (mock reply to: Yes, speaking.)",
"created_at": "2026-10-13T07:30:11.120000Z",
"updated_at": "2026-10-13T07:30:14.480000Z",
"cost_breakdown": {"llm": 0.2, "network": 0.7, "platform": 1.4, "synthesizer": 0.6, "transcriber": 0.3},
"telephony_data": {
"to_number": "+919876500012",
"from_number": "+918045550100",
"provider": "twilio",
"call_type": "outbound",
"provider_call_id": "MOCK5f0c1e9b2a7d4c6e8f1a2b3c",
"hosted_telephony": true,
"duration": "21.4",
"recording_url": "https://api.sevennadi.si/recordings/0b6c2c4e-7a55-4b0f-9a07-3d6b1f9f2a11.wav?sig=0123456789abcdef0123456789abcdef",
"hangup_by": "Caller",
"hangup_reason": "Normal Hangup"
},
"transfer_call_data": {},
"tool_call_logs": [],
"context_details": {"bypass_call_guardrails": false},
"user_number": "+919876500012",
"agent_number": "+918045550100"
}The numbers above are illustrative, not a price list.
Errors
| Status | Message |
|---|---|
| 404 | Execution not found |
Get an execution's logs
GET /executions/{execution_id}/log
Returns the raw component log of a call in order: what was sent to and received from telephony, the transcriber, the language model and the synthesizer.
Auth: API key or session token. Role: viewer and up.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
execution_id | path | string (UUID) | yes | The execution. |
Request
curl https://api.sevennadi.si/executions/0b6c2c4e-7a55-4b0f-9a07-3d6b1f9f2a11/log \
-H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"Response 200 OK
{
"status": "success",
"data": [
{
"created_at": "2026-10-13T07:30:11.300000Z",
"type": "request",
"component": "telephony",
"provider": "twilio",
"data": "dial +919876500012"
},
{
"created_at": "2026-10-13T07:30:12.100000Z",
"type": "response",
"component": "transcriber",
"provider": "deepgram",
"data": "Yes, speaking."
}
]
}type is request or response. component is one of telephony, transcriber, llm, synthesizer, or a feature name such as knowledgebase, voicemail_detection or reschedule.
Errors
| Status | Message |
|---|---|
| 404 | Execution not found |
Get an execution of an agent
GET /agent/{agent_id}/execution/{execution_id}
Returns one execution, and also checks that it belongs to the given agent.
Auth: API key or session token. Role: viewer and up.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
agent_id | path | string (UUID) | yes | The agent. |
execution_id | path | string (UUID) | yes | The execution. |
Request
curl https://api.sevennadi.si/agent/f412f2b1-3493-4458-bcf2-8676cc798edd/execution/0b6c2c4e-7a55-4b0f-9a07-3d6b1f9f2a11 \
-H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"Response 200 OK
The execution object, as in Get an execution.
Errors
| Status | Message |
|---|---|
| 404 | Execution not found (also when the execution belongs to another agent) |
List an agent's executions
GET /v2/agent/{agent_id}/executions
Returns an agent's executions created inside a time window, newest first, one page at a time. Executions of a deleted agent can still be listed.
Auth: API key or session token. Role: viewer and up.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
agent_id | path | string (UUID) | yes | The agent. |
from | query | string | yes | Start of the window, ISO 8601. A value without an offset is read as UTC. |
to | query | string | yes | End of the window, ISO 8601. |
page_number | query | integer | no | Starts at 1. Default 1. |
page_size | query | integer | no | 1 to 50. Default 20. |
status | query | string | no | One execution status. |
call_type | query | string | no | inbound or outbound. |
provider | query | string | no | Telephony provider recorded on the call, for example twilio. |
answered_by_voice_mail | query | boolean | no | Filter on voicemail. |
batch_id | query | string | no | Only calls of this batch. |
Request
curl "https://api.sevennadi.si/v2/agent/f412f2b1-3493-4458-bcf2-8676cc798edd/executions?from=2026-10-01T00:00:00Z&to=2026-10-31T23:59:59Z&status=completed&page_size=20" \
-H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"Response 200 OK
{
"page_number": 1,
"page_size": 20,
"total": 1,
"has_more": false,
"data": [
{"id": "0b6c2c4e-7a55-4b0f-9a07-3d6b1f9f2a11", "agent_id": "f412f2b1-3493-4458-bcf2-8676cc798edd", "status": "completed", "conversation_duration": 21.4, "total_cost": 3.2}
]
}Each entry of data is a full execution object. See Pagination.
Errors
| Status | Message |
|---|---|
| 400 | from and to are required |
| 400 | from must be an ISO 8601 timestamp or to must be an ISO 8601 timestamp |
| 400 | A validation message such as query.page_size: Input should be less than or equal to 50 |
| 404 | Agent not found |
List all of an agent's executions
GET /agent/{agent_id}/executions
Returns the agent's executions, newest first, as a plain array of at most 1,000: an agent with more calls gets only the newest 1,000. There is no paging and no filter, so use the version 2 route for agents with many calls.
Auth: API key or session token. Role: viewer and up.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
agent_id | path | string (UUID) | yes | The agent. |
Request
curl https://api.sevennadi.si/agent/f412f2b1-3493-4458-bcf2-8676cc798edd/executions \
-H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"Response 200 OK
An array of execution objects.
Errors
| Status | Message |
|---|---|
| 404 | Agent not found |
List webhook deliveries
GET /executions/{execution_id}/webhooks
Returns every webhook delivery of an execution, oldest first: which status was sent where, and how it went. This route is not part of the core OpenAPI document.
Auth: API key or session token. Role: viewer and up.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
execution_id | path | string (UUID) | yes | The execution. |
Request
curl https://api.sevennadi.si/executions/0b6c2c4e-7a55-4b0f-9a07-3d6b1f9f2a11/webhooks \
-H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"Response 200 OK
{
"data": [
{
"id": 4812,
"webhook_url": "https://hooks.example.test/calls",
"status": "completed",
"attempts": 1,
"response_code": 200,
"delivered": true,
"delivered_at": "2026-10-13T07:30:15.020000Z",
"error": null,
"created_at": "2026-10-13T07:30:14.500000Z"
}
]
}Errors
| Status | Message |
|---|---|
| 404 | Execution not found |
Resend the webhook
POST /executions/{execution_id}/webhook:resend
Queues the execution's current payload for its webhook again. The agent's status filter does not apply to a resend. The destination is the call's own agent_data.webhook_url if it had one, otherwise the agent's webhook_url. This route is not part of the core OpenAPI document.
Auth: API key or session token. Role: admin and up.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
execution_id | path | string (UUID) | yes | The execution. |
Request
curl -X POST "https://api.sevennadi.si/executions/0b6c2c4e-7a55-4b0f-9a07-3d6b1f9f2a11/webhook:resend" \
-H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"Response 202 Accepted
{
"execution_id": "0b6c2c4e-7a55-4b0f-9a07-3d6b1f9f2a11",
"webhook_url": "https://hooks.example.test/calls",
"status": "completed",
"delivery_id": 4813
}Errors
| Status | Message |
|---|---|
| 403 | Your role (member) can't change webhooks. It needs admin access; ask an owner or admin of the workspace. |
| 404 | Execution not found |
| 409 | No webhook is configured for this execution's agent |
Download a recording
GET /recordings/{execution_id}.wav
Downloads a call recording that the platform hosts, as audio/wav. Use the complete URL from telephony_data.recording_url; do not build it yourself. The URL carries a per-recording signature in the sig query parameter and needs no Authorization header, so treat it like a secret link.
The platform hosts recordings of mock calls (tones, one per turn) and of calls recorded by its own voice engine. For other live calls recording_url points at the telephony provider.
Auth: The signature in the URL. No API key.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
execution_id | path | string (UUID) | yes | The execution. |
sig | query | string | yes | The signature, as issued in recording_url. |
Request
curl -o call.wav "https://api.sevennadi.si/recordings/0b6c2c4e-7a55-4b0f-9a07-3d6b1f9f2a11.wav?sig=0123456789abcdef0123456789abcdef"Response 200 OK
The WAV file.
Errors
| Status | Message |
|---|---|
| 403 | Invalid or missing signature |
| 404 | Recording not found |