For manually connected gateways: the port and transport it is dialed on,
the dial rules that rewrite a destination for it, and — for a SIP gateway —
the connection mode and everything behind a registration. Port, transport,
and inbound rules replace what is stored, and an omitted or blank one reverts
to the default; dialRules replace the stored rules only when sent, and []
clears them; connection keeps its value when omitted. If the
port or transport changes on a direct gateway that already has numbers, or
the connection mode changes, the outbound trunk is replaced on the cell — new
one first, so a failure leaves the working trunk in place — and a mode change
also resets the inbound allow-list (the relay alone for register). A change
to a registered gateway republishes the cell’s relay snapshot
(configPublished). Live calls are unaffected.
Vodex dials every destination in E.164. A PBX matches its outbound routes
on the digits its own phones dial (00 for abroad, 0 for national) and
refuses anything else, so dialRules rewrite a leading prefix: the
longest match wins, an unmatched number is dialed as is, and records
and identities stay E.164. The caller ID is rewritten only by callerIdRules.
Rewrites the caller ID the gateway is sent, by the same rules as dialRules. Omitted keeps the
current rules; an empty list clears them. Direct gateways only: a registered gateway presents its
registered identity, and two of the gateway's numbers may not end up presented identically (400).
The outbound trunk holds the rewritten numbers, so a change updates it on the cell.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Vodex API","description":"The public Vodex /v1 REST API — assistants, telephony, calls, batches, SMS and webhooks.","colors":{"primary":"#FF4D00","light":"#FF4D00","dark":"#FF4D00"},"logo":{"light":"https://mintcdn.com/vodex/78No6_lqTF_DicwD/logo/vodex-full.svg?fit=max\u0026auto=format\u0026n=78No6_lqTF_DicwD\u0026q=85\u0026s=abc36083e47f9332141ac1141d1cbe4a","dark":"https://mintcdn.com/vodex/78No6_lqTF_DicwD/logo/vodex-full.svg?fit=max\u0026auto=format\u0026n=78No6_lqTF_DicwD\u0026q=85\u0026s=abc36083e47f9332141ac1141d1cbe4a"},"favicon":"https://mintcdn.com/vodex/78No6_lqTF_DicwD/favicon.png?fit=max\u0026auto=format\u0026n=78No6_lqTF_DicwD\u0026q=85\u0026s=a3598c2265371fff3cd08244e8e6cf66","appearance":{"default":"system"},"navbar":{"links":[{"href":"mailto:support@vodex.ai","label":"Support"},{"href":"https://vodex.ai","label":"vodex.ai"}],"primary":{"type":"button","label":"Console","href":"https://console.vodex.ai"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vodex","hasAudioNarration":false,"actualSubdomain":"vodex","customDomains":["apidocs.vodex.ai"],"gitSource":{"type":"github","owner":"lilchirpio","repo":"vodex","deployBranch":"main","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae4c8c238fcbf2314c7045c","collectionId":"d3294b7d-8c93-44c2-95a0-17739dc4bfb2","liveDeploymentHistoryId":"6ae4c8c238fcbf2314c7045c","schemaVersion":"v3"},"entitlements":{},"buildId":"6ae4c8c238fcbf2314c7045c","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":155},{"language":"default","tag":"Contacts","count":27},{"language":"default","tag":"Batches","count":16},{"language":"default","tag":"Campaigns","count":14},{"language":"default","tag":"Assistants","count":12},{"language":"default","tag":"SMS","count":12},{"language":"default","tag":"Audiences","count":8},{"language":"default","tag":"Do Not Contact","count":8},{"language":"default","tag":"Integrations","count":8},{"language":"default","tag":"Payments","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/integrations/change-how-a-gateway-is-dialed","slug":"/api-reference/integrations/change-how-a-gateway-is-dialed","pageMetadata":{"title":"Change how a gateway is dialed","description":"For manually connected gateways: the port and transport it is dialed on,\nthe dial rules that rewrite a destination for it, and — for a SIP gateway —\nthe connection mode and everything behind a registration. Port, transport,\nand inbound rules replace what is stored, and an omitted or blank one reverts\nto the default; `dialRules` replace the stored rules only when sent, and `[]`\nclears them; `connection` keeps its value when omitted. If the\nport or transport changes on a direct gateway that already has numbers, or\nthe connection mode changes, the outbound trunk is replaced on the cell — new\none first, so a failure leaves the working trunk in place — and a mode change\nalso resets the inbound allow-list (the relay alone for `register`). A change\nto a registered gateway republishes the cell's relay snapshot\n(`configPublished`). Live calls are unaffected.\n\nVodex dials every destination in E.164. A PBX matches its outbound routes\non the digits its own phones dial (`00` for abroad, `0` for national) and\nrefuses anything else, so `dialRules` rewrite a leading prefix: the\nlongest `match` wins, an unmatched number is dialed as is, and records\nand identities stay E.164. The caller ID is rewritten only by `callerIdRules`.\n","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /integrations/{id}/gateway","href":"/api-reference/integrations/change-how-a-gateway-is-dialed","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"For manually connected gateways: the port and transport it is dialed on,\\nthe dial rules that rewrite a destination for it, and — for a SIP gateway —\\nthe connection mode and everything behind a registration. Port, transport,\\nand inbound rules replace what is stored, and an omitted or blank one reverts\\nto the default; \", _jsx(_components.code, {\n children: \"dialRules\"\n }), \" replace the stored rules only when sent, and \", _jsx(_components.code, {\n children: \"[]\"\n }), \"\\nclears them; \", _jsx(_components.code, {\n children: \"connection\"\n }), \" keeps its value when omitted. If the\\nport or transport changes on a direct gateway that already has numbers, or\\nthe connection mode changes, the outbound trunk is replaced on the cell — new\\none first, so a failure leaves the working trunk in place — and a mode change\\nalso resets the inbound allow-list (the relay alone for \", _jsx(_components.code, {\n children: \"register\"\n }), \"). A change\\nto a registered gateway republishes the cell’s relay snapshot\\n(\", _jsx(_components.code, {\n children: \"configPublished\"\n }), \"). Live calls are unaffected.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Vodex dials every destination in E.164. A PBX matches its outbound routes\\non the digits its own phones dial (\", _jsx(_components.code, {\n children: \"00\"\n }), \" for abroad, \", _jsx(_components.code, {\n children: \"0\"\n }), \" for national) and\\nrefuses anything else, so \", _jsx(_components.code, {\n children: \"dialRules\"\n }), \" rewrite a leading prefix: the\\nlongest \", _jsx(_components.code, {\n children: \"match\"\n }), \" wins, an unmatched number is dialed as is, and records\\nand identities stay E.164. The caller ID is rewritten only by \", _jsx(_components.code, {\n children: \"callerIdRules\"\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":"Change how a gateway is dialed","description":"For manually connected gateways: the port and transport it is dialed on,\nthe dial rules that rewrite a destination for it, and — for a SIP gateway —\nthe connection mode and everything behind a registration. Port, transport,\nand inbound rules replace what is stored, and an omitted or blank one reverts\nto the default; `dialRules` replace the stored rules only when sent, and `[]`\nclears them; `connection` keeps its value when omitted. If the\nport or transport changes on a direct gateway that already has numbers, or\nthe connection mode changes, the outbound trunk is replaced on the cell — new\none first, so a failure leaves the working trunk in place — and a mode change\nalso resets the inbound allow-list (the relay alone for `register`). A change\nto a registered gateway republishes the cell's relay snapshot\n(`configPublished`). Live calls are unaffected.\n\nVodex dials every destination in E.164. A PBX matches its outbound routes\non the digits its own phones dial (`00` for abroad, `0` for national) and\nrefuses anything else, so `dialRules` rewrite a leading prefix: the\nlongest `match` wins, an unmatched number is dialed as is, and records\nand identities stay E.164. The caller ID is rewritten only by `callerIdRules`.\n","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /integrations/{id}/gateway","href":"/api-reference/integrations/change-how-a-gateway-is-dialed","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"updateIntegrationGateway","tags":["Integrations"],"summary":"Change how a gateway is dialed","description":"For manually connected gateways: the port and transport it is dialed on,\nthe dial rules that rewrite a destination for it, and — for a SIP gateway —\nthe connection mode and everything behind a registration. Port, transport,\nand inbound rules replace what is stored, and an omitted or blank one reverts\nto the default; `dialRules` replace the stored rules only when sent, and `[]`\nclears them; `connection` keeps its value when omitted. If the\nport or transport changes on a direct gateway that already has numbers, or\nthe connection mode changes, the outbound trunk is replaced on the cell — new\none first, so a failure leaves the working trunk in place — and a mode change\nalso resets the inbound allow-list (the relay alone for `register`). A change\nto a registered gateway republishes the cell's relay snapshot\n(`configPublished`). Live calls are unaffected.\n\nVodex dials every destination in E.164. A PBX matches its outbound routes\non the digits its own phones dial (`00` for abroad, `0` for national) and\nrefuses anything else, so `dialRules` rewrite a leading prefix: the\nlongest `match` wins, an unmatched number is dialed as is, and records\nand identities stay E.164. The caller ID is rewritten only by `callerIdRules`.\n","parameters":["6c03473d-b940-4c66-9ae2-cc8b39ab54f5"],"requestBody":"76071191-33fc-48c5-981c-2cb4ad9bb2fe","responses":{"200":"9ef13a1a-2270-4a03-aea2-3cde56042e7b","400":"7f713c7e-f010-48f4-a2fa-c67992c57095","404":"87fc3c80-af30-4c53-858d-c5ea7e4ecead","409":"f4d19c63-3843-4248-b288-5d9f36e3ac42"},"method":"post","type":"path","servers":["454f84ff-3690-4156-8c58-c64805db6548"],"security":["986b34dc-9d64-43d6-addf-8d27adc5ae4e"],"path":"/integrations/{id}/gateway","baseUrlOptions":["https://apiv2.vodex.ai/v1"],"title":"Change how a gateway is dialed","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"6c03473d-b940-4c66-9ae2-cc8b39ab54f5":{"name":"id","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"port":{"type":"integer","minimum":1,"maximum":65535,"uniqueKey":"port","typeLabel":"integer"},"transport":{"type":"string","enum":["udp","tcp","tls"],"uniqueKey":"transport","typeLabel":"enum\u003cstring>"},"dialRules":{"type":"array","maxItems":10,"items":{"type":"object","description":"How a gateway wants a destination written. A leading `match` on the E.164\nnumber becomes `replace`; the longest match wins; an unmatched number is\ndialed as is. `+971 → 0` dials a UAE number nationally, `+ → 00` everything\nelse internationally. `replace` is digits, optionally ending in `+`: a PBX\nthat seizes a line with a digit and then takes E.164 is `+ → 6+`. Records\nstay E.164. A gateway's `callerIdRules` apply the same rewrite to our caller ID.\n","required":["match","replace"],"properties":{"match":{"type":"string","pattern":"^\\+[0-9]{0,15}$","example":"+971","isRequired":true,"uniqueKey":"dialRules.items.[INDEX].match","typeLabel":"string"},"replace":{"type":"string","pattern":"^[0-9]{0,10}\\+?$","example":"0","isRequired":true,"uniqueKey":"dialRules.items.[INDEX].replace","typeLabel":"string"}},"uniqueKey":"dialRules.items.[INDEX]","typeLabel":"object"},"example":[{"match":"+971","replace":"0"},{"match":"+","replace":"00"}],"uniqueKey":"dialRules","typeLabel":"object[]"},"callerIdRules":{"type":"array","maxItems":10,"description":"Rewrites the caller ID the gateway is sent, by the same rules as `dialRules`. Omitted keeps the\ncurrent rules; an empty list clears them. Direct gateways only: a registered gateway presents its\nregistered identity, and two of the gateway's numbers may not end up presented identically (400).\nThe outbound trunk holds the rewritten numbers, so a change updates it on the cell.\n","items":{"type":"object","description":"How a gateway wants a destination written. A leading `match` on the E.164\nnumber becomes `replace`; the longest match wins; an unmatched number is\ndialed as is. `+971 → 0` dials a UAE number nationally, `+ → 00` everything\nelse internationally. `replace` is digits, optionally ending in `+`: a PBX\nthat seizes a line with a digit and then takes E.164 is `+ → 6+`. Records\nstay E.164. A gateway's `callerIdRules` apply the same rewrite to our caller ID.\n","required":["match","replace"],"properties":{"match":{"type":"string","pattern":"^\\+[0-9]{0,15}$","example":"+971","isRequired":true,"uniqueKey":"callerIdRules.items.[INDEX].match","typeLabel":"string"},"replace":{"type":"string","pattern":"^[0-9]{0,10}\\+?$","example":"0","isRequired":true,"uniqueKey":"callerIdRules.items.[INDEX].replace","typeLabel":"string"}},"uniqueKey":"callerIdRules.items.[INDEX]","typeLabel":"object"},"example":[{"match":"+971","replace":"0"}],"uniqueKey":"callerIdRules","typeLabel":"object[]"},"connection":{"type":"string","enum":["direct","register","registrar"],"description":"SIP gateway only; omitted keeps the current mode.","uniqueKey":"connection","typeLabel":"enum\u003cstring>"},"preset":{"type":"string","description":"register only; omitted keeps the current preset.","uniqueKey":"preset","typeLabel":"string"},"authId":{"type":"string","description":"register only, with the one-identity form.","uniqueKey":"authId","typeLabel":"string"},"outboundProxy":{"type":"string","description":"register only.","uniqueKey":"outboundProxy","typeLabel":"string"},"register":{"type":"object","description":"register only: overrides to the preset's values.","properties":{"server":{"type":"string","description":"The registrar host; the gateway address.","uniqueKey":"register.server","typeLabel":"string"},"port":{"type":"integer","minimum":1,"maximum":65535,"uniqueKey":"register.port","typeLabel":"integer"},"transport":{"type":"string","enum":["udp","tcp","tls"],"uniqueKey":"register.transport","typeLabel":"enum\u003cstring>"},"outboundProxy":{"type":"string","description":"The vendor's regional proxy, where it routes through one.","uniqueKey":"register.outboundProxy","typeLabel":"string"},"srtp":{"type":"string","enum":["none","optional","required"],"uniqueKey":"register.srtp","typeLabel":"enum\u003cstring>"},"expiry":{"type":"integer","minimum":60,"maximum":300,"description":"Registration expiry in seconds — the shortest the vendor allows, since a dead relay keeps receiving inbound until it lapses.","uniqueKey":"register.expiry","typeLabel":"integer"},"qualify":{"type":"integer","enum":[0,60],"description":"OPTIONS keepalive interval; 0 for a vendor relay that refuses OPTIONS.","uniqueKey":"register.qualify","typeLabel":"enum\u003cinteger>"},"line":{"type":"boolean","description":"Add `;line=` to the Contact so inbound INVITEs match the registration.","uniqueKey":"register.line","typeLabel":"boolean"},"pinHost":{"type":"boolean","description":"Resolve the registrar once and pin it, so every INVITE rides the connection the REGISTER opened. Defeats SRV failover; off unless the vendor needs it.","uniqueKey":"register.pinHost","typeLabel":"boolean"},"tlsVerify":{"type":"object","properties":{"verify":{"type":"boolean","uniqueKey":"register.tlsVerify.verify","typeLabel":"boolean"},"wildcard":{"type":"boolean","uniqueKey":"register.tlsVerify.wildcard","typeLabel":"boolean"},"fingerprint":{"type":"string","description":"SHA-256 fingerprint of a self-signed certificate to accept instead of the CA bundle.","uniqueKey":"register.tlsVerify.fingerprint","typeLabel":"string"}},"uniqueKey":"register.tlsVerify","typeLabel":"object"}},"uniqueKey":"register","typeLabel":"object"},"identities":{"type":"array","maxItems":20,"items":{"type":"object","description":"One identity the relay registers as. The password is write-only and goes to Secret Manager.","required":["username"],"properties":{"username":{"type":"string","example":"1910","pattern":"^[A-Za-z0-9._+@-]{1,128}$","description":"Letters, digits and . _ + @ - only.","isRequired":true,"uniqueKey":"identities.items.[INDEX].username","typeLabel":"string"},"password":{"type":"string","format":"password","maxLength":256,"description":"Required for a new identity; optional when editing one that exists. No line breaks or control characters, and no leading or trailing space.","uniqueKey":"identities.items.[INDEX].password","typeLabel":"string\u003cpassword>"},"authUsername":{"type":"string","pattern":"^[A-Za-z0-9._+@-]{1,128}$","description":"The authorization id, where the vendor issues one distinct from the user name.","uniqueKey":"identities.items.[INDEX].authUsername","typeLabel":"string"},"fromUser":{"type":"string","pattern":"^[A-Za-z0-9._+@-]{0,128}$","description":"The From user on outbound INVITEs; defaults to `username`. Omit to keep the stored value; send an empty string to clear it.","uniqueKey":"identities.items.[INDEX].fromUser","typeLabel":"string"},"maxConcurrent":{"type":"integer","minimum":1,"maximum":100,"default":1,"description":"Calls this identity can carry at once, as the far side enforces it.","uniqueKey":"identities.items.[INDEX].maxConcurrent","typeLabel":"integer"}},"uniqueKey":"identities.items.[INDEX]","typeLabel":"object"},"description":"register only. A password is required for a new identity and optional for one that exists; omitted, the current identities are kept.","uniqueKey":"identities","typeLabel":"object[]"},"inboundNumber":{"type":"string","description":"register only: must be one of the gateway's numbers once it has any. Omitted keeps the current one; an empty string clears it.","uniqueKey":"inboundNumber","typeLabel":"string"},"inboundRules":{"type":"array","maxItems":10,"description":"register only. Omitted keeps the current rules; an empty list clears them.","items":{"type":"object","description":"How the caller a registered system delivers is normalized, applied with\nthe same longest-match rule as `DialRule` in the other direction: a\nleading `match` (digits) becomes `replace` (`+` and digits). `0 → +971`\nand `00 → +` turn 0586582538 into +971586582538. A caller already in\nE.164, and a caller no rule matches (a desk-phone extension dialling the\nassistant), pass through unchanged — so a call record's caller is not\nalways E.164 on a registered gateway.\n","required":["match","replace"],"properties":{"match":{"type":"string","pattern":"^[0-9]{1,15}$","example":"0","isRequired":true,"uniqueKey":"inboundRules.items.[INDEX].match","typeLabel":"string"},"replace":{"type":"string","pattern":"^\\+?[0-9]{0,15}$","example":"+971","isRequired":true,"uniqueKey":"inboundRules.items.[INDEX].replace","typeLabel":"string"}},"uniqueKey":"inboundRules.items.[INDEX]","typeLabel":"object"},"example":[{"match":"0","replace":"+971"},{"match":"00","replace":"+"}],"uniqueKey":"inboundRules","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"port":32768,"dialRules":[{"match":"+971","replace":"0"},{"match":"+","replace":"00"}],"callerIdRules":[{"match":"+971","replace":"0"}],"preset":"\u003cstring>","authId":"\u003cstring>","outboundProxy":"\u003cstring>","register":{"server":"\u003cstring>","port":32768,"outboundProxy":"\u003cstring>","expiry":180,"line":true,"pinHost":true,"tlsVerify":{"verify":true,"wildcard":true,"fingerprint":"\u003cstring>"}},"identities":[{"username":"1910","password":"\u003cstring>","authUsername":"\u003cstring>","fromUser":"\u003cstring>","maxConcurrent":1}],"inboundNumber":"\u003cstring>","inboundRules":[{"match":"0","replace":"+971"},{"match":"00","replace":"+"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"9ef13a1a-2270-4a03-aea2-3cde56042e7b":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","uniqueKey":"id","typeLabel":"string"},"carrier":{"type":"string","uniqueKey":"carrier","typeLabel":"string"},"name":{"type":"string","uniqueKey":"name","typeLabel":"string"},"accountRef":{"type":"string","description":"Twilio Account SID or carrier SIP host — safe to show.","uniqueKey":"accountRef","typeLabel":"string"},"accountName":{"type":"string","uniqueKey":"accountName","typeLabel":"string"},"status":{"type":"string","enum":["connected","error"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"lastError":{"type":"string","uniqueKey":"lastError","typeLabel":"string"},"trunkId":{"type":"string","uniqueKey":"trunkId","typeLabel":"string"},"carrierTrunkSid":{"type":"string","description":"The trunk id inside the carrier's account (API-provisioned carriers).","uniqueKey":"carrierTrunkSid","typeLabel":"string"},"terminationUri":{"type":"string","uniqueKey":"terminationUri","typeLabel":"string"},"credentialFingerprint":{"type":"string","description":"Non-reversible; for display and audit only.","uniqueKey":"credentialFingerprint","typeLabel":"string"},"hasCredentials":{"type":"boolean","uniqueKey":"hasCredentials","typeLabel":"boolean"},"secretsBackend":{"type":"string","example":"secret-manager","uniqueKey":"secretsBackend","typeLabel":"string"},"provisioning":{"type":"string","enum":["api","manual"],"uniqueKey":"provisioning","typeLabel":"enum\u003cstring>"},"displayName":{"type":"string","uniqueKey":"displayName","typeLabel":"string"},"transferSupport":{"type":"string","enum":["supported","verify","unsupported"],"uniqueKey":"transferSupport","typeLabel":"enum\u003cstring>"},"channel":{"type":"string","enum":["voice","sms"],"description":"An `sms` integration has no trunk and no numbers.","uniqueKey":"channel","typeLabel":"enum\u003cstring>"},"sipUri":{"type":"string","uniqueKey":"sipUri","typeLabel":"string"},"gateway":{"type":"object","description":"How a manually connected gateway is dialed; port and transport are null where unset. The register fields are empty on a direct gateway.","properties":{"port":{"oneOf":[{"type":"integer","uniqueKey":"gateway.port.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"gateway.port.oneOf.1","typeLabel":"null"}],"uniqueKey":"gateway.port","typeLabel":"integer | null"},"transport":{"oneOf":[{"type":"string","enum":["udp","tcp","tls",null],"uniqueKey":"gateway.transport.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["udp","tcp","tls",null],"uniqueKey":"gateway.transport.oneOf.1","typeLabel":"null"}],"uniqueKey":"gateway.transport","typeLabel":"enum\u003cstring> | null"},"dialRules":{"type":"array","items":{"type":"object","description":"How a gateway wants a destination written. A leading `match` on the E.164\nnumber becomes `replace`; the longest match wins; an unmatched number is\ndialed as is. `+971 → 0` dials a UAE number nationally, `+ → 00` everything\nelse internationally. `replace` is digits, optionally ending in `+`: a PBX\nthat seizes a line with a digit and then takes E.164 is `+ → 6+`. Records\nstay E.164. A gateway's `callerIdRules` apply the same rewrite to our caller ID.\n","required":["match","replace"],"properties":{"match":{"type":"string","pattern":"^\\+[0-9]{0,15}$","example":"+971","isRequired":true,"uniqueKey":"gateway.dialRules.items.[INDEX].match","typeLabel":"string"},"replace":{"type":"string","pattern":"^[0-9]{0,10}\\+?$","example":"0","isRequired":true,"uniqueKey":"gateway.dialRules.items.[INDEX].replace","typeLabel":"string"}},"uniqueKey":"gateway.dialRules.items.[INDEX]","typeLabel":"object"},"uniqueKey":"gateway.dialRules","typeLabel":"object[]"},"callerIdRules":{"type":"array","items":{"type":"object","description":"How a gateway wants a destination written. A leading `match` on the E.164\nnumber becomes `replace`; the longest match wins; an unmatched number is\ndialed as is. `+971 → 0` dials a UAE number nationally, `+ → 00` everything\nelse internationally. `replace` is digits, optionally ending in `+`: a PBX\nthat seizes a line with a digit and then takes E.164 is `+ → 6+`. Records\nstay E.164. A gateway's `callerIdRules` apply the same rewrite to our caller ID.\n","required":["match","replace"],"properties":{"match":{"type":"string","pattern":"^\\+[0-9]{0,15}$","example":"+971","isRequired":true,"uniqueKey":"gateway.callerIdRules.items.[INDEX].match","typeLabel":"string"},"replace":{"type":"string","pattern":"^[0-9]{0,10}\\+?$","example":"0","isRequired":true,"uniqueKey":"gateway.callerIdRules.items.[INDEX].replace","typeLabel":"string"}},"uniqueKey":"gateway.callerIdRules.items.[INDEX]","typeLabel":"object"},"description":"The same rules applied to our caller ID; empty means it is sent as E.164.","uniqueKey":"gateway.callerIdRules","typeLabel":"object[]"},"connection":{"type":"string","enum":["direct","register","registrar"],"uniqueKey":"gateway.connection","typeLabel":"enum\u003cstring>"},"preset":{"oneOf":[{"type":"string","uniqueKey":"gateway.preset.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"gateway.preset.oneOf.1","typeLabel":"null"}],"uniqueKey":"gateway.preset","typeLabel":"string | null"},"register":{"type":"object","description":"Null on a direct gateway.","properties":{"server":{"type":"string","description":"The registrar host; the gateway address.","uniqueKey":"gateway.register.server","typeLabel":"string"},"port":{"type":"integer","minimum":1,"maximum":65535,"uniqueKey":"gateway.register.port","typeLabel":"integer"},"transport":{"type":"string","enum":["udp","tcp","tls"],"uniqueKey":"gateway.register.transport","typeLabel":"enum\u003cstring>"},"outboundProxy":{"type":"string","description":"The vendor's regional proxy, where it routes through one.","uniqueKey":"gateway.register.outboundProxy","typeLabel":"string"},"srtp":{"type":"string","enum":["none","optional","required"],"uniqueKey":"gateway.register.srtp","typeLabel":"enum\u003cstring>"},"expiry":{"type":"integer","minimum":60,"maximum":300,"description":"Registration expiry in seconds — the shortest the vendor allows, since a dead relay keeps receiving inbound until it lapses.","uniqueKey":"gateway.register.expiry","typeLabel":"integer"},"qualify":{"type":"integer","enum":[0,60],"description":"OPTIONS keepalive interval; 0 for a vendor relay that refuses OPTIONS.","uniqueKey":"gateway.register.qualify","typeLabel":"enum\u003cinteger>"},"line":{"type":"boolean","description":"Add `;line=` to the Contact so inbound INVITEs match the registration.","uniqueKey":"gateway.register.line","typeLabel":"boolean"},"pinHost":{"type":"boolean","description":"Resolve the registrar once and pin it, so every INVITE rides the connection the REGISTER opened. Defeats SRV failover; off unless the vendor needs it.","uniqueKey":"gateway.register.pinHost","typeLabel":"boolean"},"tlsVerify":{"type":"object","properties":{"verify":{"type":"boolean","uniqueKey":"gateway.register.tlsVerify.verify","typeLabel":"boolean"},"wildcard":{"type":"boolean","uniqueKey":"gateway.register.tlsVerify.wildcard","typeLabel":"boolean"},"fingerprint":{"type":"string","description":"SHA-256 fingerprint of a self-signed certificate to accept instead of the CA bundle.","uniqueKey":"gateway.register.tlsVerify.fingerprint","typeLabel":"string"}},"uniqueKey":"gateway.register.tlsVerify","typeLabel":"object"}},"uniqueKey":"gateway.register","typeLabel":"object"},"identities":{"type":"array","items":{"type":"object","description":"An identity as the console reads it, with what the cell's relay last reported about its registration.","properties":{"username":{"type":"string","uniqueKey":"gateway.identities.items.[INDEX].username","typeLabel":"string"},"authUsername":{"oneOf":[{"type":"string","uniqueKey":"gateway.identities.items.[INDEX].authUsername.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"gateway.identities.items.[INDEX].authUsername.oneOf.1","typeLabel":"null"}],"uniqueKey":"gateway.identities.items.[INDEX].authUsername","typeLabel":"string | null"},"fromUser":{"oneOf":[{"type":"string","uniqueKey":"gateway.identities.items.[INDEX].fromUser.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"gateway.identities.items.[INDEX].fromUser.oneOf.1","typeLabel":"null"}],"uniqueKey":"gateway.identities.items.[INDEX].fromUser","typeLabel":"string | null"},"maxConcurrent":{"type":"integer","uniqueKey":"gateway.identities.items.[INDEX].maxConcurrent","typeLabel":"integer"},"registration":{"type":"object","properties":{"status":{"oneOf":[{"type":"string","description":"Asterisk's word: Registered, Rejected, Unregistered; null before the relay has reported.","uniqueKey":"gateway.identities.items.[INDEX].registration.status.oneOf.0","typeLabel":"string"},{"type":"null","description":"Asterisk's word: Registered, Rejected, Unregistered; null before the relay has reported.","uniqueKey":"gateway.identities.items.[INDEX].registration.status.oneOf.1","typeLabel":"null"}],"uniqueKey":"gateway.identities.items.[INDEX].registration.status","typeLabel":"string | null"},"nextRefreshS":{"oneOf":[{"type":"integer","uniqueKey":"gateway.identities.items.[INDEX].registration.nextRefreshS.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"gateway.identities.items.[INDEX].registration.nextRefreshS.oneOf.1","typeLabel":"null"}],"uniqueKey":"gateway.identities.items.[INDEX].registration.nextRefreshS","typeLabel":"integer | null"},"summary":{"type":"string","example":"Registered, next refresh in 4 min","uniqueKey":"gateway.identities.items.[INDEX].registration.summary","typeLabel":"string"}},"uniqueKey":"gateway.identities.items.[INDEX].registration","typeLabel":"object"}},"uniqueKey":"gateway.identities.items.[INDEX]","typeLabel":"object"},"uniqueKey":"gateway.identities","typeLabel":"object[]"},"inboundNumber":{"oneOf":[{"type":"string","description":"The Vodex number an inbound call through the identity is presented as.","uniqueKey":"gateway.inboundNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"The Vodex number an inbound call through the identity is presented as.","uniqueKey":"gateway.inboundNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"gateway.inboundNumber","typeLabel":"string | null"},"inboundRules":{"type":"array","items":{"type":"object","description":"How the caller a registered system delivers is normalized, applied with\nthe same longest-match rule as `DialRule` in the other direction: a\nleading `match` (digits) becomes `replace` (`+` and digits). `0 → +971`\nand `00 → +` turn 0586582538 into +971586582538. A caller already in\nE.164, and a caller no rule matches (a desk-phone extension dialling the\nassistant), pass through unchanged — so a call record's caller is not\nalways E.164 on a registered gateway.\n","required":["match","replace"],"properties":{"match":{"type":"string","pattern":"^[0-9]{1,15}$","example":"0","isRequired":true,"uniqueKey":"gateway.inboundRules.items.[INDEX].match","typeLabel":"string"},"replace":{"type":"string","pattern":"^\\+?[0-9]{0,15}$","example":"+971","isRequired":true,"uniqueKey":"gateway.inboundRules.items.[INDEX].replace","typeLabel":"string"}},"uniqueKey":"gateway.inboundRules.items.[INDEX]","typeLabel":"object"},"uniqueKey":"gateway.inboundRules","typeLabel":"object[]"},"maxConcurrent":{"oneOf":[{"type":"integer","description":"The identities' caps summed — the batch runner's hard limit on in-flight calls through this gateway.","uniqueKey":"gateway.maxConcurrent.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The identities' caps summed — the batch runner's hard limit on in-flight calls through this gateway.","uniqueKey":"gateway.maxConcurrent.oneOf.1","typeLabel":"null"}],"uniqueKey":"gateway.maxConcurrent","typeLabel":"integer | null"}},"uniqueKey":"gateway","typeLabel":"object"},"configPublished":{"type":"boolean","description":"Present after a change to a registered gateway; whether the cell's relay snapshot reached the config bucket.","uniqueKey":"configPublished","typeLabel":"boolean"},"connectedAt":{"type":"integer","format":"int64","uniqueKey":"connectedAt","typeLabel":"integer\u003cint64>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"\u003cstring>","carrier":"\u003cstring>","name":"\u003cstring>","accountRef":"\u003cstring>","accountName":"\u003cstring>","status":"connected","lastError":"\u003cstring>","trunkId":"\u003cstring>","carrierTrunkSid":"\u003cstring>","terminationUri":"\u003cstring>","credentialFingerprint":"\u003cstring>","hasCredentials":true,"secretsBackend":"secret-manager","provisioning":"api","displayName":"\u003cstring>","transferSupport":"supported","channel":"voice","sipUri":"\u003cstring>","gateway":{"port":123,"transport":"udp","dialRules":[{"match":"+971","replace":"0"}],"callerIdRules":[{"match":"+971","replace":"0"}],"connection":"direct","preset":"\u003cstring>","register":{"server":"\u003cstring>","port":32768,"transport":"udp","outboundProxy":"\u003cstring>","srtp":"none","expiry":180,"qualify":0,"line":true,"pinHost":true,"tlsVerify":{"verify":true,"wildcard":true,"fingerprint":"\u003cstring>"}},"identities":[{"username":"\u003cstring>","authUsername":"\u003cstring>","fromUser":"\u003cstring>","maxConcurrent":123,"registration":{"status":"\u003cstring>","nextRefreshS":123,"summary":"Registered, next refresh in 4 min"}}],"inboundNumber":"\u003cstring>","inboundRules":[{"match":"0","replace":"+971"}],"maxConcurrent":123},"configPublished":true,"connectedAt":123}}},"exampleType":"generated"}},"exampleType":"generated"},"7f713c7e-f010-48f4-a2fa-c67992c57095":{"description":"Not a manually connected gateway, or an invalid port or transport.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"not found","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"not found"}}},"exampleType":"generated"}},"exampleType":"generated"},"87fc3c80-af30-4c53-858d-c5ea7e4ecead":{"description":"No such resource — or it belongs to another tenant, which looks the same.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"not found","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"not found"}}},"exampleType":"generated"}},"exampleType":"generated"},"f4d19c63-3843-4248-b288-5d9f36e3ac42":{"description":"Another integration already uses this endpoint.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"not found","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"not found"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"986b34dc-9d64-43d6-addf-8d27adc5ae4e":{"ApiKeyBearer":{"type":"http","scheme":"bearer","description":"Tenant API key (`vdx_live_…`) as `Authorization: Bearer`.","scopes":[],"schemeName":"ApiKeyBearer"}}},"servers":{"454f84ff-3690-4156-8c58-c64805db6548":{"url":"https://apiv2.vodex.ai/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Tenant API key (`vdx_live_…`) as `Authorization: Bearer`.","scopes":[],"schemeName":"ApiKeyBearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Tenant API key (`vdx_live_…`) as `Authorization: Bearer`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"ApiKeyBearer","name":"Authorization"}],"title":"ApiKeyBearer"}]},"originalFileLocation":"openapi/api-public-v1.yaml"},"subdomain":"vodex","siteName":"Vodex API","title":"Change how a gateway is dialed - Vodex API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T16:41:44.422Z","originalFileLocation":"api-reference/integrations/change-how-a-gateway-is-dialed.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=\"For manually connected gateways: the port and transport it is dialed on, the dial rules that rewrite a destination for it, and — for a SIP gateway — the connection mode and everything behind a registration. Port, transport, and inbound rules replace what is stored, and an omitted or blank one reverts to the default; dialRules replace the stored rules only when sent, and [] clears them; connection keeps its value when omitted. If the port or transport changes on a direct gateway that already has numbers, or the connection mode changes, the outbound trunk is replaced on the cell — new one first, so a failure leaves the working trunk in place — and a mode change also resets the inbound allow-list (the relay alone for register). A change to a registered gateway republishes the cell\u0026#x27;s relay snapshot (configPublished). Live calls are unaffected. Vodex dials every destination in E.164. A PBX matches its outbound routes on the digits its own phones dial (00 for abroad, 0 for national) and refuses anything else, so dialRules rewrite a leading prefix: the longest match wins, an unmatched number is dialed as is, and records and identities stay E.164. The caller ID is rewritten only by callerIdRules.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Vodex API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vodex/lIjSc2yqSN3yLkge/_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/vodex/lIjSc2yqSN3yLkge/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vodex/lIjSc2yqSN3yLkge/_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/vodex/lIjSc2yqSN3yLkge/_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/vodex/lIjSc2yqSN3yLkge/_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/vodex/lIjSc2yqSN3yLkge/_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/vodex/lIjSc2yqSN3yLkge/_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/vodex/lIjSc2yqSN3yLkge/_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/vodex/lIjSc2yqSN3yLkge/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Change how a gateway is dialed - Vodex API\">\u003cmeta data-mint-head property=\"og:description\" content=\"For manually connected gateways: the port and transport it is dialed on, the dial rules that rewrite a destination for it, and — for a SIP gateway — the connection mode and everything behind a registration. Port, transport, and inbound rules replace what is stored, and an omitted or blank one reverts to the default; dialRules replace the stored rules only when sent, and [] clears them; connection keeps its value when omitted. If the port or transport changes on a direct gateway that already has numbers, or the connection mode changes, the outbound trunk is replaced on the cell — new one first, so a failure leaves the working trunk in place — and a mode change also resets the inbound allow-list (the relay alone for register). A change to a registered gateway republishes the cell\u0026#x27;s relay snapshot (configPublished). Live calls are unaffected. Vodex dials every destination in E.164. A PBX matches its outbound routes on the digits its own phones dial (00 for abroad, 0 for national) and refuses anything else, so dialRules rewrite a leading prefix: the longest match wins, an unmatched number is dialed as is, and records and identities stay E.164. The caller ID is rewritten only by callerIdRules.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vodex API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://apidocs.vodex.ai/api-reference/integrations/change-how-a-gateway-is-dialed\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://vodex.mintlify.app/_mintlify/api/og/v2?division=Integrations\u0026amp;title=Change+how+a+gateway+is+dialed\u0026amp;description=For+manually+connected+gateways%3A+the+port+and+transport+it+is+dialed+on%2C%0Athe+dial+rules+that+rewrite+a+destination+for+it%2C+and+%E2%80%94+for+a+SIP+gateway+%E2%80%94%0Athe+connect\u0026amp;theme=6d89815cfe9107c7cb0143e4\u0026amp;signature=1f1a4e64326b0017011546aea48fe7c3ceace978525e282e548c611751ecf6dc\">\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=\"Change how a gateway is dialed - Vodex API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"For manually connected gateways: the port and transport it is dialed on, the dial rules that rewrite a destination for it, and — for a SIP gateway — the connection mode and everything behind a registration. Port, transport, and inbound rules replace what is stored, and an omitted or blank one reverts to the default; dialRules replace the stored rules only when sent, and [] clears them; connection keeps its value when omitted. If the port or transport changes on a direct gateway that already has numbers, or the connection mode changes, the outbound trunk is replaced on the cell — new one first, so a failure leaves the working trunk in place — and a mode change also resets the inbound allow-list (the relay alone for register). A change to a registered gateway republishes the cell\u0026#x27;s relay snapshot (configPublished). Live calls are unaffected. Vodex dials every destination in E.164. A PBX matches its outbound routes on the digits its own phones dial (00 for abroad, 0 for national) and refuses anything else, so dialRules rewrite a leading prefix: the longest match wins, an unmatched number is dialed as is, and records and identities stay E.164. The caller ID is rewritten only by callerIdRules.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://vodex.mintlify.app/_mintlify/api/og/v2?division=Integrations\u0026amp;title=Change+how+a+gateway+is+dialed\u0026amp;description=For+manually+connected+gateways%3A+the+port+and+transport+it+is+dialed+on%2C%0Athe+dial+rules+that+rewrite+a+destination+for+it%2C+and+%E2%80%94+for+a+SIP+gateway+%E2%80%94%0Athe+connect\u0026amp;theme=6d89815cfe9107c7cb0143e4\u0026amp;signature=1f1a4e64326b0017011546aea48fe7c3ceace978525e282e548c611751ecf6dc\">\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/vodex/lIjSc2yqSN3yLkge/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Vodex API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF4D00\">\u003clink data-mint-head rel=\"canonical\" href=\"https://apidocs.vodex.ai/api-reference/integrations/change-how-a-gateway-is-dialed\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/integrations/change-how-a-gateway-is-dialed.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://apidocs.vodex.ai/#organization\",\"name\":\"Vodex API\",\"url\":\"https://apidocs.vodex.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vodex/78No6_lqTF_DicwD/logo/vodex-full.svg?fit=max\u0026auto=format\u0026n=78No6_lqTF_DicwD\u0026q=85\u0026s=abc36083e47f9332141ac1141d1cbe4a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://apidocs.vodex.ai#website\",\"name\":\"Vodex API\",\"url\":\"https://apidocs.vodex.ai\",\"publisher\":{\"@id\":\"https://apidocs.vodex.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://apidocs.vodex.ai/api-reference/integrations/change-how-a-gateway-is-dialed#webpage\",\"url\":\"https://apidocs.vodex.ai/api-reference/integrations/change-how-a-gateway-is-dialed\",\"name\":\"Change how a gateway is dialed\",\"description\":\"For manually connected gateways: the port and transport it is dialed on, the dial rules that rewrite a destination for it, and — for a SIP gateway — the connection mode and everything behind a registration. Port, transport, and inbound rules replace what is stored, and an omitted or blank one reverts to the default; dialRules replace the stored rules only when sent, and [] clears them; connection keeps its value when omitted. If the port or transport changes on a direct gateway that already has numbers, or the connection mode changes, the outbound trunk is replaced on the cell — new one first, so a failure leaves the working trunk in place — and a mode change also resets the inbound allow-list (the relay alone for register). A change to a registered gateway republishes the cell's relay snapshot (configPublished). Live calls are unaffected. Vodex dials every destination in E.164. A PBX matches its outbound routes on the digits its own phones dial (00 for abroad, 0 for national) and refuses anything else, so dialRules rewrite a leading prefix: the longest match wins, an unmatched number is dialed as is, and records and identities stay E.164. The caller ID is rewritten only by callerIdRules.\",\"dateModified\":\"2026-10-30T16:41:44.422Z\",\"isPartOf\":{\"@id\":\"https://apidocs.vodex.ai#website\"},\"breadcrumb\":{\"@id\":\"https://apidocs.vodex.ai/api-reference/integrations/change-how-a-gateway-is-dialed#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://apidocs.vodex.ai/api-reference/integrations/change-how-a-gateway-is-dialed#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Integrations\",\"item\":\"https://apidocs.vodex.ai/api-reference/integrations/list-connected-carrier-accounts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Change how a gateway is dialed\",\"item\":\"https://apidocs.vodex.ai/api-reference/integrations/change-how-a-gateway-is-dialed\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://apidocs.vodex.ai/api-reference/integrations/change-how-a-gateway-is-dialed#apireference\",\"headline\":\"Change how a gateway is dialed\",\"name\":\"Change how a gateway is dialed\",\"description\":\"For manually connected gateways: the port and transport it is dialed on, the dial rules that rewrite a destination for it, and — for a SIP gateway — the connection mode and everything behind a registration. Port, transport, and inbound rules replace what is stored, and an omitted or blank one reverts to the default; dialRules replace the stored rules only when sent, and [] clears them; connection keeps its value when omitted. If the port or transport changes on a direct gateway that already has numbers, or the connection mode changes, the outbound trunk is replaced on the cell — new one first, so a failure leaves the working trunk in place — and a mode change also resets the inbound allow-list (the relay alone for register). A change to a registered gateway republishes the cell's relay snapshot (configPublished). Live calls are unaffected. Vodex dials every destination in E.164. A PBX matches its outbound routes on the digits its own phones dial (00 for abroad, 0 for national) and refuses anything else, so dialRules rewrite a leading prefix: the longest match wins, an unmatched number is dialed as is, and records and identities stay E.164. The caller ID is rewritten only by callerIdRules.\",\"url\":\"https://apidocs.vodex.ai/api-reference/integrations/change-how-a-gateway-is-dialed\",\"mainEntityOfPage\":{\"@id\":\"https://apidocs.vodex.ai/api-reference/integrations/change-how-a-gateway-is-dialed#webpage\"},\"dateModified\":\"2026-10-30T16:41:44.422Z\",\"publisher\":{\"@id\":\"https://apidocs.vodex.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://apidocs.vodex.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Vodex API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Vodex API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Assistants","pages":[{"title":"List assistants","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /console/assistants","href":"/api-reference/assistants/list-assistants"},{"title":"Create or replace an assistant","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /console/assistants","href":"/api-reference/assistants/create-or-replace-an-assistant"},{"title":"Fetch one assistant's full config","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /console/assistants/{id}","href":"/api-reference/assistants/fetch-one-assistants-full-config"},{"title":"Delete an assistant","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /console/assistants/{id}","href":"/api-reference/assistants/delete-an-assistant"},{"title":"List this assistant's outcomes","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /console/assistants/{id}/outcomes","href":"/api-reference/assistants/list-this-assistants-outcomes"},{"title":"Add an outcome","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /console/assistants/{id}/outcomes","href":"/api-reference/assistants/add-an-outcome"},{"title":"Remove an outcome","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /console/assistants/{id}/outcomes/{key}","href":"/api-reference/assistants/remove-an-outcome"},{"title":"Rename an outcome, or reword when it applies","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /console/assistants/{id}/outcomes/{key}","href":"/api-reference/assistants/rename-an-outcome-or-reword-when-it-applies"},{"title":"A CSV template for the survey importer","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /surveys/template.csv","href":"/api-reference/assistants/a-csv-template-for-the-survey-importer"},{"title":"Parse a survey CSV without saving it","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /console/assistants/{id}/survey.csv/preview","href":"/api-reference/assistants/parse-a-survey-csv-without-saving-it"},{"title":"Replace the assistant's questionnaire from a CSV","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /console/assistants/{id}/survey.csv","href":"/api-reference/assistants/replace-the-assistants-questionnaire-from-a-csv"},{"title":"Test a custom tool","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /console/tools/test","href":"/api-reference/assistants/test-a-custom-tool"}]},{"group":"Console","pages":[{"title":"The model catalog","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /console/catalog","href":"/api-reference/console/the-model-catalog"},{"title":"List voices","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /console/voices","href":"/api-reference/console/list-voices"},{"title":"Mint a LiveKit token for a web call","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /console/token","href":"/api-reference/console/mint-a-livekit-token-for-a-web-call"}]},{"group":"Usage","pages":[{"title":"Minute usage this period","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /usage","href":"/api-reference/usage/minute-usage-this-period"}]},{"group":"Calls","pages":[{"title":"List calls","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /calls","href":"/api-reference/calls/list-calls"},{"title":"Place an outbound call","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /calls","href":"/api-reference/calls/place-an-outbound-call"},{"title":"Fetch a call with its trace","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /calls/{id}","href":"/api-reference/calls/fetch-a-call-with-its-trace"},{"title":"Stream a call recording","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /recordings/{id}","href":"/api-reference/calls/stream-a-call-recording"}]},{"group":"Phone Numbers","pages":[{"title":"List numbers","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /phone-numbers","href":"/api-reference/phone-numbers/list-numbers"},{"title":"Add a number","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /phone-numbers","href":"/api-reference/phone-numbers/add-a-number"},{"title":"Remove a number","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /phone-numbers/{id}","href":"/api-reference/phone-numbers/remove-a-number"},{"title":"Reassign or relabel a number","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /phone-numbers/{id}","href":"/api-reference/phone-numbers/reassign-or-relabel-a-number"}]},{"group":"SIP Trunks","pages":[{"title":"List BYO SIP trunks","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /sip-trunks","href":"/api-reference/sip-trunks/list-byo-sip-trunks"},{"title":"Create a BYO SIP trunk","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /sip-trunks","href":"/api-reference/sip-trunks/create-a-byo-sip-trunk"},{"title":"Delete a trunk","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /sip-trunks/{id}","href":"/api-reference/sip-trunks/delete-a-trunk"},{"title":"Update a SIP trunk","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /sip-trunks/{id}","href":"/api-reference/sip-trunks/update-a-sip-trunk"},{"title":"Rotate trunk credentials","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /sip-trunks/{id}/rotate","href":"/api-reference/sip-trunks/rotate-trunk-credentials"}]},{"group":"Carriers","pages":[{"title":"The carrier registry","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /carriers","href":"/api-reference/carriers/the-carrier-registry"}]},{"group":"Integrations","pages":[{"title":"List connected carrier accounts","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /integrations","href":"/api-reference/integrations/list-connected-carrier-accounts"},{"title":"Connect a carrier account","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /integrations","href":"/api-reference/integrations/connect-a-carrier-account"},{"title":"One integration, with its numbers","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /integrations/{id}","href":"/api-reference/integrations/one-integration-with-its-numbers"},{"title":"Disconnect","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /integrations/{id}","href":"/api-reference/integrations/disconnect"},{"title":"Replace integration credentials","description":"Re-validated against the carrier, then written as a **new Secret Manager\nversion under the same reference** — so nothing downstream needs a row\nchange. The gateway trunk's auth is updated in lockstep, as is the SMS\ncredential mirror for messaging carriers. A rejection marks the\nintegration `status: \"error\"` with `lastError` set.\n","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /integrations/{id}/credentials","href":"/api-reference/integrations/replace-integration-credentials"},{"title":"Change how a gateway is dialed","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /integrations/{id}/gateway","href":"/api-reference/integrations/change-how-a-gateway-is-dialed"},{"title":"List available numbers","description":"Empty for messaging carriers and for manually provisioned ones — there\nis no API to enumerate.\n","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /integrations/{id}/available-numbers","href":"/api-reference/integrations/list-available-numbers"},{"title":"Add numbers to an integration","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /integrations/{id}/numbers","href":"/api-reference/integrations/add-numbers-to-an-integration"}]},{"group":"Batches","pages":[{"title":"List batches","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /batches","href":"/api-reference/batches/list-batches"},{"title":"Create a batch","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /batches","href":"/api-reference/batches/create-a-batch"},{"title":"Fetch a batch","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /batches/{id}","href":"/api-reference/batches/fetch-a-batch"},{"title":"List rows","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /batches/{id}/rows","href":"/api-reference/batches/list-rows"},{"title":"Append rows","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /batches/{id}/rows","href":"/api-reference/batches/append-rows"},{"title":"Check a CSV before creating anything","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /batches/rows.csv/preview","href":"/api-reference/batches/check-a-csv-before-creating-anything"},{"title":"Append rows from a CSV","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /batches/{id}/rows.csv","href":"/api-reference/batches/append-rows-from-a-csv"},{"title":"Cancel one row","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /batches/{id}/rows/{rowId}","href":"/api-reference/batches/cancel-one-row"},{"title":"Pause a running batch","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /batches/{id}/pause","href":"/api-reference/batches/pause-a-running-batch"},{"title":"Resume a paused batch","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /batches/{id}/resume","href":"/api-reference/batches/resume-a-paused-batch"},{"title":"Cancel a batch","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /batches/{id}/cancel","href":"/api-reference/batches/cancel-a-batch"},{"title":"Requeue rows as a new run","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /batches/{id}/restart","href":"/api-reference/batches/requeue-rows-as-a-new-run"},{"title":"The block plan","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /batches/{id}/blocks","href":"/api-reference/batches/the-block-plan"},{"title":"Resize a block","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /batches/{id}/blocks/{blockNo}","href":"/api-reference/batches/resize-a-block"},{"title":"Dial the next block","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /batches/{id}/blocks/next","href":"/api-reference/batches/dial-the-next-block"},{"title":"List dial attempts","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /batches/{id}/attempts","href":"/api-reference/batches/list-dial-attempts"}]},{"group":"Callbacks","pages":[{"title":"List callbacks","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /callbacks","href":"/api-reference/callbacks/list-callbacks"},{"title":"One callback","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /callbacks/{id}","href":"/api-reference/callbacks/one-callback"},{"title":"Update a callback","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /callbacks/{id}","href":"/api-reference/callbacks/update-a-callback"},{"title":"Let campaigns call a number again","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /callbacks/{id}/release","href":"/api-reference/callbacks/let-campaigns-call-a-number-again"}]},{"group":"Reports","pages":[{"title":"List reports","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /reports","href":"/api-reference/reports/list-reports"},{"title":"Create a report","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /reports","href":"/api-reference/reports/create-a-report"},{"title":"One report","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /reports/{id}","href":"/api-reference/reports/one-report"},{"title":"Delete a report","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /reports/{id}","href":"/api-reference/reports/delete-a-report"},{"title":"Update a report","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /reports/{id}","href":"/api-reference/reports/update-a-report"}]},{"group":"Number Rotation","pages":[{"title":"Per-number spacing, caps, and cooldown","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /number-rotation","href":"/api-reference/number-rotation/per-number-spacing-caps-and-cooldown"},{"title":"Set rotation for one number","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml put /number-rotation/{e164}","href":"/api-reference/number-rotation/set-rotation-for-one-number"}]},{"group":"Payments","pages":[{"title":"List payment attempts","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /payments","href":"/api-reference/payments/list-payment-attempts"},{"title":"Get a payment attempt","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /payments/{id}","href":"/api-reference/payments/get-a-payment-attempt"},{"title":"The workspace's payment carrier","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /payment-carriers/twilio-stripe","href":"/api-reference/payments/the-workspaces-payment-carrier"},{"title":"Set up or change the payment carrier","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml put /payment-carriers/twilio-stripe","href":"/api-reference/payments/set-up-or-change-the-payment-carrier"},{"title":"Remove the payment carrier","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /payment-carriers/twilio-stripe","href":"/api-reference/payments/remove-the-payment-carrier"},{"title":"Numbers in the Twilio account that could be Pay numbers","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /payment-carriers/twilio-stripe/available-numbers","href":"/api-reference/payments/numbers-in-the-twilio-account-that-could-be-pay-numbers"},{"title":"Choose the workspace's Pay numbers","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml put /payment-carriers/twilio-stripe/numbers","href":"/api-reference/payments/choose-the-workspaces-pay-numbers"},{"title":"Point a Pay number at the payment webhook","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /payment-carriers/twilio-stripe/numbers/{e164}/webhook","href":"/api-reference/payments/point-a-pay-number-at-the-payment-webhook"}]},{"group":"SMS","pages":[{"title":"SMS provider capabilities","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /sms/capabilities","href":"/api-reference/sms/sms-provider-capabilities"},{"title":"Store provider credentials","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml put /sms/providers/{provider}","href":"/api-reference/sms/store-provider-credentials"},{"title":"Remove provider credentials","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /sms/providers/{provider}","href":"/api-reference/sms/remove-provider-credentials"},{"title":"List SMS configurations","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /sms/configurations","href":"/api-reference/sms/list-sms-configurations"},{"title":"Create an SMS configuration","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /sms/configurations","href":"/api-reference/sms/create-an-sms-configuration"},{"title":"Delete an SMS configuration","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /sms/configurations/{id}","href":"/api-reference/sms/delete-an-sms-configuration"},{"title":"Update an SMS configuration","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /sms/configurations/{id}","href":"/api-reference/sms/update-an-sms-configuration"},{"title":"List SMS senders","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /sms/senders","href":"/api-reference/sms/list-sms-senders"},{"title":"Provider content templates","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /sms/templates","href":"/api-reference/sms/provider-content-templates"},{"title":"Render exactly what a send would produce","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /sms/preview","href":"/api-reference/sms/render-exactly-what-a-send-would-produce"},{"title":"Send an SMS","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /sms","href":"/api-reference/sms/send-an-sms"},{"title":"Message log","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /sms/messages","href":"/api-reference/sms/message-log"}]},{"group":"Webhooks","pages":[{"title":"Read the tenant's webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /webhook-config","href":"/api-reference/webhooks/read-the-tenants-webhook-endpoint"},{"title":"Set the webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml put /webhook-config","href":"/api-reference/webhooks/set-the-webhook-endpoint"},{"title":"Stop deliveries","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /webhook-config","href":"/api-reference/webhooks/stop-deliveries"},{"title":"Rotate the signing secret","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /signing-secret/rotate","href":"/api-reference/webhooks/rotate-the-signing-secret"},{"title":"Rotate the signing secret (alias)","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /webhook-config/rotate-secret","href":"/api-reference/webhooks/rotate-the-signing-secret-alias"},{"title":"Delivery records","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /webhook-deliveries","href":"/api-reference/webhooks/delivery-records"},{"title":"Fetch a delivery","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /webhook-deliveries/{id}","href":"/api-reference/webhooks/fetch-a-delivery"},{"title":"Resend a delivery","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /webhook-deliveries/{id}/resend","href":"/api-reference/webhooks/resend-a-delivery"}]},{"group":"Tenants","pages":[{"title":"Read this customer's retention period","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /retention","href":"/api-reference/tenants/read-this-customers-retention-period"},{"title":"Set this customer's retention period","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml put /retention","href":"/api-reference/tenants/set-this-customers-retention-period"},{"title":"Read recording retention","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /tenants/retention","href":"/api-reference/tenants/read-recording-retention"},{"title":"Set this tenant's recording retention","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml put /tenants/{id}/retention","href":"/api-reference/tenants/set-this-tenants-recording-retention"},{"title":"Fall back to the bucket default","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /tenants/{id}/retention","href":"/api-reference/tenants/fall-back-to-the-bucket-default"}]},{"group":"Contacts","pages":[{"title":"List contacts","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/accounts","href":"/api-reference/contacts/list-contacts"},{"title":"Create a contact","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/accounts","href":"/api-reference/contacts/create-a-contact"},{"title":"Fetch one contact","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/accounts/{id}","href":"/api-reference/contacts/fetch-one-contact"},{"title":"Delete a contact","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /contacts/accounts/{id}","href":"/api-reference/contacts/delete-a-contact"},{"title":"Update a contact","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /contacts/accounts/{id}","href":"/api-reference/contacts/update-a-contact"},{"title":"Delete many contacts at once","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/accounts/bulk-delete","href":"/api-reference/contacts/delete-many-contacts-at-once"},{"title":"Add a phone number or email to a contact","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/accounts/{id}/channels","href":"/api-reference/contacts/add-a-phone-number-or-email-to-a-contact"},{"title":"Remove a channel","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /contacts/accounts/{id}/channels/{channelId}","href":"/api-reference/contacts/remove-a-channel"},{"title":"Update a channel","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /contacts/accounts/{id}/channels/{channelId}","href":"/api-reference/contacts/update-a-channel"},{"title":"Everything that has happened to this contact","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/accounts/{id}/timeline","href":"/api-reference/contacts/everything-that-has-happened-to-this-contact"},{"title":"Consent, local time, and attempt counts","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/accounts/{id}/compliance","href":"/api-reference/contacts/consent-local-time-and-attempt-counts"},{"title":"Record the consent basis","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml put /contacts/accounts/{id}/compliance","href":"/api-reference/contacts/record-the-consent-basis"},{"title":"List custom attribute definitions","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/attributes","href":"/api-reference/contacts/list-custom-attribute-definitions"},{"title":"Define a custom attribute","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/attributes","href":"/api-reference/contacts/define-a-custom-attribute"},{"title":"Delete an attribute definition","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /contacts/attributes/{id}","href":"/api-reference/contacts/delete-an-attribute-definition"},{"title":"Rename, re-option, or archive an attribute","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /contacts/attributes/{id}","href":"/api-reference/contacts/rename-re-option-or-archive-an-attribute"},{"title":"List a contact's files","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/accounts/{id}/files","href":"/api-reference/contacts/list-a-contacts-files"},{"title":"Attach a file to a contact","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/accounts/{id}/files","href":"/api-reference/contacts/attach-a-file-to-a-contact"},{"title":"Download a file","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/files/{fileId}","href":"/api-reference/contacts/download-a-file"},{"title":"Delete a file","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /contacts/files/{fileId}","href":"/api-reference/contacts/delete-a-file"},{"title":"Past imports","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/imports","href":"/api-reference/contacts/past-imports"},{"title":"Import contacts from a CSV","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/imports","href":"/api-reference/contacts/import-contacts-from-a-csv"},{"title":"A CSV template with the recognised headers","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/imports/template","href":"/api-reference/contacts/a-csv-template-with-the-recognised-headers"},{"title":"One import's receipt","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/imports/{id}","href":"/api-reference/contacts/one-imports-receipt"},{"title":"Tenant contact settings","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/settings","href":"/api-reference/contacts/tenant-contact-settings"},{"title":"Choose which detail tabs to show, and in what order","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml put /contacts/settings","href":"/api-reference/contacts/choose-which-detail-tabs-to-show-and-in-what-order"},{"title":"The tab registry, and which are enabled","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/tabs","href":"/api-reference/contacts/the-tab-registry-and-which-are-enabled"}]},{"group":"Do Not Contact","pages":[{"title":"The suppression list","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/dnc","href":"/api-reference/do-not-contact/the-suppression-list"},{"title":"Suppress one address","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/dnc","href":"/api-reference/do-not-contact/suppress-one-address"},{"title":"Ask whether addresses are suppressed","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/dnc/check","href":"/api-reference/do-not-contact/ask-whether-addresses-are-suppressed"},{"title":"Upload a suppression list","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/dnc/import","href":"/api-reference/do-not-contact/upload-a-suppression-list"},{"title":"Lift a suppression","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /contacts/dnc/{id}","href":"/api-reference/do-not-contact/lift-a-suppression"},{"title":"Correct an entry's value or reason","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /contacts/dnc/{id}","href":"/api-reference/do-not-contact/correct-an-entrys-value-or-reason"},{"title":"The person-level decision, and which of their addresses are suppressed","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/accounts/{id}/dnc","href":"/api-reference/do-not-contact/the-person-level-decision-and-which-of-their-addresses-are-suppressed"},{"title":"Mark a person do-not-contact, or clear it","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml put /contacts/accounts/{id}/dnc","href":"/api-reference/do-not-contact/mark-a-person-do-not-contact-or-clear-it"}]},{"group":"Audiences","pages":[{"title":"List audiences","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/audiences","href":"/api-reference/audiences/list-audiences"},{"title":"Save a filter as an audience","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/audiences","href":"/api-reference/audiences/save-a-filter-as-an-audience"},{"title":"The fields a filter may reach, and their comparators","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/audiences/fields","href":"/api-reference/audiences/the-fields-a-filter-may-reach-and-their-comparators"},{"title":"Count and sample who a filter matches","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/audiences/preview","href":"/api-reference/audiences/count-and-sample-who-a-filter-matches"},{"title":"Fetch one audience","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/audiences/{id}","href":"/api-reference/audiences/fetch-one-audience"},{"title":"Delete an audience","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /contacts/audiences/{id}","href":"/api-reference/audiences/delete-an-audience"},{"title":"Rename an audience or change its filter","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /contacts/audiences/{id}","href":"/api-reference/audiences/rename-an-audience-or-change-its-filter"},{"title":"Who is in an audience right now","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/audiences/{id}/members","href":"/api-reference/audiences/who-is-in-an-audience-right-now"}]},{"group":"Campaigns","pages":[{"title":"List campaigns","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/campaigns","href":"/api-reference/campaigns/list-campaigns"},{"title":"Create a campaign","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/campaigns","href":"/api-reference/campaigns/create-a-campaign"},{"title":"What a prompt variable can be filled from","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/campaigns/variable-sources","href":"/api-reference/campaigns/what-a-prompt-variable-can-be-filled-from"},{"title":"The source each prompt variable name-matches to","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/campaigns/resolve-variables","href":"/api-reference/campaigns/the-source-each-prompt-variable-name-matches-to"},{"title":"Delete many campaigns at once","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/campaigns/bulk-delete","href":"/api-reference/campaigns/delete-many-campaigns-at-once"},{"title":"Fetch one campaign","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml get /contacts/campaigns/{id}","href":"/api-reference/campaigns/fetch-one-campaign"},{"title":"Delete a campaign","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml delete /contacts/campaigns/{id}","href":"/api-reference/campaigns/delete-a-campaign"},{"title":"Edit a campaign that has not launched","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /contacts/campaigns/{id}","href":"/api-reference/campaigns/edit-a-campaign-that-has-not-launched"},{"title":"Change a running campaign, safely","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml patch /contacts/campaigns/{id}/live","href":"/api-reference/campaigns/change-a-running-campaign-safely"},{"title":"Turn the audience into calls","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/campaigns/{id}/launch","href":"/api-reference/campaigns/turn-the-audience-into-calls"},{"title":"Dial the next block","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/campaigns/{id}/runs/next","href":"/api-reference/campaigns/dial-the-next-block"},{"title":"Pause a running campaign","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/campaigns/{id}/pause","href":"/api-reference/campaigns/pause-a-running-campaign"},{"title":"Resume a paused campaign","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/campaigns/{id}/resume","href":"/api-reference/campaigns/resume-a-paused-campaign"},{"title":"Stop a campaign for good","deprecated":null,"version":null,"openapi":"/openapi/api-public-v1.yaml post /contacts/campaigns/{id}/stop","href":"/api-reference/campaigns/stop-a-campaign-for-good"}]}]}]},"basePath":"","title":"Change how a gateway is dialed - Vodex API","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}