Gmail (history.list push)
POST /webhooks/gmail/:cidSubscribes to Gmail's history.list push notifications. Picks up replies on a watched mailbox in seconds, matches against the case spine, drafts the reply.
Everything on this page exists in the running platform today. JWT-authenticated, tenant-scoped, every write audit-logged.
The admin API covers flows, function tools, cases, voice config, and document ingest. JWT-authenticated, tenant-scoped, every write audit-logged. Same token model as the console — no separate “API keys” surface.
Full endpoint catalog and schemas provided to design partners on request.
Webhooks are signed with a per-tenant secret and replayed on transient failure. The receiver dedupes by upstream message id before opening or updating a case.
POST /webhooks/gmail/:cidSubscribes to Gmail's history.list push notifications. Picks up replies on a watched mailbox in seconds, matches against the case spine, drafts the reply.
POST /webhooks/graph/:cidGraph subscription notifications for Exchange Online mailboxes. The tenant id is in the path so the dispatcher routes without parsing the payload. Same downstream as Gmail — case-id is the unifying primitive.
POST /webhooks/postmark/:cid/:tokenFor tenants who route via Postmark's inbound stream. The per-tenant token in the URL serves as both identifier and shared secret for the inbound stream.
The agent doesn't speak HTTP — it speaks function tools. Auto-sync bridges the two so you don't hand-write a tool definition for every endpoint.
Endpoints are registered through the console today (URL, method, headers, params, auth reference). An admin API for endpoint registration is on our near-term list — see §05.
One call. Scans the tenant's registered endpoints, derives parameter schemas, creates or updates a function tool per endpoint, returns a per-endpoint outcome report.
/admin/clients/:cid/function-tools/sync-from-endpointsno request body
per-endpoint outcomes
curl -X POST https://api.travelcalls.ai/admin/clients/$CID/function-tools/sync-from-endpoints -H "Authorization: Bearer $TC_TOKEN"
Used by our own operations console. If you'd rather build your own UI, the same socket is yours. Wire names are lowercase, snake-case.
Real-time events cover call lifecycle (started · active · ended) and case state (created · updated). JWT-authenticated, tenant-scoped, configurable concurrent-connection cap per user.
Today, the API endpoints that sync-from-endpoints scans are registered through the console. A direct admin route to register endpoints over HTTP is on the near-term list.
No JS or Python SDK today. The API is small enough that curl + your HTTP client of choice gets you everything. We'll add an SDK when a pilot needs it, not before.
No "click here for a sandbox" today. Each design partner gets a dedicated tenant we provision in < 1 day. Email us and we’ll cut keys for you.