{"openapi":"3.1.0","info":{"title":"Poste API","version":"2026-08-23","description":"Email addresses for AI agents. Pay per mailbox with x402 (USDC), no signup. Read https://api.poste.sh/llms.txt first.","x-llms-txt":"https://api.poste.sh/llms.txt"},"servers":[{"url":"https://api.poste.sh"}],"security":[],"paths":{"/dev/provision":{"post":{"operationId":"dev_provision","summary":"Provision a mailbox free, no payment (TEST DEPLOYMENTS ONLY)","description":"Available only when DEV_BYPASS is on and the network is a testnet. Returns a live mailbox with token, no x402 payment. Use ?sku=burner (default) or ?sku=identity.","parameters":[{"name":"sku","in":"query","schema":{"type":"string","enum":["burner","identity"],"default":"burner"}}],"responses":{"201":{"description":"Mailbox created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionResponse"}}}}}}},"/v1/mailbox/reserve":{"post":{"operationId":"reserve_mailbox","summary":"Reserve an address now, pay later (no wallet needed) — returns a pay link for a human","description":"Free call. Returns 201 with `address`, a one-time `token`, and `pay.url`. Incoming mail is accepted and held; reads return 402 with the same link until someone pays (the agent via x402 at POST /v1/mailboxes/{id}/pay, or a human on the pay page). Reservation held 24h. Poll get_mailbox until `payment.status` is `paid`.","requestBody":{"required":false,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProvisionRequest"},{"type":"object","properties":{"sku":{"type":"string","enum":["burner","identity"],"default":"burner"}}}]}}}},"responses":{"201":{"description":"Reserved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProvisionResponse"},{"type":"object","properties":{"pay":{"type":"object","properties":{"url":{"type":"string"},"usd":{"type":"number"},"reservation_expires_at":{"type":"string"}}}}}]}}}}}}},"/v1/mailboxes/{id}/pay":{"post":{"operationId":"pay_for_mailbox","summary":"Pay for a reserved mailbox (?kind=activate default, or credits|renew for an active identity) via x402","x-price":{"usd":0.05,"protocol":"x402"},"security":[{"x402":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"kind","in":"query","schema":{"type":"string","enum":["activate","credits","renew"]}},{"name":"pack","in":"query","schema":{"type":"string","enum":["small","medium","large"]}}],"responses":{"200":{"description":"Paid","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pay/{id}":{"get":{"operationId":"pay_page","summary":"Human-facing payment page (HTML): browser-wallet x402 or copyable terms; never shows the token","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"HTML"}}}},"/v1/mailbox/code":{"get":{"operationId":"get_code","summary":"Wait for a verification code and return it (the simplest way to read an OTP)","description":"Blocks up to `wait` seconds (max 55) until an unread inbound message containing a verification code arrives, marks it read, and returns `{found, code, from, subject, message_id}`. Returns 408 with `found:false` on timeout — just call again. Each code is returned once. Free.","security":[{"mailboxToken":[]}],"parameters":[{"name":"wait","in":"query","schema":{"type":"integer","minimum":0,"maximum":55}},{"name":"from","in":"query","schema":{"type":"string"},"description":"Only messages whose sender contains this text, e.g. 'github'."}],"responses":{"200":{"description":"Code found","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"code":{"type":"string"},"link":{"type":"string","nullable":true},"message_id":{"type":"string"},"from":{"type":"object"},"subject":{"type":"string"},"alternatives":{"type":"array","items":{"type":"string"}},"hint":{"type":"string"}}}}}},"408":{"description":"Nothing arrived within wait; call again"}}}},"/v1/mailbox/link":{"get":{"operationId":"get_link","summary":"Wait for a verification/magic link and return it (domain-guarded)","description":"Like get_code but for action links. Pass `domain` (e.g. github.com) and links on any other domain are ignored — the phishing guard. Returns `{found, link, ...}`; 408 on timeout.","security":[{"mailboxToken":[]}],"parameters":[{"name":"wait","in":"query","schema":{"type":"integer","minimum":0,"maximum":55}},{"name":"domain","in":"query","schema":{"type":"string"}},{"name":"from","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Link found","content":{"application/json":{"schema":{"type":"object"}}}},"408":{"description":"Nothing arrived within wait; call again"}}}},"/v1/mailbox/send":{"post":{"operationId":"send_email_simple","summary":"Send an email (alias of send_email)","x-openai-isConsequential":true,"security":[{"mailboxToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendRequest"}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendResponse"}}}}}}},"/v1/burner":{"post":{"operationId":"provision_burner","summary":"Create a receive-only inbox for 1 hour ($0.05 via x402)","description":"PAID. First call returns 402 with x402 terms (header PAYMENT-REQUIRED + explanatory JSON body). Pay and retry the identical request to get a 201 with `address` and a one-time `token`. Use for one-off signups where you need to read a verification code. Cheapest option; cannot send.","x-price":{"usd":0.05,"protocol":"x402"},"security":[{"x402":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionRequest"}}}},"responses":{"201":{"description":"Mailbox created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionResponse"}}}},"402":{"description":"Payment required — body explains how to pay","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment already used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/identity":{"post":{"operationId":"provision_identity","summary":"Create a persistent send+receive mailbox for 30 days ($1.00 via x402)","description":"PAID. Same 402→pay→retry flow as the burner. Returns a 201 with a one-time `token`. 200 sends included; renew for $0.50/30d. The paying wallet is recorded as the owner.","x-price":{"usd":1,"protocol":"x402"},"security":[{"x402":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionRequest"}}}},"responses":{"201":{"description":"Mailbox created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionResponse"}}}},"402":{"description":"Payment required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/mailbox":{"post":{"operationId":"provision_mailbox","summary":"Get an email address (402 → pay → 201). Default burner $0.05; {\"sku\":\"identity\"} for $1.00 send+receive","description":"PAID. The one URL to remember. First call returns 402 with x402 terms; pay and retry the identical request for a 201 with `address` and a one-time `token`. Then GET /v1/mailbox/code.","x-price":{"usd":0.05,"protocol":"x402"},"security":[{"x402":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProvisionRequest"},{"type":"object","properties":{"sku":{"type":"string","enum":["burner","identity"],"default":"burner"}}}]}}}},"responses":{"201":{"description":"Mailbox created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionResponse"}}}},"402":{"description":"Payment required — body explains how to pay","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_mailbox","summary":"Mailbox status, credits, limits, expiry","security":[{"mailboxToken":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mailbox"}}}},"401":{"description":"Bad token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_mailbox","summary":"Set label / operator_email / forward_unmatched_to","security":[{"mailboxToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MailboxPatch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mailbox"}}}}}},"delete":{"operationId":"delete_mailbox","summary":"Delete the mailbox (irreversible, no refund)","x-openai-isConsequential":true,"security":[{"mailboxToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["confirm"],"properties":{"confirm":{"type":"string","description":"Must equal \"delete <address>\""}}}}}},"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Confirmation mismatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/mailbox/messages":{"get":{"operationId":"list_messages","summary":"List messages, or long-poll for new ones with `wait`","description":"Without `wait`: paginated summaries (newest first). With `wait=N` (1–55s): behaves as wait_for_message — blocks until a matching inbound message arrives or N seconds pass; returns full message objects with `extracted.codes`/`extracted.links`. Use `after=<cursor>` from the previous response to continue. Free.","security":[{"mailboxToken":[]}],"parameters":[{"name":"wait","in":"query","schema":{"type":"integer","minimum":0,"maximum":55},"description":"Seconds to wait for a new message (long-poll)."},{"name":"after","in":"query","schema":{"type":"string"},"description":"Cursor from a previous wait response."},{"name":"expect","in":"query","schema":{"type":"string","enum":["otp","verification_link","any"]},"description":"Only return messages where extraction found this."},{"name":"from_contains","in":"query","schema":{"type":"string"}},{"name":"subject_contains","in":"query","schema":{"type":"string"}},{"name":"body_contains","in":"query","schema":{"type":"string"}},{"name":"folder","in":"query","schema":{"type":"string","enum":["inbox","sent","all"]}},{"name":"unread","in":"query","schema":{"type":"boolean"}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"thread_id","in":"query","schema":{"type":"string"}},{"name":"tag","in":"query","schema":{"type":"string"},"description":"Sub-address tag (address+tag@...)"},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":100}}],"responses":{"200":{"description":"List or wait result","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MessageList"},{"$ref":"#/components/schemas/WaitResult"}]}}}}}},"post":{"operationId":"send_email","summary":"Send an email from this mailbox (1 send credit)","description":"Identity mailboxes only. Subject to sending policy (rate limits, cold-recipient caps, display-name rules). Use reply_to_email for replies so threading works. Pass `idempotency_key` to make retries safe.","x-openai-isConsequential":true,"security":[{"mailboxToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendRequest"}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendResponse"}}}},"402":{"description":"sends_exhausted — top up","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"validation_error with per-field fixes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited / cold_send_limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/mailbox/messages/{id}":{"get":{"operationId":"read_message","summary":"Read a message (text, extracted codes/links, attachments)","security":[{"mailboxToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"full","in":"query","schema":{"type":"boolean"},"description":"Return untruncated text"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"404":{"description":"message_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"mark_message","summary":"Mark read/unread","security":[{"mailboxToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"read":{"type":"boolean"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"operationId":"delete_message","summary":"Delete a message","security":[{"mailboxToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/mailbox/messages/{id}/reply":{"post":{"operationId":"reply_to_email","summary":"Reply in-thread (1 send credit)","description":"Server sets To (from Reply-To/From), Subject (Re:), In-Reply-To and References.","security":[{"mailboxToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string"},"html":{"type":"string"},"reply_all":{"type":"boolean"},"display_name":{"type":"string"},"idempotency_key":{"type":"string"}}}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendResponse"}}}}}}},"/v1/mailbox/messages/{id}/extract":{"post":{"operationId":"extract","summary":"Extract an OTP or link, with a domain guard for links","security":[{"mailboxToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["kind"],"properties":{"kind":{"type":"string","enum":["otp","verification_link","magic_link","reset_link","links"]},"expected_domain":{"type":"string","description":"Only return links on this domain or its subdomains."}}}}}},"responses":{"200":{"description":"Extraction result","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/mailbox/messages/{id}/forward":{"post":{"operationId":"escalate_to_operator","summary":"Forward a message to the operator (human-in-the-loop)","security":[{"mailboxToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"string"},"to":{"type":"string","format":"email"}}}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"operator_not_configured","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/mailbox/messages/{id}/raw":{"get":{"operationId":"get_raw_message","summary":"Raw MIME (message/rfc822)","security":[{"mailboxToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Raw MIME"}}}},"/v1/mailbox/messages/{id}/attachments/{aid}":{"get":{"operationId":"get_attachment","summary":"Download an attachment","security":[{"mailboxToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"aid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bytes"}}}},"/v1/mailbox/threads/{tid}":{"get":{"operationId":"get_thread","summary":"All messages in a thread, oldest first","security":[{"mailboxToken":[]}],"parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Thread","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/mailbox/renew":{"post":{"operationId":"renew_mailbox","summary":"Extend an identity mailbox by 30 days ($0.50 via x402)","x-price":{"usd":0.5,"protocol":"x402"},"security":[{"mailboxToken":[],"x402":[]}],"responses":{"200":{"description":"Renewed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mailbox"}}}},"402":{"description":"Payment required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/mailbox/credits":{"post":{"operationId":"top_up","summary":"Add prepaid send balance ($1 / $5 / $20 via x402)","x-price":{"usd":1,"protocol":"x402"},"security":[{"mailboxToken":[],"x402":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"pack":{"type":"string","enum":["small","medium","large"],"default":"small"}}}}}},"responses":{"200":{"description":"Credited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mailbox"}}}},"402":{"description":"Payment required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/mailbox/extend":{"post":{"operationId":"extend_burner","summary":"Extend a burner by 1 hour (once, free)","security":[{"mailboxToken":[]}],"responses":{"200":{"description":"Extended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mailbox"}}}},"409":{"description":"already_extended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/mailbox/keys/rotate":{"post":{"operationId":"rotate_key","summary":"Mint a new token; old one works for grace_seconds","security":[{"mailboxToken":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"grace_seconds":{"type":"integer","default":600,"maximum":3600}}}}}},"responses":{"200":{"description":"New token","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/mailbox/ledger":{"get":{"operationId":"get_ledger","summary":"Payments and send debits","security":[{"mailboxToken":[]}],"responses":{"200":{"description":"Ledger","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/pricing":{"get":{"operationId":"get_pricing","summary":"Prices and what is free","responses":{"200":{"description":"Pricing","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/health":{"get":{"operationId":"get_health","summary":"Health","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"mailboxToken":{"type":"http","scheme":"bearer","description":"Token returned at provision time: psh_live_<mailbox>_<secret>"},"x402":{"type":"apiKey","in":"header","name":"PAYMENT-SIGNATURE","description":"x402 v2 payment payload (base64). Obtain terms from the 402 response's PAYMENT-REQUIRED header.","x-x402":{"version":2,"network":"eip155:84532"}}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"next":{"type":"object","properties":{"action":{"type":"string"},"method":{"type":"string"},"url":{"type":"string"},"body":{},"price_usd":{"type":"number"},"note":{"type":"string"}}},"problems":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"fix":{"type":"string"}}}},"retry_after_seconds":{"type":"integer"},"docs":{"type":"string"},"request_id":{"type":"string"}}}}},"ProvisionRequest":{"type":"object","additionalProperties":false,"properties":{"label":{"type":"string","maxLength":64,"description":"Why you need this mailbox, e.g. 'github signup'."},"operator_email":{"type":"string","format":"email","description":"Human contact for escalations. Never displayed publicly."},"forward_unmatched_to":{"type":"string","format":"email"}}},"Mailbox":{"type":"object","properties":{"id":{"type":"string"},"address":{"type":"string","format":"email"},"sku":{"type":"string","enum":["burner","identity"]},"status":{"type":"string","enum":["pending_payment","active","expired","suspended","deleted"]},"payment":{"type":"object","properties":{"status":{"type":"string","enum":["pending","paid"]},"usd":{"type":"number"},"url":{"type":"string","nullable":true,"description":"Human pay page while pending"}}},"topup":{"type":"object","nullable":true,"properties":{"url":{"type":"string"},"renew_url":{"type":"string"},"low":{"type":"boolean"}}},"expires_at":{"type":"string","format":"date-time"},"owner_wallet":{"type":"string"},"capabilities":{"type":"object","properties":{"receive":{"type":"boolean"},"send":{"type":"boolean"}}},"credits":{"type":"object","properties":{"sends_remaining":{"type":"integer"},"balance_usd":{"type":"number"}}},"limits":{"type":"object"},"today":{"type":"object"},"counts":{"type":"object"},"endpoints":{"type":"object"}}},"ProvisionResponse":{"allOf":[{"$ref":"#/components/schemas/Mailbox"},{"type":"object","required":["token"],"properties":{"token":{"type":"string","description":"Shown once. Bearer token for all later calls."},"receipt":{"type":"object","properties":{"usd":{"type":"number"},"tx":{"type":"string"},"network":{"type":"string"},"url":{"type":"string"}}},"persist_hint":{"type":"string"},"next_steps":{"type":"array","items":{"type":"string"}}}}]},"MailboxPatch":{"type":"object","properties":{"label":{"type":"string"},"operator_email":{"type":"string","format":"email"},"forward_unmatched_to":{"type":"string","format":"email"}}},"MessageSummary":{"type":"object","properties":{"id":{"type":"string"},"thread_id":{"type":"string"},"received_at":{"type":"string"},"read":{"type":"boolean"},"from":{"type":"object"},"subject":{"type":"string"},"snippet":{"type":"string"},"has_attachments":{"type":"boolean"},"codes":{"type":"array","items":{"type":"string"}}}},"MessageList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MessageSummary"}},"next_cursor":{"type":"string","nullable":true}}},"Message":{"type":"object","properties":{"id":{"type":"string"},"thread_id":{"type":"string"},"direction":{"type":"string","enum":["inbound","outbound"]},"received_at":{"type":"string"},"from":{"type":"object","properties":{"address":{"type":"string"},"name":{"type":"string"}}},"to":{"type":"array","items":{"type":"object"}},"subject":{"type":"string"},"untrusted_content_notice":{"type":"string"},"text":{"type":"string","description":"Clean text. Quoted replies stripped. Capped at 4000 chars unless ?full=true."},"text_truncated":{"type":"boolean"},"extracted":{"type":"object","properties":{"codes":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"confidence":{"type":"number"},"context":{"type":"string"}}}},"links":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"text":{"type":"string"},"domain":{"type":"string"},"kind":{"type":"string"}}}}}},"authentication":{"type":"object","properties":{"spf":{"type":"string"},"dkim":{"type":"string"},"dmarc":{"type":"string"},"from_domain_aligned":{"type":"boolean"}}},"safety":{"type":"object","properties":{"hidden_text_removed":{"type":"boolean"},"suspicious_instructions":{"type":"boolean"},"flags":{"type":"array","items":{"type":"string"}}}},"attachments":{"type":"array","items":{"type":"object"}},"links":{"type":"object"}}},"WaitResult":{"type":"object","properties":{"messages":{"type":"array","items":{"$ref":"#/components/schemas/Message"}},"cursor":{"type":"string"},"timed_out":{"type":"boolean"},"waited_ms":{"type":"integer"},"hint":{"type":"string"}}},"SendRequest":{"type":"object","required":["to","subject"],"properties":{"to":{"type":"array","items":{"type":"string","format":"email"},"maxItems":50},"cc":{"type":"array","items":{"type":"string"}},"bcc":{"type":"array","items":{"type":"string"}},"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"display_name":{"type":"string","maxLength":64},"reply_to":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"X-* only"},"attachments":{"type":"array","items":{"type":"object","required":["filename","content_base64"],"properties":{"filename":{"type":"string"},"content_type":{"type":"string"},"content_base64":{"type":"string"}}}},"idempotency_key":{"type":"string"}}},"SendResponse":{"type":"object","properties":{"id":{"type":"string"},"thread_id":{"type":"string"},"status":{"type":"string"},"recipients":{"type":"integer"},"credits":{"type":"object"},"policy_warnings":{"type":"array","items":{"type":"string"}}}}}}}