Queues, schedules, or sandbox-sends an email message. The legacy /v2/emails POST route
is a backward-compatible alias for this operation.
subject is required unless template_id is supplied. When using template_id, do not
also provide subject, html_body, or text_body; the template is rendered with
template_variables.
import Telnyx from 'telnyx';const client = new Telnyx({ apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted});const EmailMessage = await client.emailMessages.create({ from: 'from', to: 'to',});console.log(EmailMessage.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
)
email_message = client.email_messages.create(
from_="from",
to="to",
)
print(email_message.data)
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.emailMessages.EmailMessageCreateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
EmailMessageCreateParams params = EmailMessageCreateParams.builder()
.from("from")
.to("to")
.build();
var response = client.emailMessages().create(params);
}
}
require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
email_message = telnyx.email_messages.create(from: "from", to: "to")
puts(email_message)
<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$email_message = $client->emailMessages->create(
from: 'from',
to: 'to',
);
var_dump($email_message);
} catch (APIException $e) {
echo $e->getMessage();
}
telnyx email-messages create \
--api-key 'My API Key' \
--from from \
--to to
curl --request POST \
--url https://api.telnyx.com/v2/email_messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"from": "[email protected]",
"to": [
"[email protected]"
],
"subject": "Hello from Telnyx",
"text_body": "This is a test email."
}
'
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.
Required string length: 1 - 255
Pattern: ^[A-Za-z0-9_-]{1,255}$
Body
application/json
Recipient email addresses must be unique across to, cc, and bcc after case-insensitive normalization. Duplicate recipients return 400 Bad Request.
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.
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.
When true, allows delivery to recipients whose suppressions explicitly
permit an override. Hard bounces, spam complaints, and invalid-address
suppressions cannot be overridden. Requires the email:override API scope.
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.
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.
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.
Validates and accepts the message without injecting it into the MTA or outbound Kafka path. Nothing is delivered: sandbox records are non-billable, consume no daily-send-limit quota, and feed no delivery-reputation signals.
The reserved sandbox test-recipient domain is test.telnyx.com. In sandbox mode, these addresses produce deterministic recipient-scoped lifecycle events:
Matching is case-insensitive for both the local part and the domain and requires the exact domain test.telnyx.com — subdomains and other domains do not match. Mixed sandbox sends simulate only reserved test recipients; other recipients retain ordinary sandbox behavior (accepted, no delivery attempted). Hard-bounce and complaint outcomes also use the normal automatic-suppression pipeline. Non-sandbox sends to these addresses use the normal delivery path.
Telnyx message UUID of the message this send replies to. When provided,
the API sets RFC 5322 In-Reply-To and References headers on the
outbound MIME so the recipient's mailbox (Gmail/Outlook) threads it
correctly. The parent is looked up under the caller's account scope;
a UUID belonging to another account yields a non-enumerating 404.
Wire-only (Phase 1): the API sets the headers and does NOT resolve or
mutate thread_id on the server side. Messages sent without this
parameter are standalone (no threading headers injected).
Cannot be combined with forward_of_message_id (422).
Indicates a reply-all intent. In Phase 1 (wire-only) this does not
change the threading headers — recipient selection is customer-
controlled (to/cc), and a thread is not defined by its audience.
When the referenced message has no thread context, reply-all
degrades to a plain reply (parent ID only in References). The
resolution engine (separate work) will expand the ancestor chain
at a later phase with no API change.
Telnyx message UUID of the message this send forwards. Forwarded
messages start a NEW thread per RFC 5322 — NO In-Reply-To or
References headers are set on the outbound MIME. The id is
recorded in the message's metadata for EDR provenance only.
The id is validated as a UUID but is NOT looked up against the
message store — existence is the caller's responsibility (the
forward is pure metadata; it does not affect delivery). Cannot be
combined with in_reply_to_message_id (422).
Recipients removed by suppression checks when at least one recipient remains and the message is accepted.
Show child attributes
Was this page helpful?
JavaScript
import Telnyx from 'telnyx';const client = new Telnyx({ apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted});const EmailMessage = await client.emailMessages.create({ from: 'from', to: 'to',});console.log(EmailMessage.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
)
email_message = client.email_messages.create(
from_="from",
to="to",
)
print(email_message.data)
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.emailMessages.EmailMessageCreateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
EmailMessageCreateParams params = EmailMessageCreateParams.builder()
.from("from")
.to("to")
.build();
var response = client.emailMessages().create(params);
}
}
require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
email_message = telnyx.email_messages.create(from: "from", to: "to")
puts(email_message)
<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$email_message = $client->emailMessages->create(
from: 'from',
to: 'to',
);
var_dump($email_message);
} catch (APIException $e) {
echo $e->getMessage();
}
telnyx email-messages create \
--api-key 'My API Key' \
--from from \
--to to
curl --request POST \
--url https://api.telnyx.com/v2/email_messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"from": "[email protected]",
"to": [
"[email protected]"
],
"subject": "Hello from Telnyx",
"text_body": "This is a test email."
}
'
{"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":"6aef0e5bc11f50027300313c","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-or-send-an-email-message","slug":"/api-reference/email-messages/create-or-send-an-email-message","pageMetadata":{"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","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, 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(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Queues, schedules, or sandbox-sends an email message. The legacy \", _jsx(_components.code, {\n children: \"/v2/emails\"\n }), \" POST route\\nis a backward-compatible alias for this operation.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"subject\"\n }), \" is required unless \", _jsx(_components.code, {\n children: \"template_id\"\n }), \" is supplied. When using \", _jsx(_components.code, {\n children: \"template_id\"\n }), \", do not\\nalso provide \", _jsx(_components.code, {\n children: \"subject\"\n }), \", \", _jsx(_components.code, {\n children: \"html_body\"\n }), \", or \", _jsx(_components.code, {\n children: \"text_body\"\n }), \"; the template is rendered with\\n\", _jsx(_components.code, {\n children: \"template_variables\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Note: template lookup failures (not found, wrong account) return 400, not 404.\"\n })]\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 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","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":"CreateEmailMessage","summary":"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.","requestBody":"e2e1c421-7e04-42f1-9076-3209236addb4","responses":{"202":"706b6e98-b24c-48c9-b906-26752c36f9bc","400":"843c90de-194c-442b-b336-f2842ca50f03","401":"27c8403e-0cd0-404c-ba67-e17ba7259727","403":"fdc9c1a6-f1ef-4264-b70d-5c3418881550","404":"fdf97d12-c713-4533-8d5b-ef05da8203aa","409":"45b62ec0-2bb9-4bb1-b542-9bbece9e218f","413":"2a065af8-a32f-41ce-bc73-07f8630c56d9","422":"fc47bfe2-7e48-496c-9450-a46b8776c890","429":"de1a626b-bc2e-408d-bdaf-8fe349fa5458","503":"78b32417-91f0-4f4d-856f-3f7375798153"},"parameters":["ef371a3f-b6af-4ab5-9dbe-fddd7a3a6392"],"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 EmailMessage = await client.emailMessages.create({\n from: 'from',\n to: 'to',\n});\n\nconsole.log(EmailMessage.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)\nemail_message = client.email_messages.create(\n from_=\"from\",\n to=\"to\",\n)\nprint(email_message.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\temailMessage, err := client.EmailMessages.New(\n\t\tcontext.TODO(),\n\t\ttelnyx.EmailMessageNewParams{\n\t\t\tFrom: \"from\",\n\t\t\tTo: \"to\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", emailMessage.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.EmailMessageCreateParams;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n EmailMessageCreateParams params = EmailMessageCreateParams.builder()\n .from(\"from\")\n .to(\"to\")\n .build();\n var response = client.emailMessages().create(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\nemail_message = telnyx.email_messages.create(from: \"from\", to: \"to\")\n\nputs(email_message)"},{"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 $email_message = $client->emailMessages->create(\n from: 'from',\n to: 'to',\n );\n\n var_dump($email_message);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx email-messages create \\\n --api-key 'My API Key' \\\n --from from \\\n --to to"}],"method":"post","type":"path","servers":["ba228b30-2f2a-4f83-8934-4e3ba1c84f11"],"security":["7b51e92f-3d92-487d-a058-03c4cd5c2c42"],"path":"/email_messages","baseUrlOptions":["https://api.telnyx.com/v2"],"title":"Create or send an email message","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 EmailMessage = await client.emailMessages.create({\n from: 'from',\n to: 'to',\n});\n\nconsole.log(EmailMessage.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)\nemail_message = client.email_messages.create(\n from_=\"from\",\n to=\"to\",\n)\nprint(email_message.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\temailMessage, err := client.EmailMessages.New(\n\t\tcontext.TODO(),\n\t\ttelnyx.EmailMessageNewParams{\n\t\t\tFrom: \"from\",\n\t\t\tTo: \"to\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", emailMessage.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.EmailMessageCreateParams;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n EmailMessageCreateParams params = EmailMessageCreateParams.builder()\n .from(\"from\")\n .to(\"to\")\n .build();\n var response = client.emailMessages().create(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\nemail_message = telnyx.email_messages.create(from: \"from\", to: \"to\")\n\nputs(email_message)"},{"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 $email_message = $client->emailMessages->create(\n from: 'from',\n to: 'to',\n );\n\n var_dump($email_message);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx email-messages create \\\n --api-key 'My API Key' \\\n --from from \\\n --to to"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"ef371a3f-b6af-4ab5-9dbe-fddd7a3a6392":{"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","description":"Recipient email addresses must be unique across `to`, `cc`, and `bcc` after case-insensitive normalization. Duplicate recipients return `400 Bad Request`.","properties":{"from":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"from.oneOf.0","typeLabel":"string"},{"type":"object","required":["email"],"properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"from.oneOf.1.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"from.oneOf.1.name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"from.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"from","typeLabel":"string | object"},"to":{"type":"array","minItems":1,"items":{"oneOf":[{"type":"string","uniqueKey":"to.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"object","required":["email"],"properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"to.items.[INDEX].oneOf.1.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"to.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"to.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"to.items.[INDEX]","typeLabel":"string | object"},"isRequired":true,"uniqueKey":"to","typeLabel":"(string | object)[]"},"from_name":{"type":"string","description":"Optional display name for string `from`; overrides `from.name` when provided.","uniqueKey":"from_name","typeLabel":"string"},"cc":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"cc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"object","required":["email"],"properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"cc.items.[INDEX].oneOf.1.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"cc.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"cc.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"cc.items.[INDEX]","typeLabel":"string | object"},"uniqueKey":"cc","typeLabel":"(string | object)[]"},"bcc":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"bcc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"object","required":["email"],"properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"bcc.items.[INDEX].oneOf.1.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"bcc.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"bcc.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"bcc.items.[INDEX]","typeLabel":"string | object"},"uniqueKey":"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":"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":"reply_to.oneOf.1.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"reply_to.oneOf.1.name","typeLabel":"string"}},"uniqueKey":"reply_to.oneOf.1","typeLabel":"object"}],"uniqueKey":"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":"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":"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":"text_body","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"headers.additionalProperties","typeLabel":"string"},"description":"Custom email headers. Write-only; not returned in responses.","uniqueKey":"headers","typeLabel":"object"},"attachments":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Attachment filename. Defaults to \"attachment\" when omitted.","uniqueKey":"attachments.items.[INDEX].filename","typeLabel":"string"},"content_type":{"type":"string","description":"MIME content type. Defaults to \"application/octet-stream\" when omitted.","uniqueKey":"attachments.items.[INDEX].content_type","typeLabel":"string"},"content":{"type":"string","description":"Attachment content, typically Base64-encoded. Defaults to empty string when omitted.","uniqueKey":"attachments.items.[INDEX].content","typeLabel":"string"},"disposition":{"type":"string","default":"attachment","description":"MIME disposition (`attachment` or `inline`).","uniqueKey":"attachments.items.[INDEX].disposition","typeLabel":"string"},"content_id":{"oneOf":[{"type":"string","description":"MIME Content-ID used to reference an inline attachment.","uniqueKey":"attachments.items.[INDEX].content_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"MIME Content-ID used to reference an inline attachment.","uniqueKey":"attachments.items.[INDEX].content_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"attachments.items.[INDEX].content_id","typeLabel":"string | null"}},"uniqueKey":"attachments.items.[INDEX]","typeLabel":"object"},"uniqueKey":"attachments","typeLabel":"object[]"},"tags":{"type":"array","items":{"type":"string","uniqueKey":"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":"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":"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":"group_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"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":"tracking_settings.open_tracking","typeLabel":"boolean"},"click_tracking":{"type":"boolean","description":"Whether to rewrite links for click tracking in this message.","uniqueKey":"tracking_settings.click_tracking","typeLabel":"boolean"}},"uniqueKey":"tracking_settings","typeLabel":"object"},"template_id":{"type":"string","format":"uuid","uniqueKey":"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":"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":"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":"scheduled_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"scheduled_at","typeLabel":"string\u003cdate-time> | null"},"send_at":{"type":"string","format":"date-time","deprecated":true,"description":"Deprecated alias for `scheduled_at`.","uniqueKey":"send_at","typeLabel":"string\u003cdate-time>"},"inline_css":{"type":"boolean","default":false,"uniqueKey":"inline_css","typeLabel":"boolean"},"sandbox_mode":{"type":"boolean","default":false,"description":"Validates and accepts the message without injecting it into the MTA or outbound Kafka path. Nothing is delivered: sandbox records are non-billable, consume no daily-send-limit quota, and feed no delivery-reputation signals.\n\nThe reserved sandbox test-recipient domain is `test.telnyx.com`. In sandbox mode, these addresses produce deterministic recipient-scoped lifecycle events:\n\n- `[email protected]`: queued -> sending -> sent -> delivered\n- `[email protected]`: queued -> sending -> sent -> bounced (permanent)\n- `[email protected]`: queued -> sending -> sent -> bounced (transient)\n- `[email protected]`: queued -> sending -> sent -> complained\n- `[email protected]`: queued -> suppressed\n- `[email protected]`: queued -> sending -> failed (invalid recipient)\n- `[email protected]`: queued -> sending -> failed (DKIM unavailable)\n- `[email protected]`: queued -> sending -> failed (rate limit exceeded)\n\nMatching is case-insensitive for both the local part and the domain and requires the exact domain `test.telnyx.com` — subdomains and other domains do not match. Mixed sandbox sends simulate only reserved test recipients; other recipients retain ordinary sandbox behavior (accepted, no delivery attempted). Hard-bounce and complaint outcomes also use the normal automatic-suppression pipeline. Non-sandbox sends to these addresses use the normal delivery path.","uniqueKey":"sandbox_mode","typeLabel":"boolean"},"in_reply_to_message_id":{"oneOf":[{"type":"string","format":"uuid","description":"Telnyx message UUID of the message this send replies to. When provided,\nthe API sets RFC 5322 `In-Reply-To` and `References` headers on the\noutbound MIME so the recipient's mailbox (Gmail/Outlook) threads it\ncorrectly. The parent is looked up under the caller's account scope;\na UUID belonging to another account yields a non-enumerating 404.\n\nWire-only (Phase 1): the API sets the headers and does NOT resolve or\nmutate `thread_id` on the server side. Messages sent without this\nparameter are standalone (no threading headers injected).\n\nCannot be combined with `forward_of_message_id` (422).","uniqueKey":"in_reply_to_message_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Telnyx message UUID of the message this send replies to. When provided,\nthe API sets RFC 5322 `In-Reply-To` and `References` headers on the\noutbound MIME so the recipient's mailbox (Gmail/Outlook) threads it\ncorrectly. The parent is looked up under the caller's account scope;\na UUID belonging to another account yields a non-enumerating 404.\n\nWire-only (Phase 1): the API sets the headers and does NOT resolve or\nmutate `thread_id` on the server side. Messages sent without this\nparameter are standalone (no threading headers injected).\n\nCannot be combined with `forward_of_message_id` (422).","uniqueKey":"in_reply_to_message_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"in_reply_to_message_id","typeLabel":"string\u003cuuid> | null"},"reply_to_all":{"oneOf":[{"type":"boolean","default":false,"description":"Indicates a reply-all intent. In Phase 1 (wire-only) this does not\nchange the threading headers — recipient selection is customer-\ncontrolled (`to`/`cc`), and a thread is not defined by its audience.\nWhen the referenced message has no thread context, reply-all\ndegrades to a plain reply (parent ID only in `References`). The\nresolution engine (separate work) will expand the ancestor chain\nat a later phase with no API change.\n\nOnly meaningful alongside `in_reply_to_message_id`.","uniqueKey":"reply_to_all.oneOf.0","typeLabel":"boolean"},{"type":"null","default":false,"description":"Indicates a reply-all intent. In Phase 1 (wire-only) this does not\nchange the threading headers — recipient selection is customer-\ncontrolled (`to`/`cc`), and a thread is not defined by its audience.\nWhen the referenced message has no thread context, reply-all\ndegrades to a plain reply (parent ID only in `References`). The\nresolution engine (separate work) will expand the ancestor chain\nat a later phase with no API change.\n\nOnly meaningful alongside `in_reply_to_message_id`.","uniqueKey":"reply_to_all.oneOf.1","typeLabel":"null"}],"uniqueKey":"reply_to_all","typeLabel":"boolean | null"},"forward_of_message_id":{"oneOf":[{"type":"string","format":"uuid","description":"Telnyx message UUID of the message this send forwards. Forwarded\nmessages start a NEW thread per RFC 5322 — NO `In-Reply-To` or\n`References` headers are set on the outbound MIME. The id is\nrecorded in the message's metadata for EDR provenance only.\n\nThe id is validated as a UUID but is NOT looked up against the\nmessage store — existence is the caller's responsibility (the\nforward is pure metadata; it does not affect delivery). Cannot be\ncombined with `in_reply_to_message_id` (422).","uniqueKey":"forward_of_message_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Telnyx message UUID of the message this send forwards. Forwarded\nmessages start a NEW thread per RFC 5322 — NO `In-Reply-To` or\n`References` headers are set on the outbound MIME. The id is\nrecorded in the message's metadata for EDR provenance only.\n\nThe id is validated as a UUID but is NOT looked up against the\nmessage store — existence is the caller's responsibility (the\nforward is pure metadata; it does not affect delivery). Cannot be\ncombined with `in_reply_to_message_id` (422).","uniqueKey":"forward_of_message_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"forward_of_message_id","typeLabel":"string\u003cuuid> | null"}},"required":["from","to"],"uniqueKey":"","typeLabel":"object"},"examples":{"simple":{"title":"simple","value":{"from":"[email protected]","to":["[email protected]"],"subject":"Hello from Telnyx","text_body":"This is a test email."}},"withAddressObjects":{"title":"withAddressObjects","value":{"from":{"email":"[email protected]","name":"Telnyx Notifications"},"to":[{"email":"[email protected]","name":"Ada Lovelace"}],"subject":"Welcome","html_body":"\u003ch1>Welcome!\u003c/h1>"}},"withTemplate":{"title":"withTemplate","value":{"from":"[email protected]","to":["[email protected]"],"template_id":"7a7c1a2b-1111-4c72-8c21-2bbf3d40c123","template_variables":{"first_name":"Ada"}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"706b6e98-b24c-48c9-b906-26752c36f9bc":{"description":"Message queued, scheduled, or sandbox-created.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"record_type":{"type":"string","enum":["email_message"],"isRequired":true,"uniqueKey":"data.record_type","typeLabel":"enum\u003cstring>"},"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"data.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.status","typeLabel":"enum\u003cstring>"},"from":{"type":"object","properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"data.from.email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.from.name","typeLabel":"string"}},"required":["email"],"isRequired":true,"uniqueKey":"data.from","typeLabel":"object"},"to":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"data.to.items.[INDEX].email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.to.items.[INDEX].name","typeLabel":"string"}},"required":["email"],"uniqueKey":"data.to.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.to","typeLabel":"object[]"},"cc":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"data.cc.items.[INDEX].email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.cc.items.[INDEX].name","typeLabel":"string"}},"required":["email"],"uniqueKey":"data.cc.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.cc","typeLabel":"object[]"},"bcc":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"data.bcc.items.[INDEX].email","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.bcc.items.[INDEX].name","typeLabel":"string"}},"required":["email"],"uniqueKey":"data.bcc.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.bcc","typeLabel":"object[]"},"reply_to":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.reply_to.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.reply_to.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.reply_to","typeLabel":"string | null"},"subject":{"type":"string","isRequired":true,"uniqueKey":"data.subject","typeLabel":"string"},"template_id":{"oneOf":[{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"data.template_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","isRequired":true,"uniqueKey":"data.template_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.template_id","typeLabel":"string\u003cuuid> | null"},"template_variables":{"type":"object","additionalProperties":true,"default":{},"isRequired":true,"uniqueKey":"data.template_variables","typeLabel":"object"},"tags":{"type":"array","default":[],"items":{"type":"string","uniqueKey":"data.tags.items.[INDEX]","typeLabel":"string"},"description":"Customer-supplied tags stored with the message.","isRequired":true,"uniqueKey":"data.tags","typeLabel":"string[]"},"metadata":{"type":"object","additionalProperties":true,"default":{},"description":"Customer-supplied metadata stored with the message.","isRequired":true,"uniqueKey":"data.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.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.attachments.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.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.attachments.items.[INDEX].sha256.oneOf.0","typeLabel":"string"},{"type":"null","description":"SHA-256 hex digest of the attachment content.","isRequired":true,"uniqueKey":"data.attachments.items.[INDEX].sha256.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.attachments.items.[INDEX].sha256","typeLabel":"string | null"},"size_bytes":{"oneOf":[{"type":"integer","description":"Attachment size in bytes.","isRequired":true,"uniqueKey":"data.attachments.items.[INDEX].size_bytes.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Attachment size in bytes.","isRequired":true,"uniqueKey":"data.attachments.items.[INDEX].size_bytes.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.attachments.items.[INDEX].size_bytes","typeLabel":"integer | null"},"filename":{"type":"string","isRequired":true,"uniqueKey":"data.attachments.items.[INDEX].filename","typeLabel":"string"},"content_type":{"type":"string","isRequired":true,"uniqueKey":"data.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.attachments.items.[INDEX].disposition","typeLabel":"string"},"content_id":{"oneOf":[{"type":"string","description":"MIME Content-ID for inline references.","isRequired":true,"uniqueKey":"data.attachments.items.[INDEX].content_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"MIME Content-ID for inline references.","isRequired":true,"uniqueKey":"data.attachments.items.[INDEX].content_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.attachments.items.[INDEX].content_id","typeLabel":"string | null"}},"required":["url","sha256","size_bytes","filename","content_type","disposition","content_id"],"uniqueKey":"data.attachments.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.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.events.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"occurred_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.events.items.[INDEX].occurred_at","typeLabel":"string\u003cdate-time>"},"payload":{"type":"object","additionalProperties":true,"uniqueKey":"data.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.events.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.events","typeLabel":"object[]"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.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.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.inline_css","typeLabel":"boolean"},"sandbox":{"type":"boolean","description":"Present when sandbox mode was used.","uniqueKey":"data.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.recipient_statuses.additionalProperties","typeLabel":"integer"},"example":{"delivered":998,"bounced":2},"uniqueKey":"data.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.suppressed.items.[INDEX].to","typeLabel":"string\u003cemail>"},"reason":{"type":"string","description":"Suppression reason returned by the recipient suppression service.","isRequired":true,"uniqueKey":"data.suppressed.items.[INDEX].reason","typeLabel":"string"},"scope":{"type":"string","description":"Scope at which the suppression applies.","isRequired":true,"uniqueKey":"data.suppressed.items.[INDEX].scope","typeLabel":"string"},"override_allowed":{"type":"boolean","description":"Whether an authorized send may override this suppression.","isRequired":true,"uniqueKey":"data.suppressed.items.[INDEX].override_allowed","typeLabel":"boolean"}},"required":["to","reason","scope","override_allowed"],"uniqueKey":"data.suppressed.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.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"],"isRequired":true,"uniqueKey":"data","typeLabel":"object"},"suppressed":{"type":"array","description":"Recipients removed by suppression checks when at least one recipient remains and the message is accepted.","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":["data"],"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}]},"suppressed":[{"to":"[email protected]","reason":"\u003cstring>","scope":"\u003cstring>","override_allowed":true}]}}},"exampleType":"generated"}},"headers":{"Idempotent-Replayed":{"description":"Present with value `true` when Edge replayed a stored successful response for the supplied Idempotency-Key. Omitted for first-time requests and error responses.","schema":{"type":"boolean","enum":[true],"example":true}},"X-Telnyx-Reputation-Warning":{"description":"Present with `warn` when the accepted send uses a sender domain in the reputation warn band; delivery proceeds with reduced sending limits.","schema":{"type":"string","enum":["warn"]}}},"exampleType":"generated"},"843c90de-194c-442b-b336-f2842ca50f03":{"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"},"27c8403e-0cd0-404c-ba67-e17ba7259727":{"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"},"fdc9c1a6-f1ef-4264-b70d-5c3418881550":{"description":"Forbidden (10007), such as domain not verified, suspended, degraded, or missing DKIM.","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":"Forbidden","detail":"Domain is not verified. Complete DNS setup before sending email."}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10007","title":"Forbidden","detail":"Domain is not verified. Complete DNS setup before sending email."}]}}},"exampleType":"examples"}},"exampleType":"examples"},"fdf97d12-c713-4533-8d5b-ef05da8203aa":{"description":"Resource not found (10001).","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":"10001","title":"Not Found","detail":"The requested resource was not found"}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10001","title":"Not Found","detail":"The requested resource was not found"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"45b62ec0-2bb9-4bb1-b542-9bbece9e218f":{"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"},"2a065af8-a32f-41ce-bc73-07f8630c56d9":{"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"},"fc47bfe2-7e48-496c-9450-a46b8776c890":{"description":"Validation failed (including an invalid or non-future `scheduled_at`/`send_at`), send-time template rendering failed (including a strict-variable failure naming the missing required variable), or all recipients suppressed (code `recipient_suppressed`, includes top-level `suppressed` array). Reusing an Idempotency-Key with a different request also returns 422 (10027).","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["errors"],"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":"oneOf.0.errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.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":"oneOf.0.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":"oneOf.0.errors.items.[INDEX].detail.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.0.errors.items.[INDEX].detail","typeLabel":"string | object"},"source":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"oneOf.0.errors.items.[INDEX].source.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"oneOf.0.errors.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.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":"oneOf.0.errors.items.[INDEX].meta.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Additional metadata. Present on 401 errors with a documentation URL.","uniqueKey":"oneOf.0.errors.items.[INDEX].meta.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.errors.items.[INDEX].meta","typeLabel":"object | null"}},"required":["code","title","detail"],"uniqueKey":"oneOf.0.errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.0.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":"oneOf.0.suppressed.items.[INDEX].to","typeLabel":"string\u003cemail>"},"reason":{"type":"string","description":"Suppression reason returned by the recipient suppression service.","isRequired":true,"uniqueKey":"oneOf.0.suppressed.items.[INDEX].reason","typeLabel":"string"},"scope":{"type":"string","description":"Scope at which the suppression applies.","isRequired":true,"uniqueKey":"oneOf.0.suppressed.items.[INDEX].scope","typeLabel":"string"},"override_allowed":{"type":"boolean","description":"Whether an authorized send may override this suppression.","isRequired":true,"uniqueKey":"oneOf.0.suppressed.items.[INDEX].override_allowed","typeLabel":"boolean"}},"required":["to","reason","scope","override_allowed"],"uniqueKey":"oneOf.0.suppressed.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.suppressed","typeLabel":"object[]"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["render_error"],"isRequired":true,"uniqueKey":"oneOf.1.errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.errors.items.[INDEX].message","typeLabel":"string"}},"required":["code","message"],"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 all recipients are suppressed and ignore_suppression was not set/allowed. Includes a top-level `suppressed` array alongside `errors`.","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["recipient_suppressed"],"uniqueKey":"oneOf.2.errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","uniqueKey":"oneOf.2.errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"oneOf.2.errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"oneOf.2.errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.2.errors","typeLabel":"object[]"},"suppressed":{"type":"array","items":{"type":"object","properties":{"to":{"type":"string","format":"email","uniqueKey":"oneOf.2.suppressed.items.[INDEX].to","typeLabel":"string\u003cemail>"},"reason":{"type":"string","uniqueKey":"oneOf.2.suppressed.items.[INDEX].reason","typeLabel":"string"},"scope":{"type":"string","uniqueKey":"oneOf.2.suppressed.items.[INDEX].scope","typeLabel":"string"},"override_allowed":{"type":"boolean","uniqueKey":"oneOf.2.suppressed.items.[INDEX].override_allowed","typeLabel":"boolean"}},"uniqueKey":"oneOf.2.suppressed.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.2.suppressed","typeLabel":"object[]"}},"uniqueKey":"oneOf.2","typeLabel":"object"}],"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"},"de1a626b-bc2e-408d-bdaf-8fe349fa5458":{"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"},"78b32417-91f0-4f4d-856f-3f7375798153":{"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 or send an email message - Telnyx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T13:57:22.858Z","originalFileLocation":"api-reference/email-messages/create-or-send-an-email-message.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=\"Queues, schedules, or sandbox-sends an email message. The legacy /v2/emails POST route is a backward-compatible alias for this operation. subject is required unless template_id is supplied. When using template_id, do not also provide subject, html_body, or text_body; the template is rendered with template_variables. Note: template lookup failures (not found, wrong account) return 400, not 404.\">\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 or send an email message - 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-or-send-an-email-message\">\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+or+send+an+email+message\u0026amp;description=Queues%2C+schedules%2C+or+sandbox-sends+an+email+message.+The+legacy+%60%2Fv2%2Femails%60+POST+route%0Ais+a+backward-compatible+alias+for+this+operation.%0A%0A%60subject%60+is+requir\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=3eebc1eb01c43294971d256ca9b0051650fdfda8344bab5ea08e7afef36284da\">\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 or send an email message - 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+or+send+an+email+message\u0026amp;description=Queues%2C+schedules%2C+or+sandbox-sends+an+email+message.+The+legacy+%60%2Fv2%2Femails%60+POST+route%0Ais+a+backward-compatible+alias+for+this+operation.%0A%0A%60subject%60+is+requir\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=3eebc1eb01c43294971d256ca9b0051650fdfda8344bab5ea08e7afef36284da\">\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-or-send-an-email-message\">\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-or-send-an-email-message.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-or-send-an-email-message#webpage\",\"url\":\"https://developers.telnyx.com/api-reference/email-messages/create-or-send-an-email-message\",\"name\":\"Create or send an email message\",\"description\":\"Queues, schedules, or sandbox-sends an email message. The legacy /v2/emails POST route is a backward-compatible alias for this operation. subject is required unless template_id is supplied. When using template_id, do not also provide subject, html_body, or text_body; the template is rendered with template_variables. Note: template lookup failures (not found, wrong account) return 400, not 404.\",\"dateModified\":\"2026-10-29T13:57:22.858Z\",\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.telnyx.com/api-reference/email-messages/create-or-send-an-email-message#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.telnyx.com/api-reference/email-messages/create-or-send-an-email-message#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 or send an email message\",\"item\":\"https://developers.telnyx.com/api-reference/email-messages/create-or-send-an-email-message\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.telnyx.com/api-reference/email-messages/create-or-send-an-email-message#apireference\",\"headline\":\"Create or send an email message\",\"name\":\"Create or send an email message\",\"description\":\"Queues, schedules, or sandbox-sends an email message. The legacy /v2/emails POST route is a backward-compatible alias for this operation. subject is required unless template_id is supplied. When using template_id, do not also provide subject, html_body, or text_body; the template is rendered with template_variables. Note: template lookup failures (not found, wrong account) return 400, not 404.\",\"url\":\"https://developers.telnyx.com/api-reference/email-messages/create-or-send-an-email-message\",\"mainEntityOfPage\":{\"@id\":\"https://developers.telnyx.com/api-reference/email-messages/create-or-send-an-email-message#webpage\"},\"dateModified\":\"2026-10-29T13:57:22.858Z\",\"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","description":"Lists messages sorted newest first by `created_at desc, id desc`. Tags and metadata filters compose with cursor pagination. The legacy `/v2/emails` GET route is a backward-compatible alias for this operation.\n","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","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","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"},{"title":"List events for an email message","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 or send an email message - 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"]}