Async message jobs are the default.
POST /deals/{dealId}/conversations/{cid}/messages
and POST /companies/{companyId}/conversations/{cid}/messages no longer block
on the agent run. They return 202 with { job_id, conversation_id, status: "pending", poll_url };
poll GET .../messages/jobs/{job_id} until status is completed (result
under result) or failed (error under error). Jobs are retained for 60
minutes while pending and 15 minutes after a terminal state, then 404.If you previously read the response inline, switch to the poll pattern.
Polling consumes one read-pool point per call; the POST consumes one
write-pool point.SSE events for
messages endpoints are richer. The tool_use event now
includes args — the parsed JSON object the agent passed to the tool, the
raw string if not valid JSON, or null if no arguments were captured.
Client-side tools (e.g. resolve_contact) now emit tool_use and
tool_result events with correlated ids; previously only platform-executed
tools did. Both changes are additive — readers that ignore unknown fields
need no changes. Opt into SSE with Accept: text/event-stream or
{ stream: true }.