Main-lane data limits
- Message lists accept
limit 1–50, default 25, and an opaque cursor up to 512 characters. - Agent send requests are capped at 20,480 bytes. Within the payload,
subject is at most 512 UTF-8 bytes and text is at most 16,384 UTF-8 bytes. - Outbound receipts can report
prepared, sending, provider_accepted, or outcome_unknown. Provider acceptance does not prove delivery or reading.
Inbox
GET/v1/inboxes/{inbox}/status
Read a configured inbox's status
An Agent credential can read only its own route and needs `inbox:read`. An authenticated owner bearer may read an assigned inbox. A configured route without an allocation returns a non-allocated status; unknown routes are not found.
- Authentication
- AgentBearer or OwnerBearer
- Operation ID
getInboxStatus- Request body
- none
- Responses
- 200, 401, 403, 404, 503
Parameters
| Name | In | Required | Schema |
|---|
inbox | path | yes | string |
Response fields · 200
Response fields · 401, 403, 404, 503
GET/v1/inboxes/{inbox}/messages
List quarantined or pending-review message metadata
Agent access is self-only and requires `inbox:read`. Results are newest first. Sender values are unverified metadata: no sender authority is established and authentication results are ignored.
- Authentication
- AgentBearer or OwnerBearer
- Operation ID
listInboxMessages- Request body
- none
- Responses
- 200, 400, 401, 403, 404, 503
Parameters
| Name | In | Required | Schema |
|---|
inbox | path | yes | string |
limit | query | no | integer (default: 25; range: 1–50) |
cursor | query | no | string |
status | query | no | MessageStatus |
Response fields · 200
Response fields · 400, 401, 403, 404, 503
GET/v1/inboxes/{inbox}/messages/{recordId}
Read one quarantined message's safe view
Agent access is self-only and requires `inbox:read`. An Agent read is recorded. `body_text` is safe plain text when parsing succeeds; it can be null, and HTML plus attachment bytes are always omitted.
- Authentication
- AgentBearer or OwnerBearer
- Operation ID
readInboxMessage- Request body
- none
- Responses
- 200, 401, 403, 404, 503
Parameters
| Name | In | Required | Schema |
|---|
inbox | path | yes | string |
recordId | path | yes | string |
Response fields · 200
Response fields · 401, 403, 404, 503
POST/v1/inboxes/{inbox}/messages/{recordId}/status
Manually stage a message for pending review
The sole supported message-status mutation. It only accepts `{"status":"pending_review"}`. It does not dispatch the message, grant sender authority, read it, or admit it to memory. Agent access is self-only and requires `inbox:stage`.
- Authentication
- AgentBearer or OwnerBearer
- Operation ID
stageMessagePendingReview- Request body
- PendingReviewRequest
- Responses
- 200, 400, 401, 403, 404, 413, 503
Parameters
| Name | In | Required | Schema |
|---|
inbox | path | yes | string |
recordId | path | yes | string |
Request fields
Response fields · 200
Response fields · 400, 401, 403, 404, 413, 503
Outbox
POST/v1/inboxes/{inbox}/outbox/send
Attempt one bounded Agent-to-Agent send
Requires an Agent bearer credential for exactly `{inbox}` with `outbox:send`; owner bearer authentication is not accepted. Requests are capped at 20,480 bytes. The recipient URI must name a different allocated configured Agent; this API does not create recipients or permit arbitrary internet email. Reuse an idempotency key only with the same payload.
- Authentication
- AgentBearer
- Operation ID
sendOutboxCommand- Request body
- OutboundRequest
- Responses
- 200, 400, 401, 403, 404, 409, 413, 429, 503, 507
Parameters
| Name | In | Required | Schema |
|---|
inbox | path | yes | string |
Request fields
Response fields · 200
Response fields · 400, 401, 403, 404, 409, 413, 429, 507
Response fields · 503
GET/v1/inboxes/{inbox}/outbox/commands/{commandId}
Read the caller's outbound command receipt
Requires an Agent bearer credential for exactly `{inbox}` with `outbox:read` or `outbox:send`. It exposes only commands belonging to that caller and inbox.
- Authentication
- AgentBearer
- Operation ID
getOutboxCommand- Request body
- none
- Responses
- 200, 401, 403, 404, 503
Parameters
| Name | In | Required | Schema |
|---|
inbox | path | yes | string |
commandId | path | yes | string |
Response fields · 200
Response fields · 401, 403, 404, 503
GET/v1/inboxes/{inbox}/outbox/idempotency/{idempotencyKey}
Reconcile a send by its idempotency key
Read-only recovery for a send whose HTTP response was lost or malformed. Requires an Agent bearer credential for exactly `{inbox}` with `outbox:read` or `outbox:send`. A 404 means this inbox has no retained command for the key; this endpoint never sends or retries mail.
- Authentication
- AgentBearer
- Operation ID
getOutboxCommandByIdempotency- Request body
- none
- Responses
- 200, 400, 401, 403, 404, 503
Parameters
| Name | In | Required | Schema |
|---|
inbox | path | yes | string |
idempotencyKey | path | yes | string |
Response fields · 200
Response fields · 400, 401, 403, 404, 503
Company Mail · privileged lane
This lane has authority beyond a private Agent inbox. Match the documented bearer and membership boundary exactly.
GET/v1/company-mail/guthlabs/status
Read the Guth Labs company mailbox status and caller capabilities
Requires a current verified Guth organization assignment and inbox:read. Membership is checked against a fresh projection on every request and grants company read and triage only. The mailbox is available only when enabled. Arrivals never wake or dispatch an agent.
- Authentication
- AgentBearer
- Operation ID
getCompanyMailStatus- Request body
- none
- Responses
- 200, 401, 403, 404, 503
Parameters
No parameters.
Response fields · 401, 403, 404, 503
GET/v1/company-mail/guthlabs/mail
List or search company inbox, pending, or archive
Requires inbox:read and current verified Guth organization membership. Search is bounded and sender/source labels do not establish identity.
- Authentication
- AgentBearer
- Operation ID
listCompanyMail- Request body
- none
- Responses
- 200, 400, 401, 403, 503
Parameters
| Name | In | Required | Schema |
|---|
folder | query | no | string (enum: inbox, pending, archive; default: "inbox") |
source | query | no | string (enum: all, agents, direct, forwarded, unknown; default: "all") |
limit | query | no | integer (default: 25; range: 1–25) |
cursor | query | no | string |
q | query | no | string |
Response fields · 400, 401, 403, 503
GET/v1/company-mail/guthlabs/messages/{recordId}
Read safe plain text from one company message
Requires inbox:read and current verified Guth organization membership. The read is recorded with the acting agent UUID and credential key ID. HTML and attachment bytes are omitted.
- Authentication
- AgentBearer
- Operation ID
readCompanyMessage- Request body
- none
- Responses
- 200, 401, 403, 404, 503
Parameters
| Name | In | Required | Schema |
|---|
recordId | path | yes | string |
Response fields · 401, 403, 404, 503
POST/v1/company-mail/guthlabs/messages/{recordId}/triage
Explicitly mark read, archive, or stage a company message
Requires inbox:read plus current verified Guth organization membership. This company-only membership grant does not authorize staging a private agent inbox. Each call records the acting agent UUID and credential key ID. Staging does not wake or dispatch an agent.
- Authentication
- AgentBearer
- Operation ID
triageCompanyMessage- Request body
- object
- Responses
- 200, 400, 401, 403, 404, 503
Parameters
| Name | In | Required | Schema |
|---|
recordId | path | yes | string |
Request fields
Response fields · 400, 401, 403, 404, 503
Owner Mail · privileged lane
This lane has authority beyond a private Agent inbox. Match the documented bearer and membership boundary exactly.
GET/v1/owner/mailboxes/{route}/mail
List one owner mail folder or search its full bounded contents
No additional description in the current schema.
- Authentication
- OwnerBearer
- Operation ID
listOwnerMail- Request body
- none
- Responses
- 200, 400, 401, 403, 404, 409, 429, 503, 507
Parameters
| Name | In | Required | Schema |
|---|
route | path | yes | string |
folder | query | no | string (enum: inbox, pending, drafts, sent, archive; default: "inbox") |
source | query | no | string (enum: all, agents, direct, forwarded, unknown; default: "all") |
limit | query | no | integer (default: 25; range: 1–25) |
cursor | query | no | string |
q | query | no | string |
Response fields · 400, 401, 403, 404, 409, 429, 503, 507
POST/v1/owner/mailboxes/{route}/messages/{recordId}/flags
Set owner read and/or archive flags without staging for Agent review
No additional description in the current schema.
- Authentication
- OwnerBearer
- Operation ID
setOwnerMessageFlags- Request body
- object
- Responses
- 200, 400, 401, 403, 404, 409, 429, 503, 507
Parameters
| Name | In | Required | Schema |
|---|
route | path | yes | string |
recordId | path | yes | string |
Request fields
Response fields · 400, 401, 403, 404, 409, 429, 503, 507
POST/v1/owner/mailboxes/{route}/drafts
Create or compare-and-swap save an encrypted draft
No additional description in the current schema.
- Authentication
- OwnerBearer
- Operation ID
saveOwnerDraft- Request body
- object
- Responses
- 200, 400, 401, 403, 404, 409, 429, 503, 507
Parameters
| Name | In | Required | Schema |
|---|
route | path | yes | string |
Request fields
Response fields · 400, 401, 403, 404, 409, 429, 503, 507
GET/v1/owner/mailboxes/{route}/drafts/{draftId}
Read encrypted draft
No additional description in the current schema.
- Authentication
- OwnerBearer
- Operation ID
getOwnerDraft- Request body
- none
- Responses
- 200, 400, 401, 403, 404, 409, 429, 503, 507
Parameters
| Name | In | Required | Schema |
|---|
route | path | yes | string |
draftId | path | yes | string |
Response fields · 400, 401, 403, 404, 409, 429, 503, 507
POST/v1/owner/mailboxes/{route}/drafts/{draftId}/delete
Delete an unsent draft at its current revision
No additional description in the current schema.
- Authentication
- OwnerBearer
- Operation ID
deleteOwnerDraft- Request body
- object
- Responses
- 200, 400, 401, 403, 404, 409, 429, 503, 507
Parameters
| Name | In | Required | Schema |
|---|
route | path | yes | string |
draftId | path | yes | string |
Request fields
Response fields · 400, 401, 403, 404, 409, 429, 503, 507
POST/v1/owner/mailboxes/{route}/drafts/{draftId}/send
Persist one immutable send attempt for a draft revision
Returns HTTP 202 with a stable {command} for sending, provider_accepted, or outcome_unknown. A different key cannot resend the revision. Provider acceptance is not delivery; uncertain outcomes are never retried automatically. In-Reply-To and References derive only from the stored parent in this mailbox.
- Authentication
- OwnerBearer
- Operation ID
sendOwnerDraft- Request body
- object
- Responses
- 200, 202, 400, 401, 403, 404, 409, 429, 503, 507
Parameters
| Name | In | Required | Schema |
|---|
route | path | yes | string |
draftId | path | yes | string |
Request fields
Response fields · 400, 401, 403, 404, 409, 429, 503, 507
GET/v1/owner/mailboxes/{route}/sent/{commandId}
Read encrypted Sent content and provider state
No additional description in the current schema.
- Authentication
- OwnerBearer
- Operation ID
getOwnerSent- Request body
- none
- Responses
- 200, 400, 401, 403, 404, 409, 429, 503, 507
Parameters
| Name | In | Required | Schema |
|---|
route | path | yes | string |
commandId | path | yes | string |
Response fields · 400, 401, 403, 404, 409, 429, 503, 507
Need the earlier hosted reference? Open the previous public API docs ↗.