Canonical contract for agent runtime integration.
This endpoint definition is intentionally terse and stable. It maps operations to intent and constraints with deterministic policy outputs, designed exclusively for consumption by autonomous machines.
Instant Onboarding
Machines can obtain an API key immediately through the public bootstrap endpoint on api.thrd.email.tenant_name is optional.agent_name is required. Use inbox_prefix to pick the local-part base. The server applies collision constraints.Available after a provisional inbox is claimed and activated. Clients must treat the inbox as provisional until that lifecycle completes.
Feedback + Suppression
Recipient feedback is captured via a signed one-shot link and re-enters the runtime as immutable events. On negative signals, the system automatically creates a global suppression constraint.
Gate Controlled Beta
Do not assume Gate availability from the presence of its schemas. Check the API response and tenant feature state. Existing inbox, polling, ACK, reply and send contracts remain independent.
Endpoint Matrix
| Method | Path | Intent | Constraints |
|---|---|---|---|
| GET | /v1/activation | Run the guided first-email test | returns milestone timestamps, next_action and precise provider-agnostic delivery errors |
| POST | /v1/onboarding/instant | Instant self-serve bootstrap | returns tenant, agent, inbox and API key (shown once) |
| GET | /openapi.json | Download canonical OpenAPI contract | machine-first, stable provider-agnostic surface |
| HEAD | /openapi.json | OpenAPI metadata only | HTTP discovery without response body |
| GET | /.well-known/openapi.json | OpenAPI well-known alias | machine discovery path |
| GET | /v1/examples/responses | Canonical JSON examples catalog | real envelope + event payload shapes used by runtime |
| GET | /v1/events | Long-poll event retrieval | timeout<=25000, limit<=100, ordered by cursor; cursor is opaque string token |
| POST | /v1/events/ack | Acknowledge delivered events | event_ids[] up to 100, idempotent ack semantics |
| GET | /v1/threads/:id/messages | Fetch full message payload + attachments | attachments exposed as storageRef URI pointers (not base64); includes optional message_security metadata |
| GET | /v1/messages/:id/security | Get prompt-injection security assessment | returns score, level, flags and policy decision matrix for reply/send |
| POST | /v1/security/ack | Create short-lived security ack token | used on Tier2/3 high-risk inbound contexts before reply/send |
| POST | /v1/actions/authorize | Evaluate one exact consequential action | controlled beta; deterministic policy returns allow|review|deny and binds the canonical action hash |
| GET | /v1/approvals/:id | Resume a human-reviewed action | controlled beta; authenticated tenant and agent scope; human responses never contain capability bearer material |
| POST | /v1/capabilities/redeem | Redeem single-use execution authority | controlled beta; exact action, executor, target, environment, TTL and revocation are verified |
| GET | /v1/action-receipts/:id | Read redacted replayable authority receipt | controlled beta; tenant-bound hash chain; no capability bearer or raw evidence exposure |
| GET | /v1/outbound/:request_id | Check async outbound status | returns pending|processing|sent|failed plus stable delivery_error code and retryability |
| POST | /v1/reply | Reply in existing thread only | requires Idempotency-Key and thread history; reply-all preserves historical CC + latest inbound To recipients; may require security_ack_token for high-risk inbound on Tier2/3 |
| POST | /v1/send | Controlled new outbound | Tier2+ only, allowlist|relationship|consent|grant required; optional source_message_id activates prompt-injection firewall |
| POST | /v1/billing/checkout/self | Create paid-plan checkout link | agent-auth; paid limits are outbound recipient units; payment capacity never bypasses recipient authority, policy or suppressions |
| GET | /v1/wake/webhook | Read wake webhook configuration | agent-auth; returns current webhook status and pending wake state |
| PUT | /v1/wake/webhook | Create/update wake webhook | agent-auth; returns signing_secret on create/rotation; signed inbox.pending wake pings |
| DELETE | /v1/wake/webhook | Disable wake webhook | agent-auth; clears pending wake state for this agent endpoint |
| GET | /v1/usage | Fetch usage windows and entitlement state | agent-auth; inbound is observational and unmetered; outbound is recipient-unit based with daily/monthly windows |
| GET | /v1/trust/score | Fetch Trust Score | agent-auth; transparency envelope for reputation + tuning |
| GET | /v1/feedback/record | Recipient feedback capture | public; signed one-shot link; redirects to thrd.email/feedback/thanks |
| POST | /v1/inbound | Canonical inbound ingress | shared secret + nonce/timestamp replay protection |
| POST | /v1/inbound/generic | Test ingest adapter | shared secret + nonce/timestamp replay protection |