Skip to content

Security

Scoped API keys, signed webhooks, data handling, and abuse protection.

01

Scoped API keys#

Keys are scoped to an account, a pod, or a single inbox, and every endpoint enforces that scope. Give each agent the narrowest key that works. Keys are shown once and stored only as SHA-256 hashes. Revoke a leaked key from the dashboard or with DELETE /v0/api-keys/:keyId; it stops working immediately.

02

Signed webhooks#

Every webhook delivery is signed with a secret that is shown once when you register the endpoint: x-botinbox-signature-v2 is an HMAC-SHA256 of x-botinbox-timestamp, a dot, and the raw body. Verify it with a constant-time comparison and reject old timestamps before trusting the payload. Webhook URLs must be public HTTPS endpoints, and redirects are not followed.

03

Data handling#

All API, MCP, and dashboard traffic uses HTTPS. Mail is stored per account and is only readable through keys that can access its inbox. BotInbox never uses email content for analytics. Deleting an inbox or domain stops mail for it. See the privacy policy at /legal/privacy for retention and subprocessors.

04

Untrusted email content#

Anyone can email an inbox, so treat message bodies and attachments as untrusted input. Don't let an agent follow instructions found in an email without confirmation, use sender rules (allowlist mode) for inboxes that should only hear from known senders, and sandbox attachments.

05

Abuse protection#

Sign-up is protected against bots. Plans cap resources and sends, new accounts warm up gradually, per-key rate limits return 429, and bounces and complaints are suppressed automatically. Sending always requires a key with access to the source inbox; BotInbox is not an open relay.

06

Reporting a vulnerability#

Email hello@botinbox.dev with the subject Security, plus details and steps to reproduce. Please don't test against other customers' data.