chore: return formatted transcript url

- Return formatted transcript and recording URL
- Harden campaign dispatcher logic
This commit is contained in:
Abhishek Kumar 2026-05-26 13:24:12 +05:30
parent 0716582aa7
commit 7810923bca
30 changed files with 525 additions and 136 deletions

View file

@ -4,4 +4,4 @@ description: "Retrieve a single workflow run by ID"
openapi: "GET /api/v1/workflow/{workflow_id}/runs/{run_id}"
---
Returns the full run record including status, transcript, recording URL, gathered context, and usage/cost info. Use `recording_url` and `transcript_url` to download artifacts, or use the [Download endpoint](/api-reference/calls/download) for time-limited public URLs.
Returns the full run record including status, transcript, recording URL, gathered context, and usage/cost info. Use `recording_url` and `transcript_url` to download artifacts, or use the [Download endpoint](/api-reference/runs/download) for time-limited public URLs.

View file

@ -1,9 +0,0 @@
---
title: "Retrieve Call Details"
description: "Get the details, transcript, and recording for a call"
openapi: "GET /api/v1/workflow/{workflow_id}/runs/{run_id}"
---
Returns the full run record including call status, duration, transcript URL, recording URL, gathered context, and usage/cost info.
Use the `recording_url` and `transcript_url` directly, or use the [Download endpoint](/api-reference/calls/download) to generate time-limited public URLs for sharing.

View file

@ -1,9 +0,0 @@
---
title: "Inbound Call Webhook"
description: "Webhook endpoint that routes inbound calls to a specific agent"
openapi: "POST /api/v1/telephony/inbound/{workflow_id}"
---
Configure this URL in your telephony provider's dashboard (Twilio, Vonage, etc.) to route inbound calls to a specific agent. The `workflow_id` determines which agent handles the call.
See [Inbound Calls](/integrations/telephony/inbound) for full setup instructions per provider.

View file

