Skip to main content
May 22, 2026
breakingconversations
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.
May 22, 2026
streamingconversations
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 }.