Creates up to 1,000 email messages in a single request. Request-wide admission checks run first and can reject the whole batch before message creation. After those checks pass, each message is validated and sent independently; item-level failures do not affect other messages, and the processed batch returns 207 Multi-Status. Per-message failures include validation errors; when a template has strict_variables enabled, a missing required variable produces a per-item unprocessable_entity error naming that variable while the other messages continue.
POST
/
email_messages
/
batch
JavaScript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.emailMessages.batch({
messages: [],
});
console.log(response.data);
import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.email_messages.batch(
messages=[],
)
print(response.data)
Telnyx API key supplied as Authorization: Bearer <token>. In production, auth may be validated by the API gateway and forwarded via Telnyx auth headers.
Optional opaque, unquoted key for safely retrying the same logical request. Keys must contain 1 to 255 letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each operation and reuse it only when retrying that operation with the same request. Invalid headers—including duplicate, empty, malformed, or overlong values—return 400 with error code 10015. A request already in progress with the same key returns 409; reusing the key with a different request returns 422. Only successful responses are replayed, for up to 24 hours. Do not include sensitive data in the key.
Array of email messages to send. Up to 1,000 messages per batch request. Each message is validated and sent independently; per-message failures do not affect other messages in the batch.
Applies sandbox mode to all messages in the batch and overrides any per-message sandbox_mode value — each message's effective sandbox_mode is exactly this envelope value. Reserved recipients at test.telnyx.com produce the deterministic event chains documented on CreateEmailRequest.sandbox_mode; no batch item is injected into the MTA or outbound Kafka path. Sandbox batch items are non-billable, consume no daily-send-limit quota, and feed no delivery-reputation signals.
Response
Multi-Status — returned after request-wide admission checks pass and item processing runs. Each message is validated and sent independently; per-message failures do not affect other messages in the batch. An invalid or non-future scheduled_at/send_at is reported as a per-item unprocessable_entity error while the remaining items continue. When all messages succeed, errors is empty and every item is in data; otherwise data contains successes and errors contains failures. Request-wide gates can instead return 4xx or 5xx.
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.emailMessages.batch({
messages: [],
});
console.log(response.data);
import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.email_messages.batch(
messages=[],
)
print(response.data)
{"docsConfig":{"theme":"sequoia","$schema":"https://mintlify.com/docs.json","name":"Telnyx","description":"Infrastructure for real-time agents. Voice, AI, Edge Compute","colors":{"primary":"#00B688","light":"#00B688","dark":"#00B688"},"logo":{"light":"https://mintcdn.com/telnyx/v2FpkbJg6PQ53qHU/assets/images/site/logo.svg?fit=max\u0026auto=format\u0026n=v2FpkbJg6PQ53qHU\u0026q=85\u0026s=5ee3f61d11ba90a197dd9a1e3499fab6","dark":"https://mintcdn.com/telnyx/v2FpkbJg6PQ53qHU/assets/images/site/logo-dark.svg?fit=max\u0026auto=format\u0026n=v2FpkbJg6PQ53qHU\u0026q=85\u0026s=d65aaa12ec708c79e5833cbdea958055"},"favicon":"https://mintcdn.com/telnyx/t-qaBUa_gCxdRz_m/favicon.ico?fit=max\u0026auto=format\u0026n=t-qaBUa_gCxdRz_m\u0026q=85\u0026s=8291283238ab8c0e2a7a985e69f38c2f","background":{"decoration":"gradient"},"navbar":{"links":[{"icon":"triangle-exclamation","href":"/docs/development/api-fundamentals/api-errors","label":"Error codes"},{"icon":"headset","href":"https://telnyx.com/contact-us","label":"Contact us"},{"icon":"user","href":"https://portal.telnyx.com/#/login/sign-in","label":"Login"}],"primary":{"type":"button","label":"Sign Up","href":"https://telnyx.com/sign-up"}},"footer":{"socials":{"github":"https://github.com/team-telnyx","linkedin":"https://www.linkedin.com/company/telnyx","slack":"https://joinslack.telnyx.com","x":"https://x.com/telnyx"},"links":[{"header":"Resources","items":[{"label":"Pricing","href":"https://developers.telnyx.com/internal/pages/pricing"},{"label":"Compare Telnyx","href":"https://developers.telnyx.com/internal/pages/compare"},{"label":"Support center","href":"https://support.telnyx.com/en"},{"label":"SETI","href":"https://seti.telnyx.com"},{"label":"Agent platform configs","href":"https://github.com/team-telnyx/ai"},{"label":"About Telnyx","href":"https://developers.telnyx.com/internal/pages/about"},{"label":"Service status","href":"https://status.telnyx.com"}]},{"header":"Updates","items":[{"label":"Release notes","href":"https://telnyx.com/release-notes"}]},{"header":"Community","items":[{"label":"Low Latency Club","href":"https://lowlatencyclub.ai/"}]},{"header":"Legal","items":[{"label":"Privacy policy","href":"https://telnyx.com/privacy-policy"},{"label":"Terms and conditions","href":"https://telnyx.com/terms-and-conditions"}]}]},"seo":{"metatags":{"og:description":"Infrastructure for real-time agents. Voice, AI, Edge Compute","description":"Infrastructure for real-time agents. Voice, AI, Edge Compute"},"organization":{"name":"Telnyx","url":"https://telnyx.com","logo":"https://telnyx.com/favicon.ico","sameAs":["https://x.com/telnyx","https://www.linkedin.com/company/telnyx/","https://github.com/team-telnyx"]}},"fonts":{"heading":{"family":"PP Formula","weight":800,"source":"assets/fonts/PPFormula-Extrabold.woff2","format":"woff2"},"body":{"family":"Inter","weight":400,"source":"assets/fonts/Inter-Regular.woff2","format":"woff2"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"gtm":{"tagId":"GTM-NRRX236"}},"banner":{"content":"Check out our upcoming events and meetups! [View events →](https://lowlatencyclub.ai/)","dismissible":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/docs/overview"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"telnyx","hasAudioNarration":false,"actualSubdomain":"telnyx","customDomains":["developers.telnyx.com"],"gitSource":{"type":"github","owner":"team-telnyx","repo":"developer-docs-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeecbe75a64506a906920fa","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":601},{"language":"default","tag":"Calling","count":592},{"language":"default","tag":"Other APIs","count":406},{"language":"default","tag":"AI","count":395},{"language":"default","tag":"Messaging","count":353},{"language":"default","tag":"Numbers","count":287},{"language":"default","tag":"Agent Platform","count":282},{"language":"default","tag":"Assistants","count":202},{"language":"default","tag":"Voice API","count":178},{"language":"default","tag":"SMS \u0026 MMS","count":149}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"[class*=\"sidebar\"] [class*=\"tag\"],[class*=\"sidebar\"] [class*=\"badge\"],nav [class*=\"tag\"],nav [class*=\"badge\"]{font-size:0.8rem!important}#ot-sdk-btn-floating{left:auto!important;right:10px!important}body:has([aria-label=\"Preview Widget\"]) #ot-sdk-btn-floating{bottom:88px!important}#navbar .nav-tabs-item:has(>div>svg[style*=\"/book-open.svg\"]){display:none}.nav-tabs a.nav-tabs-item:not([aria-current=\"location\"]){display:none}#navbar div:has(>div>.nav-tabs>a.nav-tabs-item:first-child:last-child){display:none}@media (width >= 64rem){.txd-side{display:block}button[data-component-part=\"products-selector-trigger\"],button.tx-product-switcher{display:none!important}}#mobile-nav [data-component-part=\"products-selector-trigger\"],#mobile-nav #navigation-items>div:has(>div>button[aria-haspopup=\"menu\"]),#mobile-nav.tx-has-directory #navigation-items{display:none!important}#mobile-nav .tx-mobile-directory{padding:0;margin-bottom:1.5rem}#mobile-nav .tx-mobile-directory a,#mobile-nav .tx-mobile-directory .tx-dir-suite-head{min-height:2.75rem}#mobile-nav .tx-mobile-directory :is(a,.tx-dir-suite-head):focus-visible{outline:2px solid currentColor;outline-offset:-2px}.txd-shell{display:flex;gap:0;max-width:none;margin:0;padding:3rem 2rem 6rem 0}.txd-side{width:18rem;flex-shrink:0}.txd-main{flex:1;min-width:0;max-width:56rem;margin-left:11.75rem}@media (max-width: 80rem){.txd-main{margin-left:4rem}}@media (width \u003c 64rem){.txd-shell{display:block;padding:2rem 1.5rem 5rem}.txd-side{display:none}.txd-main{margin-left:0}}:is(#tx-directory,.tx-mobile-directory){margin:0 0 0.5rem;padding:0 0.5rem 0 1rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-label{font-size:0.72rem;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;opacity:0.55;margin:0 0 0.4rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-label-gap{margin-top:1.5rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-link,:is(#tx-directory,.tx-mobile-directory) summary{display:flex;align-items:center;cursor:pointer;font-size:0.875rem;line-height:1.25rem;padding:0.35rem 0.5rem;border-radius:0.375rem;color:rgb(55 65 81);text-decoration:none}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-link,html.dark :is(#tx-directory,.tx-mobile-directory) summary{color:rgb(156 163 175)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-link:hover,:is(#tx-directory,.tx-mobile-directory) summary:hover{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-link[aria-current=\"page\"]{color:#00b688;background:transparent;box-shadow:none;font-weight:400;text-shadow:-0.2px 0 0 currentColor, 0.2px 0 0 currentColor}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-link:hover,html.dark :is(#tx-directory,.tx-mobile-directory) summary:hover{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-link[aria-current=\"page\"]{color:#5eead4;background:transparent;box-shadow:none}:is(#tx-directory,.tx-mobile-directory) .tx-dir-soon,:is(#tx-directory,.tx-mobile-directory) .tx-dir-soon:hover,html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-soon,html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-soon:hover{cursor:default;opacity:0.45;background:transparent;color:inherit}:is(#tx-directory,.tx-mobile-directory) .tx-dir-soon sup{font-size:0.6rem;line-height:1;letter-spacing:0.05em;text-transform:uppercase;margin-left:0.4rem;vertical-align:super}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite{margin-bottom:0.15rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head{display:flex;align-items:center;cursor:pointer;user-select:none;font-size:0.875rem;line-height:1.25rem;font-weight:500;padding:0.35rem 0.5rem;border-radius:0.375rem;color:rgb(55 65 81)}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head{color:rgb(156 163 175)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head:hover{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04)}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head:hover{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head::after{content:'';width:0.42rem;height:0.42rem;margin-left:auto;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform 0.15s;flex-shrink:0;opacity:0.7}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head::after{transform:rotate(45deg)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04);font-weight:600}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite>ul{display:none}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>ul{display:block}:is(#tx-directory,.tx-mobile-directory) ul{margin:0.15rem 0 0.5rem;padding:0}:is(#tx-directory,.tx-mobile-directory) li{list-style:none}:is(#tx-directory,.tx-mobile-directory) li a{display:flex;align-items:center;font-size:0.875rem;line-height:1.25rem;padding:0.3rem 0.5rem 0.3rem 1.6rem;border-radius:0.375rem;color:rgb(107 114 128);text-decoration:none}:is(#tx-directory,.tx-mobile-directory) .tx-dir-section-item{font-weight:500}html.dark :is(#tx-directory,.tx-mobile-directory) li a{color:rgb(156 163 175)}:is(#tx-directory,.tx-mobile-directory) li a:hover{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04)}html.dark :is(#tx-directory,.tx-mobile-directory) li a:hover{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-icon{display:inline-block;width:1rem;height:1rem;flex-shrink:0;margin-right:0.5rem;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.txi-arrows-left-right-to-line{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/arrows-left-right-to-line.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/arrows-left-right-to-line.svg\")}.txi-bolt{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/bolt.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/bolt.svg\")}.txi-brain{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain.svg\")}.txi-brain-circuit{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain-circuit.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain-circuit.svg\")}.txi-brands-whatsapp{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/whatsapp.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/whatsapp.svg\")}.txi-broadcast-tower{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/broadcast-tower.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/broadcast-tower.svg\")}.txi-browser{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/browser.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/browser.svg\")}.txi-circle-nodes{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/circle-nodes.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/circle-nodes.svg\")}.txi-clone{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/clone.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/clone.svg\")}.txi-cloud{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cloud.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cloud.svg\")}.txi-code{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/code.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/code.svg\")}.txi-comment-sms{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/comment-sms.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/comment-sms.svg\")}.txi-cubes{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cubes.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cubes.svg\")}.txi-database{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/database.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/database.svg\")}.txi-door-open{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/door-open.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/door-open.svg\")}.txi-envelope{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/envelope.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/envelope.svg\")}.txi-eye{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/eye.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/eye.svg\")}.txi-file-certificate{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/file-certificate.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/file-certificate.svg\")}.txi-fingerprint{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/fingerprint.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/fingerprint.svg\")}.txi-folder-tree{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/folder-tree.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/folder-tree.svg\")}.txi-globe{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/globe.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/globe.svg\")}.txi-hard-drive{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hard-drive.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hard-drive.svg\")}.txi-hashtag{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hashtag.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hashtag.svg\")}.txi-headset{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/headset.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/headset.svg\")}.txi-key{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/key.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/key.svg\")}.txi-layer-group{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/layer-group.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/layer-group.svg\")}.txi-magnifying-glass{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/magnifying-glass.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/magnifying-glass.svg\")}.txi-message{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message.svg\")}.txi-message-dots{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message-dots.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message-dots.svg\")}.txi-microchip-ai{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microchip-ai.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microchip-ai.svg\")}.txi-microphone{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microphone.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microphone.svg\")}.txi-network-wired{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/network-wired.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/network-wired.svg\")}.txi-phone{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone.svg\")}.txi-phone-volume{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone-volume.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone-volume.svg\")}.txi-plug{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/plug.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/plug.svg\")}.txi-right-left{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/right-left.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/right-left.svg\")}.txi-robot{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/robot.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/robot.svg\")}.txi-server{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/server.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/server.svg\")}.txi-share-nodes{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/share-nodes.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/share-nodes.svg\")}.txi-shield{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield.svg\")}.txi-shield-check{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield-check.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield-check.svg\")}.txi-signal{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/signal.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/signal.svg\")}.txi-sim-card{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/sim-card.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/sim-card.svg\")}.txi-split{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/split.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/split.svg\")}.txi-table{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/table.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/table.svg\")}.txi-tower-control{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/tower-control.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/tower-control.svg\")}.txi-train-tunnel{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/train-tunnel.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/train-tunnel.svg\")}.txi-video{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/video.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/video.svg\")}.txi-wand-magic-sparkles{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/wand-magic-sparkles.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/wand-magic-sparkles.svg\")}.txi-waveform{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform.svg\")}.txi-waveform-lines{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform-lines.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform-lines.svg\")}.txd-main .txd-h1{font-family:var(--font-family-headings-custom, \"PP Formula\"), -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;font-size:2.1rem;font-weight:500;letter-spacing:-0.01em;margin:1.2rem 0 0.4rem;color:rgb(22 28 26)}html.dark .txd-main .txd-h1{color:rgb(229 231 235)}.txd-main .txd-lead{font-size:1.3rem;line-height:1.55;font-weight:500;margin:0.9rem 0 1.3rem;color:rgb(31 41 55)}html.dark .txd-main .txd-lead{color:rgb(209 213 219)}.txd-main .txd-h2{font-family:var(--font-family-headings-custom, \"PP Formula\"), -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;font-size:1.45rem;font-weight:500;margin:2.4rem 0 0.4rem;color:rgb(22 28 26)}html.dark .txd-main .txd-h2{color:rgb(229 231 235)}.txd-main .txd-section-h{font-size:1.05rem;font-weight:600;margin:1.8rem 0 0.2rem;opacity:0.85}.txd-main .txd-p{margin:0.7rem 0 1rem;line-height:1.65;color:rgb(75 85 99)}html.dark .txd-main .txd-p{color:rgb(156 163 175)}.txd-main .txd-p a{text-decoration:underline}.txd-main .txd-h1{max-width:46rem;line-height:1.12}.txd-main .txd-hero-copy{max-width:45rem}.txd-main .txd-follow-up{margin-top:1rem}.txd-main .txd-follow-up a{color:#00b688;font-weight:600;text-decoration:none}.txd-main .txd-follow-up a:hover{text-decoration:underline}.txd-main a:focus-visible{outline:2px solid #00b688;outline-offset:3px}@media (max-width: 48rem){.txd-main .txd-h1{font-size:1.9rem}}@media (min-width: 64.01rem) and (max-width: 90rem){.txd-main{margin-right:4rem}}.rm-explorer{--rm-border: rgb(15 23 42 / 14%);--rm-muted: #5f6b68;--rm-soft: #f6f8f7}.dark .rm-explorer{--rm-border: rgb(255 255 255 / 14%);--rm-muted: #a2aaa8;--rm-soft: #151a19}#resource-map-toolbar{position:sticky;top:5rem;z-index:20;margin:1.25rem 0 1.75rem;padding:.75rem 0;background:var(--rm-surface, #fff);border-bottom:1px solid var(--rm-border)}.dark #resource-map-toolbar{background:#0b0e0d}.rm-controls{display:grid;grid-template-columns:minmax(15rem, 1fr) minmax(10rem, auto) auto;gap:.625rem;align-items:center}.rm-search{position:relative;min-width:0}.rm-search svg{position:absolute;top:50%;left:.75rem;width:1rem;height:1rem;color:var(--rm-muted);fill:none;stroke:currentColor;stroke-width:1.8;transform:translateY(-50%);pointer-events:none}.rm-search input,.rm-area-select,.rm-collapse,.rm-clear,.rm-empty button{min-height:2.5rem;color:inherit;background:transparent;border:1px solid var(--rm-border);border-radius:.5rem;font:inherit;font-size:.875rem}.rm-search input{width:100%;padding:.58rem 2.6rem .58rem 2.35rem}.rm-search input::placeholder{color:var(--rm-muted);opacity:1}.rm-shortcut{position:absolute;top:50%;right:.65rem;display:grid;width:1.5rem;height:1.5rem;place-items:center;color:var(--rm-muted);background:var(--rm-soft);border:1px solid var(--rm-border);border-radius:.35rem;font:inherit;font-size:.72rem;transform:translateY(-50%);pointer-events:none}.rm-area-wrap{position:relative;max-width:13rem}.rm-area-select{width:100%;max-width:13rem;padding:.55rem 2.25rem .55rem .75rem;appearance:none;cursor:pointer}.rm-area-caret{position:absolute;top:50%;right:.85rem;width:.45rem;height:.45rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-70%) rotate(45deg);pointer-events:none}.rm-collapse,.rm-clear,.rm-empty button{padding:.5rem .75rem;font-weight:650;cursor:pointer}.rm-search input:focus-visible,.rm-area-select:focus-visible,.rm-collapse:focus-visible,.rm-clear:focus-visible,.rm-empty button:focus-visible{outline:2px solid #00b688;outline-offset:2px;border-color:#00b688;box-shadow:none!important}.rm-collapse:hover,.rm-clear:hover,.rm-empty button:hover{color:#08785d;background:var(--rm-soft)}.dark .rm-collapse:hover,.dark .rm-clear:hover,.dark .rm-empty button:hover{color:#5eead4}.rm-meta{display:flex;min-height:1.65rem;align-items:center;justify-content:space-between;gap:.75rem;padding:.45rem .15rem 0}.rm-status{color:var(--rm-muted);font-size:.78rem;line-height:1.35}.rm-clear{min-height:1.8rem;padding:.2rem .55rem;border-color:transparent;font-size:.78rem}.rm-empty{display:grid;justify-items:start;gap:.35rem;margin:-.5rem 0 1.75rem;padding:1.1rem 1.2rem;color:var(--rm-muted);background:var(--rm-soft);border:1px solid var(--rm-border);border-radius:.75rem;font-size:.875rem}.rm-empty strong{color:inherit;font-size:.95rem}.rm-empty button{min-height:2.2rem;margin-top:.35rem}.rm-resource-list{display:block!important;margin:0 0 .75rem!important;border-color:var(--rm-border)!important;border-top:0!important;border-radius:0 0 .75rem .75rem!important}.rm-resource-list>details.accordion{margin:0!important;border:0!important;border-radius:0!important}.rm-resource-list>details.accordion+details.accordion{border-top:1px solid var(--rm-border)!important}.rm-resource-list>details.accordion>summary{min-height:3rem;padding:.7rem .9rem!important;border-radius:0!important}.rm-resource-list>details.accordion:first-child>summary{border-radius:0!important}.rm-resource-list>details.accordion:last-child:not([open])>summary{border-radius:0 0 .75rem .75rem!important}.rm-resource-list [data-component-part=\"accordion-title\"]{display:flex;min-width:0;align-items:baseline;justify-content:space-between;gap:1rem}.rm-resource-name{min-width:0;overflow-wrap:anywhere;font-weight:650}.rm-method-count{flex:0 0 auto;color:var(--rm-muted);font-size:.75rem;font-weight:500;white-space:nowrap}.rm-resource-list details[open]>summary{background:var(--rm-soft)}.rm-resource-list details[open] [data-component-part=\"accordion-content\"]{margin-right:1rem;margin-left:1rem}.rm-resource-list tbody tr.rm-row-match{background:rgb(0 182 136 / 8%)}.rm-resource-list td:first-child code{white-space:nowrap}.rm-resource-list tbody tr[hidden],.rm-explorer h2[hidden],.rm-resource-list[hidden],.rm-empty[hidden],.rm-collapse[hidden],.rm-clear[hidden]{display:none!important}.rm-explorer h2{position:relative;min-height:3rem;margin:.45rem 0 0!important;scroll-margin-top:10rem;border:1px solid var(--rm-border);border-radius:.75rem}.rm-explorer h2.rm-section-open{border-radius:.75rem .75rem 0 0}.rm-section-toggle{display:grid;width:100%;min-height:3rem;grid-template-columns:minmax(0, 1fr) auto auto;align-items:center;gap:.75rem;padding:.6rem .9rem;color:inherit;text-align:left;background:transparent;border:0;cursor:pointer}.rm-section-toggle:hover,.rm-section-toggle:focus-visible{background:var(--rm-soft)}.rm-section-toggle:focus-visible{outline:2px solid #00b688;outline-offset:2px;border-radius:.7rem}.rm-section-name{font-size:1rem;font-weight:700}.rm-section-count{display:grid;min-width:1.65rem;min-height:1.4rem;place-items:center;padding:3px 6px;color:#08785d;background:rgb(0 182 136 / 10%);border-radius:.35rem;font-size:12px;font-weight:700;line-height:16px;white-space:nowrap}.dark .rm-section-count{color:#5eead4;background:#12302b}.rm-section-caret{width:.5rem;height:.5rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-.15rem)}.rm-section-toggle[aria-expanded=\"true\"] .rm-section-caret{transform:rotate(225deg) translate(-.1rem, -.05rem)}@media (max-width: 767px){#resource-map-toolbar{position:static;top:auto;z-index:auto;margin-top:1rem;padding-top:.6rem}.rm-controls{grid-template-columns:minmax(0, 1fr) auto}.rm-search{grid-column:1 / -1}.rm-search input{padding-right:.75rem}.rm-shortcut{display:none}.rm-area-wrap,.rm-area-select{width:100%;max-width:none}.rm-resource-list [data-component-part=\"accordion-title\"]{gap:.65rem}.rm-method-count{font-size:.7rem}.rm-resource-list table,.rm-resource-list tbody{display:block;width:100%;min-width:0!important}.rm-resource-list thead{display:none}.rm-resource-list tbody tr{display:grid;width:100%;grid-template-columns:minmax(0, 1fr);gap:.45rem;padding:.75rem 0}.rm-resource-list tbody tr+tr{border-top:1px solid var(--rm-border)}.rm-resource-list tbody td{display:grid;width:100%;min-width:0!important;grid-template-columns:4.5rem minmax(0, 1fr);align-items:start;gap:.5rem;padding:0!important;border:0!important}.rm-resource-list tbody td::before{color:var(--rm-muted);font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.rm-resource-list tbody td:first-child::before{content:\"Method\"}.rm-resource-list tbody td:last-child::before{content:\"Endpoint\"}.rm-resource-list tbody td code,.rm-resource-list tbody td a{min-width:0;white-space:normal!important;overflow-wrap:anywhere}}@media (prefers-reduced-motion: reduce){.rm-explorer *,.rm-explorer *::before,.rm-explorer *::after{scroll-behavior:auto!important;transition-duration:.01ms!important}}.sdk-launchpad{--sdk-border: #d8e1de;--sdk-panel: #ffffff;margin:1rem 0 1.5rem;padding:1rem;overflow:hidden;color:inherit;background:var(--sdk-panel);border:1px solid var(--sdk-border);border-radius:12px}.dark .sdk-launchpad{--sdk-border: #293431;--sdk-panel: #101513}.sdk-launchpad-kicker{margin:0 0 .25rem!important;color:#08785d;font-size:.68rem;font-weight:800;letter-spacing:.1em}.dark .sdk-launchpad-kicker{color:#5eead4}.sdk-launchpad>h2{margin-top:.25rem}.sdk-launchpad [role=\"tablist\"]{display:flex;flex-wrap:wrap;gap:.25rem}.sdk-launchpad [role=\"tab\"]{min-width:56px;min-height:44px}.sdk-launchpad [role=\"tab\"][aria-selected=\"true\"]{color:#08785d!important}.dark .sdk-launchpad [role=\"tab\"][aria-selected=\"true\"]{color:#5eead4!important}.sdk-launchpad [role=\"tab\"]:focus-visible,.sdk-launchpad a:focus-visible,.sdk-launchpad-code:focus-visible{outline:2px solid #08785d;outline-offset:2px}.dark .sdk-launchpad [role=\"tab\"]:focus-visible,.dark .sdk-launchpad a:focus-visible,.dark .sdk-launchpad-code:focus-visible{outline-color:#5eead4}.sdk-launchpad-code{max-width:100%;overflow-x:auto;border-radius:.5rem}.sdk-launchpad-code pre{max-width:none;overflow-x:visible!important}.sdk-launchpad-code button{min-width:44px;min-height:44px}#content-area:has(#sdk-launchpad) .chat-assistant-floating-input{display:none}@media (max-width: 640px){.sdk-launchpad{margin-top:.75rem;padding:.75rem}.sdk-launchpad-kicker{display:none}.sdk-launchpad [role=\"tablist\"]{display:grid;grid-template-columns:repeat(6, minmax(0, 1fr));gap:.2rem;overflow:visible}.sdk-launchpad [role=\"tab\"]{min-width:0;min-height:44px;padding-inline:.2rem;font-size:.75rem;line-height:1.15;white-space:nowrap}}.sdk-directory li{margin-block:.5rem}.mdx-content table td{min-width:0!important}.mdx-content table td :is(code,a){overflow-wrap:anywhere}.mdx-content table :is(th,td):first-child code{white-space:nowrap;word-break:normal;overflow-wrap:normal}@media (min-width: 768px){.tx-table-grid table{table-layout:fixed}.tx-table-grid table :is(th,td):first-child{width:40%}}@media (min-width: 768px){.tx-table-grid-3 table{table-layout:fixed}.tx-table-grid-3 table :is(th,td):first-child{width:22%}.tx-table-grid-3 table :is(th,td):last-child{width:18%}}.tx-retirement-banner{margin-bottom:1.5rem}.tx-retirement-banner>div{margin:0}@media (min-width: 1024px){.tx-retirement-banner{position:sticky;top:calc(6rem + var(--banner-height, 0px));z-index:20;padding-top:.5rem;background:rgb(var(--background-light, 255 255 255))}.dark .tx-retirement-banner{background:rgb(var(--background-dark, 9 12 14))}}#content>.callout:first-child{margin-top:0}#content strong{font-weight:600}"}],"page":{"pagePath":"api-reference/email-messages/create-a-batch-of-email-messages","slug":"/api-reference/email-messages/create-a-batch-of-email-messages","pageMetadata":{"title":"Create a batch of email messages","description":"Creates up to 1,000 email messages in a single request. Request-wide admission checks run first and can reject the whole batch before message creation. After those checks pass, each message is validated and sent independently; item-level failures do not affect other messages, and the processed batch returns 207 Multi-Status. Per-message failures include validation errors; when a template has `strict_variables` enabled, a missing required variable produces a per-item `unprocessable_entity` error naming that variable while the other messages continue.","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_messages/batch","href":"/api-reference/email-messages/create-a-batch-of-email-messages","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Creates up to 1,000 email messages in a single request. Request-wide admission checks run first and can reject the whole batch before message creation. After those checks pass, each message is validated and sent independently; item-level failures do not affect other messages, and the processed batch returns 207 Multi-Status. Per-message failures include validation errors; when a template has \", _jsx(_components.code, {\n children: \"strict_variables\"\n }), \" enabled, a missing required variable produces a per-item \", _jsx(_components.code, {\n children: \"unprocessable_entity\"\n }), \" error naming that variable while the other messages continue.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create a batch of email messages","description":"Creates up to 1,000 email messages in a single request. Request-wide admission checks run first and can reject the whole batch before message creation. After those checks pass, each message is validated and sent independently; item-level failures do not affect other messages, and the processed batch returns 207 Multi-Status. Per-message failures include validation errors; when a template has `strict_variables` enabled, a missing required variable produces a per-item `unprocessable_entity` error naming that variable while the other messages continue.","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_messages/batch","href":"/api-reference/email-messages/create-a-batch-of-email-messages","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/telnyx/a2dd5aaa2ff5831a/reading-progress.js","/_mintlify/custom/telnyx/7b77ce9cedb163fd/webmcp-init.js","/_mintlify/custom/telnyx/7fbfee588ac7ad38/structured-data.js","/_mintlify/custom/telnyx/41d9633b1a2dd405/scripts/tests/generate-llms-txt.test.js","/_mintlify/custom/telnyx/8851ad5fd6e9b5c7/scripts/tests/direct-source-workflows.test.js","/_mintlify/custom/telnyx/1cd11353bb65f5a7/scripts/tests/redirects.test.js","/_mintlify/custom/telnyx/f981035eb45fcbdb/scripts/tests/generate-error-catalog.test.js","/_mintlify/custom/telnyx/132bc205f55282a5/scripts/tests/sync-llms-automerge.test.js","/_mintlify/custom/telnyx/05e787f15f45952b/scripts/tests/webhook-catalog-lifecycle.test.js","/_mintlify/custom/telnyx/01b840b27496e6c8/scripts/tests/repository-structure.test.js","/_mintlify/custom/telnyx/5ebc7d6e18012563/scripts/tests/legacy-content-usage.test.js","/_mintlify/custom/telnyx/ac1f21e68bf4050a/scripts/docs/check-llms-links.js","/_mintlify/custom/telnyx/5f7d2f1ae375b9ad/scripts/docs/check-llms-native-routes.js","/_mintlify/custom/telnyx/b8d13287c2dcc5b9/scripts/docs/fetch-coverage.js","/_mintlify/custom/telnyx/e0a29f76f2645359/scripts/docs/generate-error-catalog.js","/_mintlify/custom/telnyx/9ffa8f6166445a46/scripts/docs/generate-llms-txt.js","/_mintlify/custom/telnyx/f1f111fe784c3ede/scripts/docs/update-tts-voices.js","/_mintlify/custom/telnyx/c48ad0189f7f1c57/scripts/docs/build-sdk-doc-pages.js","/_mintlify/custom/telnyx/f840117777d76f9e/scripts/tests/sdk-doc-pages.test.js","/_mintlify/custom/telnyx/414c53c50b0e1968/resource-map-filter.js","/_mintlify/custom/telnyx/80af622b3010a712/scripts/tests/sdk-language-switcher.test.js","/_mintlify/custom/telnyx/52fa0fbcb966f8b6/sdk-language-switcher.js","/_mintlify/custom/telnyx/660ec334a362cf1c/home-directory.js","/_mintlify/custom/telnyx/33d3f1dbdec08735/scripts/generate-home-directory.js","/_mintlify/custom/telnyx/137e3eb8e1d1d85a/scripts/tests/api-fundamentals.test.js","/_mintlify/custom/telnyx/24a8eed3a5010d4c/scripts/tests/agent-sdk-workflow.test.js","/_mintlify/custom/telnyx/abc2169efcd5115c/scripts/tests/homepage-overview.test.js","/_mintlify/custom/telnyx/8edf49ac62deef02/scripts/tests/batch-detail-records-navigation.test.js","/_mintlify/custom/telnyx/e005178572336f01/scripts/tests/api-discoverability.test.js","/_mintlify/custom/telnyx/78cb83896fbea5cf/scripts/tests/home-directory.test.js","/_mintlify/custom/telnyx/11ae45253e6b7be6/scripts/tests/agent-readiness.test.js","/_mintlify/custom/telnyx/82396d5a75077c2a/scripts/tests/sample-workflow-regressions.test.js","/_mintlify/custom/telnyx/5f6625c0420c9328/scripts/tests/openapi-mintlify-parsing.test.js","/_mintlify/custom/telnyx/c7dca602ca9641ec/scripts/tests/llms-markdown-assets.test.js","/_mintlify/custom/telnyx/02d6acd7c86b79f9/scripts/tests/agent-browser-quickstart.test.js"],"openApiReferenceData":{"operation":{"tags":["Email Messages"],"operationId":"CreateEmailMessageBatch","summary":"Create a batch of email messages","description":"Creates up to 1,000 email messages in a single request. Request-wide admission checks run first and can reject the whole batch before message creation. After those checks pass, each message is validated and sent independently; item-level failures do not affect other messages, and the processed batch returns 207 Multi-Status. Per-message failures include validation errors; when a template has `strict_variables` enabled, a missing required variable produces a per-item `unprocessable_entity` error naming that variable while the other messages continue.","requestBody":"82d866a3-c794-44de-a4de-6fb857d2e1c1","responses":{"207":"bca63f6e-e864-4e05-ba0c-01e21552efce","400":"ab9f2d23-7ddc-4afc-a2f6-6f2159df8789","401":"12f16619-badf-4b71-8f3b-f8d4bca75e45","409":"426551c7-a03d-4a14-9bb2-2397d870e01b","413":"263dbcca-9d18-4c94-8670-d210abbc1194","422":"4a3f9159-8740-4d5e-b2c3-e2af65aa75fe","429":"d36fdc83-2855-40ce-85a0-ecdc669f22aa","503":"688eae90-d139-43ef-8cc2-5dd5eee0cd47"},"parameters":["b6c1c96a-fa1f-4b03-b91f-ac78f77000ea"],"x-codeSamples":[{"lang":"JavaScript","source":"import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.emailMessages.batch({\n messages: [],\n});\n\nconsole.log(response.data);"},{"lang":"Python","source":"import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get(\"TELNYX_API_KEY\"), # This is the default and can be omitted\n)\nresponse = client.email_messages.batch(\n messages=[],\n)\nprint(response.data)\n"},{"lang":"Go","source":"package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/team-telnyx/telnyx-go\"\n\t\"github.com/team-telnyx/telnyx-go/option\"\n)\n\nfunc main() {\n\tclient := telnyx.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.EmailMessages.Batch(\n\t\tcontext.TODO(),\n\t\ttelnyx.EmailMessageBatchParams{\n\t\t\tMessages: \"messages\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n}\n"},{"lang":"Java","source":"package com.telnyx.sdk.example;\n\nimport com.telnyx.sdk.client.TelnyxClient;\nimport com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;\nimport com.telnyx.sdk.models.emailMessages.EmailMessageBatchParams;\nimport java.util.List;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n EmailMessageBatchParams params = EmailMessageBatchParams.builder()\n .messages(List.of())\n .build();\n var response = client.emailMessages().batch(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\nresponse = telnyx.email_messages.batch(messages: [])\n\nputs(response)"},{"lang":"PHP","source":"\u003c?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\nuse Telnyx\\Client;\nuse Telnyx\\Core\\Exceptions\\APIException;\n\n$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');\n\ntry {\n $response = $client->emailMessages->batch(\n messages: [],\n );\n\n var_dump($response);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx email-messages batch \\\n --api-key 'My API Key' \\\n --messages messages"}],"method":"post","type":"path","servers":["ba228b30-2f2a-4f83-8934-4e3ba1c84f11"],"security":["7b51e92f-3d92-487d-a058-03c4cd5c2c42"],"path":"/email_messages/batch","baseUrlOptions":["https://api.telnyx.com/v2"],"title":"Create a batch of email messages","codeSamples":[{"lang":"JavaScript","source":"import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.emailMessages.batch({\n messages: [],\n});\n\nconsole.log(response.data);"},{"lang":"Python","source":"import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get(\"TELNYX_API_KEY\"), # This is the default and can be omitted\n)\nresponse = client.email_messages.batch(\n messages=[],\n)\nprint(response.data)\n"},{"lang":"Go","source":"package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/team-telnyx/telnyx-go\"\n\t\"github.com/team-telnyx/telnyx-go/option\"\n)\n\nfunc main() {\n\tclient := telnyx.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.EmailMessages.Batch(\n\t\tcontext.TODO(),\n\t\ttelnyx.EmailMessageBatchParams{\n\t\t\tMessages: \"messages\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n}\n"},{"lang":"Java","source":"package com.telnyx.sdk.example;\n\nimport com.telnyx.sdk.client.TelnyxClient;\nimport com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;\nimport com.telnyx.sdk.models.emailMessages.EmailMessageBatchParams;\nimport java.util.List;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n EmailMessageBatchParams params = EmailMessageBatchParams.builder()\n .messages(List.of())\n .build();\n var response = client.emailMessages().batch(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\nresponse = telnyx.email_messages.batch(messages: [])\n\nputs(response)"},{"lang":"PHP","source":"\u003c?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\nuse Telnyx\\Client;\nuse Telnyx\\Core\\Exceptions\\APIException;\n\n$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');\n\ntry {\n $response = $client->emailMessages->batch(\n messages: [],\n );\n\n var_dump($response);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx email-messages batch \\\n --api-key 'My API Key' \\\n --messages messages"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"b6c1c96a-fa1f-4b03-b91f-ac78f77000ea":{"name":"Idempotency-Key","in":"header","required":false,"description":"Optional opaque, unquoted key for safely retrying the same logical request. Keys must contain 1 to 255 letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each operation and reuse it only when retrying that operation with the same request. Invalid headers—including duplicate, empty, malformed, or overlong values—return 400 with error code 10015. A request already in progress with the same key returns 409; reusing the key with a different request returns 422. Only successful responses are replayed, for up to 24 hours. Do not include sensitive data in the key.","schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9_-]{1,255}$","isRequired":false,"description":"Optional opaque, unquoted key for safely retrying the same logical request. Keys must contain 1 to 255 letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each operation and reuse it only when retrying that operation with the same request. Invalid headers—including duplicate, empty, malformed, or overlong values—return 400 with error code 10015. A request already in progress with the same key returns 409; reusing the key with a different request returns 422. Only successful responses are replayed, for up to 24 hours. Do not include sensitive data in the key.","uniqueKey":"","typeLabel":"string"},"example":"8e03978e-40d5-43e8-bc93-6894a57f9326"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","minItems":1,"maxItems":1000,"description":"Array of email messages to send. Up to 1,000 messages per batch request. Each message is validated and sent independently; per-message failures do not affect other messages in the batch.","items":{"type":"object","description":"A single message in a batch create request. This schema mirrors\n`CreateEmailRequest` EXCEPT it does not accept the reply/forward\nthreading parameters (`in_reply_to_message_id`, `reply_to_all`,\n`forward_of_message_id`) — those are single-send-only in Phase 1\n(MSG-1491) and are not yet implemented on the batch endpoint. Recipient\nemail addresses must be unique across `to`, `cc`, and `bcc` after\ncase-insensitive normalization. Duplicate recipients return `400`.","properties":{"from":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].from.oneOf.0","typeLabel":"string"},{"type":"object","required":["email"],"properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].from.oneOf.1.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"messages.items.[INDEX].from.oneOf.1.name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"messages.items.[INDEX].from.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"messages.items.[INDEX].from","typeLabel":"string | object"},"to":{"type":"array","minItems":1,"items":{"oneOf":[{"type":"string","uniqueKey":"messages.items.[INDEX].to.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"object","required":["email"],"properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].to.items.[INDEX].oneOf.1.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"messages.items.[INDEX].to.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"messages.items.[INDEX].to.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"messages.items.[INDEX].to.items.[INDEX]","typeLabel":"string | object"},"isRequired":true,"uniqueKey":"messages.items.[INDEX].to","typeLabel":"(string | object)[]"},"from_name":{"type":"string","description":"Optional display name for string `from`; overrides `from.name` when provided.","uniqueKey":"messages.items.[INDEX].from_name","typeLabel":"string"},"cc":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"messages.items.[INDEX].cc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"object","required":["email"],"properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].cc.items.[INDEX].oneOf.1.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"messages.items.[INDEX].cc.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"messages.items.[INDEX].cc.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"messages.items.[INDEX].cc.items.[INDEX]","typeLabel":"string | object"},"uniqueKey":"messages.items.[INDEX].cc","typeLabel":"(string | object)[]"},"bcc":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"messages.items.[INDEX].bcc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"object","required":["email"],"properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].bcc.items.[INDEX].oneOf.1.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"messages.items.[INDEX].bcc.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"messages.items.[INDEX].bcc.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"messages.items.[INDEX].bcc.items.[INDEX]","typeLabel":"string | object"},"uniqueKey":"messages.items.[INDEX].bcc","typeLabel":"(string | object)[]"},"reply_to":{"oneOf":[{"type":"string","description":"Reply-to address. If provided as an object with a name, only the email is stored; the name is ignored.","uniqueKey":"messages.items.[INDEX].reply_to.oneOf.0","typeLabel":"string"},{"type":"object","description":"Reply-to address. If provided as an object with a name, only the email is stored; the name is ignored.","required":["email"],"properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].reply_to.oneOf.1.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"messages.items.[INDEX].reply_to.oneOf.1.name","typeLabel":"string"}},"uniqueKey":"messages.items.[INDEX].reply_to.oneOf.1","typeLabel":"object"}],"uniqueKey":"messages.items.[INDEX].reply_to","typeLabel":"string | object"},"subject":{"type":"string","description":"Required unless `template_id` is supplied. When using a template, the template's subject is rendered; if the template has no subject or renders empty, the request returns 400.","uniqueKey":"messages.items.[INDEX].subject","typeLabel":"string"},"html_body":{"type":"string","description":"HTML email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses.","uniqueKey":"messages.items.[INDEX].html_body","typeLabel":"string"},"text_body":{"type":"string","description":"Plain text email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses.","uniqueKey":"messages.items.[INDEX].text_body","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"messages.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"description":"Custom email headers. Write-only; not returned in responses.","uniqueKey":"messages.items.[INDEX].headers","typeLabel":"object"},"attachments":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Attachment filename. Defaults to \"attachment\" when omitted.","uniqueKey":"messages.items.[INDEX].attachments.items.[INDEX].filename","typeLabel":"string"},"content_type":{"type":"string","description":"MIME content type. Defaults to \"application/octet-stream\" when omitted.","uniqueKey":"messages.items.[INDEX].attachments.items.[INDEX].content_type","typeLabel":"string"},"content":{"type":"string","description":"Attachment content, typically Base64-encoded. Defaults to empty string when omitted.","uniqueKey":"messages.items.[INDEX].attachments.items.[INDEX].content","typeLabel":"string"},"disposition":{"type":"string","default":"attachment","description":"MIME disposition (`attachment` or `inline`).","uniqueKey":"messages.items.[INDEX].attachments.items.[INDEX].disposition","typeLabel":"string"},"content_id":{"oneOf":[{"type":"string","description":"MIME Content-ID used to reference an inline attachment.","uniqueKey":"messages.items.[INDEX].attachments.items.[INDEX].content_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"MIME Content-ID used to reference an inline attachment.","uniqueKey":"messages.items.[INDEX].attachments.items.[INDEX].content_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].attachments.items.[INDEX].content_id","typeLabel":"string | null"}},"uniqueKey":"messages.items.[INDEX].attachments.items.[INDEX]","typeLabel":"object"},"uniqueKey":"messages.items.[INDEX].attachments","typeLabel":"object[]"},"tags":{"type":"array","items":{"type":"string","uniqueKey":"messages.items.[INDEX].tags.items.[INDEX]","typeLabel":"string"},"description":"Tags for categorization and filtering. Stored on the message, returned on message responses, and propagated to Email Detail Records. Usable in `filter[tags]` when listing messages.","uniqueKey":"messages.items.[INDEX].tags","typeLabel":"string[]"},"group_id":{"oneOf":[{"type":"string","format":"uuid","description":"Optional unsubscribe-group UUID used for group-scoped suppression checks and unsubscribe handling.","uniqueKey":"messages.items.[INDEX].group_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Optional unsubscribe-group UUID used for group-scoped suppression checks and unsubscribe handling.","uniqueKey":"messages.items.[INDEX].group_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].group_id","typeLabel":"string\u003cuuid> | null"},"ignore_suppression":{"type":"boolean","default":false,"description":"When true, allows delivery to recipients whose suppressions explicitly\npermit an override. Hard bounces, spam complaints, and invalid-address\nsuppressions cannot be overridden. Requires the `email:override` API scope.\n","uniqueKey":"messages.items.[INDEX].ignore_suppression","typeLabel":"boolean"},"metadata":{"type":"object","additionalProperties":true,"description":"Custom metadata key/value pairs. Stored on the message, returned on message responses, and propagated to Email Detail Records. Usable in `filter[metadata]` when listing messages.","uniqueKey":"messages.items.[INDEX].metadata","typeLabel":"object"},"tracking_settings":{"type":"object","description":"Per-send open and click tracking overrides. Omitted properties inherit the sender domain's tracking settings.","properties":{"open_tracking":{"type":"boolean","description":"Whether to inject an open-tracking pixel for this message.","uniqueKey":"messages.items.[INDEX].tracking_settings.open_tracking","typeLabel":"boolean"},"click_tracking":{"type":"boolean","description":"Whether to rewrite links for click tracking in this message.","uniqueKey":"messages.items.[INDEX].tracking_settings.click_tracking","typeLabel":"boolean"}},"uniqueKey":"messages.items.[INDEX].tracking_settings","typeLabel":"object"},"template_id":{"type":"string","format":"uuid","uniqueKey":"messages.items.[INDEX].template_id","typeLabel":"string\u003cuuid>"},"template_variables":{"type":"object","default":{},"additionalProperties":true,"description":"Variables for Liquid template rendering. Non-object values may cause a 422 validation error on message creation, but are silently treated as an empty object for template rendering. When the template enables `strict_variables`, a missing required variable fails the request with 422 (single send) or a per-item `unprocessable_entity` error (batch) naming the variable; no message is persisted for the failed item.","uniqueKey":"messages.items.[INDEX].template_variables","typeLabel":"object"},"scheduled_at":{"oneOf":[{"type":"string","format":"date-time","description":"Future ISO 8601 delivery time. Invalid or non-future timestamps are rejected. Single sends return HTTP 422; in batch sends the invalid item is reported in the 207 per-item errors while other items continue. `send_at` remains a deprecated request alias. A non-null `scheduled_at` takes precedence over `send_at`; when `scheduled_at` is omitted or null, `send_at` is used.","uniqueKey":"messages.items.[INDEX].scheduled_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Future ISO 8601 delivery time. Invalid or non-future timestamps are rejected. Single sends return HTTP 422; in batch sends the invalid item is reported in the 207 per-item errors while other items continue. `send_at` remains a deprecated request alias. A non-null `scheduled_at` takes precedence over `send_at`; when `scheduled_at` is omitted or null, `send_at` is used.","uniqueKey":"messages.items.[INDEX].scheduled_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].scheduled_at","typeLabel":"string\u003cdate-time> | null"},"send_at":{"type":"string","format":"date-time","deprecated":true,"description":"Deprecated alias for `scheduled_at`.","uniqueKey":"messages.items.[INDEX].send_at","typeLabel":"string\u003cdate-time>"},"inline_css":{"type":"boolean","default":false,"uniqueKey":"messages.items.[INDEX].inline_css","typeLabel":"boolean"},"sandbox_mode":{"type":"boolean","default":false,"description":"Per-message sandbox flag. The batch-level `sandbox_mode` envelope value is authoritative: it overwrites every message's `sandbox_mode` before processing, including the `false` default when the envelope omits the field. A per-item `sandbox_mode: true` inside a non-sandbox batch is therefore a real send. Set the envelope field to run any batch item in sandbox mode.","uniqueKey":"messages.items.[INDEX].sandbox_mode","typeLabel":"boolean"}},"required":["from","to"],"uniqueKey":"messages.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"messages","typeLabel":"object[]"},"sandbox_mode":{"type":"boolean","default":false,"description":"Applies sandbox mode to all messages in the batch and overrides any per-message `sandbox_mode` value — each message's effective `sandbox_mode` is exactly this envelope value. Reserved recipients at `test.telnyx.com` produce the deterministic event chains documented on CreateEmailRequest.sandbox_mode; no batch item is injected into the MTA or outbound Kafka path. Sandbox batch items are non-billable, consume no daily-send-limit quota, and feed no delivery-reputation signals.","uniqueKey":"sandbox_mode","typeLabel":"boolean"}},"required":["messages"],"uniqueKey":"","typeLabel":"object"},"example":{"sandbox_mode":false,"messages":[{"from":"[email protected]","to":["[email protected]"],"subject":"Hello 1","text_body":"Message 1"},{"from":"[email protected]","to":["[email protected]"],"subject":"Hello 2","text_body":"Message 2"}]},"examples":{"Example":{"title":"Example","value":{"sandbox_mode":false,"messages":[{"from":"[email protected]","to":["[email protected]"],"subject":"Hello 1","text_body":"Message 1"},{"from":"[email protected]","to":["[email protected]"],"subject":"Hello 2","text_body":"Message 2"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"bca63f6e-e864-4e05-ba0c-01e21552efce":{"description":"Multi-Status — returned after request-wide admission checks pass and item processing runs. Each message is validated and sent independently; per-message failures do not affect other messages in the batch. An invalid or non-future `scheduled_at`/`send_at` is reported as a per-item `unprocessable_entity` error while the remaining items continue. When all messages succeed, `errors` is empty and every item is in `data`; otherwise `data` contains successes and `errors` contains failures. Request-wide gates can instead return 4xx or 5xx.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"record_type":{"type":"string","enum":["email_message"],"isRequired":true,"uniqueKey":"data.items.[INDEX].record_type","typeLabel":"enum\u003cstring>"},"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"data.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"status":{"type":"string","description":"Current status of an email message. Lifecycle statuses (queued, scheduled, etc.) are set on creation. Delivery statuses (delivered, bounced, etc.) are updated by delivery event consumers.","enum":["queued","scheduled","cancelled","sandbox","sending","sent","failed","deferred","delivered","bounced","complained","rejected","opened","clicked","unsubscribed"],"isRequired":true,"uniqueKey":"data.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"from":{"type":"object","properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].from.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.items.[INDEX].from.name","typeLabel":"string"}},"required":["email"],"isRequired":true,"uniqueKey":"data.items.[INDEX].from","typeLabel":"object"},"to":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].to.items.[INDEX].email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.items.[INDEX].to.items.[INDEX].name","typeLabel":"string"}},"required":["email"],"uniqueKey":"data.items.[INDEX].to.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.items.[INDEX].to","typeLabel":"object[]"},"cc":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].cc.items.[INDEX].email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.items.[INDEX].cc.items.[INDEX].name","typeLabel":"string"}},"required":["email"],"uniqueKey":"data.items.[INDEX].cc.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.items.[INDEX].cc","typeLabel":"object[]"},"bcc":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].bcc.items.[INDEX].email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.items.[INDEX].bcc.items.[INDEX].name","typeLabel":"string"}},"required":["email"],"uniqueKey":"data.items.[INDEX].bcc.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.items.[INDEX].bcc","typeLabel":"object[]"},"reply_to":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].reply_to.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.items.[INDEX].reply_to.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].reply_to","typeLabel":"string | null"},"subject":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].subject","typeLabel":"string"},"template_id":{"oneOf":[{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"data.items.[INDEX].template_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","isRequired":true,"uniqueKey":"data.items.[INDEX].template_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].template_id","typeLabel":"string\u003cuuid> | null"},"template_variables":{"type":"object","additionalProperties":true,"default":{},"isRequired":true,"uniqueKey":"data.items.[INDEX].template_variables","typeLabel":"object"},"tags":{"type":"array","default":[],"items":{"type":"string","uniqueKey":"data.items.[INDEX].tags.items.[INDEX]","typeLabel":"string"},"description":"Customer-supplied tags stored with the message.","isRequired":true,"uniqueKey":"data.items.[INDEX].tags","typeLabel":"string[]"},"metadata":{"type":"object","additionalProperties":true,"default":{},"description":"Customer-supplied metadata stored with the message.","isRequired":true,"uniqueKey":"data.items.[INDEX].metadata","typeLabel":"object"},"attachments":{"type":"array","items":{"type":"object","description":"EDR-aligned attachment metadata. The base64 `content` is never returned.","properties":{"url":{"oneOf":[{"type":"string","format":"uri","description":"Telnyx-hosted public URL for the attachment content.","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"Telnyx-hosted public URL for the attachment content.","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].url","typeLabel":"string\u003curi> | null"},"sha256":{"oneOf":[{"type":"string","description":"SHA-256 hex digest of the attachment content.","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].sha256.oneOf.0","typeLabel":"string"},{"type":"null","description":"SHA-256 hex digest of the attachment content.","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].sha256.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].sha256","typeLabel":"string | null"},"size_bytes":{"oneOf":[{"type":"integer","description":"Attachment size in bytes.","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].size_bytes.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Attachment size in bytes.","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].size_bytes.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].size_bytes","typeLabel":"integer | null"},"filename":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].filename","typeLabel":"string"},"content_type":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].content_type","typeLabel":"string"},"disposition":{"type":"string","default":"attachment","description":"MIME disposition (e.g. `attachment` or `inline`). Runtime passes through the stored value without enforcing an enum.","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].disposition","typeLabel":"string"},"content_id":{"oneOf":[{"type":"string","description":"MIME Content-ID for inline references.","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].content_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"MIME Content-ID for inline references.","isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].content_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX].content_id","typeLabel":"string | null"}},"required":["url","sha256","size_bytes","filename","content_type","disposition","content_id"],"uniqueKey":"data.items.[INDEX].attachments.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.items.[INDEX].attachments","typeLabel":"object[]"},"events":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Bare stored event names returned by message history. In addition to the normal send and delivery lifecycle, polling can expose suppression, scan, and quarantine lifecycle rows. Sharp canonical names gw_reject, injection_timeout, and expired distinguish gateway rejection, ambiguous injection timeout, and MTA expiration. The failed and bounced names remain valid for system/admin failures and hard bounces respectively. Existing stored rows retain their original names.","enum":["queued","deferred","scheduled","cancelled","sandbox","sending","sent","failed","delivered","bounced","complained","suppressed","rejected","opened","clicked","unsubscribed","daily_limit_exceeded","scan_deferred","quarantined","quarantine_released","quarantine_release_dispatched","quarantine_rejected","quarantine_expired","gw_reject","injection_timeout","expired"],"isRequired":true,"uniqueKey":"data.items.[INDEX].events.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"occurred_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].events.items.[INDEX].occurred_at","typeLabel":"string\u003cdate-time>"},"payload":{"type":"object","additionalProperties":true,"uniqueKey":"data.items.[INDEX].events.items.[INDEX].payload","typeLabel":"object"}},"required":["type","occurred_at"],"description":"An event embedded in a message response. The dedicated per-message events endpoint additionally returns event_type and canonical_event_type.","uniqueKey":"data.items.[INDEX].events.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.items.[INDEX].events","typeLabel":"object[]"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].created_at","typeLabel":"string\u003cdate-time>"},"scheduled_at":{"type":"string","format":"date-time","description":"Present when a scheduled_at value was stored. Persists even after the scheduled send has been processed or cancelled.","uniqueKey":"data.items.[INDEX].scheduled_at","typeLabel":"string\u003cdate-time>"},"inline_css":{"type":"boolean","description":"Present when true in the immediate create response. Not persisted; absent on subsequent GET requests.","uniqueKey":"data.items.[INDEX].inline_css","typeLabel":"boolean"},"sandbox":{"type":"boolean","description":"Present when sandbox mode was used.","uniqueKey":"data.items.[INDEX].sandbox","typeLabel":"boolean"},"recipient_statuses":{"type":"object","description":"Per-status recipient counts for the message. Present only for outbound messages\nwith recipient rows. Keys are recipient statuses, values are counts.\nExample: `{\"delivered\": 998, \"bounced\": 2}`.\n","additionalProperties":{"type":"integer","uniqueKey":"data.items.[INDEX].recipient_statuses.additionalProperties","typeLabel":"integer"},"example":{"delivered":998,"bounced":2},"uniqueKey":"data.items.[INDEX].recipient_statuses","typeLabel":"object"},"suppressed":{"type":"array","description":"Recipients excluded from delivery by suppression checks, with reasons. On batch items, present when that item had suppressed recipients; all other recipients of the item still receive the message. For single sends this information appears at the top level of the response instead (see EmailMessageResponse.suppressed).","items":{"type":"object","properties":{"to":{"type":"string","format":"email","description":"Suppressed recipient email address.","isRequired":true,"uniqueKey":"data.items.[INDEX].suppressed.items.[INDEX].to","typeLabel":"string\u003cemail>"},"reason":{"type":"string","description":"Suppression reason returned by the recipient suppression service.","isRequired":true,"uniqueKey":"data.items.[INDEX].suppressed.items.[INDEX].reason","typeLabel":"string"},"scope":{"type":"string","description":"Scope at which the suppression applies.","isRequired":true,"uniqueKey":"data.items.[INDEX].suppressed.items.[INDEX].scope","typeLabel":"string"},"override_allowed":{"type":"boolean","description":"Whether an authorized send may override this suppression.","isRequired":true,"uniqueKey":"data.items.[INDEX].suppressed.items.[INDEX].override_allowed","typeLabel":"boolean"}},"required":["to","reason","scope","override_allowed"],"uniqueKey":"data.items.[INDEX].suppressed.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.items.[INDEX].suppressed","typeLabel":"object[]"}},"required":["record_type","id","status","from","to","cc","bcc","subject","reply_to","template_id","template_variables","tags","metadata","attachments","events","created_at"],"uniqueKey":"data.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data","typeLabel":"object[]"},"errors":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"description":"Zero-based index of the failed message in the request array.","isRequired":true,"uniqueKey":"errors.items.[INDEX].index","typeLabel":"integer"},"code":{"type":"string","enum":["bad_request","not_found","forbidden","service_unavailable","unprocessable_entity","validation_error","recipient_suppressed","reputation_suspended"],"description":"Batch item errors use `message` (not `detail`) for the human-readable text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"required":["index","code","message"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.total","typeLabel":"integer"},"succeeded":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.succeeded","typeLabel":"integer"},"failed":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.failed","typeLabel":"integer"}},"required":["total","succeeded","failed"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["data","errors","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":[{"record_type":"email_message","id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","status":"queued","from":{"email":"\u003cstring>","name":"\u003cstring>"},"to":[{"email":"\u003cstring>","name":"\u003cstring>"}],"cc":[{"email":"\u003cstring>","name":"\u003cstring>"}],"bcc":[{"email":"\u003cstring>","name":"\u003cstring>"}],"reply_to":"\u003cstring>","subject":"\u003cstring>","template_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","template_variables":{},"tags":[],"metadata":{},"attachments":[{"url":"\u003cstring>","sha256":"\u003cstring>","size_bytes":123,"filename":"\u003cstring>","content_type":"\u003cstring>","disposition":"attachment","content_id":"\u003cstring>"}],"events":[{"type":"queued","occurred_at":"2023-11-07T05:31:56Z","payload":{}}],"created_at":"2023-11-07T05:31:56Z","scheduled_at":"2023-11-07T05:31:56Z","inline_css":true,"sandbox":true,"recipient_statuses":{"delivered":998,"bounced":2},"suppressed":[{"to":"[email protected]","reason":"\u003cstring>","scope":"\u003cstring>","override_allowed":true}]}],"errors":[{"index":1,"code":"bad_request","message":"\u003cstring>"}],"meta":{"total":1,"succeeded":1,"failed":1}}}},"exampleType":"generated"}},"exampleType":"generated"},"ab9f2d23-7ddc-4afc-a2f6-6f2159df8789":{"description":"Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Telnyx error code. Send admission errors include account daily quota 10011 and sender-domain ramp code domain_graduation_limit_exceeded. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from the framework may use string status codes ('404', '500') instead.","enum":["10001","10006","10007","10011","10015","10016","10019","domain_graduation_limit_exceeded","recipient_suppressed","reputation_suspended","404","500","10027","10036"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"oneOf":[{"type":"string","description":"Human-readable error detail. Changeset responses may return a structured object.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.0","typeLabel":"string"},{"type":"object","description":"Human-readable error detail. Changeset responses may return a structured object.","additionalProperties":true,"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string | object"},"source":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object | null"},"meta":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object | null"}},"required":["code","title","detail"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"suppressed":{"type":"array","description":"Present when every recipient is suppressed, so the request is rejected and no message is created.","items":{"type":"object","properties":{"to":{"type":"string","format":"email","description":"Suppressed recipient email address.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].to","typeLabel":"string\u003cemail>"},"reason":{"type":"string","description":"Suppression reason returned by the recipient suppression service.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].reason","typeLabel":"string"},"scope":{"type":"string","description":"Scope at which the suppression applies.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].scope","typeLabel":"string"},"override_allowed":{"type":"boolean","description":"Whether an authorized send may override this suppression.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].override_allowed","typeLabel":"boolean"}},"required":["to","reason","scope","override_allowed"],"uniqueKey":"suppressed.items.[INDEX]","typeLabel":"object"},"uniqueKey":"suppressed","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"email is required"}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10015","title":"Bad Request","detail":"email is required"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"12f16619-badf-4b71-8f3b-f8d4bca75e45":{"description":"Not authorized (10006).","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Telnyx error code. Send admission errors include account daily quota 10011 and sender-domain ramp code domain_graduation_limit_exceeded. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from the framework may use string status codes ('404', '500') instead.","enum":["10001","10006","10007","10011","10015","10016","10019","domain_graduation_limit_exceeded","recipient_suppressed","reputation_suspended","404","500","10027","10036"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"oneOf":[{"type":"string","description":"Human-readable error detail. Changeset responses may return a structured object.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.0","typeLabel":"string"},{"type":"object","description":"Human-readable error detail. Changeset responses may return a structured object.","additionalProperties":true,"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string | object"},"source":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object | null"},"meta":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object | null"}},"required":["code","title","detail"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"suppressed":{"type":"array","description":"Present when every recipient is suppressed, so the request is rejected and no message is created.","items":{"type":"object","properties":{"to":{"type":"string","format":"email","description":"Suppressed recipient email address.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].to","typeLabel":"string\u003cemail>"},"reason":{"type":"string","description":"Suppression reason returned by the recipient suppression service.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].reason","typeLabel":"string"},"scope":{"type":"string","description":"Scope at which the suppression applies.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].scope","typeLabel":"string"},"override_allowed":{"type":"boolean","description":"Whether an authorized send may override this suppression.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].override_allowed","typeLabel":"boolean"}},"required":["to","reason","scope","override_allowed"],"uniqueKey":"suppressed.items.[INDEX]","typeLabel":"object"},"uniqueKey":"suppressed","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10006","title":"Not authorized","detail":"Invalid API key","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10006"}}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10006","title":"Not authorized","detail":"Invalid API key","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10006"}}]}}},"exampleType":"examples"}},"exampleType":"examples"},"426551c7-a03d-4a14-9bb2-2397d870e01b":{"description":"A request with the same Idempotency-Key is still being processed (10036). Retry later with the same key and request.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Telnyx error code. Send admission errors include account daily quota 10011 and sender-domain ramp code domain_graduation_limit_exceeded. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from the framework may use string status codes ('404', '500') instead.","enum":["10001","10006","10007","10011","10015","10016","10019","domain_graduation_limit_exceeded","recipient_suppressed","reputation_suspended","404","500","10027","10036"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"oneOf":[{"type":"string","description":"Human-readable error detail. Changeset responses may return a structured object.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.0","typeLabel":"string"},{"type":"object","description":"Human-readable error detail. Changeset responses may return a structured object.","additionalProperties":true,"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string | object"},"source":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object | null"},"meta":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object | null"}},"required":["code","title","detail"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"suppressed":{"type":"array","description":"Present when every recipient is suppressed, so the request is rejected and no message is created.","items":{"type":"object","properties":{"to":{"type":"string","format":"email","description":"Suppressed recipient email address.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].to","typeLabel":"string\u003cemail>"},"reason":{"type":"string","description":"Suppression reason returned by the recipient suppression service.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].reason","typeLabel":"string"},"scope":{"type":"string","description":"Scope at which the suppression applies.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].scope","typeLabel":"string"},"override_allowed":{"type":"boolean","description":"Whether an authorized send may override this suppression.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].override_allowed","typeLabel":"boolean"}},"required":["to","reason","scope","override_allowed"],"uniqueKey":"suppressed.items.[INDEX]","typeLabel":"object"},"uniqueKey":"suppressed","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10036","title":"Resource is being processed","detail":"A request with this Idempotency-Key is already being processed.","source":{"pointer":"/header/Idempotency-Key"}}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10036","title":"Resource is being processed","detail":"A request with this Idempotency-Key is already being processed.","source":{"pointer":"/header/Idempotency-Key"}}]}}},"exampleType":"examples"}},"exampleType":"examples"},"263dbcca-9d18-4c94-8670-d210abbc1194":{"description":"Request body exceeds the 8,000,000-byte limit for this endpoint.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Telnyx error code. Send admission errors include account daily quota 10011 and sender-domain ramp code domain_graduation_limit_exceeded. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from the framework may use string status codes ('404', '500') instead.","enum":["10001","10006","10007","10011","10015","10016","10019","domain_graduation_limit_exceeded","recipient_suppressed","reputation_suspended","404","500","10027","10036"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"oneOf":[{"type":"string","description":"Human-readable error detail. Changeset responses may return a structured object.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.0","typeLabel":"string"},{"type":"object","description":"Human-readable error detail. Changeset responses may return a structured object.","additionalProperties":true,"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string | object"},"source":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object | null"},"meta":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object | null"}},"required":["code","title","detail"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"suppressed":{"type":"array","description":"Present when every recipient is suppressed, so the request is rejected and no message is created.","items":{"type":"object","properties":{"to":{"type":"string","format":"email","description":"Suppressed recipient email address.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].to","typeLabel":"string\u003cemail>"},"reason":{"type":"string","description":"Suppression reason returned by the recipient suppression service.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].reason","typeLabel":"string"},"scope":{"type":"string","description":"Scope at which the suppression applies.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].scope","typeLabel":"string"},"override_allowed":{"type":"boolean","description":"Whether an authorized send may override this suppression.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].override_allowed","typeLabel":"boolean"}},"required":["to","reason","scope","override_allowed"],"uniqueKey":"suppressed.items.[INDEX]","typeLabel":"object"},"uniqueKey":"suppressed","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}},"exampleType":"examples"}},"exampleType":"examples"},"4a3f9159-8740-4d5e-b2c3-e2af65aa75fe":{"description":"The Idempotency-Key was already used for a different request (10027).","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Telnyx error code. Send admission errors include account daily quota 10011 and sender-domain ramp code domain_graduation_limit_exceeded. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from the framework may use string status codes ('404', '500') instead.","enum":["10001","10006","10007","10011","10015","10016","10019","domain_graduation_limit_exceeded","recipient_suppressed","reputation_suspended","404","500","10027","10036"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"oneOf":[{"type":"string","description":"Human-readable error detail. Changeset responses may return a structured object.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.0","typeLabel":"string"},{"type":"object","description":"Human-readable error detail. Changeset responses may return a structured object.","additionalProperties":true,"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string | object"},"source":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object | null"},"meta":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object | null"}},"required":["code","title","detail"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"suppressed":{"type":"array","description":"Present when every recipient is suppressed, so the request is rejected and no message is created.","items":{"type":"object","properties":{"to":{"type":"string","format":"email","description":"Suppressed recipient email address.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].to","typeLabel":"string\u003cemail>"},"reason":{"type":"string","description":"Suppression reason returned by the recipient suppression service.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].reason","typeLabel":"string"},"scope":{"type":"string","description":"Scope at which the suppression applies.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].scope","typeLabel":"string"},"override_allowed":{"type":"boolean","description":"Whether an authorized send may override this suppression.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].override_allowed","typeLabel":"boolean"}},"required":["to","reason","scope","override_allowed"],"uniqueKey":"suppressed.items.[INDEX]","typeLabel":"object"},"uniqueKey":"suppressed","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}},"exampleType":"examples"}},"exampleType":"examples"},"d36fdc83-2855-40ce-85a0-ecdc669f22aa":{"description":"Send rejected before message creation because the account daily recipient quota was exhausted (10011), the sender-domain graduation ceiling was exceeded (domain_graduation_limit_exceeded), or domain reputation is poor (reputation_suspended).","headers":{"Retry-After":{"description":"Seconds until the next UTC-midnight reset. Present only for domain_graduation_limit_exceeded; omitted for 10011 and reputation_suspended.","schema":{"type":"integer","minimum":1},"example":3600}},"content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Error envelope returned when the account's daily recipient quota is exhausted before message creation.","required":["errors"],"properties":{"errors":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","required":["code","title","detail"],"properties":{"code":{"type":"string","enum":["10011"],"isRequired":true,"uniqueKey":"oneOf.0.errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","example":"Too Many Requests","isRequired":true,"uniqueKey":"oneOf.0.errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","example":"Daily send limit of 1000 recipients exceeded. The limit resets at midnight UTC.","isRequired":true,"uniqueKey":"oneOf.0.errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"oneOf.0.errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.0.errors","typeLabel":"object[]"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Error envelope returned when a newly sending custom domain on shared egress would exceed its current daily graduation ceiling. The send is rejected before message creation.","required":["errors"],"properties":{"errors":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","required":["code","title","detail"],"properties":{"code":{"type":"string","enum":["domain_graduation_limit_exceeded"],"isRequired":true,"uniqueKey":"oneOf.1.errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","example":"Too Many Requests","isRequired":true,"uniqueKey":"oneOf.1.errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","example":"Daily send limit of 250 recipients for this sender domain exceeded. The limit resets at midnight UTC.","isRequired":true,"uniqueKey":"oneOf.1.errors.items.[INDEX].detail","typeLabel":"string"},"meta":{"type":"object","description":"Bounded retry guidance. Each field is omitted when unknown.","additionalProperties":false,"properties":{"retry_after_seconds":{"type":"integer","minimum":1,"description":"Seconds until the next UTC-midnight reset.","uniqueKey":"oneOf.1.errors.items.[INDEX].meta.retry_after_seconds","typeLabel":"integer"},"remaining_today":{"type":"integer","minimum":0,"description":"Recipient headroom remaining for the sender-domain identity before this rejected request.","uniqueKey":"oneOf.1.errors.items.[INDEX].meta.remaining_today","typeLabel":"integer"}},"uniqueKey":"oneOf.1.errors.items.[INDEX].meta","typeLabel":"object"}},"uniqueKey":"oneOf.1.errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.1.errors","typeLabel":"object[]"}},"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","description":"Non-standard error envelope returned when the sending domain's reputation band is 'poor'. Uses string code `reputation_suspended` instead of a numeric code.","required":["errors"],"properties":{"errors":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","required":["code","title","detail"],"properties":{"code":{"type":"string","enum":["reputation_suspended"],"isRequired":true,"uniqueKey":"oneOf.2.errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","example":"Sending Suspended","isRequired":true,"uniqueKey":"oneOf.2.errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"oneOf.2.errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.2.errors","typeLabel":"object[]"}},"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"accountDailyLimit":{"title":"accountDailyLimit","value":{"errors":[{"code":"10011","title":"Too Many Requests","detail":"Daily send limit of 1000 recipients exceeded. The limit resets at midnight UTC."}]}},"senderDomainGraduation":{"title":"senderDomainGraduation","value":{"errors":[{"code":"domain_graduation_limit_exceeded","title":"Too Many Requests","detail":"Daily send limit of 250 recipients for this sender domain exceeded. The limit resets at midnight UTC.","meta":{"retry_after_seconds":3600,"remaining_today":0}}]}},"reputationSuspended":{"title":"reputationSuspended","value":{"errors":[{"code":"reputation_suspended","title":"Sending Suspended","detail":"Sender domain reputation is too low. Sending has been suspended. Please contact support to resolve deliverability issues."}]}}},"exampleType":"examples"}},"exampleType":"examples"},"688eae90-d139-43ef-8cc2-5dd5eee0cd47":{"description":"Service unavailable (10016), including an unavailable upstream dependency or unavailable Edge idempotency protection for a keyed request.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Telnyx error code. Send admission errors include account daily quota 10011 and sender-domain ramp code domain_graduation_limit_exceeded. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from the framework may use string status codes ('404', '500') instead.","enum":["10001","10006","10007","10011","10015","10016","10019","domain_graduation_limit_exceeded","recipient_suppressed","reputation_suspended","404","500","10027","10036"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"oneOf":[{"type":"string","description":"Human-readable error detail. Changeset responses may return a structured object.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.0","typeLabel":"string"},{"type":"object","description":"Human-readable error detail. Changeset responses may return a structured object.","additionalProperties":true,"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string | object"},"source":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"errors.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object | null"},"meta":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"errors.items.[INDEX].meta.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object | null"}},"required":["code","title","detail"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"suppressed":{"type":"array","description":"Present when every recipient is suppressed, so the request is rejected and no message is created.","items":{"type":"object","properties":{"to":{"type":"string","format":"email","description":"Suppressed recipient email address.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].to","typeLabel":"string\u003cemail>"},"reason":{"type":"string","description":"Suppression reason returned by the recipient suppression service.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].reason","typeLabel":"string"},"scope":{"type":"string","description":"Scope at which the suppression applies.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].scope","typeLabel":"string"},"override_allowed":{"type":"boolean","description":"Whether an authorized send may override this suppression.","isRequired":true,"uniqueKey":"suppressed.items.[INDEX].override_allowed","typeLabel":"boolean"}},"required":["to","reason","scope","override_allowed"],"uniqueKey":"suppressed.items.[INDEX]","typeLabel":"object"},"uniqueKey":"suppressed","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10016","title":"Service Unavailable","detail":"The email domain service is temporarily unavailable. Please try again later."}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10016","title":"Service Unavailable","detail":"The email domain service is temporarily unavailable. Please try again later."}]}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"7b51e92f-3d92-487d-a058-03c4cd5c2c42":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Telnyx API key supplied as `Authorization: Bearer \u003ctoken>`. In production, auth may be validated by the API gateway and forwarded via Telnyx auth headers.","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"ba228b30-2f2a-4f83-8934-4e3ba1c84f11":{"url":"https://api.telnyx.com/v2"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Telnyx API key supplied as `Authorization: Bearer \u003ctoken>`. In production, auth may be validated by the API gateway and forwarded via Telnyx auth headers.","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Telnyx API key supplied as `Authorization: Bearer \u003ctoken>`. In production, auth may be validated by the API gateway and forwarded via Telnyx auth headers.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"openapi/source/external/email/email.json"},"subdomain":"telnyx","siteName":"Telnyx","title":"Create a batch of email messages - Telnyx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T13:57:22.868Z","originalFileLocation":"api-reference/email-messages/create-a-batch-of-email-messages.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Creates up to 1,000 email messages in a single request. Request-wide admission checks run first and can reject the whole batch before message creation. After those checks pass, each message is validated and sent independently; item-level failures do not affect other messages, and the processed batch returns 207 Multi-Status. Per-message failures include validation errors; when a template has strict_variables enabled, a missing required variable produces a per-item unprocessable_entity error naming that variable while the other messages continue.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Telnyx\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a batch of email messages - Telnyx\">\u003cmeta data-mint-head property=\"og:description\" content=\"Infrastructure for real-time agents. Voice, AI, Edge Compute\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Telnyx\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.telnyx.com/api-reference/email-messages/create-a-batch-of-email-messages\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://telnyx.mintlify.site/_mintlify/api/og/v2?division=Email+API\u0026amp;title=Create+a+batch+of+email+messages\u0026amp;description=Creates+up+to+1%2C000+email+messages+in+a+single+request.+Request-wide+admission+checks+run+first+and+can+reject+the+whole+batch+before+message+creation.+After+th\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=f14b50fa3ffb44ee4dcf6f52c6fca4251dd49ed55551027504980926bb67e713\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create a batch of email messages - Telnyx\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Infrastructure for real-time agents. Voice, AI, Edge Compute\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://telnyx.mintlify.site/_mintlify/api/og/v2?division=Email+API\u0026amp;title=Create+a+batch+of+email+messages\u0026amp;description=Creates+up+to+1%2C000+email+messages+in+a+single+request.+Request-wide+admission+checks+run+first+and+can+reject+the+whole+batch+before+message+creation.+After+th\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=f14b50fa3ffb44ee4dcf6f52c6fca4251dd49ed55551027504980926bb67e713\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Telnyx\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00B688\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.telnyx.com/api-reference/email-messages/create-a-batch-of-email-messages\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/email-messages/create-a-batch-of-email-messages.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://telnyx.com/#organization\",\"name\":\"Telnyx\",\"url\":\"https://telnyx.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://telnyx.com/favicon.ico\"},\"sameAs\":[\"https://x.com/telnyx\",\"https://www.linkedin.com/company/telnyx/\",\"https://github.com/team-telnyx\"]},{\"@type\":\"WebSite\",\"@id\":\"https://developers.telnyx.com#website\",\"name\":\"Telnyx\",\"url\":\"https://developers.telnyx.com\",\"publisher\":{\"@id\":\"https://telnyx.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.telnyx.com/api-reference/email-messages/create-a-batch-of-email-messages#webpage\",\"url\":\"https://developers.telnyx.com/api-reference/email-messages/create-a-batch-of-email-messages\",\"name\":\"Create a batch of email messages\",\"description\":\"Creates up to 1,000 email messages in a single request. Request-wide admission checks run first and can reject the whole batch before message creation. After those checks pass, each message is validated and sent independently; item-level failures do not affect other messages, and the processed batch returns 207 Multi-Status. Per-message failures include validation errors; when a template has strict_variables enabled, a missing required variable produces a per-item unprocessable_entity error naming that variable while the other messages continue.\",\"dateModified\":\"2026-10-29T13:57:22.868Z\",\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.telnyx.com/api-reference/email-messages/create-a-batch-of-email-messages#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.telnyx.com/api-reference/email-messages/create-a-batch-of-email-messages#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Sending Email\",\"item\":\"https://developers.telnyx.com/docs/messaging/email/send-email/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Email API\",\"item\":\"https://developers.telnyx.com/api-reference/email-messages/delete-email-messages-by-address\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a batch of email messages\",\"item\":\"https://developers.telnyx.com/api-reference/email-messages/create-a-batch-of-email-messages\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.telnyx.com/api-reference/email-messages/create-a-batch-of-email-messages#apireference\",\"headline\":\"Create a batch of email messages\",\"name\":\"Create a batch of email messages\",\"description\":\"Creates up to 1,000 email messages in a single request. Request-wide admission checks run first and can reject the whole batch before message creation. After those checks pass, each message is validated and sent independently; item-level failures do not affect other messages, and the processed batch returns 207 Multi-Status. Per-message failures include validation errors; when a template has strict_variables enabled, a missing required variable produces a per-item unprocessable_entity error naming that variable while the other messages continue.\",\"url\":\"https://developers.telnyx.com/api-reference/email-messages/create-a-batch-of-email-messages\",\"mainEntityOfPage\":{\"@id\":\"https://developers.telnyx.com/api-reference/email-messages/create-a-batch-of-email-messages#webpage\"},\"dateModified\":\"2026-10-29T13:57:22.868Z\",\"publisher\":{\"@id\":\"https://telnyx.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"}}]}\u003c/script>","siteName":"Telnyx","nav":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/docs/overview"}]},"products":[{"product":"Home","icon":"house","pages":[{"title":"Home","href":"/docs/overview"}]},{"product":"Other APIs","icon":"ellipsis","pages":[{"title":"Other APIs","href":"/docs/other-apis"}]},{"product":"Agent Platform","icon":"circle-nodes","pages":[{"title":"Agent Platform","href":"/docs/agent-platform"}]},{"product":"AI","icon":"microchip-ai","pages":[{"title":"AI","href":"/docs/inference/models"}]},{"product":"Voice","icon":"waveform","pages":[{"title":"Voice","href":"/docs/voice/overview"}]},{"product":"Compute","icon":"server","pages":[{"title":"Compute","href":"/docs/edge-compute/platform-overview"}]},{"product":"Storage","icon":"hard-drive","pages":[{"title":"Storage","href":"/docs/cloud-storage/overview"}]},{"product":"Virtual Private Cloud","icon":"cloud","pages":[{"title":"Virtual Private Cloud","href":"/docs/virtual-private-cloud"}]},{"product":"Calling","icon":"phone","pages":[{"title":"Calling","href":"/docs/voice/programmable-voice/voice-api-fundamentals"}]},{"product":"Messaging","icon":"message","tabs":[{"tab":"SMS \u0026 MMS","icon":"comment-sms","pages":[{"title":"SMS \u0026 MMS","href":"/docs/messaging/messages/send-message"}]},{"tab":"Email","icon":"envelope","groups":[{"group":"Getting Started","pages":[{"title":"Email API Overview","sidebarTitle":"Overview","href":"/docs/messaging/email/overview"},{"title":"Send Your First Email","sidebarTitle":"Send Your First Email","href":"/docs/messaging/email/quickstart/index"}]},{"group":"Sending Email","pages":[{"title":"Sending Email with the Telnyx API","sidebarTitle":"Email API Guide","href":"/docs/messaging/email/send-email/index"},{"title":"SMTP Protocol Contract","sidebarTitle":"SMTP Protocol Contract","href":"/docs/messaging/email/smtp-protocol-contract/index"},{"title":"Batch Sending","sidebarTitle":"Batch Sending","href":"/docs/messaging/email/batch-sending/index"},{"title":"Migrate to Telnyx Email","sidebarTitle":"Migrate to Telnyx","href":"/docs/messaging/email/migrate-to-telnyx/index"},{"title":"SMTP Migration Guides","sidebarTitle":"SMTP Migration","href":"/docs/messaging/email/smtp-migration-guides/index"},{"title":"Rate Limits \u0026 Quotas","sidebarTitle":"Rate Limits","href":"/docs/messaging/email/rate-limits/index"},{"title":"Error Codes","sidebarTitle":"Error Codes","href":"/docs/messaging/email/error-codes/index"},{"group":"Email API","pages":[{"title":"Delete email messages by address","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_messages","href":"/api-reference/email-messages/delete-email-messages-by-address"},{"title":"List email messages","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_messages","href":"/api-reference/email-messages/list-email-messages"},{"title":"Create or send an email message","description":"Queues, schedules, or sandbox-sends an email message. The legacy `/v2/emails` POST route\nis a backward-compatible alias for this operation.\n\n`subject` is required unless `template_id` is supplied. When using `template_id`, do not\nalso provide `subject`, `html_body`, or `text_body`; the template is rendered with\n`template_variables`.\n\nNote: template lookup failures (not found, wrong account) return 400, not 404.","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_messages","href":"/api-reference/email-messages/create-or-send-an-email-message"},{"title":"Create a batch of email messages","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_messages/batch","href":"/api-reference/email-messages/create-a-batch-of-email-messages"},{"title":"List events for an email message","description":"Lists events for a single message sorted oldest first by `occurred_at asc, id asc`.\nThe legacy `/v2/emails/{id}/events` GET route is a backward-compatible alias.\n\nFor compatibility, each event carries the legacy\ncustomer-visible `event_type` (`email.`-prefixed), the additive\n`canonical_event_type` (`email.`-prefixed), and the deprecated\n`type` duplicate — whose value keeps the exact legacy format:\nthe bare stored event name, never `email.`-prefixed. Gateway\nrejections render `email.failed` + canonical `email.gw_reject`; MTA\nexpirations render `email.bounced` + canonical `email.expired`;\nevery unchanged outcome carries identical `event_type` and\n`canonical_event_type` values (and `type` keeps the stored name).\n","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_messages/{email_id}/events","href":"/api-reference/email-messages/list-events-for-an-email-message"},{"title":"Cancel a scheduled email message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_messages/{email_id}/schedule","href":"/api-reference/email-messages/cancel-a-scheduled-email-message"},{"title":"Reschedule a scheduled email message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json patch /email_messages/{email_id}/schedule","href":"/api-reference/email-messages/reschedule-a-scheduled-email-message"},{"title":"Delete an email message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_messages/{id}","href":"/api-reference/email-messages/delete-an-email-message"},{"title":"Get an email message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_messages/{id}","href":"/api-reference/email-messages/get-an-email-message"},{"title":"List recipients for an email message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_messages/{email_id}/recipients","href":"/api-reference/email-messages/list-recipients-for-an-email-message"},{"title":"Get a single recipient's delivery state","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_messages/{email_id}/recipients/{recipient_id}","href":"/api-reference/email-messages/get-a-single-recipients-delivery-state"}]}]},{"group":"Inboxes","pages":[{"title":"Manage Inboxes","sidebarTitle":"Manage Inboxes","href":"/docs/messaging/email/inboxes/index"},{"group":"Email Inboxes API","pages":[{"group":"Email Inboxes API","pages":[{"title":"List email inboxes","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_inboxes","href":"/api-reference/email-inboxes/list-email-inboxes"},{"title":"Create an email inbox","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_inboxes","href":"/api-reference/email-inboxes/create-an-email-inbox"},{"title":"Delete an email inbox","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_inboxes/{id}","href":"/api-reference/email-inboxes/delete-an-email-inbox"},{"title":"Get an email inbox","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_inboxes/{id}","href":"/api-reference/email-inboxes/get-an-email-inbox"},{"title":"Remove sender filter entries from an inbox","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_inboxes/{inbox_id}/filters","href":"/api-reference/email-inboxes/remove-sender-filter-entries-from-an-inbox"},{"title":"List sender filters for an inbox","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_inboxes/{inbox_id}/filters","href":"/api-reference/email-inboxes/list-sender-filters-for-an-inbox"},{"title":"Add sender filter entries to an inbox","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_inboxes/{inbox_id}/filters","href":"/api-reference/email-inboxes/add-sender-filter-entries-to-an-inbox"},{"title":"Replace sender filters for an inbox","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json put /email_inboxes/{inbox_id}/filters","href":"/api-reference/email-inboxes/replace-sender-filters-for-an-inbox"},{"title":"List and search messages in an inbox","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_inboxes/{inbox_id}/messages","href":"/api-reference/email-inboxes/list-and-search-messages-in-an-inbox"},{"title":"Update an inbox message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json patch /email_inboxes/{inbox_id}/messages/{message_id}","href":"/api-reference/email-inboxes/update-an-inbox-message"},{"title":"Forward an inbox message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_inboxes/{inbox_id}/messages/{message_id}/actions/forward","href":"/api-reference/email-inboxes/forward-an-inbox-message"},{"title":"Reply to an inbox message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_inboxes/{inbox_id}/messages/{message_id}/actions/reply","href":"/api-reference/email-inboxes/reply-to-an-inbox-message"},{"title":"Reply all to an inbox message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_inboxes/{inbox_id}/messages/{message_id}/actions/reply_all","href":"/api-reference/email-inboxes/reply-all-to-an-inbox-message"},{"title":"Remove labels from an inbox message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_inboxes/{inbox_id}/messages/{message_id}/labels","href":"/api-reference/email-inboxes/remove-labels-from-an-inbox-message"},{"title":"Add labels to an inbox message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_inboxes/{inbox_id}/messages/{message_id}/labels","href":"/api-reference/email-inboxes/add-labels-to-an-inbox-message"},{"title":"List threads in an inbox","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_inboxes/{inbox_id}/threads","href":"/api-reference/email-inboxes/list-threads-in-an-inbox"},{"title":"Get a thread and a page of its messages","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_inboxes/{inbox_id}/threads/{thread_id}","href":"/api-reference/email-inboxes/get-a-thread-and-a-page-of-its-messages"},{"title":"Remove labels from an inbox thread","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_inboxes/{inbox_id}/threads/{thread_id}/labels","href":"/api-reference/email-inboxes/remove-labels-from-an-inbox-thread"},{"title":"Add labels to an inbox thread","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_inboxes/{inbox_id}/threads/{thread_id}/labels","href":"/api-reference/email-inboxes/add-labels-to-an-inbox-thread"}]},{"group":"Email Drafts API","pages":[{"title":"List drafts in an inbox","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_inboxes/{inbox_id}/drafts","href":"/api-reference/email-drafts/list-drafts-in-an-inbox"},{"title":"Create a draft","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_inboxes/{inbox_id}/drafts","href":"/api-reference/email-drafts/create-a-draft"},{"title":"Delete a draft","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_inboxes/{inbox_id}/drafts/{draft_id}","href":"/api-reference/email-drafts/delete-a-draft"},{"title":"Retrieve a draft","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_inboxes/{inbox_id}/drafts/{draft_id}","href":"/api-reference/email-drafts/retrieve-a-draft"},{"title":"Update a draft (alias)","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json patch /email_inboxes/{inbox_id}/drafts/{draft_id}","href":"/api-reference/email-drafts/update-a-draft-alias"},{"title":"Update a draft","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json put /email_inboxes/{inbox_id}/drafts/{draft_id}","href":"/api-reference/email-drafts/update-a-draft"},{"title":"Send a draft","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_inboxes/{inbox_id}/drafts/{draft_id}/send","href":"/api-reference/email-drafts/send-a-draft"},{"title":"Create a reply draft","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_inboxes/{inbox_id}/messages/{message_id}/drafts","href":"/api-reference/email-drafts/create-a-reply-draft"}]},{"group":"Email Threads API","pages":[{"title":"List threads across every inbox in the account","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_threads","href":"/api-reference/email-threads/list-threads-across-every-inbox-in-the-account"},{"title":"Get an account-wide thread and a page of its messages","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_threads/{thread_id}","href":"/api-reference/email-threads/get-an-account-wide-thread-and-a-page-of-its-messages"}]}]}]},{"group":"Domains \u0026 Validation","pages":[{"title":"Email Domains \u0026 DKIM","sidebarTitle":"Email Domains \u0026 DKIM","href":"/docs/messaging/email/domains/index"},{"group":"Email Domains API","pages":[{"group":"Email Domains API","pages":[{"title":"List email domains","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_domains","href":"/api-reference/email-domains/list-email-domains"},{"title":"Create an email domain","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_domains","href":"/api-reference/email-domains/create-an-email-domain"},{"title":"Delete an email domain","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_domains/{id}","href":"/api-reference/email-domains/delete-an-email-domain"},{"title":"Retrieve an email domain","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_domains/{id}","href":"/api-reference/email-domains/retrieve-an-email-domain"},{"title":"Update an email domain","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json patch /email_domains/{id}","href":"/api-reference/email-domains/update-an-email-domain"},{"title":"Get domain health summary","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_domains/{id}/health","href":"/api-reference/email-domains/get-domain-health-summary"},{"title":"Rotate the DKIM key for an email domain","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_domains/{domain_id}/rotate_dkim","href":"/api-reference/email-domains/rotate-the-dkim-key-for-an-email-domain"}]},{"group":"Email Domain DNS Records API","pages":[{"title":"List DNS records for an email domain","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_domains/{domain_id}/dns_records","href":"/api-reference/email-domain-dns-records/list-dns-records-for-an-email-domain"},{"title":"Verify DNS records for an email domain","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_domains/{domain_id}/verify","href":"/api-reference/email-domain-dns-records/verify-dns-records-for-an-email-domain"}]},{"group":"Email Webhooks API","pages":[{"title":"List webhooks for an email domain","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_domains/{domain_id}/webhooks","href":"/api-reference/email-webhooks/list-webhooks-for-an-email-domain"},{"title":"Create a webhook for an email domain","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_domains/{domain_id}/webhooks","href":"/api-reference/email-webhooks/create-a-webhook-for-an-email-domain"},{"title":"Delete a webhook","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_domains/{domain_id}/webhooks/{id}","href":"/api-reference/email-webhooks/delete-a-webhook"},{"title":"Retrieve a webhook","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_domains/{domain_id}/webhooks/{id}","href":"/api-reference/email-webhooks/retrieve-a-webhook"},{"title":"Update a webhook","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json patch /email_domains/{domain_id}/webhooks/{id}","href":"/api-reference/email-webhooks/update-a-webhook"}]}]},{"title":"Email Validation","sidebarTitle":"Email Validation","href":"/docs/messaging/email/validation/index"},{"group":"Email Validations API","pages":[{"title":"Validate a single email address","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_validations","href":"/api-reference/email-validations/validate-a-single-email-address"},{"title":"Create a batch email validation job","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_validations/batch","href":"/api-reference/email-validations/create-a-batch-email-validation-job"},{"title":"Get a batch email validation job","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_validations/batch/{id}","href":"/api-reference/email-validations/get-a-batch-email-validation-job"}]}]},{"group":"Deliverability","pages":[{"title":"Deliverability and Domain Warm-up","sidebarTitle":"Deliverability \u0026 Warm-up","href":"/docs/messaging/email/deliverability/index"},{"title":"Email Deliverability Best Practices","sidebarTitle":"Deliverability Best Practices","href":"/docs/messaging/email/deliverability-best-practices/index"},{"title":"Dedicated IPs","href":"/docs/messaging/email/dedicated-ips/index"},{"group":"Dedicated IPs API","pages":[{"title":"Purchase a dedicated IP","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email/dedicated_ips","href":"/api-reference/dedicated-ips/purchase-a-dedicated-ip"},{"title":"List dedicated IPs","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email/dedicated_ips","href":"/api-reference/dedicated-ips/list-dedicated-ips"},{"title":"Retrieve a dedicated IP","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email/dedicated_ips/{id}","href":"/api-reference/dedicated-ips/retrieve-a-dedicated-ip"},{"title":"Update a dedicated IP","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json patch /email/dedicated_ips/{id}","href":"/api-reference/dedicated-ips/update-a-dedicated-ip"},{"title":"Release a dedicated IP","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email/dedicated_ips/{id}","href":"/api-reference/dedicated-ips/release-a-dedicated-ip"},{"title":"Start warmup for a dedicated IP","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email/dedicated_ips/{id}/actions/start_warmup","href":"/api-reference/dedicated-ips/start-warmup-for-a-dedicated-ip"},{"title":"Manually complete warmup","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email/dedicated_ips/{id}/actions/complete_warmup","href":"/api-reference/dedicated-ips/manually-complete-warmup"},{"title":"Pause warmup","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email/dedicated_ips/{id}/actions/pause_warmup","href":"/api-reference/dedicated-ips/pause-warmup"},{"title":"Resume warmup","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email/dedicated_ips/{id}/actions/resume_warmup","href":"/api-reference/dedicated-ips/resume-warmup"}]},{"group":"IP Pools API","pages":[{"title":"List IP pools","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email/ip_pools","href":"/api-reference/ip-pools/list-ip-pools"},{"title":"Create an IP pool","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email/ip_pools","href":"/api-reference/ip-pools/create-an-ip-pool"},{"title":"Retrieve an IP pool","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email/ip_pools/{id}","href":"/api-reference/ip-pools/retrieve-an-ip-pool"},{"title":"Update an IP pool","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json patch /email/ip_pools/{id}","href":"/api-reference/ip-pools/update-an-ip-pool"},{"title":"Delete an IP pool","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email/ip_pools/{id}","href":"/api-reference/ip-pools/delete-an-ip-pool"},{"title":"Add a dedicated IP to a pool","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email/ip_pools/{id}/ips","href":"/api-reference/ip-pools/add-a-dedicated-ip-to-a-pool"},{"title":"Remove a dedicated IP from a pool","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email/ip_pools/{id}/ips/{ip_id}","href":"/api-reference/ip-pools/remove-a-dedicated-ip-from-a-pool"}]}]},{"group":"Templates \u0026 Suppression","pages":[{"title":"Email Templates","sidebarTitle":"Templates","href":"/docs/messaging/email/templates/index"},{"group":"Email Templates API","pages":[{"title":"List email templates","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_templates","href":"/api-reference/email-templates/list-email-templates"},{"title":"Create an email template","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_templates","href":"/api-reference/email-templates/create-an-email-template"},{"title":"Delete an email template","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_templates/{id}","href":"/api-reference/email-templates/delete-an-email-template"},{"title":"Get an email template","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_templates/{id}","href":"/api-reference/email-templates/get-an-email-template"},{"title":"Update an email template","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json patch /email_templates/{id}","href":"/api-reference/email-templates/update-an-email-template"},{"title":"Replace an email template","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json put /email_templates/{id}","href":"/api-reference/email-templates/replace-an-email-template"},{"title":"Render an email template","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_templates/{id}/render","href":"/api-reference/email-templates/render-an-email-template"}]},{"title":"Suppressions \u0026 Unsubscribes","sidebarTitle":"Suppressions \u0026 Unsubscribes","href":"/docs/messaging/email/suppressions/index"},{"title":"Unsubscribe Groups","sidebarTitle":"Unsubscribe Groups","href":"/docs/messaging/email/unsubscribe-groups/index"},{"group":"Email Suppressions API","pages":[{"group":"Email Suppressions API","pages":[{"title":"List suppressions","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_blocks","href":"/api-reference/email-suppressions/list-suppressions"},{"title":"Create a manual suppression","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_blocks","href":"/api-reference/email-suppressions/create-a-manual-suppression"},{"title":"Export suppressions as CSV","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_blocks/export","href":"/api-reference/email-suppressions/export-suppressions-as-csv"},{"title":"Soft-delete a suppression","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_blocks/{id}","href":"/api-reference/email-suppressions/soft-delete-a-suppression"},{"title":"Retrieve a suppression","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_blocks/{id}","href":"/api-reference/email-suppressions/retrieve-a-suppression"},{"title":"List audit events for a suppression","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_blocks/{id}/events","href":"/api-reference/email-suppressions/list-audit-events-for-a-suppression"}]},{"group":"Email Suppression Imports API","pages":[{"title":"Create an async CSV import job","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_blocks/import","href":"/api-reference/email-suppression-imports/create-an-async-csv-import-job"},{"title":"Poll an import job","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_blocks/import/{id}","href":"/api-reference/email-suppression-imports/poll-an-import-job"}]}]},{"group":"Unsubscribe Groups API","pages":[{"title":"List unsubscribe groups","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_unsubscribe_groups","href":"/api-reference/email-unsubscribe-groups/list-unsubscribe-groups"},{"title":"Create an unsubscribe group","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_unsubscribe_groups","href":"/api-reference/email-unsubscribe-groups/create-an-unsubscribe-group"},{"title":"Delete an unsubscribe group","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_unsubscribe_groups/{id}","href":"/api-reference/email-unsubscribe-groups/delete-an-unsubscribe-group"},{"title":"Retrieve an unsubscribe group","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_unsubscribe_groups/{id}","href":"/api-reference/email-unsubscribe-groups/retrieve-an-unsubscribe-group"},{"title":"Update an unsubscribe group","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json patch /email_unsubscribe_groups/{id}","href":"/api-reference/email-unsubscribe-groups/update-an-unsubscribe-group"},{"title":"List suppressions in a group","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_unsubscribe_groups/{id}/suppressions","href":"/api-reference/email-unsubscribe-groups/list-suppressions-in-a-group"},{"title":"Add a group suppression","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_unsubscribe_groups/{id}/suppressions","href":"/api-reference/email-unsubscribe-groups/add-a-group-suppression"},{"title":"Remove a group suppression","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_unsubscribe_groups/{id}/suppressions/{email}","href":"/api-reference/email-unsubscribe-groups/remove-a-group-suppression"}]}]},{"group":"Events \u0026 Webhooks","pages":[{"title":"Email Webhooks \u0026 Events","sidebarTitle":"Webhooks \u0026 Events","href":"/docs/messaging/email/webhooks-events/index"},{"title":"Email Event Lifecycle","sidebarTitle":"Event Lifecycle","href":"/docs/messaging/email/event-lifecycle/index"},{"group":"Email Events API","pages":[{"title":"List account email events","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_events","href":"/api-reference/email-events/list-account-email-events"},{"title":"Get email event statistics","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_events/stats","href":"/api-reference/email-events/get-email-event-statistics"}]}]},{"group":"For AI Agents","pages":[{"title":"Email llms.txt","sidebarTitle":"Email llms txt","href":"/docs/development/llms/messaging-email-llms-txt/index"},{"title":"Email llms-full.txt","sidebarTitle":"Email llms full txt","href":"/docs/development/llms/messaging-email-llms-full-txt/index"}]}]},{"tab":"RCS","icon":"message-dots","pages":[{"title":"RCS","href":"/docs/messaging/rcs/agent-registration"}]},{"tab":"WhatsApp","icon":"whatsapp","pages":[{"title":"WhatsApp","href":"/docs/messaging/whatsapp/quickstart"}]}]},{"product":"Numbers","icon":"hashtag","pages":[{"title":"Numbers","href":"/docs/numbers/phone-numbers/getting-started"}]},{"product":"Wireless","icon":"broadcast-tower","pages":[{"title":"Wireless","href":"/docs/iot-sim/wireless-overview"}]}]},"basePath":"","title":"Create a batch of email messages - Telnyx","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["10e4515597","c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["BannerMarkdown-BcDCEkh6.js","dist-CwjSCXIK.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-eKJ4rcii.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-BUDYNlhG.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","AssistantPageLink-9EK5IAXV.js"]}