@ -1,7 +1,7 @@
---
title: "Get Campaign Runs"
description: "Retrieve individual call records for each contact in a campaign"
description: "Retrieve individual run records for each contact in a campaign"
openapi: "GET /api/v1/campaign/{campaign_id}/runs"
---
Returns the individual call records for each contact in the campaign. Each record includes the same fields as a [workflow run](/api-reference/calls#retrieve-call-details), including call status, duration, transcript, and recording URL.
Returns the individual run records for each contact in the campaign. Each record includes the same fields as [agent run details](/api-reference/runs/get-run), including run status, duration, transcript, and recording URL.

File diff suppressed because one or more lines are too long

View file

@ -1,24 +1,24 @@
---
title: "Overview"
description: "Initiate outbound calls and trigger agents via the API"
description: "Create and inspect agent runs via the API"
---
| Method | Endpoint | Quick Link |
|---|---|---|
| `POST` | `/public/agent/{uuid}` | [Trigger an outbound call by API Trigger node](/api-reference/calls/trigger) |
| `POST` | `/public/agent/workflow/{workflow_uuid}` | [Trigger an outbound call by workflow UUID](/api-reference/calls/trigger-workflow) |
| `GET` | `/workflow/{workflow_id}/runs/{run_id}` | [Retrieve call details](/api-reference/calls/get-run) |
| `GET` | `/public/download/workflow/{token}/{artifact_type}` | [Download recordings and transcripts](/api-reference/calls/download) |
| `POST` | `/telephony/inbound/{workflow_id}` | [Inbound call webhook](/api-reference/calls/inbound) |
| `POST` | `/public/agent/{uuid}` | [Trigger an outbound agent run by API Trigger node](/api-reference/runs/trigger) |
| `POST` | `/public/agent/workflow/{workflow_uuid}` | [Trigger an outbound agent run by Agent UUID](/api-reference/runs/trigger-workflow) |
| `GET` | `/workflow/{workflow_id}/runs/{run_id}` | [Retrieve agent run details](/api-reference/runs/get-run) |
| `GET` | `/public/download/workflow/{token}/{artifact_type}` | [Download recordings and transcripts](/api-reference/runs/download) |
| `POST` | `/telephony/inbound/{workflow_id}` | [Inbound run webhook](/api-reference/runs/inbound) |
## Choose the right public call route
## Choose the right public run route
Dograh exposes two public outbound call route families. They are **not**
Dograh exposes two public outbound agent run route families. They are **not**
interchangeable, even though both path parameters look like UUIDs.
| Use this when | Production route | Test route | Identifier you pass |
|---|---|---|---|
| You added an **[API Trigger node](/voice-agent/api-trigger)** to the workflow and want to call that trigger | `/public/agent/{uuid}` | `/public/agent/test/{uuid}` | The trigger UUID (`trigger_path`) from the API Trigger node |
| You added an **[API Trigger node](/voice-agent/api-trigger)** to the workflow and want to execute that trigger | `/public/agent/{uuid}` | `/public/agent/test/{uuid}` | The trigger UUID (`trigger_path`) from the API Trigger node |
| You want to execute the workflow by its stable **Agent UUID** instead of a trigger node | `/public/agent/workflow/{workflow_uuid}` | `/public/agent/test/workflow/{workflow_uuid}` | The workflow UUID from the agent's **[Agent UUID](/configurations/agent-uuid)** field |
<Note>
@ -34,11 +34,11 @@ Once Dograh resolves the target agent, both route families behave the same:
- They validate the same `X-API-Key` organization boundary
- They use the same telephony configuration selection rules
If you specifically need the API Trigger route, see [Trigger an outbound call by API Trigger node](/api-reference/calls/trigger). To execute by workflow UUID, see [Trigger an outbound call by workflow UUID](/api-reference/calls/trigger-workflow).
If you specifically need the API Trigger route, see [Trigger an outbound agent run by API Trigger node](/api-reference/runs/trigger). To execute by Agent UUID, see [Trigger an outbound agent run by Agent UUID](/api-reference/runs/trigger-workflow).
## Using initial context
`initial_context` passes runtime data into the agent at call time. Values are available as template variables in your agent's prompt using double-brace syntax.
`initial_context` passes runtime data into the agent at run time. Values are available as template variables in your agent's prompt using double-brace syntax.
```json
{
@ -49,13 +49,13 @@ If you specifically need the API Trigger route, see [Trigger an outbound call by
}
```
Your agent prompt can then reference `{{customer_name}}` and `{{appointment_date}}` and they will be substituted when the call starts.
Your agent prompt can then reference `{{customer_name}}` and `{{appointment_date}}` and they will be substituted when the run starts.
## Run status values
| Status | Description |
|---|---|
| `pending` | Call queued but not yet connected |
| `in_progress` | Call is live |
| `completed` | Call ended normally |
| `failed` | Call failed before or during execution |
| `pending` | Run queued but not yet connected |
| `in_progress` | Run is live |
| `completed` | Run ended normally |
| `failed` | Run failed before or during execution |

View file

@ -0,0 +1,9 @@
---
title: "Retrieve Agent Run Details"
description: "Get the details, transcript, and recording for an agent run"
openapi: "GET /api/v1/workflow/{workflow_id}/runs/{run_id}"
---
Returns the full run record including run status, duration, transcript URL, recording URL, gathered context, and usage/cost info.
Use the `recording_url` and `transcript_url` directly, or use the [Download endpoint](/api-reference/runs/download) to generate time-limited public URLs for sharing.

View file

@ -0,0 +1,9 @@
---
title: "Inbound Run Webhook"
description: "Webhook endpoint that starts agent runs from inbound calls"
openapi: "POST /api/v1/telephony/inbound/{workflow_id}"
---
Configure this URL in your telephony provider's dashboard (Twilio, Vonage, etc.) to start agent runs from inbound calls to a specific agent. The `workflow_id` determines which agent handles the call.
See [Inbound calls](/integrations/telephony/inbound) for full setup instructions per provider.

View file

@ -8,4 +8,4 @@ Returns a paginated list of runs across all agents in your organization, includi
Use `start_date` and `end_date` (ISO 8601) to scope the window, and `page` / `limit` to paginate. Pass `filters` as a JSON-encoded string to narrow results further.
To fetch the full transcript or recording for a specific run, use [Retrieve Call Details](/api-reference/calls/get-run).
To fetch the full transcript or recording for a specific run, use [Retrieve Agent Run Details](/api-reference/runs/get-run).

View file

@ -1,23 +1,23 @@
---
title: "Trigger an Outbound Call by Workflow UUID"
description: "Initiate an outbound call using a workflow's stable Agent UUID"
title: "Trigger an Outbound Agent Run by Agent UUID"
description: "Start an outbound agent run using a workflow's stable Agent UUID"
openapi: "POST /api/v1/public/agent/workflow/{workflow_uuid}"
---
Use this endpoint when you want to execute a workflow directly by its stable Agent UUID instead of through an API Trigger node.
Use this endpoint when you want to start an agent run directly by its stable Agent UUID instead of through an API Trigger node.
The `workflow_uuid` is the workflow's Agent UUID. It is different from an API Trigger node's `trigger_path`.
To find and copy the Agent UUID in the UI, see [Agent UUID](/configurations/agent-uuid).
Use `workflow_run_id` from the response to later [retrieve call details](/api-reference/calls/get-run), recordings, and transcripts.
Use `workflow_run_id` from the response to later [retrieve run details](/api-reference/runs/get-run), recordings, and transcripts.
Pass `initial_context` to inject runtime data as template variables into the agent's prompt. See [Using initial context](/api-reference/calls#using-initial-context).
Pass `initial_context` to inject runtime data as template variables into the agent's prompt. See [Using initial context](/api-reference/runs#using-initial-context).
Pass `telephony_configuration_id` to route the call through a specific telephony configuration instead of your organization's default. The id is shown on each row in **Telephony configurations** (`https://app.dograh.com/telephony-configurations` for hosted or `http://localhost:3010/telephony-configurations` for local).
<Note>
This route expects a workflow UUID. Do not pass an API Trigger node UUID here. If you want to execute via an API Trigger node, use [Trigger an outbound call](/api-reference/calls/trigger) instead.
This route expects a workflow UUID. Do not pass an API Trigger node UUID here. If you want to execute via an API Trigger node, use [Trigger an outbound agent run](/api-reference/runs/trigger) instead.
</Note>
<Note>

View file

@ -1,21 +1,21 @@
---
title: "Trigger an Outbound Call by API Trigger Node"
description: "Initiate an outbound call using an API Trigger node UUID"
title: "Trigger an Outbound Agent Run by API Trigger Node"
description: "Start an outbound agent run using an API Trigger node UUID"
openapi: "POST /api/v1/public/agent/{uuid}"
---
Use this endpoint when you want to execute a workflow through an [API Trigger node](/voice-agent/api-trigger).
Use this endpoint when you want to start an agent run through an [API Trigger node](/voice-agent/api-trigger).
The `uuid` comes from the API Trigger node in your agent. Add the node to your workflow and copy its auto-generated `trigger_path`.
Use `workflow_run_id` from the response to later [retrieve call details](/api-reference/calls/get-run), recordings, and transcripts.
Use `workflow_run_id` from the response to later [retrieve run details](/api-reference/runs/get-run), recordings, and transcripts.
Pass `initial_context` to inject runtime data as template variables into the agent's prompt. See [Using initial context](/api-reference/calls#using-initial-context).
Pass `initial_context` to inject runtime data as template variables into the agent's prompt. See [Using initial context](/api-reference/runs#using-initial-context).
Pass `telephony_configuration_id` to route the call through a specific telephony configuration instead of your organization's default. The id is shown on each row in **Telephony configurations** (`https://app.dograh.com/telephony-configurations` for hosted or `http://localhost:3010/telephony-configurations` for local).
<Note>
This route expects an API Trigger node UUID (`trigger_path`). Do not pass a workflow UUID here. If you want to execute by workflow UUID, use [Trigger an outbound call by workflow UUID](/api-reference/calls/trigger-workflow) instead.
This route expects an API Trigger node UUID (`trigger_path`). Do not pass a workflow UUID here. If you want to execute by Agent UUID, use [Trigger an outbound agent run by Agent UUID](/api-reference/runs/trigger-workflow) instead.
</Note>
<Note>

View file

@ -205,15 +205,15 @@
]
},
{
"group": "Calls",
"group": "Runs",
"pages": [
"api-reference/calls",
"api-reference/calls/trigger",
"api-reference/calls/trigger-workflow",
"api-reference/calls/get-run",
"api-reference/calls/list-runs",
"api-reference/calls/download",
"api-reference/calls/inbound"
"api-reference/runs",
"api-reference/runs/trigger",
"api-reference/runs/trigger-workflow",
"api-reference/runs/get-run",
"api-reference/runs/list-runs",
"api-reference/runs/download",
"api-reference/runs/inbound"
]
},
{

View file

@ -83,7 +83,7 @@ Use the test URL when you want to verify draft changes before publishing.
### Response
A successful request returns a `workflow_run_id` that you can use to [retrieve call details](/api-reference/calls/get-run), recordings, and transcripts.
A successful request returns a `workflow_run_id` that you can use to [retrieve run details](/api-reference/runs/get-run), recordings, and transcripts.
```json
{
@ -136,5 +136,5 @@ By default, calls are placed through your organization's default outbound [telep
The id is shown on each row in **Telephony configurations** (`https://app.dograh.com/telephony-configurations` for hosted or `http://localhost:3010/telephony-configurations` for local). The configuration must belong to the same organization as the API Trigger; otherwise the request returns `404`.
<Note>
For full endpoint details including all parameters and response fields, see the [API reference](/api-reference/calls/trigger).
For full endpoint details including all parameters and response fields, see the [API reference](/api-reference/runs/trigger).
</Note>