Skip to content
Inkbox

Inkbox

DocsPricingBlogContact
GuidesAPI ReferenceChangelog

Ctrl K

GuidesAPI ReferenceChangelog

Jump to

Mail API

API-first email service for AI agents. Provision mailboxes, send and receive messages, manage threads, search by full-text, and subscribe to events via webhooks.

API base URL:

https://inkbox.ai/api/v1/mail

Quick start

Create an account and get your API key from the Inkbox console:

Get API key

All API requests require authentication using a API key:

X-API-Key: YOUR_API_KEY

Mailboxes

Mailboxes are owned 1:1 by an agent identity — they're created and destroyed atomically with the identity. To provision a mailbox, create an identity; to remove one, delete the identity.

List mailboxes

GET

List all mailboxes for your organization

/api/v1/mail/mailboxes

Get mailbox

GET

Get a single mailbox by email address

/api/v1/mail/mailboxes/{email_address}

Update mailbox

PATCH

Update a mailbox (filter mode now lives on the identity)

/api/v1/mail/mailboxes/{email_address}

Messages

List messages

GET

List messages in a mailbox with cursor pagination

/api/v1/mail/mailboxes/{email_address}/messages

Get message

GET

Get a message with full body content

/api/v1/mail/mailboxes/{email_address}/messages/{message_id}

Send message

POST

Compose and send an email

/api/v1/mail/mailboxes/{email_address}/messages

Forward message

POST

Forward a stored message (inline or wrapped) — creates a new thread

/api/v1/mail/mailboxes/{email_address}/messages/{message_id}/forward

Update message flags

PATCH

Update is_read or is_starred on a message

/api/v1/mail/mailboxes/{email_address}/messages/{message_id}

Delete message

DELETE

Delete a message

/api/v1/mail/mailboxes/{email_address}/messages/{message_id}

Download attachment

GET

Download a message attachment

/api/v1/mail/mailboxes/{email_address}/messages/{message_id}/attachments/{filename}

Branding footer

Sent, replied, and forwarded emails include a short "Sent via Inkbox" footer by default. Paid organizations can remove it org-wide with PUT /api/v1/billing/settings and {"remove_branding_footer": true} (admin API key, or from the Inkbox Console Email page); the current value appears in GET /api/v1/billing/settings. On the Free plan the footer always applies and the update returns 403. The footer appears in the delivered email and the stored message body, but never in message snippets or search results.

Threads

Contact rules

Per-identity allow and block rules interpreted against the identity's mail_filter_mode (blacklist by default, whitelist on demand). Rules attach to the agent identity and are addressed by agent_handle. See the Contact rules reference and the Email guide for semantics.

The previous mailbox-addressed routes (/mail/mailboxes/{email_address}/contact-rules) are deprecated — migrate to the identity-keyed routes below.

Webhooks

Mail event delivery is configured via the Webhook Subscriptions API — attach one or more subscriptions to the mailbox with the subset of message.* events you want. See the Webhooks guide for event types, payload format, and signature verification.

Filtering by date

Date filtering applies to one list endpoint — List messages (GET /mailboxes/{email_address}/messages). It accepts three optional query parameters that filter results by when each message was created (created_at, stored in UTC); other mail list endpoints (such as list mailboxes and list contact rules) do not support them. All three are optional and fully backwards-compatible — omit them and the endpoint behaves exactly as before, with no filtering applied.

ParameterTypeDefaultDescription
start_datetimestringInclusive lower bound. A bare date (2026-07-01) starts at 00:00 of that day; a datetime with a Z or offset is used as an exact instant
end_datetimestringUpper bound, inclusive. A bare date (2026-07-06) covers the whole day; a datetime with a Z or offset is an exact instant, and records created at exactly that instant are included
tzstringUTCIANA time zone (e.g. America/New_York) used to interpret zone-less values. Defaults to UTC
  • A bare date in end_datetime is inclusive of the entire day — end_datetime=2026-07-06 returns records through the last moment of the 6th.
  • A datetime with an explicit Z or offset (2026-07-06T15:30:00Z, 2026-07-06T11:30:00-04:00) is an exact instant; tz is ignored for that value.
  • A naive datetime (2026-07-01T12:00:00) is interpreted in tz (UTC when tz is omitted).
  • Supply only one side for an open-ended range. Ordering, pagination, and all other filters are unchanged.
  • Invalid input returns 422: start_datetime after end_datetime, an unparseable date, or an unknown time zone.

A bare-date range (interpreted in UTC):

?start_datetime=2026-07-01&end_datetime=2026-07-06

Interpret those bare dates in a specific zone:

?start_datetime=2026-07-01&end_datetime=2026-07-06&tz=America/New_York

Filter from an exact instant (tz ignored):

?start_datetime=2026-07-06T15:30:00Z

Additional resources

Inkbox

Copyright © 2026 Inkbox

This site is protected by reCAPTCHA.

Google Privacy Policy and Terms of Service apply.

Website

Inkbox

Copyright © 2026 Inkbox

This site is protected by reCAPTCHA.

Google Privacy Policy and Terms of Service apply.

Website

Y CombinatorBacked by Y Combinator
Mail API