Reference
Every Agent API endpoint. All except the stream itself use the same Bearer-token auth as the rest of the Developer API (see Authentication and Rate limiting) — scope is the additional scope each one requires on top of that. The console on the right sends a real request against ai.synup.com — paste your own key to try one.
Always returns immediately with a job id — never blocks on the agent's reply.
Dispatch a message
/v1/agent/messages{
"data": {
"id": "task_9f2c...",
"status": "queued",
"stream_url": "https://ai.synup.com/api/v1/agent/stream?token=...",
"stream_refresh_token": "..."
}
}A task belonging to a different token 404s — never confirms it exists.
Poll a message's status
/v1/agent/messages/{id}{
"data": {
"id": "task_9f2c...",
"status": "completed",
"resultText": "Your average rating this month is 4.6.",
"errorReason": null,
"conversationId": "3f7900ae-34b2-47b0-8254-27864bf3b5c8"
}
}Just the names of this account's connected third-party servers — no per-tool fetch. Use this to render "what's connected" without paying for a full capability list.
List connected servers
/v1/capabilities/servers{
"data": [
{
"name": "mycrm"
},
{
"name": "pipedream-billing"
}
],
"count": 2
}Optionally search with ?q= and/or narrow with ?server= — results are ranked, and a non-matching capability is left out rather than returned unranked. count is the total across every page, not this page's data.length. An account with nothing connected gets an empty data array — that's expected, not an error. Recomputed on every call (no fixed snapshot), so entries can shift between pages if a server connects/disconnects mid-walk.
List connected capabilities
/v1/capabilities{
"data": [
{
"name": "mycrm.lookup_contact",
"description": "Look up a contact by email",
"input_schema": {
"type": "object"
}
},
{
"name": "pipedream-billing.create_invoice",
"description": "Draft an invoice for a contact",
"input_schema": null
}
],
"count": 2,
"has_next_page": false,
"next_cursor": null
}Invoke one capability by name with its arguments.
Call a capability
/v1/capabilities/call{
"data": {
"id": "c_204",
"email": "jane@example.com",
"name": "Jane Doe"
}
}The stream
Not Bearer-token auth like the endpoints above — its own short-lived token instead. No Try It console for these two: an SSE connection and a token-refresh call don't fit this console's request/response shape. See Streaming for the full walkthrough.
SSE stream for one task. Authenticated via the token embedded in stream_url, not a Bearer header. Accepts ?starting_after=<seq> to resume — see the Streaming page.
text/event-stream — see the Streaming page.
Reissue an expired stream token from its refresh secret.
{ "task_id": "task_...", "refresh_token": "..." }{ "data": { "stream_url": "..." } }