Purchase a dedicated sending IP. Requires a verified, enterprise, or legacy account, and an Idempotency-Key header: a request without the header returns 400 (code 10015) and allocates nothing. Telnyx allocates the next available IP from stock. The optional region and ip_version fields each restrict which stock IP is allocated; they never change the allocated IP’s metadata. An omitted field applies no restriction for that field, and omitting the body applies neither restriction. An unsupported selector value returns 422; a supported value that matches no available IP returns 429 and records the request on the waitlist. Billing: $14/month/IP, charged as a monthly recurring charge (MRC) from purchase. The IP is returned in provisioning status with a Telnyx-managed PTR hostname and carries no mail until you call start_warmup and add it to a pool that routes mail.
POST
/
email
/
dedicated_ips
JavaScript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const DedicatedIpShow = await client.email.dedicatedIps.create({
'Idempotency-Key': '8e03978e-40d5-43e8-bc93-6894a57f9326',
});
console.log(DedicatedIpShow.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
)
dedicated_ip_show = client.email.dedicated_ips.create(
idempotency_key="8e03978e-40d5-43e8-bc93-6894a57f9326",
)
print(dedicated_ip_show.data)
Telnyx API key supplied as Authorization: Bearer <token>. In production, auth may be validated by the API gateway and forwarded via Telnyx auth headers.
Required. Opaque, unquoted key for safely retrying the same purchase. Keys must contain 1 to 255 letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each purchase and reuse it only when retrying that purchase with the same request. A missing header, or an invalid one —including duplicate, empty, malformed, or overlong values—returns 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
Optional purchase selectors. Each supplied field restricts which stock IP is allocated; neither field is written to the IP. Omit the body or a field to apply no restriction for it. Other fields are ignored.
A dedicated sending IP address owned by the account.
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 DedicatedIpShow = await client.email.dedicatedIps.create({
'Idempotency-Key': '8e03978e-40d5-43e8-bc93-6894a57f9326',
});
console.log(DedicatedIpShow.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
)
dedicated_ip_show = client.email.dedicated_ips.create(
idempotency_key="8e03978e-40d5-43e8-bc93-6894a57f9326",
)
print(dedicated_ip_show.data)
{"docsConfig":{"theme":"sequoia","$schema":"https://mintlify.com/docs.json","name":"Telnyx","description":"Infrastructure for real-time agents. Voice, AI, Edge Compute","colors":{"primary":"#00B688","light":"#00B688","dark":"#00B688"},"logo":{"light":"https://mintcdn.com/telnyx/v2FpkbJg6PQ53qHU/assets/images/site/logo.svg?fit=max\u0026auto=format\u0026n=v2FpkbJg6PQ53qHU\u0026q=85\u0026s=5ee3f61d11ba90a197dd9a1e3499fab6","dark":"https://mintcdn.com/telnyx/v2FpkbJg6PQ53qHU/assets/images/site/logo-dark.svg?fit=max\u0026auto=format\u0026n=v2FpkbJg6PQ53qHU\u0026q=85\u0026s=d65aaa12ec708c79e5833cbdea958055"},"favicon":"https://mintcdn.com/telnyx/t-qaBUa_gCxdRz_m/favicon.ico?fit=max\u0026auto=format\u0026n=t-qaBUa_gCxdRz_m\u0026q=85\u0026s=8291283238ab8c0e2a7a985e69f38c2f","background":{"decoration":"gradient"},"navbar":{"links":[{"icon":"triangle-exclamation","href":"/docs/development/api-fundamentals/api-errors","label":"Error codes"},{"icon":"headset","href":"https://telnyx.com/contact-us","label":"Contact us"},{"icon":"user","href":"https://portal.telnyx.com/#/login/sign-in","label":"Login"}],"primary":{"type":"button","label":"Sign Up","href":"https://telnyx.com/sign-up"}},"footer":{"socials":{"github":"https://github.com/team-telnyx","linkedin":"https://www.linkedin.com/company/telnyx","slack":"https://joinslack.telnyx.com","x":"https://x.com/telnyx"},"links":[{"header":"Resources","items":[{"label":"Pricing","href":"https://developers.telnyx.com/internal/pages/pricing"},{"label":"Compare Telnyx","href":"https://developers.telnyx.com/internal/pages/compare"},{"label":"Support center","href":"https://support.telnyx.com/en"},{"label":"SETI","href":"https://seti.telnyx.com"},{"label":"Agent platform configs","href":"https://github.com/team-telnyx/ai"},{"label":"About Telnyx","href":"https://developers.telnyx.com/internal/pages/about"},{"label":"Service status","href":"https://status.telnyx.com"}]},{"header":"Updates","items":[{"label":"Release notes","href":"https://telnyx.com/release-notes"}]},{"header":"Community","items":[{"label":"Low Latency Club","href":"https://lowlatencyclub.ai/"}]},{"header":"Legal","items":[{"label":"Privacy policy","href":"https://telnyx.com/privacy-policy"},{"label":"Terms and conditions","href":"https://telnyx.com/terms-and-conditions"}]}]},"seo":{"metatags":{"og:description":"Infrastructure for real-time agents. Voice, AI, Edge Compute","description":"Infrastructure for real-time agents. Voice, AI, Edge Compute"},"organization":{"name":"Telnyx","url":"https://telnyx.com","logo":"https://telnyx.com/favicon.ico","sameAs":["https://x.com/telnyx","https://www.linkedin.com/company/telnyx/","https://github.com/team-telnyx"]}},"fonts":{"heading":{"family":"PP Formula","weight":800,"source":"assets/fonts/PPFormula-Extrabold.woff2","format":"woff2"},"body":{"family":"Inter","weight":400,"source":"assets/fonts/Inter-Regular.woff2","format":"woff2"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"gtm":{"tagId":"GTM-NRRX236"}},"banner":{"content":"Check out our upcoming events and meetups! [View events →](https://lowlatencyclub.ai/)","dismissible":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/docs/overview"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"telnyx","hasAudioNarration":false,"actualSubdomain":"telnyx","customDomains":["developers.telnyx.com"],"gitSource":{"type":"github","owner":"team-telnyx","repo":"developer-docs-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af453c09ab9c7bf98cbb051","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API Reference","count":597},{"language":"default","tag":"Calling","count":592},{"language":"default","tag":"Other APIs","count":406},{"language":"default","tag":"AI","count":391},{"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":"custom-rbac-roles","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}],"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/dedicated-ips/purchase-a-dedicated-ip","slug":"/api-reference/dedicated-ips/purchase-a-dedicated-ip","pageMetadata":{"title":"Purchase a dedicated IP","description":"Purchase a dedicated sending IP. Requires a verified, enterprise, or legacy account, and an `Idempotency-Key` header: a request without the header returns `400` (code `10015`) and allocates nothing. Telnyx allocates the next available IP from stock. The optional `region` and `ip_version` fields each restrict which stock IP is allocated; they never change the allocated IP's metadata. An omitted field applies no restriction for that field, and omitting the body applies neither restriction. An unsupported selector value returns `422`; a supported value that matches no available IP returns `429` and records the request on the waitlist. Billing: $14/month/IP, charged as a monthly recurring charge (MRC) from purchase. The IP is returned in `provisioning` status with a Telnyx-managed PTR hostname and carries no mail until you call `start_warmup` and add it to a pool that routes mail.","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email/dedicated_ips","href":"/api-reference/dedicated-ips/purchase-a-dedicated-ip","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Purchase a dedicated sending IP. Requires a verified, enterprise, or legacy account, and an \", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \" header: a request without the header returns \", _jsx(_components.code, {\n children: \"400\"\n }), \" (code \", _jsx(_components.code, {\n children: \"10015\"\n }), \") and allocates nothing. Telnyx allocates the next available IP from stock. The optional \", _jsx(_components.code, {\n children: \"region\"\n }), \" and \", _jsx(_components.code, {\n children: \"ip_version\"\n }), \" fields each restrict which stock IP is allocated; they never change the allocated IP’s metadata. An omitted field applies no restriction for that field, and omitting the body applies neither restriction. An unsupported selector value returns \", _jsx(_components.code, {\n children: \"422\"\n }), \"; a supported value that matches no available IP returns \", _jsx(_components.code, {\n children: \"429\"\n }), \" and records the request on the waitlist. Billing: $14/month/IP, charged as a monthly recurring charge (MRC) from purchase. The IP is returned in \", _jsx(_components.code, {\n children: \"provisioning\"\n }), \" status with a Telnyx-managed PTR hostname and carries no mail until you call \", _jsx(_components.code, {\n children: \"start_warmup\"\n }), \" and add it to a pool that routes mail.\"]\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":"Purchase a dedicated IP","description":"Purchase a dedicated sending IP. Requires a verified, enterprise, or legacy account, and an `Idempotency-Key` header: a request without the header returns `400` (code `10015`) and allocates nothing. Telnyx allocates the next available IP from stock. The optional `region` and `ip_version` fields each restrict which stock IP is allocated; they never change the allocated IP's metadata. An omitted field applies no restriction for that field, and omitting the body applies neither restriction. An unsupported selector value returns `422`; a supported value that matches no available IP returns `429` and records the request on the waitlist. Billing: $14/month/IP, charged as a monthly recurring charge (MRC) from purchase. The IP is returned in `provisioning` status with a Telnyx-managed PTR hostname and carries no mail until you call `start_warmup` and add it to a pool that routes mail.","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email/dedicated_ips","href":"/api-reference/dedicated-ips/purchase-a-dedicated-ip","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":{"operationId":"createDedicatedIp","summary":"Purchase a dedicated IP","description":"Purchase a dedicated sending IP. Requires a verified, enterprise, or legacy account, and an `Idempotency-Key` header: a request without the header returns `400` (code `10015`) and allocates nothing. Telnyx allocates the next available IP from stock. The optional `region` and `ip_version` fields each restrict which stock IP is allocated; they never change the allocated IP's metadata. An omitted field applies no restriction for that field, and omitting the body applies neither restriction. An unsupported selector value returns `422`; a supported value that matches no available IP returns `429` and records the request on the waitlist. Billing: $14/month/IP, charged as a monthly recurring charge (MRC) from purchase. The IP is returned in `provisioning` status with a Telnyx-managed PTR hostname and carries no mail until you call `start_warmup` and add it to a pool that routes mail.","tags":["Dedicated IPs"],"parameters":["1a5c28b1-04f3-48ae-a10d-f443288208ab"],"requestBody":"c77118b5-8111-4438-afff-d0b353b99bf2","responses":{"201":"70216f98-e760-4a7e-b3cf-504a89559999","400":"8aaf50b7-1ad4-4a36-9cca-f607ca003f90","401":"fcfb5825-c423-41c0-94b1-6b8b667f305f","403":"489e9c00-e643-4b1c-a337-f77bdc52940e","422":"58f85e20-02a3-4398-8dbc-fc5b3c782c0e","429":"6948632a-5819-477e-8e46-84383e14fa96","503":"cb35ec6d-3556-4748-9a59-d443b5d168b8"},"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 DedicatedIpShow = await client.email.dedicatedIps.create({\n 'Idempotency-Key': '8e03978e-40d5-43e8-bc93-6894a57f9326',\n});\n\nconsole.log(DedicatedIpShow.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)\ndedicated_ip_show = client.email.dedicated_ips.create(\n idempotency_key=\"8e03978e-40d5-43e8-bc93-6894a57f9326\",\n)\nprint(dedicated_ip_show.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\tdedicatedIP, err := client.Email.DedicatedIps.New(\n\t\tcontext.TODO(),\n\t\ttelnyx.EmailDedicatedIPNewParams{\n\t\t\tIdempotencyKey: \"8e03978e-40d5-43e8-bc93-6894a57f9326\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", dedicatedIP.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.email.dedicatedIps.DedicatedIpCreateParams;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n DedicatedIpCreateParams params = DedicatedIpCreateParams.builder()\n .idempotencyKey(\"8e03978e-40d5-43e8-bc93-6894a57f9326\")\n .build();\n var response = client.email().dedicatedIps().create(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\ndedicated_ip_show = telnyx.email.dedicated_ips.create(idempotency_key: \"8e03978e-40d5-43e8-bc93-6894a57f9326\")\n\nputs(dedicated_ip_show)"},{"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 $dedicated_ip_show = $client->email->dedicatedIps->create(\n idempotencyKey: '8e03978e-40d5-43e8-bc93-6894a57f9326',\n );\n\n var_dump($dedicated_ip_show);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx email:dedicated-ips create \\\n --api-key 'My API Key' \\\n --idempotency-key 8e03978e-40d5-43e8-bc93-6894a57f9326"}],"method":"post","type":"path","servers":["ba228b30-2f2a-4f83-8934-4e3ba1c84f11"],"security":["7b51e92f-3d92-487d-a058-03c4cd5c2c42"],"path":"/email/dedicated_ips","baseUrlOptions":["https://api.telnyx.com/v2"],"title":"Purchase a dedicated IP","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 DedicatedIpShow = await client.email.dedicatedIps.create({\n 'Idempotency-Key': '8e03978e-40d5-43e8-bc93-6894a57f9326',\n});\n\nconsole.log(DedicatedIpShow.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)\ndedicated_ip_show = client.email.dedicated_ips.create(\n idempotency_key=\"8e03978e-40d5-43e8-bc93-6894a57f9326\",\n)\nprint(dedicated_ip_show.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\tdedicatedIP, err := client.Email.DedicatedIps.New(\n\t\tcontext.TODO(),\n\t\ttelnyx.EmailDedicatedIPNewParams{\n\t\t\tIdempotencyKey: \"8e03978e-40d5-43e8-bc93-6894a57f9326\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", dedicatedIP.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.email.dedicatedIps.DedicatedIpCreateParams;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n DedicatedIpCreateParams params = DedicatedIpCreateParams.builder()\n .idempotencyKey(\"8e03978e-40d5-43e8-bc93-6894a57f9326\")\n .build();\n var response = client.email().dedicatedIps().create(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\ndedicated_ip_show = telnyx.email.dedicated_ips.create(idempotency_key: \"8e03978e-40d5-43e8-bc93-6894a57f9326\")\n\nputs(dedicated_ip_show)"},{"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 $dedicated_ip_show = $client->email->dedicatedIps->create(\n idempotencyKey: '8e03978e-40d5-43e8-bc93-6894a57f9326',\n );\n\n var_dump($dedicated_ip_show);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx email:dedicated-ips create \\\n --api-key 'My API Key' \\\n --idempotency-key 8e03978e-40d5-43e8-bc93-6894a57f9326"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"1a5c28b1-04f3-48ae-a10d-f443288208ab":{"name":"Idempotency-Key","in":"header","required":true,"description":"Required. Opaque, unquoted key for safely retrying the same purchase. Keys must contain 1 to 255 letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each purchase and reuse it only when retrying that purchase with the same request. A missing header, or an invalid one —including duplicate, empty, malformed, or overlong values—returns 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":true,"description":"Required. Opaque, unquoted key for safely retrying the same purchase. Keys must contain 1 to 255 letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each purchase and reuse it only when retrying that purchase with the same request. A missing header, or an invalid one —including duplicate, empty, malformed, or overlong values—returns 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":false,"content":{"application/json":{"schema":{"type":"object","description":"Optional purchase selectors. Each supplied field restricts which stock IP is allocated; neither field is written to the IP. Omit the body or a field to apply no restriction for it. Other fields are ignored.","properties":{"region":{"type":"string","enum":["ewr-nj1"],"description":"Allocate an IP in this region. Supported value: `ewr-nj1`. Any other value, including an empty string or `null`, returns `422`.","uniqueKey":"region","typeLabel":"enum\u003cstring>"},"ip_version":{"type":"string","enum":["ipv4"],"description":"Allocate an IP of this address family. Supported value: `ipv4`. Any other value, including `ipv6` or `null`, returns `422`.","uniqueKey":"ip_version","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"example":{"region":"ewr-nj1","ip_version":"ipv4"},"examples":{"Example":{"title":"Example","value":{"region":"ewr-nj1","ip_version":"ipv4"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"70216f98-e760-4a7e-b3cf-504a89559999":{"description":"Dedicated IP allocated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"A dedicated sending IP address owned by the account.","properties":{"id":{"type":"string","format":"uuid","uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"record_type":{"type":"string","enum":["dedicated_ip"],"uniqueKey":"data.record_type","typeLabel":"enum\u003cstring>"},"ip_address":{"type":"string","description":"The allocated IPv4/IPv6 address.","uniqueKey":"data.ip_address","typeLabel":"string"},"ip_version":{"type":"string","enum":["ipv4","ipv6"],"uniqueKey":"data.ip_version","typeLabel":"enum\u003cstring>"},"pool_id":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"data.pool_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"data.pool_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.pool_id","typeLabel":"string\u003cuuid> | null"},"region":{"type":"string","description":"Region label of the allocated IP (for example, `ewr-nj1`).","uniqueKey":"data.region","typeLabel":"string"},"status":{"type":"string","enum":["provisioning","warming_up","active","suspended","released"],"description":"Lifecycle status. `provisioning`: purchased and billed, carries no mail until `start_warmup`. `warming_up`: warm-up ramp in progress. `active`: ramp complete. `suspended`: suspended by Telnyx; carries no mail and is still billed. `released`: returned to Telnyx; carries no mail.","uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"warmup":{"type":"object","description":"Warmup ramp state for a dedicated IP.","properties":{"started_at":{"oneOf":[{"type":"string","format":"date-time","description":"When `start_warmup` was called. Null before warm-up starts and after release.","uniqueKey":"data.warmup.started_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When `start_warmup` was called. Null before warm-up starts and after release.","uniqueKey":"data.warmup.started_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.warmup.started_at","typeLabel":"string\u003cdate-time> | null"},"progress":{"type":"integer","description":"Ramp progress (0-100): the share of the 28 send-day schedule completed. Only UTC days on which the IP sent mail count. Set to 100 when the ramp completes, automatically or through `complete_warmup`. On an `active` IP this value is informational and can keep an earlier value after a suspension is lifted.","minimum":0,"maximum":100,"uniqueKey":"data.warmup.progress","typeLabel":"integer"},"daily_cap":{"oneOf":[{"type":"integer","minimum":1,"description":"Daily cap of the current ramp stage. Null until the scheduler arms the first stage, and cleared when the ramp completes, automatically or through `complete_warmup`. On an `active` IP this value is informational and can keep an earlier stage cap after a suspension is lifted; it does not limit sending.","uniqueKey":"data.warmup.daily_cap.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"Daily cap of the current ramp stage. Null until the scheduler arms the first stage, and cleared when the ramp completes, automatically or through `complete_warmup`. On an `active` IP this value is informational and can keep an earlier stage cap after a suspension is lifted; it does not limit sending.","uniqueKey":"data.warmup.daily_cap.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.warmup.daily_cap","typeLabel":"integer | null"},"paused":{"type":"boolean","description":"True while the ramp is paused.","uniqueKey":"data.warmup.paused","typeLabel":"boolean"},"paused_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the ramp was paused. Null when not paused.","uniqueKey":"data.warmup.paused_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the ramp was paused. Null when not paused.","uniqueKey":"data.warmup.paused_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.warmup.paused_at","typeLabel":"string\u003cdate-time> | null"},"today":{"oneOf":[{"type":"object","description":"Today's warmup allowance report card (current UTC day). Null outside the warmup window (before start_warmup, after release/suspension). `active` IPs report the ramp-complete allowance, except as described for `cap`.","properties":{"day":{"type":"string","format":"date","description":"The UTC day this snapshot describes (warmup caps reset at UTC midnight).","uniqueKey":"data.warmup.today.oneOf.0.day","typeLabel":"string\u003cdate>"},"cap":{"oneOf":[{"type":"integer","description":"The day's allowance cap. Null when the ramp has not opened yet (day 0: the scheduler has not armed a stage cap) — distinct from a spent day, which reports the cap with remaining 0. `active` IPs report `100000000`, the ramp-complete cap; `complete_warmup` applies it to the current day immediately. A day's allowance created before the IP became `active` can keep its stored `cap` and `remaining` until the next first-attempt send refreshes them.","uniqueKey":"data.warmup.today.oneOf.0.cap.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The day's allowance cap. Null when the ramp has not opened yet (day 0: the scheduler has not armed a stage cap) — distinct from a spent day, which reports the cap with remaining 0. `active` IPs report `100000000`, the ramp-complete cap; `complete_warmup` applies it to the current day immediately. A day's allowance created before the IP became `active` can keep its stored `cap` and `remaining` until the next first-attempt send refreshes them.","uniqueKey":"data.warmup.today.oneOf.0.cap.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.warmup.today.oneOf.0.cap","typeLabel":"integer | null"},"granted":{"type":"integer","description":"First-attempt sends released from warmup hold so far today. Delivery retries never lease allowance and are not counted.","uniqueKey":"data.warmup.today.oneOf.0.granted","typeLabel":"integer"},"remaining":{"oneOf":[{"type":"integer","description":"Headroom left today. A queued send held by the daily cap is explained by remaining == 0; null mirrors cap (ramp not open yet). On an `active` IP whose `cap` is below `100000000`, remaining == 0 is a stored allowance and does not block the next eligible first-attempt send.","uniqueKey":"data.warmup.today.oneOf.0.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Headroom left today. A queued send held by the daily cap is explained by remaining == 0; null mirrors cap (ramp not open yet). On an `active` IP whose `cap` is below `100000000`, remaining == 0 is a stored allowance and does not block the next eligible first-attempt send.","uniqueKey":"data.warmup.today.oneOf.0.remaining.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.warmup.today.oneOf.0.remaining","typeLabel":"integer | null"}},"uniqueKey":"data.warmup.today.oneOf.0","typeLabel":"object"},{"type":"null","description":"Today's warmup allowance report card (current UTC day). Null outside the warmup window (before start_warmup, after release/suspension). `active` IPs report the ramp-complete allowance, except as described for `cap`.","properties":{"day":{"type":"string","format":"date","description":"The UTC day this snapshot describes (warmup caps reset at UTC midnight)."},"cap":{"oneOf":[{"type":"integer","description":"The day's allowance cap. Null when the ramp has not opened yet (day 0: the scheduler has not armed a stage cap) — distinct from a spent day, which reports the cap with remaining 0. `active` IPs report `100000000`, the ramp-complete cap; `complete_warmup` applies it to the current day immediately. A day's allowance created before the IP became `active` can keep its stored `cap` and `remaining` until the next first-attempt send refreshes them."},{"type":"null","description":"The day's allowance cap. Null when the ramp has not opened yet (day 0: the scheduler has not armed a stage cap) — distinct from a spent day, which reports the cap with remaining 0. `active` IPs report `100000000`, the ramp-complete cap; `complete_warmup` applies it to the current day immediately. A day's allowance created before the IP became `active` can keep its stored `cap` and `remaining` until the next first-attempt send refreshes them."}]},"granted":{"type":"integer","description":"First-attempt sends released from warmup hold so far today. Delivery retries never lease allowance and are not counted."},"remaining":{"oneOf":[{"type":"integer","description":"Headroom left today. A queued send held by the daily cap is explained by remaining == 0; null mirrors cap (ramp not open yet). On an `active` IP whose `cap` is below `100000000`, remaining == 0 is a stored allowance and does not block the next eligible first-attempt send."},{"type":"null","description":"Headroom left today. A queued send held by the daily cap is explained by remaining == 0; null mirrors cap (ramp not open yet). On an `active` IP whose `cap` is below `100000000`, remaining == 0 is a stored allowance and does not block the next eligible first-attempt send."}]}},"uniqueKey":"data.warmup.today.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.warmup.today","typeLabel":"object | null"}},"uniqueKey":"data.warmup","typeLabel":"object"},"billing":{"type":"object","description":"Monthly recurring charge (MRC) state for the IP's current allocation.","properties":{"status":{"type":"string","enum":["not_started","pending","in_progress","active","stopping","stopped","stop_failed","failed"],"description":"`not_started`: no charge recorded for the current allocation. `pending`: the charge is queued. `in_progress`: the charge is being created. `active`: the MRC is active. `stopping`: release requested; the MRC stop is being processed. `stopped`: the MRC has stopped. `stop_failed`: the MRC stop failed and the charge remains. `failed`: the charge could not be created.","uniqueKey":"data.billing.status","typeLabel":"enum\u003cstring>"},"charged":{"type":"boolean","description":"True when `status` is `active`, `stopping`, or `stop_failed`. An IP carries mail only after its charge has been created.","uniqueKey":"data.billing.charged","typeLabel":"boolean"}},"uniqueKey":"data.billing","typeLabel":"object"},"provisioning_status":{"type":"string","enum":["not_applicable","pending_ptr","pending_dns","dns_confirmed","dns_lost"],"description":"Same value as `provisioning.dns_status`.","uniqueKey":"data.provisioning_status","typeLabel":"enum\u003cstring>"},"provisioning":{"type":"object","description":"Read-only status of the Telnyx-managed PTR record. No customer action is required to complete it.","properties":{"dns_status":{"type":"string","enum":["not_applicable","pending_ptr","pending_dns","dns_confirmed","dns_lost"],"description":"`dns_confirmed`: the PTR is forward-confirmed and `dns_confirmed_at` is set. `pending_ptr`: the PTR record is not yet in place. `pending_dns`: the PTR record is waiting for forward confirmation. `dns_lost`: a previously confirmed PTR no longer confirms, or the PTR request was abandoned before it ever confirmed (`ptr_request_state` is `abandoned`); the IP carries no mail until DNS is confirmed. `not_applicable`: the IP is released or has no PTR record on file.","uniqueKey":"data.provisioning.dns_status","typeLabel":"enum\u003cstring>"},"ptr_request_state":{"oneOf":[{"type":"string","enum":["pending","pr_open","merged","confirmed","failed","abandoned",null],"description":"State of the Telnyx PTR change: `pending`, `pr_open`, `merged`, `confirmed`, `failed`, or `abandoned`. Informational.","uniqueKey":"data.provisioning.ptr_request_state.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["pending","pr_open","merged","confirmed","failed","abandoned",null],"description":"State of the Telnyx PTR change: `pending`, `pr_open`, `merged`, `confirmed`, `failed`, or `abandoned`. Informational.","uniqueKey":"data.provisioning.ptr_request_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.provisioning.ptr_request_state","typeLabel":"enum\u003cstring> | null"},"ptr_request_pr_url":{"oneOf":[{"type":"string","description":"Reference to the Telnyx PTR change request, when one exists. Informational.","uniqueKey":"data.provisioning.ptr_request_pr_url.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reference to the Telnyx PTR change request, when one exists. Informational.","uniqueKey":"data.provisioning.ptr_request_pr_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.provisioning.ptr_request_pr_url","typeLabel":"string | null"},"checklist":{"type":"object","properties":{"ptr_requested":{"type":"boolean","uniqueKey":"data.provisioning.checklist.ptr_requested","typeLabel":"boolean"},"ptr_authored":{"type":"boolean","uniqueKey":"data.provisioning.checklist.ptr_authored","typeLabel":"boolean"},"ptr_merged":{"type":"boolean","uniqueKey":"data.provisioning.checklist.ptr_merged","typeLabel":"boolean"},"forward_confirmed":{"type":"boolean","uniqueKey":"data.provisioning.checklist.forward_confirmed","typeLabel":"boolean"}},"description":"Informational progress flags for the Telnyx-managed PTR. They do not gate `start_warmup`; use `dns_status` to check whether the IP can carry mail.","uniqueKey":"data.provisioning.checklist","typeLabel":"object"}},"uniqueKey":"data.provisioning","typeLabel":"object"},"ptr_hostname":{"oneOf":[{"type":"string","description":"Telnyx-managed reverse DNS (PTR) hostname of the IP, in the form `mta-\u003ca-b-c-d>.msgtelnyx.com`. Also used as the EHLO hostname when sending from the IP. Managed by Telnyx and cannot be changed through the API.","uniqueKey":"data.ptr_hostname.oneOf.0","typeLabel":"string"},{"type":"null","description":"Telnyx-managed reverse DNS (PTR) hostname of the IP, in the form `mta-\u003ca-b-c-d>.msgtelnyx.com`. Also used as the EHLO hostname when sending from the IP. Managed by Telnyx and cannot be changed through the API.","uniqueKey":"data.ptr_hostname.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.ptr_hostname","typeLabel":"string | null"},"dns_confirmed_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the PTR hostname was forward-confirmed (PTR → hostname → A record → this IP). The IP carries mail only while this is set.","uniqueKey":"data.dns_confirmed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the PTR hostname was forward-confirmed (PTR → hostname → A record → this IP). The IP carries mail only while this is set.","uniqueKey":"data.dns_confirmed_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dns_confirmed_at","typeLabel":"string\u003cdate-time> | null"},"quarantine_until":{"oneOf":[{"type":"string","format":"date-time","description":"Set on release to 30 days after `released_at`. The address is not returned to stock before this time.","uniqueKey":"data.quarantine_until.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Set on release to 30 days after `released_at`. The address is not returned to stock before this time.","uniqueKey":"data.quarantine_until.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.quarantine_until","typeLabel":"string\u003cdate-time> | null"},"released_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the IP was released. Null until release.","uniqueKey":"data.released_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the IP was released. Null until release.","uniqueKey":"data.released_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.released_at","typeLabel":"string\u003cdate-time> | null"},"suspension_reason":{"oneOf":[{"type":"string","description":"Reason Telnyx recorded when suspending the IP. Null unless `status` is `suspended`.","uniqueKey":"data.suspension_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reason Telnyx recorded when suspending the IP. Null unless `status` is `suspended`.","uniqueKey":"data.suspension_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.suspension_reason","typeLabel":"string | null"},"created_at":{"type":"string","format":"date-time","uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"uniqueKey":"","typeLabel":"object"},"example":{"data":{"id":"6a7f9a30-1234-4b5c-8d9e-0f1a2b3c4d5e","record_type":"dedicated_ip","ip_address":"64.16.239.170","ip_version":"ipv4","pool_id":null,"region":"ewr-nj1","status":"provisioning","warmup":{"started_at":null,"progress":0,"daily_cap":null,"paused":false,"paused_at":null,"today":null},"billing":{"status":"pending","charged":false},"provisioning_status":"dns_confirmed","provisioning":{"dns_status":"dns_confirmed","ptr_request_state":"confirmed","ptr_request_pr_url":null,"checklist":{"ptr_requested":true,"ptr_authored":false,"ptr_merged":true,"forward_confirmed":true}},"ptr_hostname":"mta-64-16-239-170.msgtelnyx.com","dns_confirmed_at":"2026-10-14T20:12:41.552310Z","quarantine_until":null,"released_at":null,"suspension_reason":null,"created_at":"2026-09-30T02:03:09.474123Z","updated_at":"2026-10-14T20:30:00.000000Z"}},"examples":{"Example":{"title":"Example","value":{"data":{"id":"6a7f9a30-1234-4b5c-8d9e-0f1a2b3c4d5e","record_type":"dedicated_ip","ip_address":"64.16.239.170","ip_version":"ipv4","pool_id":null,"region":"ewr-nj1","status":"provisioning","warmup":{"started_at":null,"progress":0,"daily_cap":null,"paused":false,"paused_at":null,"today":null},"billing":{"status":"pending","charged":false},"provisioning_status":"dns_confirmed","provisioning":{"dns_status":"dns_confirmed","ptr_request_state":"confirmed","ptr_request_pr_url":null,"checklist":{"ptr_requested":true,"ptr_authored":false,"ptr_merged":true,"forward_confirmed":true}},"ptr_hostname":"mta-64-16-239-170.msgtelnyx.com","dns_confirmed_at":"2026-10-14T20:12:41.552310Z","quarantine_until":null,"released_at":null,"suspension_reason":null,"created_at":"2026-09-30T02:03:09.474123Z","updated_at":"2026-10-14T20:30:00.000000Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"8aaf50b7-1ad4-4a36-9cca-f607ca003f90":{"description":"Malformed request, or a missing or invalid `Idempotency-Key` header","content":{"application/json":{"schema":{"type":"object","description":"Telnyx v2 error envelope.","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"title":{"type":"string","uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string"},"parameter":{"type":"string","uniqueKey":"errors.items.[INDEX].source.parameter","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"Idempotency-Key header is required.","source":{"pointer":"/header/Idempotency-Key"}}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10015","title":"Bad Request","detail":"Idempotency-Key header is required.","source":{"pointer":"/header/Idempotency-Key"}}]}}},"exampleType":"examples"}},"exampleType":"examples"},"fcfb5825-c423-41c0-94b1-6b8b667f305f":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","description":"Telnyx v2 error envelope.","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"title":{"type":"string","uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string"},"parameter":{"type":"string","uniqueKey":"errors.items.[INDEX].source.parameter","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"\u003cstring>","title":"\u003cstring>","detail":"\u003cstring>","source":{"pointer":"\u003cstring>","parameter":"\u003cstring>"}}]}}},"exampleType":"generated"}},"exampleType":"generated"},"489e9c00-e643-4b1c-a337-f77bdc52940e":{"description":"Forbidden - the account is not eligible to purchase dedicated IPs (eligible: verified, enterprise, legacy)","content":{"application/json":{"schema":{"type":"object","description":"Telnyx v2 error envelope.","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"title":{"type":"string","uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string"},"parameter":{"type":"string","uniqueKey":"errors.items.[INDEX].source.parameter","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10008","title":"Forbidden","detail":"Dedicated IP purchases require a verified or enterprise account"}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10008","title":"Forbidden","detail":"Dedicated IP purchases require a verified or enterprise account"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"58f85e20-02a3-4398-8dbc-fc5b3c782c0e":{"description":"A `region` or `ip_version` selector is unsupported, empty, `null`, or not a string. Nothing was allocated or added to the waitlist. `source.pointer` names the field and `detail` lists the supported values. One field is reported per response, `region` first.","content":{"application/json":{"schema":{"type":"object","description":"Telnyx v2 error envelope.","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"title":{"type":"string","uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string"},"parameter":{"type":"string","uniqueKey":"errors.items.[INDEX].source.parameter","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"unsupportedRegion":{"title":"unsupportedRegion","value":{"errors":[{"code":"10015","title":"Validation Failed","detail":"region is not available for purchase (available: ewr-nj1)","source":{"pointer":"/data/attributes/region"}}]}},"unsupportedIpVersion":{"title":"unsupportedIpVersion","value":{"errors":[{"code":"10015","title":"Validation Failed","detail":"ip_version is not available for purchase (available: ipv4)","source":{"pointer":"/data/attributes/ip_version"}}]}},"nonStringSelector":{"title":"nonStringSelector","value":{"errors":[{"code":"10015","title":"Validation Failed","detail":"region must be a string (available: ewr-nj1)","source":{"pointer":"/data/attributes/region"}}]}}},"exampleType":"examples"}},"exampleType":"examples"},"6948632a-5819-477e-8e46-84383e14fa96":{"description":"Out of stock (no available IP, or none matching the supplied `region` and `ip_version`) or admission capacity exceeded. meta carries capacity/waitlist details and retry_after_seconds.","content":{"application/json":{"schema":{"type":"object","description":"429 envelope with machine-readable capacity or waitlist meta.","properties":{"errors":{"type":"array","items":{"type":"object","required":["code","title","detail"],"properties":{"code":{"type":"string","enum":["10001","10015","500","10007","10008","10020","40901"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"title":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"meta":{"type":"object","properties":{"retry_after_seconds":{"type":"integer","isRequired":true,"uniqueKey":"meta.retry_after_seconds","typeLabel":"integer"},"capacity":{"oneOf":[{"type":"integer","uniqueKey":"meta.capacity.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"meta.capacity.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.capacity","typeLabel":"integer | null"},"used":{"oneOf":[{"type":"integer","uniqueKey":"meta.used.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"meta.used.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.used","typeLabel":"integer | null"},"remaining":{"oneOf":[{"type":"integer","uniqueKey":"meta.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"meta.remaining.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.remaining","typeLabel":"integer | null"},"waitlist":{"oneOf":[{"type":"boolean","description":"True when the request was recorded on the waitlist.","uniqueKey":"meta.waitlist.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the request was recorded on the waitlist.","uniqueKey":"meta.waitlist.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.waitlist","typeLabel":"boolean | null"}},"required":["retry_after_seconds"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["errors","meta"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10020","title":"Rate Limit Exceeded","detail":"No dedicated IPs are currently available for purchase. Your request can be added to the waitlist — retry after 300 seconds."}],"meta":{"retry_after_seconds":300,"waitlist":true}},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10020","title":"Rate Limit Exceeded","detail":"No dedicated IPs are currently available for purchase. Your request can be added to the waitlist — retry after 300 seconds."}],"meta":{"retry_after_seconds":300,"waitlist":true}}}},"exampleType":"examples"}},"exampleType":"examples"},"cb35ec6d-3556-4748-9a59-d443b5d168b8":{"description":"Billing is unavailable, the admission capacity could not be read, or the waitlist could not be recorded. Nothing was allocated; retry shortly.","content":{"application/json":{"schema":{"type":"object","description":"Telnyx v2 error envelope.","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"title":{"type":"string","uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string"},"parameter":{"type":"string","uniqueKey":"errors.items.[INDEX].source.parameter","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10031","title":"Service Unavailable","detail":"Dedicated IP Billing is unavailable — the purchase was not allocated; retry shortly"}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10031","title":"Service Unavailable","detail":"Dedicated IP Billing is unavailable — the purchase was not allocated; retry shortly"}]}}},"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":"Purchase a dedicated IP - Telnyx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T13:57:23.406Z","originalFileLocation":"api-reference/dedicated-ips/purchase-a-dedicated-ip.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=\"Purchase a dedicated sending IP. Requires a verified, enterprise, or legacy account, and an Idempotency-Key header: a request without the header returns 400 (code 10015) and allocates nothing. Telnyx allocates the next available IP from stock. The optional region and ip_version fields each restrict which stock IP is allocated; they never change the allocated IP\u0026#x27;s metadata. An omitted field applies no restriction for that field, and omitting the body applies neither restriction. An unsupported selector value returns 422; a supported value that matches no available IP returns 429 and records the request on the waitlist. Billing: $14/month/IP, charged as a monthly recurring charge (MRC) from purchase. The IP is returned in provisioning status with a Telnyx-managed PTR hostname and carries no mail until you call start_warmup and add it to a pool that routes mail.\">\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=\"Purchase a dedicated IP - 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/dedicated-ips/purchase-a-dedicated-ip\">\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=Dedicated+IPs+API\u0026amp;title=Purchase+a+dedicated+IP\u0026amp;description=Purchase+a+dedicated+sending+IP.+Requires+a+verified%2C+enterprise%2C+or+legacy+account%2C+and+an+%60Idempotency-Key%60+header%3A+a+request+without+the+header+returns+%60400%60\u0026amp;theme=203f74ffadd35d8bb68c8ebf\u0026amp;signature=abc31d811eb90cdfd77809a0d977144903b7dedabf408e22c6f3914ab43b185e\">\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=\"Purchase a dedicated IP - 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=Dedicated+IPs+API\u0026amp;title=Purchase+a+dedicated+IP\u0026amp;description=Purchase+a+dedicated+sending+IP.+Requires+a+verified%2C+enterprise%2C+or+legacy+account%2C+and+an+%60Idempotency-Key%60+header%3A+a+request+without+the+header+returns+%60400%60\u0026amp;theme=203f74ffadd35d8bb68c8ebf\u0026amp;signature=abc31d811eb90cdfd77809a0d977144903b7dedabf408e22c6f3914ab43b185e\">\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/dedicated-ips/purchase-a-dedicated-ip\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/dedicated-ips/purchase-a-dedicated-ip.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/dedicated-ips/purchase-a-dedicated-ip#webpage\",\"url\":\"https://developers.telnyx.com/api-reference/dedicated-ips/purchase-a-dedicated-ip\",\"name\":\"Purchase a dedicated IP\",\"description\":\"Purchase a dedicated sending IP. Requires a verified, enterprise, or legacy account, and an Idempotency-Key header: a request without the header returns 400 (code 10015) and allocates nothing. Telnyx allocates the next available IP from stock. The optional region and ip_version fields each restrict which stock IP is allocated; they never change the allocated IP's metadata. An omitted field applies no restriction for that field, and omitting the body applies neither restriction. An unsupported selector value returns 422; a supported value that matches no available IP returns 429 and records the request on the waitlist. Billing: $14/month/IP, charged as a monthly recurring charge (MRC) from purchase. The IP is returned in provisioning status with a Telnyx-managed PTR hostname and carries no mail until you call start_warmup and add it to a pool that routes mail.\",\"dateModified\":\"2026-10-29T13:57:23.406Z\",\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.telnyx.com/api-reference/dedicated-ips/purchase-a-dedicated-ip#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.telnyx.com/api-reference/dedicated-ips/purchase-a-dedicated-ip#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deliverability\",\"item\":\"https://developers.telnyx.com/docs/messaging/email/deliverability\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Purchase a dedicated IP\",\"item\":\"https://developers.telnyx.com/api-reference/dedicated-ips/purchase-a-dedicated-ip\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.telnyx.com/api-reference/dedicated-ips/purchase-a-dedicated-ip#apireference\",\"headline\":\"Purchase a dedicated IP\",\"name\":\"Purchase a dedicated IP\",\"description\":\"Purchase a dedicated sending IP. Requires a verified, enterprise, or legacy account, and an Idempotency-Key header: a request without the header returns 400 (code 10015) and allocates nothing. Telnyx allocates the next available IP from stock. The optional region and ip_version fields each restrict which stock IP is allocated; they never change the allocated IP's metadata. An omitted field applies no restriction for that field, and omitting the body applies neither restriction. An unsupported selector value returns 422; a supported value that matches no available IP returns 429 and records the request on the waitlist. Billing: $14/month/IP, charged as a monthly recurring charge (MRC) from purchase. The IP is returned in provisioning status with a Telnyx-managed PTR hostname and carries no mail until you call start_warmup and add it to a pool that routes mail.\",\"url\":\"https://developers.telnyx.com/api-reference/dedicated-ips/purchase-a-dedicated-ip\",\"mainEntityOfPage\":{\"@id\":\"https://developers.telnyx.com/api-reference/dedicated-ips/purchase-a-dedicated-ip#webpage\"},\"dateModified\":\"2026-10-29T13:57:23.406Z\",\"publisher\":{\"@id\":\"https://telnyx.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"}}]}\u003c/script>","agentPointerHref":"/api-reference/dedicated-ips/purchase-a-dedicated-ip.md","siteName":"Telnyx","nav":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/docs/overview"}]},"products":[{"product":"Home","icon":"house","pages":[{"title":"Home","href":"/docs/overview"}]},{"product":"Other APIs","icon":"ellipsis","pages":[{"title":"Other APIs","href":"/docs/other-apis"}]},{"product":"Agent Platform","icon":"circle-nodes","pages":[{"title":"Agent Platform","href":"/docs/agent-platform"}]},{"product":"AI","icon":"microchip-ai","pages":[{"title":"AI","href":"/docs/inference/models"}]},{"product":"Voice","icon":"waveform","pages":[{"title":"Voice","href":"/docs/voice/overview"}]},{"product":"Compute","icon":"server","pages":[{"title":"Compute","href":"/docs/edge-compute/platform-overview"}]},{"product":"Storage","icon":"hard-drive","pages":[{"title":"Storage","href":"/docs/cloud-storage/overview"}]},{"product":"Virtual Private Cloud","icon":"cloud","pages":[{"title":"Virtual Private Cloud","href":"/docs/virtual-private-cloud"}]},{"product":"Calling","icon":"phone","pages":[{"title":"Calling","href":"/docs/voice/programmable-voice/voice-api-fundamentals"}]},{"product":"Messaging","icon":"message","tabs":[{"tab":"SMS \u0026 MMS","icon":"comment-sms","pages":[{"title":"SMS \u0026 MMS","href":"/docs/messaging/messages/send-message"}]},{"tab":"Email","icon":"envelope","groups":[{"group":"Getting Started","pages":[{"title":"Email API Overview","sidebarTitle":"Overview","href":"/docs/messaging/email/overview"},{"title":"Send Your First Email","sidebarTitle":"Send Your First Email","href":"/docs/messaging/email/quickstart/index"}]},{"group":"Sending Email","pages":[{"title":"Sending Email with the Telnyx API","sidebarTitle":"Email API Guide","href":"/docs/messaging/email/send-email/index"},{"title":"SMTP Protocol Contract","sidebarTitle":"SMTP Protocol Contract","href":"/docs/messaging/email/smtp-protocol-contract/index"},{"title":"Batch Sending","sidebarTitle":"Batch Sending","href":"/docs/messaging/email/batch-sending/index"},{"title":"Migrate to Telnyx Email","sidebarTitle":"Migrate to Telnyx","href":"/docs/messaging/email/migrate-to-telnyx/index"},{"title":"SMTP Migration Guides","sidebarTitle":"SMTP Migration","href":"/docs/messaging/email/smtp-migration-guides/index"},{"title":"Rate Limits \u0026 Quotas","sidebarTitle":"Rate Limits","href":"/docs/messaging/email/rate-limits/index"},{"title":"Error Codes","sidebarTitle":"Error Codes","href":"/docs/messaging/email/error-codes/index"},{"group":"Email API","pages":[{"title":"Delete email messages by address","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json delete /email_messages","href":"/api-reference/email-messages/delete-email-messages-by-address"},{"title":"List email messages","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json get /email_messages","href":"/api-reference/email-messages/list-email-messages"},{"title":"Create or send an email message","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_messages","href":"/api-reference/email-messages/create-or-send-an-email-message"},{"title":"Create a batch of email messages","deprecated":null,"version":null,"openapi":"/openapi/source/external/email/email.json post /email_messages/batch","href":"/api-reference/email-messages/create-a-batch-of-email-messages"},{"title":"List events for an email message","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","description":"Purchase dedicated sending IP addresses for your Telnyx email traffic, with automated warm-up and per-IP pools.","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","description":"List the dedicated sending IPs owned by the account, newest first. Narrow the list with `filter[status]`, `filter[pool_id]`, and `filter[region]`; supplied filters combine, so an IP must match every one. An empty value, or a nested or array value such as `filter[status][]=active`, applies no filter, and other `filter[...]` keys are ignored. A value that no IP can match (an unknown status, a `pool_id` that is not a UUID, or a value containing a NUL byte) returns an empty list, not an error.","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":"Purchase a dedicated IP - Telnyx","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["10e4515597","c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["BannerMarkdown-DV3Oq1fY.js","dist-C-XZBk9h.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-D3Isdib3.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-C4GwDT3_.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","AssistantPageLink--qIqmmVG.js"]}