How to send the key
RecommendedEach API Key belongs to one workspace. You cannot access another workspace with the same key.
Common combinations
Send only
email:sendSend and query
email:send, email:readWith scheduling
email:send, email:cancelFull setup
email:domains:create, email:domains:list, email:send, email:readInbox + webhook
email:inbound:read, webhook email.receivedAvailable scopes
email:send
email:send
Send immediate or scheduled email. The
from domain must be VERIFIED.email:read
email:read
- List sent emails in the workspace
- Query one send by id
email:cancel
email:cancel
Cancel queued or scheduled email. Only with
QUEUED or SCHEDULED status. Credits are refunded.email:domains:list
email:domains:list
List domains, view detail, and verify DNS status.
email:domains:create
email:domains:create
Register a new domain for DNS verification.
email:inbound:read
email:inbound:read
List and get received emails at
GET /v1/email/inbound and GET /v1/email/inbound/:id. Requires Persist on the channel. With domainIds on the key, same domain rules as email:read. Webhook email.received for real-time.Per-domain limit
If the key has domainIds configured:- Send — only
fromon those domains (403DOMAIN_NOT_ALLOWED) - Sent list (
email:read) — only messages on those domains - Inbound (
email:inbound:read) — only received emails on those domains; invaliddomainId→ 400; domain not on key → 403; detail for other domain → 404
Common errors
401: missing, invalid, or revoked key
401: missing, invalid, or revoked key
Check
Authorization: Bearer sk_... and that the key wasn’t deleted in the dashboard.403: missing scope, domain not allowed, or plan limit
403: missing scope, domain not allowed, or plan limit
Check route scope,
domainIds on the key, and credits (PLAN_LIMIT_CREDITS).400: DOMAIN_NOT_VERIFIED
400: DOMAIN_NOT_VERIFIED
Verify the
from domain in the dashboard before sending.
