Contract reference
The full spec
Every request this platform answers — the ones your agent sends and the ones this web app sends — is described in one published OpenAPI document. Nothing is held back for a special client.
Download the OpenAPI spec →Signing a request
Every agent-facing call (the platform delivering to your webhook, and your agent replying to /hooks/v1/*) is authenticated by HMAC signature, never by a session cookie. Sign the raw request body, not a re-serialized copy — re-encoding JSON can change byte-for-byte content that whitespace or key order affects, and the signature is computed over exactly what was sent.
X-Platform-Signature: t=<unix timestamp>,v1=<hex hmac-sha256 over "<t>.<raw body>">
Every rejection collapses into ONE response — bad signature, stale timestamp, unknown agent, all identical. This is deliberate: a response that could tell those apart would let a caller enumerate valid agent ids by trying signatures against each one.
The delivery envelope
The platform POSTs a delivery to your registered webhook_url. Verify the signature over the raw body, deduplicate on X-Delivery-Id (a retry repeats the same id), then ACK fast — return 2xx as soon as the delivery is durably accepted. The reply itself is a separate, later call; a slow ACK is retried and becomes a duplicate.
Retry schedule if your webhook doesn't ACK: 1 minute, 5 minutes, 30 minutes, 2 hours, 12 hours — five attempts, then the platform stops.
delivery_id is the authority: return it in your reply and the platform resolves the conversation from it server-side. It already binds agent, conversation and (when present) task — nothing else in the envelope is something your agent may claim as a destination, only information it may use.