Create a new DIR under the given enterprise. The DIR starts in draft status; it must be submitted (POST .../submit) and approved by Telnyx before any phone number can be attached.
Field rules
display_name: 1–35 characters, no emoji or whitespace-only strings; this is the name shown to recipients.
call_reasons: 1–10 strings, each ≤64 characters; describe why your business calls customers (e.g. ‘Appointment reminders’, ‘Billing inquiries’). Validate the wording against POST /call_reasons/validate.
logo_url: HTTPS URL (max 128 chars) to a 256×256 BMP (max 1 MB). The image is downloaded and hashed at submission time.
documents: up to 20 entries; each document_id must be obtained by uploading the file via the Telnyx Documents API first. Within one DIR a document_id may only appear once.
certify_brand_is_accurate, certify_no_shaft_content, certify_ip_ownership MUST all be true.
Failure modes
400 - validation error; errors[].source.pointer names the offending field.
400 - a certification field is not true.
400 - Branded Calling not activated on this enterprise (see POST /enterprises/{id}/branded_calling).
400 - the enterprise is a BPO enterprise (role_typebpo), which cannot own a DIR.
400 - a bpo_authorizations entry is not an approved BPO enterprise in your account, or its loa_document_id could not be validated.
404 - enterprise does not exist or does not belong to your account.
503 - the document check is temporarily unavailable; retry.
POST
/
enterprises
/
{enterprise_id}
/
dir
JavaScript
import Telnyx from 'telnyx';const client = new Telnyx({ apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted});const dir = await client.enterprises.dir.create('4a6192a4-573d-446d-b3ce-aff9117272a6', { authorizer_email: '[email protected]', authorizer_name: 'Sam Owner', certify_brand_is_accurate: true, certify_ip_ownership: true, certify_no_shaft_content: true, display_name: 'Acme Plumbing', call_reasons: ['Appointment reminders', 'Billing inquiries'],});console.log(dir.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
)
dir = client.enterprises.dir.create(
enterprise_id="4a6192a4-573d-446d-b3ce-aff9117272a6",
authorizer_email="[email protected]",
authorizer_name="Sam Owner",
certify_brand_is_accurate=True,
certify_ip_ownership=True,
certify_no_shaft_content=True,
display_name="Acme Plumbing",
call_reasons=["Appointment reminders", "Billing inquiries"],
reselling=False,
)
print(dir.data)
Name of the person at your enterprise who is authorizing this DIR registration. Must be a real individual (used for audit and trademark-claim contests).
Optional https:// URL that receives webhook notifications when this DIR's compliance review completes (rejection outcomes include structured rejection reasons). Maximum 2048 characters.
Optional. Approved BPO (Business Process Outsourcer) accounts on your organization authorized to place branded calls for this DIR, each with the signed Letter of Authorization the Brand Owner granted it. Each authorization starts pending and takes effect only after an admin reviews its Letter of Authorization. Omit or send an empty list to authorize no BPO on this DIR. Maximum 10.
import Telnyx from 'telnyx';const client = new Telnyx({ apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted});const dir = await client.enterprises.dir.create('4a6192a4-573d-446d-b3ce-aff9117272a6', { authorizer_email: '[email protected]', authorizer_name: 'Sam Owner', certify_brand_is_accurate: true, certify_ip_ownership: true, certify_no_shaft_content: true, display_name: 'Acme Plumbing', call_reasons: ['Appointment reminders', 'Billing inquiries'],});console.log(dir.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
)
dir = client.enterprises.dir.create(
enterprise_id="4a6192a4-573d-446d-b3ce-aff9117272a6",
authorizer_email="[email protected]",
authorizer_name="Sam Owner",
certify_brand_is_accurate=True,
certify_ip_ownership=True,
certify_no_shaft_content=True,
display_name="Acme Plumbing",
call_reasons=["Appointment reminders", "Billing inquiries"],
reselling=False,
)
print(dir.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":""},"chroma":{"liveDeploymentHistoryId":"6ae3a9c8fe0d011f8977c594","collectionId":"ecade0c4-baf0-449c-87ae-9e2b7c33edab","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae3a9c8fe0d011f8977c594"},"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":"6ae3ac210a6b341ae299a8c9","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Calling","count":592},{"language":"default","tag":"API Reference","count":552},{"language":"default","tag":"Other APIs","count":402},{"language":"default","tag":"AI","count":382},{"language":"default","tag":"Messaging","count":353},{"language":"default","tag":"Numbers","count":287},{"language":"default","tag":"Agent Platform","count":218},{"language":"default","tag":"Assistants","count":202},{"language":"default","tag":"Voice API","count":178},{"language":"default","tag":"SMS \u0026 MMS","count":149}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"per-site-search-delta","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":"editor-private-page-search","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"[class*=sidebar] [class*=badge],[class*=sidebar] [class*=tag],nav [class*=badge],nav [class*=tag]{font-size:.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\"]),#navbar div:has(>div>.nav-tabs>a.nav-tabs-item:first-child:last-child){display:none}.nav-tabs a.nav-tabs-item:not([aria-current=location]){display:none}#mobile-nav #navigation-items>div:has(>div>button[aria-haspopup=menu]),#mobile-nav [data-component-part=products-selector-trigger],#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 .tx-dir-suite-head,#mobile-nav .tx-mobile-directory a{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}}:is(#tx-directory, .tx-mobile-directory){margin:0 0 .5rem;padding:0 .5rem 0 1rem}:is(#tx-directory, .tx-mobile-directory) .tx-dir-label{font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;opacity:.55;margin: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:.875rem;line-height:1.25rem;padding:.35rem .5rem;border-radius:.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/.04)}:is(#tx-directory, .tx-mobile-directory) .tx-dir-link[aria-current=page]{color:#00b688;background:0 0;box-shadow:none;font-weight:400;text-shadow:-.2px 0 0 currentColor,.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/.06)}html.dark :is(#tx-directory, .tx-mobile-directory) .tx-dir-link[aria-current=page]{color:#5eead4;background:0 0;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:.45;background:0 0;color:inherit}:is(#tx-directory, .tx-mobile-directory) .tx-dir-soon sup{font-size:.6rem;line-height:1;letter-spacing:.05em;text-transform:uppercase;margin-left:.4rem;vertical-align:super}:is(#tx-directory, .tx-mobile-directory) .tx-dir-suite{margin-bottom:.15rem}:is(#tx-directory, .tx-mobile-directory) .tx-dir-suite-head{display:flex;align-items:center;cursor:pointer;user-select:none;font-size:.875rem;line-height:1.25rem;font-weight:500;padding:.35rem .5rem;border-radius:.375rem;color:rgb(55 65 81)}html.dark :is(#tx-directory, .tx-mobile-directory) .tx-dir-suite-head,html.dark :is(#tx-directory, .tx-mobile-directory) li a{color:rgb(156 163 175)}:is(#tx-directory, .tx-mobile-directory) .tx-dir-suite-head:hover,:is(#tx-directory, .tx-mobile-directory) li a:hover{color:rgb(17 24 39);background:rgb(0 0 0/.04)}html.dark :is(#tx-directory, .tx-mobile-directory) .tx-dir-suite-head:hover,html.dark :is(#tx-directory, .tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head,html.dark :is(#tx-directory, .tx-mobile-directory) li a:hover{color:rgb(229 231 235);background:rgb(255 255 255/.06)}:is(#tx-directory, .tx-mobile-directory) .tx-dir-suite-head::after{content:'';width:.42rem;height:.42rem;margin-left:auto;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s;flex-shrink:0;opacity:.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/.04);font-weight:600}: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:.15rem 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:.875rem;line-height:1.25rem;padding:.3rem .5rem .3rem 1.6rem;border-radius:.375rem;color:rgb(107 114 128);text-decoration:none}:is(#tx-directory, .tx-mobile-directory) .tx-dir-section-item{font-weight:500}:is(#tx-directory, .tx-mobile-directory) .tx-dir-icon{display:inline-block;width:1rem;height:1rem;flex-shrink:0;margin-right:.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-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:-.01em;margin:1.2rem 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:.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 .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 .2rem;opacity:.85}.txd-main .txd-p{margin:.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-follow-up a:hover,.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 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-area-select,.rm-collapse,.rm-search input{min-height:2.5rem;font-size:.875rem}.rm-area-select,.rm-clear,.rm-collapse,.rm-empty button,.rm-search input{color:inherit;background:0 0;border:1px solid var(--rm-border);border-radius:.5rem;font:inherit}.rm-empty button{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{padding:.5rem .75rem}.rm-clear,.rm-collapse,.rm-empty button{font-weight:650;cursor:pointer}.rm-empty button{padding:.5rem .75rem}.rm-area-select:focus-visible,.rm-clear:focus-visible,.rm-collapse:focus-visible,.rm-empty button:focus-visible,.rm-search input:focus-visible{outline:2px solid #00b688;outline-offset:2px;border-color:#00b688;box-shadow:none!important}.rm-clear:hover,.rm-collapse:hover,.rm-empty button:hover{color:#08785d;background:var(--rm-soft)}.dark .rm-clear:hover,.dark .rm-collapse: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-clear[hidden],.rm-collapse[hidden],.rm-empty[hidden],.rm-explorer h2[hidden],.rm-resource-list tbody tr[hidden],.rm-resource-list[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:0 0;border:0;cursor:pointer}.rm-section-toggle:focus-visible,.rm-section-toggle:hover{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-resource-list thead,.rm-shortcut{display:none}.rm-area-select,.rm-area-wrap{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 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 a,.rm-resource-list tbody td code{min-width:0;white-space:normal!important;overflow-wrap:anywhere}}@media (prefers-reduced-motion:reduce){.rm-explorer *,.rm-explorer ::after,.rm-explorer ::before{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%}}.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/display-identity-records/create-a-display-identity-record-dir","slug":"/api-reference/display-identity-records/create-a-display-identity-record-dir","pageMetadata":{"title":"Create a Display Identity Record (DIR)","description":"Create a new DIR under the given enterprise. The DIR starts in `draft` status; it must be submitted (`POST .../submit`) and approved by Telnyx before any phone number can be attached.\n\n**Field rules**\n- `display_name`: 1–35 characters, no emoji or whitespace-only strings; this is the name shown to recipients.\n- `call_reasons`: 1–10 strings, each ≤64 characters; describe why your business calls customers (e.g. 'Appointment reminders', 'Billing inquiries'). Validate the wording against `POST /call_reasons/validate`.\n- `logo_url`: HTTPS URL (max 128 chars) to a 256×256 BMP (max 1 MB). The image is downloaded and hashed at submission time.\n- `documents`: up to 20 entries; each `document_id` must be obtained by uploading the file via the Telnyx Documents API first. Within one DIR a `document_id` may only appear once.\n- `certify_brand_is_accurate`, `certify_no_shaft_content`, `certify_ip_ownership` MUST all be `true`.\n\n**Failure modes**\n- `400` - validation error; `errors[].source.pointer` names the offending field.\n- `400` - a certification field is not `true`.\n- `400` - Branded Calling not activated on this enterprise (see `POST /enterprises/{id}/branded_calling`).\n- `400` - the enterprise is a BPO enterprise (`role_type` `bpo`), which cannot own a DIR.\n- `400` - a `bpo_authorizations` entry is not an approved BPO enterprise in your account, or its `loa_document_id` could not be validated.\n- `404` - enterprise does not exist or does not belong to your account.\n- `503` - the document check is temporarily unavailable; retry.","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /enterprises/{enterprise_id}/dir","href":"/api-reference/display-identity-records/create-a-display-identity-record-dir","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Create a new DIR under the given enterprise. The DIR starts in \", _jsx(_components.code, {\n children: \"draft\"\n }), \" status; it must be submitted (\", _jsx(_components.code, {\n children: \"POST .../submit\"\n }), \") and approved by Telnyx before any phone number can be attached.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Field rules\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"display_name\"\n }), \": 1–35 characters, no emoji or whitespace-only strings; this is the name shown to recipients.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call_reasons\"\n }), \": 1–10 strings, each ≤64 characters; describe why your business calls customers (e.g. ‘Appointment reminders’, ‘Billing inquiries’). Validate the wording against \", _jsx(_components.code, {\n children: \"POST /call_reasons/validate\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"logo_url\"\n }), \": HTTPS URL (max 128 chars) to a 256×256 BMP (max 1 MB). The image is downloaded and hashed at submission time.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"documents\"\n }), \": up to 20 entries; each \", _jsx(_components.code, {\n children: \"document_id\"\n }), \" must be obtained by uploading the file via the Telnyx Documents API first. Within one DIR a \", _jsx(_components.code, {\n children: \"document_id\"\n }), \" may only appear once.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"certify_brand_is_accurate\"\n }), \", \", _jsx(_components.code, {\n children: \"certify_no_shaft_content\"\n }), \", \", _jsx(_components.code, {\n children: \"certify_ip_ownership\"\n }), \" MUST all be \", _jsx(_components.code, {\n children: \"true\"\n }), \".\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Failure modes\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"400\"\n }), \" - validation error; \", _jsx(_components.code, {\n children: \"errors[].source.pointer\"\n }), \" names the offending field.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"400\"\n }), \" - a certification field is not \", _jsx(_components.code, {\n children: \"true\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"400\"\n }), \" - Branded Calling not activated on this enterprise (see \", _jsx(_components.code, {\n children: \"POST /enterprises/{id}/branded_calling\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"400\"\n }), \" - the enterprise is a BPO enterprise (\", _jsx(_components.code, {\n children: \"role_type\"\n }), \" \", _jsx(_components.code, {\n children: \"bpo\"\n }), \"), which cannot own a DIR.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"400\"\n }), \" - a \", _jsx(_components.code, {\n children: \"bpo_authorizations\"\n }), \" entry is not an approved BPO enterprise in your account, or its \", _jsx(_components.code, {\n children: \"loa_document_id\"\n }), \" could not be validated.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"404\"\n }), \" - enterprise does not exist or does not belong to your account.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"503\"\n }), \" - the document check is temporarily unavailable; retry.\"]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create a Display Identity Record (DIR)","description":"Create a new DIR under the given enterprise. The DIR starts in `draft` status; it must be submitted (`POST .../submit`) and approved by Telnyx before any phone number can be attached.\n\n**Field rules**\n- `display_name`: 1–35 characters, no emoji or whitespace-only strings; this is the name shown to recipients.\n- `call_reasons`: 1–10 strings, each ≤64 characters; describe why your business calls customers (e.g. 'Appointment reminders', 'Billing inquiries'). Validate the wording against `POST /call_reasons/validate`.\n- `logo_url`: HTTPS URL (max 128 chars) to a 256×256 BMP (max 1 MB). The image is downloaded and hashed at submission time.\n- `documents`: up to 20 entries; each `document_id` must be obtained by uploading the file via the Telnyx Documents API first. Within one DIR a `document_id` may only appear once.\n- `certify_brand_is_accurate`, `certify_no_shaft_content`, `certify_ip_ownership` MUST all be `true`.\n\n**Failure modes**\n- `400` - validation error; `errors[].source.pointer` names the offending field.\n- `400` - a certification field is not `true`.\n- `400` - Branded Calling not activated on this enterprise (see `POST /enterprises/{id}/branded_calling`).\n- `400` - the enterprise is a BPO enterprise (`role_type` `bpo`), which cannot own a DIR.\n- `400` - a `bpo_authorizations` entry is not an approved BPO enterprise in your account, or its `loa_document_id` could not be validated.\n- `404` - enterprise does not exist or does not belong to your account.\n- `503` - the document check is temporarily unavailable; retry.","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /enterprises/{enterprise_id}/dir","href":"/api-reference/display-identity-records/create-a-display-identity-record-dir","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/7ad13bb6588be22f/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/3d8fe29c5f30f1bc/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/3de33ceedb29f568/home-directory.js","/_mintlify/custom/telnyx/da7a630a1adf8a7a/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":{"summary":"Create a Display Identity Record (DIR)","description":"Create a new DIR under the given enterprise. The DIR starts in `draft` status; it must be submitted (`POST .../submit`) and approved by Telnyx before any phone number can be attached.\n\n**Field rules**\n- `display_name`: 1–35 characters, no emoji or whitespace-only strings; this is the name shown to recipients.\n- `call_reasons`: 1–10 strings, each ≤64 characters; describe why your business calls customers (e.g. 'Appointment reminders', 'Billing inquiries'). Validate the wording against `POST /call_reasons/validate`.\n- `logo_url`: HTTPS URL (max 128 chars) to a 256×256 BMP (max 1 MB). The image is downloaded and hashed at submission time.\n- `documents`: up to 20 entries; each `document_id` must be obtained by uploading the file via the Telnyx Documents API first. Within one DIR a `document_id` may only appear once.\n- `certify_brand_is_accurate`, `certify_no_shaft_content`, `certify_ip_ownership` MUST all be `true`.\n\n**Failure modes**\n- `400` - validation error; `errors[].source.pointer` names the offending field.\n- `400` - a certification field is not `true`.\n- `400` - Branded Calling not activated on this enterprise (see `POST /enterprises/{id}/branded_calling`).\n- `400` - the enterprise is a BPO enterprise (`role_type` `bpo`), which cannot own a DIR.\n- `400` - a `bpo_authorizations` entry is not an approved BPO enterprise in your account, or its `loa_document_id` could not be validated.\n- `404` - enterprise does not exist or does not belong to your account.\n- `503` - the document check is temporarily unavailable; retry.","operationId":"createDir","tags":["Display Identity Records"],"parameters":["e1d723cd-969e-40e7-85f7-bd216dac4af1"],"requestBody":"3f3a8009-dbec-4dae-9347-142e206eba51","responses":{"201":"1322958a-13a5-4af6-96e0-b8fb3f0bd5b6","default":"c421f95a-441c-4b9e-a8eb-faafdb29878a","4XX":"6835d907-71ce-4f90-ab1d-baf994baf88b"},"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 dir = await client.enterprises.dir.create('4a6192a4-573d-446d-b3ce-aff9117272a6', {\n authorizer_email: '[email protected]',\n authorizer_name: 'Sam Owner',\n certify_brand_is_accurate: true,\n certify_ip_ownership: true,\n certify_no_shaft_content: true,\n display_name: 'Acme Plumbing',\n call_reasons: ['Appointment reminders', 'Billing inquiries'],\n});\n\nconsole.log(dir.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)\ndir = client.enterprises.dir.create(\n enterprise_id=\"4a6192a4-573d-446d-b3ce-aff9117272a6\",\n authorizer_email=\"[email protected]\",\n authorizer_name=\"Sam Owner\",\n certify_brand_is_accurate=True,\n certify_ip_ownership=True,\n certify_no_shaft_content=True,\n display_name=\"Acme Plumbing\",\n call_reasons=[\"Appointment reminders\", \"Billing inquiries\"],\n reselling=False,\n)\nprint(dir.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\tdir, err := client.Enterprises.Dir.New(\n\t\tcontext.TODO(),\n\t\t\"4a6192a4-573d-446d-b3ce-aff9117272a6\",\n\t\ttelnyx.EnterpriseDirNewParams{\n\t\t\tAuthorizerEmail: \"[email protected]\",\n\t\t\tAuthorizerName: \"Sam Owner\",\n\t\t\tCertifyBrandIsAccurate: true,\n\t\t\tCertifyIPOwnership: true,\n\t\t\tCertifyNoShaftContent: true,\n\t\t\tDisplayName: \"Acme Plumbing\",\n\t\t\tCallReasons: []string{\"Appointment reminders\", \"Billing inquiries\"},\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", dir.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.enterprises.dir.DirCreateParams;\nimport com.telnyx.sdk.models.enterprises.dir.DirCreateResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n DirCreateParams params = DirCreateParams.builder()\n .enterpriseId(\"4a6192a4-573d-446d-b3ce-aff9117272a6\")\n .authorizerEmail(\"[email protected]\")\n .authorizerName(\"Sam Owner\")\n .certifyBrandIsAccurate(DirCreateParams.CertifyBrandIsAccurate.TRUE)\n .certifyIpOwnership(DirCreateParams.CertifyIpOwnership.TRUE)\n .certifyNoShaftContent(DirCreateParams.CertifyNoShaftContent.TRUE)\n .displayName(\"Acme Plumbing\")\n .build();\n DirCreateResponse dir = client.enterprises().dir().create(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\ndir = telnyx.enterprises.dir.create(\n \"4a6192a4-573d-446d-b3ce-aff9117272a6\",\n authorizer_email: \"[email protected]\",\n authorizer_name: \"Sam Owner\",\n certify_brand_is_accurate: true,\n certify_ip_ownership: true,\n certify_no_shaft_content: true,\n display_name: \"Acme Plumbing\"\n)\n\nputs(dir)"},{"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 $dir = $client->enterprises->dir->create(\n '4a6192a4-573d-446d-b3ce-aff9117272a6',\n authorizerEmail: '[email protected]',\n authorizerName: 'Sam Owner',\n certifyBrandIsAccurate: true,\n certifyIPOwnership: true,\n certifyNoShaftContent: true,\n displayName: 'Acme Plumbing',\n callReasons: ['Appointment reminders', 'Billing inquiries'],\n documents: [\n [\n 'documentID' => '2a7e8337-e803-4057-a4ae-26c40eb0bc6c',\n 'documentType' => 'business_registration',\n 'description' => 'Certificate of incorporation.',\n ],\n ],\n logoURL: 'https://acmeplumbing.example.com/logo-256.bmp',\n reselling: false,\n );\n\n var_dump($dir);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx enterprises:dir create \\\n --api-key 'My API Key' \\\n --enterprise-id 4a6192a4-573d-446d-b3ce-aff9117272a6 \\\n --authorizer-email [email protected] \\\n --authorizer-name 'Sam Owner' \\\n --certify-brand-is-accurate true \\\n --certify-ip-ownership true \\\n --certify-no-shaft-content true \\\n --display-name 'Acme Plumbing'"}],"method":"post","type":"path","servers":["62f7e5fa-27e1-4c04-9cff-62e50a3390a2"],"security":["1c1e4728-920b-41b2-af99-204405ee4449"],"path":"/enterprises/{enterprise_id}/dir","baseUrlOptions":["https://api.telnyx.com/v2"],"title":"Create a Display Identity Record (DIR)","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 dir = await client.enterprises.dir.create('4a6192a4-573d-446d-b3ce-aff9117272a6', {\n authorizer_email: '[email protected]',\n authorizer_name: 'Sam Owner',\n certify_brand_is_accurate: true,\n certify_ip_ownership: true,\n certify_no_shaft_content: true,\n display_name: 'Acme Plumbing',\n call_reasons: ['Appointment reminders', 'Billing inquiries'],\n});\n\nconsole.log(dir.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)\ndir = client.enterprises.dir.create(\n enterprise_id=\"4a6192a4-573d-446d-b3ce-aff9117272a6\",\n authorizer_email=\"[email protected]\",\n authorizer_name=\"Sam Owner\",\n certify_brand_is_accurate=True,\n certify_ip_ownership=True,\n certify_no_shaft_content=True,\n display_name=\"Acme Plumbing\",\n call_reasons=[\"Appointment reminders\", \"Billing inquiries\"],\n reselling=False,\n)\nprint(dir.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\tdir, err := client.Enterprises.Dir.New(\n\t\tcontext.TODO(),\n\t\t\"4a6192a4-573d-446d-b3ce-aff9117272a6\",\n\t\ttelnyx.EnterpriseDirNewParams{\n\t\t\tAuthorizerEmail: \"[email protected]\",\n\t\t\tAuthorizerName: \"Sam Owner\",\n\t\t\tCertifyBrandIsAccurate: true,\n\t\t\tCertifyIPOwnership: true,\n\t\t\tCertifyNoShaftContent: true,\n\t\t\tDisplayName: \"Acme Plumbing\",\n\t\t\tCallReasons: []string{\"Appointment reminders\", \"Billing inquiries\"},\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", dir.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.enterprises.dir.DirCreateParams;\nimport com.telnyx.sdk.models.enterprises.dir.DirCreateResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n DirCreateParams params = DirCreateParams.builder()\n .enterpriseId(\"4a6192a4-573d-446d-b3ce-aff9117272a6\")\n .authorizerEmail(\"[email protected]\")\n .authorizerName(\"Sam Owner\")\n .certifyBrandIsAccurate(DirCreateParams.CertifyBrandIsAccurate.TRUE)\n .certifyIpOwnership(DirCreateParams.CertifyIpOwnership.TRUE)\n .certifyNoShaftContent(DirCreateParams.CertifyNoShaftContent.TRUE)\n .displayName(\"Acme Plumbing\")\n .build();\n DirCreateResponse dir = client.enterprises().dir().create(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\ndir = telnyx.enterprises.dir.create(\n \"4a6192a4-573d-446d-b3ce-aff9117272a6\",\n authorizer_email: \"[email protected]\",\n authorizer_name: \"Sam Owner\",\n certify_brand_is_accurate: true,\n certify_ip_ownership: true,\n certify_no_shaft_content: true,\n display_name: \"Acme Plumbing\"\n)\n\nputs(dir)"},{"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 $dir = $client->enterprises->dir->create(\n '4a6192a4-573d-446d-b3ce-aff9117272a6',\n authorizerEmail: '[email protected]',\n authorizerName: 'Sam Owner',\n certifyBrandIsAccurate: true,\n certifyIPOwnership: true,\n certifyNoShaftContent: true,\n displayName: 'Acme Plumbing',\n callReasons: ['Appointment reminders', 'Billing inquiries'],\n documents: [\n [\n 'documentID' => '2a7e8337-e803-4057-a4ae-26c40eb0bc6c',\n 'documentType' => 'business_registration',\n 'description' => 'Certificate of incorporation.',\n ],\n ],\n logoURL: 'https://acmeplumbing.example.com/logo-256.bmp',\n reselling: false,\n );\n\n var_dump($dir);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx enterprises:dir create \\\n --api-key 'My API Key' \\\n --enterprise-id 4a6192a4-573d-446d-b3ce-aff9117272a6 \\\n --authorizer-email [email protected] \\\n --authorizer-name 'Sam Owner' \\\n --certify-brand-is-accurate true \\\n --certify-ip-ownership true \\\n --certify-no-shaft-content true \\\n --display-name 'Acme Plumbing'"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"e1d723cd-969e-40e7-85f7-bd216dac4af1":{"name":"enterprise_id","in":"path","description":"The enterprise id. Lowercase UUID.","required":true,"schema":{"type":"string","format":"uuid","example":"4a6192a4-573d-446d-b3ce-aff9117272a6","isRequired":true,"description":"The enterprise id. Lowercase UUID.","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["display_name","certify_brand_is_accurate","certify_no_shaft_content","certify_ip_ownership","authorizer_name","authorizer_email","call_reasons"],"properties":{"display_name":{"type":"string","minLength":1,"maxLength":35,"description":"Name shown to call recipients. No emoji; not whitespace-only.","example":"Acme Plumbing","isRequired":true,"uniqueKey":"display_name","typeLabel":"string"},"certify_brand_is_accurate":{"type":"boolean","description":"Certification that the DIR information is accurate. Must be `true` for the DIR to be submitted for vetting.","example":true,"enum":[true],"isRequired":true,"uniqueKey":"certify_brand_is_accurate","typeLabel":"enum\u003cboolean>"},"certify_no_shaft_content":{"type":"boolean","description":"Must be `true`. Confirms this DIR is not used for SHAFT content (Sex, Hate, Alcohol, Firearms, Tobacco) where prohibited.","example":true,"enum":[true],"isRequired":true,"uniqueKey":"certify_no_shaft_content","typeLabel":"enum\u003cboolean>"},"certify_ip_ownership":{"type":"boolean","description":"Must be `true`. Confirms ownership of any logos/trademarks shown.","example":true,"enum":[true],"isRequired":true,"uniqueKey":"certify_ip_ownership","typeLabel":"enum\u003cboolean>"},"authorizer_name":{"type":"string","maxLength":255,"example":"Sam Owner","description":"Name of the person at your enterprise who is authorizing this DIR registration. Must be a real individual (used for audit and trademark-claim contests).","isRequired":true,"uniqueKey":"authorizer_name","typeLabel":"string"},"authorizer_email":{"type":"string","format":"email","example":"[email protected]","description":"Contact email of the authorizer. Telnyx may send verification or infringement-notice email here; use a monitored mailbox.","isRequired":true,"uniqueKey":"authorizer_email","typeLabel":"string\u003cemail>"},"call_reasons":{"type":"array","items":{"type":"string","maxLength":64,"uniqueKey":"call_reasons.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":10,"description":"1–10 reasons your business calls customers. Validate phrasing against `POST /call_reasons/validate`.","example":["Appointment reminders","Billing inquiries"],"isRequired":true,"uniqueKey":"call_reasons","typeLabel":"string[]"},"reselling":{"type":"boolean","description":"Set to true if your organization places calls on behalf of other enterprises (BPO/reseller).","default":false,"example":false,"uniqueKey":"reselling","typeLabel":"boolean"},"logo_url":{"type":"string","format":"uri","maxLength":128,"description":"Publicly accessible HTTPS URL (max 128 chars) to a 256x256 BMP logo (max 1 MB).","example":"https://acmeplumbing.example.com/logo-256.bmp","uniqueKey":"logo_url","typeLabel":"string\u003curi>"},"documents":{"type":"array","items":{"type":"object","required":["document_id","document_type"],"properties":{"document_id":{"type":"string","format":"uuid","description":"Id returned by the Telnyx Documents API after you upload the file (upload via `POST /v2/documents`; see https://developers.telnyx.com/api/documents).","example":"2a7e8337-e803-4057-a4ae-26c40eb0bc6c","isRequired":true,"uniqueKey":"documents.items.[INDEX].document_id","typeLabel":"string\u003cuuid>"},"document_type":{"type":"string","enum":["letter_of_authorization","business_registration","articles_of_incorporation","certificate_of_good_standing","tax_document","ein_letter","trademark_registration","website_ownership","business_license","professional_license","government_id","utility_bill","bank_statement","business_credit_report","bank_reference_letter","other"],"example":"business_registration","description":"Type of supporting document. Pick the closest match to what the file actually contains; `other` triggers manual vetting and may slow approval. The matching short_name reference list is at `GET /v2/dir/document_types`.","isRequired":true,"uniqueKey":"documents.items.[INDEX].document_type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":255,"description":"An optional note describing this document, for example what it proves.","example":"Certificate of incorporation.","uniqueKey":"documents.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"documents.items.[INDEX]","typeLabel":"object"},"maxItems":20,"description":"Supporting documents. Each `document_id` may appear at most once on a DIR.","uniqueKey":"documents","typeLabel":"object[]"},"webhook_url":{"oneOf":[{"type":"string","format":"uri","maxLength":2048,"description":"Optional `https://` URL that receives webhook notifications when this DIR's compliance review completes (rejection outcomes include structured rejection reasons). Maximum 2048 characters.","example":"https://mapleridge.example.com/webhooks/branded-calling","uniqueKey":"webhook_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","maxLength":2048,"description":"Optional `https://` URL that receives webhook notifications when this DIR's compliance review completes (rejection outcomes include structured rejection reasons). Maximum 2048 characters.","example":"https://mapleridge.example.com/webhooks/branded-calling","uniqueKey":"webhook_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"webhook_url","typeLabel":"string\u003curi> | null"},"bpo_authorizations":{"type":"array","items":{"type":"object","description":"One authorization to include when creating or updating a DIR: an approved BPO (Business Process Outsourcer) account plus the signed Letter of Authorization the Brand Owner granted it.","required":["bpo_enterprise_id","loa_document_id"],"properties":{"bpo_enterprise_id":{"type":"string","format":"uuid","description":"Enterprise id of an approved BPO (Business Process Outsourcer) account on your organization to authorize for this DIR.","example":"4a6192a4-573d-446d-b3ce-aff9117272a6","isRequired":true,"uniqueKey":"bpo_authorizations.items.[INDEX].bpo_enterprise_id","typeLabel":"string\u003cuuid>"},"loa_document_id":{"type":"string","format":"uuid","description":"Id of the signed Letter of Authorization document (uploaded via the Telnyx Documents API) in which the Brand Owner authorizes this BPO.","example":"2a7e8337-e803-4057-a4ae-26c40eb0bc6c","isRequired":true,"uniqueKey":"bpo_authorizations.items.[INDEX].loa_document_id","typeLabel":"string\u003cuuid>"}},"uniqueKey":"bpo_authorizations.items.[INDEX]","typeLabel":"object"},"maxItems":10,"description":"Optional. Approved BPO (Business Process Outsourcer) accounts on your organization authorized to place branded calls for this DIR, each with the signed Letter of Authorization the Brand Owner granted it. Each authorization starts `pending` and takes effect only after an admin reviews its Letter of Authorization. Omit or send an empty list to authorize no BPO on this DIR. Maximum 10.","uniqueKey":"bpo_authorizations","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"minimal":{"title":"minimal","description":"The smallest payload that creates a DIR. You can attach the logo and supporting documents later via PATCH; the DIR can also be submitted without a logo, but a verified DIR with no logo will not display caller artwork.","value":{"display_name":"Acme Plumbing","reselling":false,"certify_brand_is_accurate":true,"certify_no_shaft_content":true,"certify_ip_ownership":true,"authorizer_name":"Sam Owner","authorizer_email":"[email protected]","call_reasons":["Appointment reminders","Billing inquiries"]}},"full":{"title":"full","description":"Replace `logo_url` with a publicly-reachable HTTPS URL to your own 256×256 BMP. Replace `document_id` with the id returned by the Telnyx Documents API after you upload your supporting document.","value":{"display_name":"Acme Plumbing","reselling":false,"certify_brand_is_accurate":true,"certify_no_shaft_content":true,"certify_ip_ownership":true,"authorizer_name":"Sam Owner","authorizer_email":"[email protected]","logo_url":"https://acmeplumbing.example.com/logo-256.bmp","call_reasons":["Appointment reminders","Billing inquiries"],"documents":[{"document_id":"2a7e8337-e803-4057-a4ae-26c40eb0bc6c","document_type":"business_registration","description":"Certificate of incorporation."}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"1322958a-13a5-4af6-96e0-b8fb3f0bd5b6":{"description":"DIR created in `draft` status.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"16635d38-75a6-4481-82e8-69af60e05011","readOnly":true,"uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"enterprise_id":{"type":"string","format":"uuid","example":"4a6192a4-573d-446d-b3ce-aff9117272a6","uniqueKey":"data.enterprise_id","typeLabel":"string\u003cuuid>"},"display_name":{"type":"string","example":"Acme Plumbing","uniqueKey":"data.display_name","typeLabel":"string"},"reselling":{"type":"boolean","example":false,"uniqueKey":"data.reselling","typeLabel":"boolean"},"certify_brand_is_accurate":{"type":"boolean","example":true,"uniqueKey":"data.certify_brand_is_accurate","typeLabel":"boolean"},"certify_no_shaft_content":{"type":"boolean","example":true,"uniqueKey":"data.certify_no_shaft_content","typeLabel":"boolean"},"certify_ip_ownership":{"type":"boolean","example":true,"uniqueKey":"data.certify_ip_ownership","typeLabel":"boolean"},"authorizer_name":{"oneOf":[{"type":"string","example":"Sam Owner","uniqueKey":"data.authorizer_name.oneOf.0","typeLabel":"string"},{"type":"null","example":"Sam Owner","uniqueKey":"data.authorizer_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.authorizer_name","typeLabel":"string | null"},"authorizer_email":{"oneOf":[{"type":"string","format":"email","example":"[email protected]","uniqueKey":"data.authorizer_email.oneOf.0","typeLabel":"string\u003cemail>"},{"type":"null","format":"email","example":"[email protected]","uniqueKey":"data.authorizer_email.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.authorizer_email","typeLabel":"string\u003cemail> | null"},"logo_url":{"oneOf":[{"type":"string","format":"uri","example":"https://acmeplumbing.example.com/logo-256.bmp","uniqueKey":"data.logo_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","example":"https://acmeplumbing.example.com/logo-256.bmp","uniqueKey":"data.logo_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.logo_url","typeLabel":"string\u003curi> | null"},"call_reasons":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string","maxLength":64,"example":"Appointment reminders","uniqueKey":"data.call_reasons.items.[INDEX].reason","typeLabel":"string"},"created_at":{"type":"string","format":"date-time","example":"2026-04-26T18:06:51.940749Z","readOnly":true,"uniqueKey":"data.call_reasons.items.[INDEX].created_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.call_reasons.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.call_reasons","typeLabel":"object[]"},"documents":{"oneOf":[{"type":"array","items":{"type":"object","required":["document_id","document_type"],"properties":{"document_id":{"type":"string","format":"uuid","description":"Id returned by the Telnyx Documents API after you upload the file (upload via `POST /v2/documents`; see https://developers.telnyx.com/api/documents).","example":"2a7e8337-e803-4057-a4ae-26c40eb0bc6c","isRequired":true,"uniqueKey":"data.documents.oneOf.0.items.[INDEX].document_id","typeLabel":"string\u003cuuid>"},"document_type":{"type":"string","enum":["letter_of_authorization","business_registration","articles_of_incorporation","certificate_of_good_standing","tax_document","ein_letter","trademark_registration","website_ownership","business_license","professional_license","government_id","utility_bill","bank_statement","business_credit_report","bank_reference_letter","other"],"example":"business_registration","description":"Type of supporting document. Pick the closest match to what the file actually contains; `other` triggers manual vetting and may slow approval. The matching short_name reference list is at `GET /v2/dir/document_types`.","isRequired":true,"uniqueKey":"data.documents.oneOf.0.items.[INDEX].document_type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":255,"description":"An optional note describing this document, for example what it proves.","example":"Certificate of incorporation.","uniqueKey":"data.documents.oneOf.0.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.documents.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.documents.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","required":["document_id","document_type"],"properties":{"document_id":{"type":"string","format":"uuid","description":"Id returned by the Telnyx Documents API after you upload the file (upload via `POST /v2/documents`; see https://developers.telnyx.com/api/documents).","example":"2a7e8337-e803-4057-a4ae-26c40eb0bc6c"},"document_type":{"type":"string","enum":["letter_of_authorization","business_registration","articles_of_incorporation","certificate_of_good_standing","tax_document","ein_letter","trademark_registration","website_ownership","business_license","professional_license","government_id","utility_bill","bank_statement","business_credit_report","bank_reference_letter","other"],"example":"business_registration","description":"Type of supporting document. Pick the closest match to what the file actually contains; `other` triggers manual vetting and may slow approval. The matching short_name reference list is at `GET /v2/dir/document_types`."},"description":{"type":"string","maxLength":255,"description":"An optional note describing this document, for example what it proves.","example":"Certificate of incorporation."}}},"uniqueKey":"data.documents.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.documents","typeLabel":"object[] | null"},"status":{"type":"string","enum":["draft","submitted","in_review","verified","rejected","unsuccessful","suspended","expired","infringement_claimed","permanently_rejected","delete_requested"],"description":"DIR lifecycle status.\n- `draft` - newly created; editable; not yet submitted.\n- `submitted` / `in_review` - Telnyx is reviewing.\n- `verified` - approved; phone numbers may be attached.\n- `rejected` - Telnyx rejected this submission; `rejection_reasons` is populated; customer can edit and resubmit.\n- `unsuccessful` - system-side error during processing; customer can edit and resubmit.\n- `suspended` - temporarily disabled (e.g. by an active infringement claim).\n- `expired` - verification expired; customer must resubmit.\n- `infringement_claimed` - a trademark/impersonation claim is open against this DIR.\n- `permanently_rejected` - terminal; cannot be resubmitted.\n- `delete_requested` - you have requested deletion; the DIR still exists and Telnyx is completing the removal (de-registration and cleanup). A verified DIR keeps serving its branded identity, and keeps billing, until the removal finishes.","uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"rejection_reasons":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","example":"documentation_incomplete","uniqueKey":"data.rejection_reasons.oneOf.0.items.[INDEX].code","typeLabel":"string"},"title":{"type":"string","example":"Documentation incomplete","uniqueKey":"data.rejection_reasons.oneOf.0.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","example":"Provided documents do not establish business identity.","uniqueKey":"data.rejection_reasons.oneOf.0.items.[INDEX].detail","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Customer-visible free-text comment from the Telnyx vetting team. Only the first entry of `rejection_reasons` carries this; the rest are `null`.","example":"Please re-upload a clearer scan of the certificate.","uniqueKey":"data.rejection_reasons.oneOf.0.items.[INDEX].message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Customer-visible free-text comment from the Telnyx vetting team. Only the first entry of `rejection_reasons` carries this; the rest are `null`.","example":"Please re-upload a clearer scan of the certificate.","uniqueKey":"data.rejection_reasons.oneOf.0.items.[INDEX].message.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.rejection_reasons.oneOf.0.items.[INDEX].message","typeLabel":"string | null"}},"uniqueKey":"data.rejection_reasons.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Populated when `status` is `rejected`; cleared on `/submit` or successful approval.","uniqueKey":"data.rejection_reasons.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"code":{"type":"string","example":"documentation_incomplete"},"title":{"type":"string","example":"Documentation incomplete"},"detail":{"type":"string","example":"Provided documents do not establish business identity."},"message":{"oneOf":[{"type":"string","description":"Customer-visible free-text comment from the Telnyx vetting team. Only the first entry of `rejection_reasons` carries this; the rest are `null`.","example":"Please re-upload a clearer scan of the certificate."},{"type":"null","description":"Customer-visible free-text comment from the Telnyx vetting team. Only the first entry of `rejection_reasons` carries this; the rest are `null`.","example":"Please re-upload a clearer scan of the certificate."}]}}},"description":"Populated when `status` is `rejected`; cleared on `/submit` or successful approval.","uniqueKey":"data.rejection_reasons.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.rejection_reasons","typeLabel":"object[] | null"},"rejected_at":{"oneOf":[{"type":"string","format":"date-time","readOnly":true,"uniqueKey":"data.rejected_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","readOnly":true,"uniqueKey":"data.rejected_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.rejected_at","typeLabel":"string\u003cdate-time> | null"},"created_at":{"type":"string","format":"date-time","example":"2026-04-26T18:06:51.940749Z","readOnly":true,"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","example":"2026-04-26T18:09:24.785211Z","readOnly":true,"uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"},"submitted_at":{"oneOf":[{"type":"string","format":"date-time","example":"2026-04-26T18:07:03.716411Z","readOnly":true,"uniqueKey":"data.submitted_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","example":"2026-04-26T18:07:03.716411Z","readOnly":true,"uniqueKey":"data.submitted_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.submitted_at","typeLabel":"string\u003cdate-time> | null"},"verified_at":{"oneOf":[{"type":"string","format":"date-time","example":"2026-04-26T18:07:29.537926Z","readOnly":true,"uniqueKey":"data.verified_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","example":"2026-04-26T18:07:29.537926Z","readOnly":true,"uniqueKey":"data.verified_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.verified_at","typeLabel":"string\u003cdate-time> | null"},"expiring_at":{"oneOf":[{"type":"string","format":"date-time","example":"2027-04-26T18:07:29.537981Z","readOnly":true,"uniqueKey":"data.expiring_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","example":"2027-04-26T18:07:29.537981Z","readOnly":true,"uniqueKey":"data.expiring_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.expiring_at","typeLabel":"string\u003cdate-time> | null"},"delete_requested_at":{"oneOf":[{"type":"string","format":"date-time","description":"When deletion was requested. Set once the DIR enters `delete_requested`; `null` otherwise.","example":"2026-04-27T09:12:44.201820Z","readOnly":true,"uniqueKey":"data.delete_requested_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When deletion was requested. Set once the DIR enters `delete_requested`; `null` otherwise.","example":"2026-04-27T09:12:44.201820Z","readOnly":true,"uniqueKey":"data.delete_requested_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.delete_requested_at","typeLabel":"string\u003cdate-time> | null"},"webhook_url":{"oneOf":[{"type":"string","format":"uri","description":"`https://` URL that receives webhook notifications for this DIR's compliance-review outcomes. `null` when not subscribed.","example":"https://acmehealthcare.example.com/webhooks/branded-calling","uniqueKey":"data.webhook_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"`https://` URL that receives webhook notifications for this DIR's compliance-review outcomes. `null` when not subscribed.","example":"https://acmehealthcare.example.com/webhooks/branded-calling","uniqueKey":"data.webhook_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.webhook_url","typeLabel":"string\u003curi> | null"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"id":"16635d38-75a6-4481-82e8-69af60e05011","enterprise_id":"4a6192a4-573d-446d-b3ce-aff9117272a6","display_name":"Acme Plumbing","reselling":false,"certify_brand_is_accurate":true,"certify_no_shaft_content":true,"certify_ip_ownership":true,"authorizer_name":"Sam Owner","authorizer_email":"[email protected]","logo_url":"https://acmeplumbing.example.com/logo-256.bmp","call_reasons":[{"reason":"Appointment reminders","created_at":"2026-04-26T18:06:51.940749Z"}],"documents":[{"document_id":"2a7e8337-e803-4057-a4ae-26c40eb0bc6c","document_type":"business_registration","description":"Certificate of incorporation."}],"status":"draft","rejection_reasons":[{"code":"documentation_incomplete","title":"Documentation incomplete","detail":"Provided documents do not establish business identity.","message":"Please re-upload a clearer scan of the certificate."}],"rejected_at":"2023-11-07T05:31:56Z","created_at":"2026-04-26T18:06:51.940749Z","updated_at":"2026-04-26T18:09:24.785211Z","submitted_at":"2026-04-26T18:07:03.716411Z","verified_at":"2026-04-26T18:07:29.537926Z","expiring_at":"2027-04-26T18:07:29.537981Z","delete_requested_at":"2026-04-27T09:12:44.201820Z","webhook_url":"https://acmehealthcare.example.com/webhooks/branded-calling"}}}},"exampleType":"generated"}},"exampleType":"generated"},"c421f95a-441c-4b9e-a8eb-faafdb29878a":{"description":"An error occurred. The response carries the standard Telnyx error envelope.","content":{"application/json":{"schema":{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","items":{"type":"object","required":["code","title","detail","meta"],"properties":{"code":{"type":"string","example":"10005","description":"Stable numeric Telnyx error catalog id. See `meta.url` for the full catalog entry.","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"title":{"type":"string","example":"Invalid parameters","description":"Short human-readable category, e.g. `Bad Request`, `Duplicate resource`, `Not Found`, `Forbidden`. Treat as advisory only - the stable identifier is `code`.","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","example":"field required","description":"Context-specific message describing what went wrong on this particular request. May embed offending values; do not rely on it for programmatic matching - branch on `code`.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"meta":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","example":"https://developers.telnyx.com/docs/overview/errors/10005","isRequired":true,"uniqueKey":"errors.items.[INDEX].meta.url","typeLabel":"string\u003curi>"},"pending_check_ids":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"errors.items.[INDEX].meta.pending_check_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"Set on `422 vetting_checks_incomplete` responses from `/admin/dir/{id}/approve` and `/admin/phone-number-batches/approve`. Lists the still-pending vetting check ids.","uniqueKey":"errors.items.[INDEX].meta.pending_check_ids","typeLabel":"string\u003cuuid>[]"},"pending_check_codes":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX].meta.pending_check_codes.items.[INDEX]","typeLabel":"string"},"description":"Codes of the pending vetting checks (e.g. `loa_signature_valid`).","uniqueKey":"errors.items.[INDEX].meta.pending_check_codes","typeLabel":"string[]"},"pending_check_labels":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX].meta.pending_check_labels.items.[INDEX]","typeLabel":"string"},"description":"Human-readable labels of the pending vetting checks.","uniqueKey":"errors.items.[INDEX].meta.pending_check_labels","typeLabel":"string[]"}},"description":"Carries `url` linking to the Telnyx error catalog entry for this `code`. Useful for forwarding the user to documentation.","isRequired":true,"uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object"},"source":{"type":"object","description":"Optional pointer at the offending field of the request.","properties":{"pointer":{"type":"string","example":"/body/legal_name","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string"},"parameter":{"type":"string","example":"page[size]","uniqueKey":"errors.items.[INDEX].source.parameter","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"}},"description":"A single entry in the canonical Telnyx error envelope. `code` is the stable Telnyx error catalog id; the human-readable explanation lives at `meta.url`. `detail` is a context-specific message; `source.pointer` (when present) names the offending field of the request.","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"List of one or more error entries. Order is not significant.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"description":"Canonical Telnyx error envelope. Returned on every 4xx and 5xx response from this service. `errors` is non-empty; multiple entries indicate multiple distinct problems with the same request (e.g. one entry per invalid phone number on a bulk operation).","uniqueKey":"","typeLabel":"object"},"examples":{"validation_error":{"title":"validation_error","value":{"errors":[{"code":"10005","title":"Invalid parameters","detail":"field required","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10005"},"source":{"pointer":"/body/legal_name"}}]}},"bad_request":{"title":"bad_request","description":"Returned when the request itself is well-formed but the resource is in a state that disallows this action (e.g. updating a DIR while it is being vetted, or deleting an enterprise that still has DIRs in vetting).","value":{"errors":[{"code":"10015","title":"Bad Request","detail":"Cannot update DIR in 'verified' status","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}},"not_found":{"title":"not_found","value":{"errors":[{"code":"10009","title":"Resource not found","detail":"Enterprise not found.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10009"}}]}},"conflict":{"title":"conflict","value":{"errors":[{"code":"10021","title":"Resource in use","detail":"DIR has 1 active infringement claim(s). Resolve the claim before making this change.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10021"}}]}}},"exampleType":"examples"}},"exampleType":"examples"},"6835d907-71ce-4f90-ab1d-baf994baf88b":{"description":"An error occurred. The response carries the standard Telnyx error envelope.","content":{"application/json":{"schema":{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","items":{"type":"object","required":["code","title","detail","meta"],"properties":{"code":{"type":"string","example":"10005","description":"Stable numeric Telnyx error catalog id. See `meta.url` for the full catalog entry.","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"title":{"type":"string","example":"Invalid parameters","description":"Short human-readable category, e.g. `Bad Request`, `Duplicate resource`, `Not Found`, `Forbidden`. Treat as advisory only - the stable identifier is `code`.","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","example":"field required","description":"Context-specific message describing what went wrong on this particular request. May embed offending values; do not rely on it for programmatic matching - branch on `code`.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"meta":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","example":"https://developers.telnyx.com/docs/overview/errors/10005","isRequired":true,"uniqueKey":"errors.items.[INDEX].meta.url","typeLabel":"string\u003curi>"},"pending_check_ids":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"errors.items.[INDEX].meta.pending_check_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"Set on `422 vetting_checks_incomplete` responses from `/admin/dir/{id}/approve` and `/admin/phone-number-batches/approve`. Lists the still-pending vetting check ids.","uniqueKey":"errors.items.[INDEX].meta.pending_check_ids","typeLabel":"string\u003cuuid>[]"},"pending_check_codes":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX].meta.pending_check_codes.items.[INDEX]","typeLabel":"string"},"description":"Codes of the pending vetting checks (e.g. `loa_signature_valid`).","uniqueKey":"errors.items.[INDEX].meta.pending_check_codes","typeLabel":"string[]"},"pending_check_labels":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX].meta.pending_check_labels.items.[INDEX]","typeLabel":"string"},"description":"Human-readable labels of the pending vetting checks.","uniqueKey":"errors.items.[INDEX].meta.pending_check_labels","typeLabel":"string[]"}},"description":"Carries `url` linking to the Telnyx error catalog entry for this `code`. Useful for forwarding the user to documentation.","isRequired":true,"uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object"},"source":{"type":"object","description":"Optional pointer at the offending field of the request.","properties":{"pointer":{"type":"string","example":"/body/legal_name","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string"},"parameter":{"type":"string","example":"page[size]","uniqueKey":"errors.items.[INDEX].source.parameter","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"}},"description":"A single entry in the canonical Telnyx error envelope. `code` is the stable Telnyx error catalog id; the human-readable explanation lives at `meta.url`. `detail` is a context-specific message; `source.pointer` (when present) names the offending field of the request.","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"List of one or more error entries. Order is not significant.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"description":"Canonical Telnyx error envelope. Returned on every 4xx and 5xx response from this service. `errors` is non-empty; multiple entries indicate multiple distinct problems with the same request (e.g. one entry per invalid phone number on a bulk operation).","uniqueKey":"","typeLabel":"object"},"examples":{"validation_error":{"title":"validation_error","value":{"errors":[{"code":"10005","title":"Invalid parameters","detail":"field required","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10005"},"source":{"pointer":"/body/legal_name"}}]}},"bad_request":{"title":"bad_request","description":"Returned when the request itself is well-formed but the resource is in a state that disallows this action (e.g. updating a DIR while it is being vetted, or deleting an enterprise that still has DIRs in vetting).","value":{"errors":[{"code":"10015","title":"Bad Request","detail":"Cannot update DIR in 'verified' status","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}},"not_found":{"title":"not_found","value":{"errors":[{"code":"10009","title":"Resource not found","detail":"Enterprise not found.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10009"}}]}},"conflict":{"title":"conflict","value":{"errors":[{"code":"10021","title":"Resource in use","detail":"DIR has 1 active infringement claim(s). Resolve the claim before making this change.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10021"}}]}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"1c1e4728-920b-41b2-af99-204405ee4449":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Telnyx API key. Generate one at https://portal.telnyx.com/#/app/api-keys.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"62f7e5fa-27e1-4c04-9cff-62e50a3390a2":{"url":"https://api.telnyx.com/v2","description":"Telnyx API v2 (production)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Telnyx API key. Generate one at https://portal.telnyx.com/#/app/api-keys.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Telnyx API key. Generate one at https://portal.telnyx.com/#/app/api-keys.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi/source/external/branded-calling/branded-calling.json"},"subdomain":"telnyx","siteName":"Telnyx","title":"Create a Display Identity Record (DIR) - Telnyx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-19T14:56:15.455Z","originalFileLocation":"api-reference/display-identity-records/create-a-display-identity-record-dir.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=\"Create a new DIR under the given enterprise. The DIR starts in draft status; it must be submitted (POST .../submit) and approved by Telnyx before any phone number can be attached. Field rules - display_name: 1–35 characters, no emoji or whitespace-only strings; this is the name shown to recipients. - call_reasons: 1–10 strings, each ≤64 characters; describe why your business calls customers (e.g. \u0026#x27;Appointment reminders\u0026#x27;, \u0026#x27;Billing inquiries\u0026#x27;). Validate the wording against POST /call_reasons/validate. - logo_url: HTTPS URL (max 128 chars) to a 256×256 BMP (max 1 MB). The image is downloaded and hashed at submission time. - documents: up to 20 entries; each document_id must be obtained by uploading the file via the Telnyx Documents API first. Within one DIR a document_id may only appear once. - certify_brand_is_accurate, certify_no_shaft_content, certify_ip_ownership MUST all be true. Failure modes - 400 - validation error; errors[].source.pointer names the offending field. - 400 - a certification field is not true. - 400 - Branded Calling not activated on this enterprise (see POST /enterprises/{id}/branded_calling). - 400 - the enterprise is a BPO enterprise (role_type bpo), which cannot own a DIR. - 400 - a bpo_authorizations entry is not an approved BPO enterprise in your account, or its loa_document_id could not be validated. - 404 - enterprise does not exist or does not belong to your account. - 503 - the document check is temporarily unavailable; retry.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Telnyx\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a Display Identity Record (DIR) - 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/display-identity-records/create-a-display-identity-record-dir\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://telnyx.mintlify.app/_mintlify/api/og/v2?division=Display+Identity+Records+API\u0026amp;title=Create+a+Display+Identity+Record+%28DIR%29\u0026amp;description=Create+a+new+DIR+under+the+given+enterprise.+The+DIR+starts+in+%60draft%60+status%3B+it+must+be+submitted+%28%60POST+...%2Fsubmit%60%29+and+approved+by+Telnyx+before+any+phone+\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=d60bbef57b1c285a1434280beff256743650f71cb452c3238b1e30422b690403\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create a Display Identity Record (DIR) - 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.app/_mintlify/api/og/v2?division=Display+Identity+Records+API\u0026amp;title=Create+a+Display+Identity+Record+%28DIR%29\u0026amp;description=Create+a+new+DIR+under+the+given+enterprise.+The+DIR+starts+in+%60draft%60+status%3B+it+must+be+submitted+%28%60POST+...%2Fsubmit%60%29+and+approved+by+Telnyx+before+any+phone+\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=d60bbef57b1c285a1434280beff256743650f71cb452c3238b1e30422b690403\">\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/display-identity-records/create-a-display-identity-record-dir\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/display-identity-records/create-a-display-identity-record-dir.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/display-identity-records/create-a-display-identity-record-dir#webpage\",\"url\":\"https://developers.telnyx.com/api-reference/display-identity-records/create-a-display-identity-record-dir\",\"name\":\"Create a Display Identity Record (DIR)\",\"description\":\"Create a new DIR under the given enterprise. The DIR starts in draft status; it must be submitted (POST .../submit) and approved by Telnyx before any phone number can be attached. Field rules - display_name: 1–35 characters, no emoji or whitespace-only strings; this is the name shown to recipients. - call_reasons: 1–10 strings, each ≤64 characters; describe why your business calls customers (e.g. 'Appointment reminders', 'Billing inquiries'). Validate the wording against POST /call_reasons/validate. - logo_url: HTTPS URL (max 128 chars) to a 256×256 BMP (max 1 MB). The image is downloaded and hashed at submission time. - documents: up to 20 entries; each document_id must be obtained by uploading the file via the Telnyx Documents API first. Within one DIR a document_id may only appear once. - certify_brand_is_accurate, certify_no_shaft_content, certify_ip_ownership MUST all be true. Failure modes - 400 - validation error; errors[].source.pointer names the offending field. - 400 - a certification field is not true. - 400 - Branded Calling not activated on this enterprise (see POST /enterprises/{id}/branded_calling). - 400 - the enterprise is a BPO enterprise (role_type bpo), which cannot own a DIR. - 400 - a bpo_authorizations entry is not an approved BPO enterprise in your account, or its loa_document_id could not be validated. - 404 - enterprise does not exist or does not belong to your account. - 503 - the document check is temporarily unavailable; retry.\",\"dateModified\":\"2026-10-19T14:56:15.455Z\",\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.telnyx.com/api-reference/display-identity-records/create-a-display-identity-record-dir#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.telnyx.com/api-reference/display-identity-records/create-a-display-identity-record-dir#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Branded Calling\",\"item\":\"https://developers.telnyx.com/docs/branded-calling/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API Reference\",\"item\":\"https://developers.telnyx.com/api-reference/enterprises/list-enterprises\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprises\",\"item\":\"https://developers.telnyx.com/api-reference/enterprises/list-enterprises\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Display Identity Records API\",\"item\":\"https://developers.telnyx.com/api-reference/display-identity-records/list-dirs-in-an-enterprise\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Create a Display Identity Record (DIR)\",\"item\":\"https://developers.telnyx.com/api-reference/display-identity-records/create-a-display-identity-record-dir\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.telnyx.com/api-reference/display-identity-records/create-a-display-identity-record-dir#apireference\",\"headline\":\"Create a Display Identity Record (DIR)\",\"name\":\"Create a Display Identity Record (DIR)\",\"description\":\"Create a new DIR under the given enterprise. The DIR starts in draft status; it must be submitted (POST .../submit) and approved by Telnyx before any phone number can be attached. Field rules - display_name: 1–35 characters, no emoji or whitespace-only strings; this is the name shown to recipients. - call_reasons: 1–10 strings, each ≤64 characters; describe why your business calls customers (e.g. 'Appointment reminders', 'Billing inquiries'). Validate the wording against POST /call_reasons/validate. - logo_url: HTTPS URL (max 128 chars) to a 256×256 BMP (max 1 MB). The image is downloaded and hashed at submission time. - documents: up to 20 entries; each document_id must be obtained by uploading the file via the Telnyx Documents API first. Within one DIR a document_id may only appear once. - certify_brand_is_accurate, certify_no_shaft_content, certify_ip_ownership MUST all be true. Failure modes - 400 - validation error; errors[].source.pointer names the offending field. - 400 - a certification field is not true. - 400 - Branded Calling not activated on this enterprise (see POST /enterprises/{id}/branded_calling). - 400 - the enterprise is a BPO enterprise (role_type bpo), which cannot own a DIR. - 400 - a bpo_authorizations entry is not an approved BPO enterprise in your account, or its loa_document_id could not be validated. - 404 - enterprise does not exist or does not belong to your account. - 503 - the document check is temporarily unavailable; retry.\",\"url\":\"https://developers.telnyx.com/api-reference/display-identity-records/create-a-display-identity-record-dir\",\"mainEntityOfPage\":{\"@id\":\"https://developers.telnyx.com/api-reference/display-identity-records/create-a-display-identity-record-dir#webpage\"},\"dateModified\":\"2026-10-19T14:56:15.455Z\",\"publisher\":{\"@id\":\"https://telnyx.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"}}]}\u003c/script>","siteName":"Telnyx","nav":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/docs/overview"}]},"products":[{"product":"Home","icon":"house","pages":[{"title":"Home","href":"/docs/overview"}]},{"product":"Other APIs","icon":"ellipsis","pages":[{"title":"Other APIs","href":"/docs/other-apis"}]},{"product":"Agent Platform","icon":"circle-nodes","pages":[{"title":"Agent Platform","href":"/docs/agent-platform"}]},{"product":"AI","icon":"microchip-ai","pages":[{"title":"AI","href":"/docs/inference/models"}]},{"product":"Voice","icon":"waveform","pages":[{"title":"Voice","href":"/docs/voice/overview"}]},{"product":"Compute","icon":"server","pages":[{"title":"Compute","href":"/docs/edge-compute/platform-overview"}]},{"product":"Storage","icon":"hard-drive","pages":[{"title":"Storage","href":"/docs/cloud-storage/overview"}]},{"product":"Virtual Private Cloud","icon":"cloud","pages":[{"title":"Virtual Private Cloud","href":"/docs/virtual-private-cloud"}]},{"product":"Calling","icon":"phone","tabs":[{"tab":"Voice API","icon":"phone-volume","pages":[{"title":"Voice API","href":"/docs/voice/programmable-voice/voice-api-fundamentals"}]},{"tab":"TeXML","icon":"code","pages":[{"title":"TeXML","href":"/docs/voice/programmable-voice/texml-fundamentals"}]},{"tab":"SIP Trunking","icon":"headset","pages":[{"title":"SIP Trunking","href":"/docs/voice/sip-trunking/get-started"}]},{"tab":"UAC Connections","icon":"plug","pages":[{"title":"UAC Connections","href":"/docs/voice/uac-connections"}]},{"tab":"WebRTC","icon":"browser","pages":[{"title":"WebRTC","href":"/docs/voice/webrtc/fundamentals"}]},{"tab":"Trusted Calling","icon":"shield-check","groups":[{"group":"Branded Calling","tag":"BETA","pages":[{"title":"Branded Calling","sidebarTitle":"Overview","href":"/docs/branded-calling/overview"},{"title":"Quickstart","sidebarTitle":"Quickstart","href":"/docs/branded-calling/quickstart"},{"title":"Pricing","sidebarTitle":"Pricing","href":"/docs/branded-calling/pricing"},{"group":"Enterprises","pages":[{"title":"Register an enterprise for Branded Calling","sidebarTitle":"Overview","href":"/docs/branded-calling/enterprises/index"}]},{"group":"Display Identity Records","pages":[{"title":"Create and manage Display Identity Records (DIRs)","sidebarTitle":"Overview","href":"/docs/branded-calling/brands/index"}]},{"group":"BPO (Business Process Outsourcer)","pages":[{"title":"BPO (Business Process Outsourcer) support","sidebarTitle":"Overview","href":"/docs/branded-calling/bpo/index"}]},{"group":"Phone Numbers","pages":[{"title":"Phone Numbers","sidebarTitle":"Overview","href":"/docs/branded-calling/bc-phone-numbers/index"}]},{"group":"Call Reasons","pages":[{"title":"Call Reasons","sidebarTitle":"Overview","href":"/docs/branded-calling/call-reasons/index"}]},{"group":"Terms of Service","pages":[{"title":"Terms of Service","sidebarTitle":"Overview","href":"/docs/branded-calling/terms-of-service/index"}]},{"group":"Infringement Claims","pages":[{"title":"Contest and resolve DIR infringement claims","sidebarTitle":"Overview","href":"/docs/branded-calling/infringement-claims/index"}]},{"group":"API Reference","pages":[{"group":"Enterprises","pages":[{"group":"Enterprises API","pages":[{"title":"List enterprises","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /enterprises","href":"/api-reference/enterprises/list-enterprises"},{"title":"Create an enterprise","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /enterprises","href":"/api-reference/enterprises/create-an-enterprise"},{"title":"Delete an enterprise","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json delete /enterprises/{enterprise_id}","href":"/api-reference/enterprises/delete-an-enterprise"},{"title":"Get an enterprise","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /enterprises/{enterprise_id}","href":"/api-reference/enterprises/get-an-enterprise"},{"title":"Replace an enterprise","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json put /enterprises/{enterprise_id}","href":"/api-reference/enterprises/replace-an-enterprise"},{"title":"Activate Branded Calling on an enterprise","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /enterprises/{enterprise_id}/branded_calling","href":"/api-reference/enterprises/activate-branded-calling-on-an-enterprise"}]},{"group":"Email Verification API","pages":[{"title":"Send an email-ownership verification code to an enterprise","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /enterprises/{enterprise_id}/verify_email","href":"/api-reference/email-verification/send-an-email-ownership-verification-code-to-an-enterprise"},{"title":"Confirm an enterprise email-ownership verification code","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /enterprises/{enterprise_id}/verify_email/confirm","href":"/api-reference/email-verification/confirm-an-enterprise-email-ownership-verification-code"}]},{"group":"Display Identity Records API","pages":[{"title":"List DIRs in an enterprise","description":"Return the DIRs (Display Identity Records) belonging to a single enterprise. Pagination is JSON:API style (`page[number]`, `page[size]`, max 250). Supports `filter[]` query params: `filter[status]`, `filter[display_name][contains]`, `filter[call_reason][contains]`, plus the renewal-window filters `filter[expiring_at][gte]` / `filter[expiring_at][lte]` and the convenience `filter[expiring_within_days]` (mutually exclusive with the explicit gte/lte form). Sortable by `created_at`, `updated_at`, `display_name`, `status`, `submitted_at`, `verified_at`, `expiring_at` (prefix `-` for descending; default `-created_at`).","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /enterprises/{enterprise_id}/dir","href":"/api-reference/display-identity-records/list-dirs-in-an-enterprise"},{"title":"Create a Display Identity Record (DIR)","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /enterprises/{enterprise_id}/dir","href":"/api-reference/display-identity-records/create-a-display-identity-record-dir"}]}]},{"group":"Display Identity Records","pages":[{"group":"Display Identity Records API","pages":[{"title":"List all DIRs across your enterprises","description":"Returns every DIR (Display Identity Record) you own, across all of your enterprises, as a single list. Pagination is JSON:API style (`page[number]`, `page[size]`, max 250). Supports `filter[]` query params: `filter[enterprise_id]`, `filter[status]`, `filter[display_name][contains]`, `filter[call_reason][contains]`, plus the renewal-window filters `filter[expiring_at][gte]` / `filter[expiring_at][lte]`. Sortable by `created_at`, `updated_at`, `display_name`, `status` (prefix `-` for descending; default `-created_at`).","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir","href":"/api-reference/display-identity-records/list-all-dirs-across-your-enterprises"},{"title":"Request deletion of a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json delete /dir/{dir_id}","href":"/api-reference/display-identity-records/request-deletion-of-a-dir"},{"title":"Get a DIR by id","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir/{dir_id}","href":"/api-reference/display-identity-records/get-a-dir-by-id"},{"title":"Update a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json patch /dir/{dir_id}","href":"/api-reference/display-identity-records/update-a-dir"},{"title":"Submit a DIR for vetting","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /dir/{dir_id}/submit","href":"/api-reference/display-identity-records/submit-a-dir-for-vetting"},{"title":"Render the Branded Calling LOA for a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /dir/{dir_id}/loa","href":"/api-reference/display-identity-records/render-the-branded-calling-loa-for-a-dir"},{"title":"Render the BPO Authorization LOA for a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /dir/{dir_id}/bpo_loa","href":"/api-reference/display-identity-records/render-the-bpo-authorization-loa-for-a-dir"},{"title":"List a DIR's authorized BPOs","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir/{dir_id}/bpo_authorizations","href":"/api-reference/display-identity-records/list-a-dirs-authorized-bpos"}]},{"group":"Email Verification API","pages":[{"title":"Send an email-ownership verification code","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /dir/{dir_id}/verify_email","href":"/api-reference/email-verification/send-an-email-ownership-verification-code"},{"title":"Confirm an email-ownership verification code","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /dir/{dir_id}/verify_email/confirm","href":"/api-reference/email-verification/confirm-an-email-ownership-verification-code"},{"title":"Get email-ownership verification status","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir/{dir_id}/verify_email","href":"/api-reference/email-verification/get-email-ownership-verification-status"}]},{"group":"DIR References API","pages":[{"title":"List a DIR's references","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir/{dir_id}/references","href":"/api-reference/dir-references/list-a-dirs-references"},{"title":"Submit a DIR's references","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /dir/{dir_id}/references","href":"/api-reference/dir-references/submit-a-dirs-references"},{"title":"Update a DIR reference","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json patch /dir/{dir_id}/references/{ref_type}/{slot}","href":"/api-reference/dir-references/update-a-dir-reference"}]},{"group":"Reference Data API","pages":[{"title":"List supported DIR document types","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir/document_types","href":"/api-reference/reference-data/list-supported-dir-document-types"}]},{"group":"Comments API","pages":[{"title":"List comments on a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir/{dir_id}/comments","href":"/api-reference/comments/list-comments-on-a-dir"},{"title":"Post a comment on a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /dir/{dir_id}/comments","href":"/api-reference/comments/post-a-comment-on-a-dir"}]}]},{"group":"Phone Numbers","pages":[{"group":"Phone Numbers API","pages":[{"title":"Remove phone numbers from a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json delete /dir/{dir_id}/phone_numbers","href":"/api-reference/phone-numbers/remove-phone-numbers-from-a-dir"},{"title":"List phone numbers attached to a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir/{dir_id}/phone_numbers","href":"/api-reference/phone-numbers/list-phone-numbers-attached-to-a-dir"},{"title":"Add phone numbers to a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /dir/{dir_id}/phone_numbers","href":"/api-reference/phone-numbers/add-phone-numbers-to-a-dir"}]},{"group":"Phone Number Batches API","pages":[{"title":"List phone-number batches for a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir/{dir_id}/phone_number_batches","href":"/api-reference/phone-number-batches/list-phone-number-batches-for-a-dir"},{"title":"Get a phone-number batch","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir/{dir_id}/phone_number_batches/{batch_id}","href":"/api-reference/phone-number-batches/get-a-phone-number-batch"}]}]},{"group":"Call Reasons","pages":[{"title":"List standard call reasons","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /call_reasons","href":"/api-reference/reference-data/list-standard-call-reasons"},{"title":"Validate a list of call reasons","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /call_reasons/validate","href":"/api-reference/reference-data/validate-a-list-of-call-reasons"}]},{"group":"Infringement Claims","pages":[{"title":"List infringement claims for a DIR","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /dir/{dir_id}/infringement_claims","href":"/api-reference/infringement-claims/list-infringement-claims-for-a-dir"},{"title":"Update a DIR to resolve an infringement concern","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json put /dir/{dir_id}/infringement_update","href":"/api-reference/infringement-claims/update-a-dir-to-resolve-an-infringement-concern"},{"title":"Get an infringement claim","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /infringement_claims/{claim_id}","href":"/api-reference/infringement-claims/get-an-infringement-claim"},{"title":"Contest an infringement claim","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /infringement_claims/{claim_id}/contest","href":"/api-reference/infringement-claims/contest-an-infringement-claim"}]},{"group":"Terms of Service","pages":[{"title":"Agree to the Branded Calling Terms of Service","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json post /terms_of_service/branded_calling/agree","href":"/api-reference/terms-of-service/agree-to-the-branded-calling-terms-of-service"},{"title":"Get Terms of Service information","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /terms_of_service/info","href":"/api-reference/terms-of-service/get-terms-of-service-information"},{"title":"Get the calling user's Terms of Service status","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /terms_of_service/status","href":"/api-reference/terms-of-service/get-the-calling-users-terms-of-service-status"},{"title":"List the calling user's Terms of Service agreements","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /terms_of_service/agreements","href":"/api-reference/terms-of-service/list-the-calling-users-terms-of-service-agreements"},{"title":"Get a Terms of Service agreement by id","deprecated":null,"version":null,"openapi":"/openapi/source/external/branded-calling/branded-calling.json get /terms_of_service/agreements/{agreement_id}","href":"/api-reference/terms-of-service/get-a-terms-of-service-agreement-by-id"}]}]}]},{"group":"For AI Agents","pages":[{"title":"Trusted Calling llms.txt","sidebarTitle":"Trusted Calling llms txt","href":"/docs/development/llms/calling-trusted-calling-llms-txt/index"},{"title":"Trusted Calling llms-full.txt","sidebarTitle":"Trusted Calling llms full txt","href":"/docs/development/llms/calling-trusted-calling-llms-full-txt/index"}]}]}]},{"product":"Messaging","icon":"message","pages":[{"title":"Messaging","href":"/docs/messaging/messages/send-message"}]},{"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"}]}]},"title":"Create a Display Identity Record (DIR) - Telnyx","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["10e4515597","c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["BannerMarkdown-m8-xYP3Y.js","dist-1ms6tsT-.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-DMKzROTp.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-26-lDe7V.js","utils-CWQmgYtH.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-4-Aw3rSD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C2zjXYA5.js","snippetPresets-DFmpFA7C.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-CT9uE8Ip.js","ApiExamples-FJpQavWq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D_GvPF7k.js","shallow-Bs2ZB0NO.js","getApiPlaygroundDisplay-DCcqJJk-.js","CodeSnippet-DzDxawVe.js","CodeSnippets-aUr7fU-7.js","getPastedJson-Y1fKsj_I.js","icon-DI4zTsDr.js","MethodPill-C0nDlmSQ.js","DuplicateIcon-NUXbx2nQ.js","createIcon-BdTHrPAi.js","DynamicMarkdown-CtpgKJwj.js","SectionHeading-B3x35tOt.js","axios-vUo_bRtp.js","Markdown-3OmurJMP.js","AssistantPageLink-Ke9xIMFx.js"]}