Mint a per-entity address

Search Documentation

Search across all developer documentation

inbound

Mint a per-entity address

POST /v1/inbound/domains/{domain}/addresses
Auth required api.inbound.manage

Records an address like ticket-4231@in.acme.com with a blob of your own JSON attached, returned verbatim in the entities map of every webhook payload delivered to it — so your system routes the mail without a lookup and without parsing a local part.

Nothing is created in AWS. The SES receipt rule is a catch-all for the receiving domain, so mail to this address was already landing in your bucket before the call. What the call records is the metadata to echo back and — on a domain whose allow_patterns is non-empty — an entry in that list, so the address you just created is not the one your own restriction refuses. Where allow_patterns is empty, every recipient is already delivered and nothing about routing changes.

Reversible by revoking, so it is not classified destructive and a test-environment credential may call it.

local_part is optional. Omitted, SendOps mints a- plus 24 Crockford base32 characters. Supplied, it must be an RFC 5321 dot-atom, is lower-cased, and may not begin with the reserved a-.

409 conflict when the local part is already live at this domain. 422 with a field error on local_part or metadata when either fails validation.

Path parameters

domain string required

The receiving domain, by NAME (in.acme.com). A UUID is also accepted. Matched case-insensitively, and scoped to the calling org — a domain belonging to another org is a 404, never a 403.

Request body

Content type: application/json

local_part string optional

The part before the "@" — ticket-4231. Omitted, SendOps mints a- plus 24 Crockford base32 characters. Supplied, it must be an RFC 5321 dot-atom (letters, digits, dots and the punctuation ! # $ % & ' * + - / = ? ^ _ { | } ~`), is lower-cased, and may not begin with the reserved a-.

Constraints: length 0–64

metadata object optional

Your own JSON object, returned verbatim in the entities map of every webhook payload delivered to this address. SendOps never reads inside it, never indexes it and never matches on it. At most 4 KB, because it rides on every delivery and lives in your intake function's memory for the life of a warm container. Omitted becomes {}; a scalar or an array is refused.

Responses

Errors follow the RFC 7807 problem format — see the error reference.

201 The address application/json
id string<uuid> required
local_part string required

The part before the "@". Pass this back to revoke.

address string required

local_part@domain — the mailbox a sender writes to. Carried alongside local_part deliberately: a client that has to concatenate the two has a way to get it wrong.

metadata object required

The JSON returned in the entities map of every webhook payload delivered to this address. Always an object; {} when none was given.

created_at string<date-time> required
401 Missing, malformed, or unknown API key application/problem+json
403 Either the credential lacks the required scope (code: invalid_scope), or it is bound to the test environment and this operation is irreversible (code: test_environment_forbidden). Branch on code: the first is fixed by granting the scope, the second only by using a live credential. See the "Live and test credentials" section of the API description. application/problem+json
404 Resource not found application/problem+json
409 The mutation is rejected by a state rule rather than a bad request. The code is conflict. application/problem+json
422 A query parameter, path value or body field failed validation. The body is a validation_failed Problem. When the refusal is about a reference — a segment key, template slug, topic or attribute name the organization does not have — it additionally carries validation_code, field, line/column, missing, candidates and next_step, so a client can correct the call without a second round of guessing. See ValidationProblem. application/problem+json
429 Per-org rate limit exceeded application/problem+json
500 Unexpected server-side failure. The code is internal_error. The request_id field can be quoted to SendOps support to investigate. application/problem+json