Skip to main content
Do this when you want an agent to run once against a prompt you supply. Do not do this to send a follow-up message into a run that is already going — that is a command on the existing task, covered in Cancel and retry a task. All three entry points create the same task and dispatch the same workflow. They differ only in how the response reaches you.

Prerequisites

  • An agent that exists and has a model configured. An agent with no model_id is rejected at creation with 422, not at run time.
  • An API key. Create one with POST /v1/api-keys/ and read token from the 201 response — it is returned once and never again.
  • The agent’s id. GET /v1/agents/ lists them.

Choose an entry point

sync is the misleading name here: it returns a JSON response instead of a stream. It does not wait for the agent to finish. It returns as soon as the workflow is dispatched, with status set to running.

Steps

1

Option A — REST, streaming

The response is Server-Sent Events. Do not pipe it to jq.
The stream opens with a connected event, then task_created carrying the task_id, then the execution events:
2

Option B — REST, JSON response

Keep id. Every other task endpoint needs it alongside the agent id.
3

Option C — CLI

Use agentarea tasks submit-sync for the JSON form. Loose flags are folded into the request body, so --description "..." works in place of --data.
4

Option D — A2A JSON-RPC

The endpoint is POST /v1/agents/{agent_id}/a2a/rpc. Method names are PascalCase — SendMessage, not message/send. A slash-style method returns “method not found”.
SendMessage returns as soon as the task is submitted. Use SendStreamingMessage for a live SSE stream, or GetTask to poll.
5

Optional request fields

TaskCreate accepts more than description:

Verify

Fetch the task and confirm it has an execution_id and a live status:
execution_id present and status of running means the Temporal workflow started. A task sitting at pending with execution_id: null was persisted but never dispatched.

Troubleshooting

POST /v1/agents/{agent_id}/tasks/ responds with text/event-stream . curl without -N buffers it and jq cannot parse it. Use -N , or switch to /sync .
The agent was installed from the catalog without a matching model instance in this workspace, so model_id was left unset. Assign a model to the agent, or pass parameters.model_override on the run.
A task_policy that widens any limit set at the workspace or agent scope is rejected — task policy may only tighten. Compare against POST /v1/governance/effective-policy/preview before retrying.
The workflow dispatch failed, usually because no Temporal worker is running on the agent-tasks queue. The task row is written before dispatch, so a creation success does not prove a worker exists. Check the worker, then start a new task — a task that never dispatched cannot be resumed.
If parameters carries channel_origin.chat_id matching a workflow already running for the same agent, the message is delivered into that workflow as a follow-up and the existing task comes back with status: "routed" . No new task is created.

Stream task events

Consume a task’s live event feed over SSE

Attach files to a task

Upload a file with a checksum-bound presigned PUT

Debug a failed task

Read the failure code, narrow it with the task rollup

Tasks

A task is one persisted request to one agent
Last modified on September 17, 2026