Skip to main content

Overview

Create and inspect agent runs via the API
2 min read
MethodEndpointQuick Link
POST/public/agent/{uuid}Trigger an outbound agent run by API Trigger node
POST/public/agent/workflow/{workflow_uuid}Trigger an outbound agent run by Agent UUID
GET/workflow/{workflow_id}/runs/{run_id}Retrieve agent run details
GET/public/download/workflow/{token}/{artifact_type}Download recordings and transcripts
POST/telephony/inbound/{workflow_id}Inbound run webhook

Choose the right public run route#

Menace Voice exposes two public outbound agent run route families. They are not interchangeable, even though both path parameters look like UUIDs.

Use this whenProduction routeTest routeIdentifier you pass
You added an API Trigger node 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 field
Note

Do not pass a workflow UUID to /public/agent/{uuid} and do not pass a trigger UUID to /public/agent/workflow/{workflow_uuid}. Menace Voice treats these as different identifier types and the request will fail if you mix them up.

Once Menace Voice resolves the target agent, both route families behave the same:

  • They accept the same request body
  • They return the same response shape
  • 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 agent run by API Trigger node. To execute by Agent UUID, see Trigger an outbound agent run by Agent UUID.

Using initial context#

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.

Your agent prompt can then reference {{customer_name}} and {{appointment_date}} and they will be substituted when the run starts.

Run status values#

StatusDescription
pendingRun queued but not yet connected
in_progressRun is live
completedRun ended normally
failedRun failed before or during execution