Switch API reference
Switch: customer trunks
Customer trunks: addressing, credentials, limits, readiness and approvals.
BrowseSwitch: customer trunks
List the trunk authentication methods available to you
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
For each method: what the customer must send and what the switch checks. Methods the platform cannot honour for you are omitted.
Response 200
datarequiredobject[]
moderequiredstring · data[].mode
One ofip,credentials,ip_and_credentials,registration,certificatetitlerequiredstring · data[].title
summaryrequiredstring · data[].summary
sendsrequiredstring[] · data[].sends
What the customer must sendchecksrequiredstring[] · data[].checks
What the switch checks on every callrequiresrequiredstring[] · data[].requires
One ofaddresses,credentialsneedsPlatformSupportboolean · data[].needsPlatformSupport
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Update a Switch customer trunk
PATCH/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Setting status to disabled stops new calls but keeps the trunk configurable. A sipPassword sent here is echoed back once. Archived trunks are frozen: restore first. Send X-If-Unchanged-Since: <updatedAt you loaded> to have the save refused with 409 STALE_WRITE if someone changed the record since.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
labelstring
max 120 charsauthModestring
What the customer must present; the service refuses a mode the trunk is not configured forOne ofip,credentials,ip_and_credentials,registration,certificatesipUsernamestring | null
max 64 charssipPasswordstring | null
max 64 charsmaxConcurrentCallsinteger | null
0 to 100000maxCpsinteger | null
0 to 10000markupPctnumber | null
0 to 10000billingIncrementstring | null
max 10 charsblockedPrefixesstring | null
max 8000 charsstatusstring
One ofactive,disabledmediaModestring
One ofproxy,directtechPrefixstring | null
max 24 charscliRewriteobject | null
modestring · cliRewrite.mode
One ofpatternvaluestring · cliRewrite.value
max 24 charsstripinteger · cliRewrite.strip
0 to 15addstring · cliRewrite.add
max 12 charsmatchstring · cliRewrite.match
max 200 charsreplacestring · cliRewrite.replace
max 200 charsallowedPrefixesstring[] | null
allowedCountriesstring[] | null
blockedCountriesstring[] | null
maxCallDurationSecondsinteger | null
1 to 21600requireCliboolean
allowedClisstring[] | null
marginProtectionModestring
One ofoff,monitor,enforceminMarginPctnumber | null
0 to 99.999minMarginAbsnumber | null
0 to 1000maxLossPerMinutenumber | null
0 to 1000dailyLossLimitnumber | null
Warns only; never blocks0 to 10000000dailyLossLimitPctnumber | null
0 to 100000
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
subAccountIdrequiredstring (uuid) · data.subAccountId
The customer this trunk belongs tolabelrequiredstring · data.label
statusrequiredstring · data.status
One ofactive,disabled,archivedauthModestring · data.authMode
One ofip,credentials,ip_and_credentials,registration,certificatesipUsernamerequiredstring | null · data.sipUsername
sipPasswordSetrequiredboolean · data.sipPasswordSet
maxConcurrentCallsrequiredinteger | null · data.maxConcurrentCalls
Null inherits the customer ceilingmaxCpsrequiredinteger | null · data.maxCps
markupPctrequiredstring | null · data.markupPct
billingIncrementrequiredstring | null · data.billingIncrement
techPrefixrequiredstring | null · data.techPrefix
mediaModestring · data.mediaMode
One ofproxy,directcliRewriterequiredobject | null · data.cliRewrite
allowedPrefixesrequiredstring[] | null · data.allowedPrefixes
allowedCountriesrequiredstring[] | null · data.allowedCountries
blockedCountriesrequiredstring[] | null · data.blockedCountries
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Delete an unused Switch customer trunk
DELETE/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Refused, naming the dependency, once the trunk has carried traffic, holds rates or routing, or is the customer's last trunk. Archive it instead. Check removability first.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
deletedrequiredboolean · data.deleted
One oftruelabelrequiredstring · data.label
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Show the configuration actually in force on a trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Every setting with the value a call would meet and the level it was inherited from, resolved by the same code as the call path. Read-only.
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
trunkrequiredobject · data.trunk
idrequiredstring (uuid) · data.trunk.id
labelrequiredstring · data.trunk.label
statusrequiredstring · data.trunk.status
customerIdrequiredstring (uuid) · data.trunk.customerId
customerLabelrequiredstring · data.trunk.customerLabel
sectionsrequiredobject[] · data.sections
Each setting with the value in force and the level it came fromcapacityrequiredobject · data.capacity
limitsrequiredobject[] · data.capacity.limits
refusalsany · data.capacity.refusals
checkOrderrequiredstring[] · data.capacity.checkOrder
noterequiredstring · data.capacity.note
readOnlyrequiredboolean · data.readOnly
One oftrue
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Archive a Switch customer trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Takes the trunk out of service and out of operational lists, and freezes it. Nothing is destroyed; restore brings it back disabled.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
reasonstring | null
max 500 chars
Response 200
datarequiredobject
Same fields as SwitchCustomerTrunk, shown earlier on this page.
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Restore an archived Switch customer trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Comes back disabled, so no traffic starts until you enable it.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
Same fields as SwitchCustomerTrunk, shown earlier on this page.
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Preview what disabling, enabling or archiving a trunk would do
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Live channels, recent traffic, whether it is the customer's last enabled trunk, and what survives.
Parameters
trunkIdrequiredpath · string (uuid)
actionquery · string
Default disableOne of disable, enable, archive, restore
Response 200
datarequiredobject
actionrequiredstring · data.action
One ofdisable,enable,archive,restoretrunkrequiredobject · data.trunk
idrequiredstring (uuid) · data.trunk.id
labelrequiredstring · data.trunk.label
statusrequiredstring · data.trunk.status
customerrequiredobject · data.customer
idrequiredstring (uuid) · data.customer.id
labelrequiredstring · data.customer.label
statusrequiredstring · data.customer.status
liveChannelsrequiredinteger · data.liveChannels
last24hrequiredobject · data.last24h
siblingsEnabledrequiredinteger · data.siblingsEnabled
stopsCustomerrequiredboolean · data.stopsCustomer
True when this is the customer's last enabled trunkreversiblerequiredboolean · data.reversible
consequencesrequiredstring[] · data.consequences
preservedrequiredstring[] · data.preserved
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Check whether a Switch customer trunk can be deleted
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
trunkrequiredobject · data.trunk
idrequiredstring (uuid) · data.trunk.id
labelrequiredstring · data.trunk.label
statusrequiredstring · data.trunk.status
deletablerequiredboolean · data.deletable
blockersrequiredobject[] · data.blockers
kindrequiredstring · data.blockers[].kind
One oftraffic,refusals,billing,rates,routing,audit,last_trunkcountrequiredinteger · data.blockers[].count
detailrequiredstring · data.blockers[].detail
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Clone a Switch customer trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Copies the trunk's settings and sell rates to a new trunk on the same customer.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
labelrequiredstring
max 120 chars
Response 201
datarequiredobject
idrequiredstring (uuid) · data.id
subAccountIdrequiredstring (uuid) · data.subAccountId
The customer this trunk belongs tolabelrequiredstring · data.label
statusrequiredstring · data.status
One ofactive,disabled,archivedauthModestring · data.authMode
One ofip,credentials,ip_and_credentials,registration,certificatesipUsernamerequiredstring | null · data.sipUsername
sipPasswordSetrequiredboolean · data.sipPasswordSet
maxConcurrentCallsrequiredinteger | null · data.maxConcurrentCalls
Null inherits the customer ceilingmaxCpsrequiredinteger | null · data.maxCps
markupPctrequiredstring | null · data.markupPct
billingIncrementrequiredstring | null · data.billingIncrement
techPrefixrequiredstring | null · data.techPrefix
mediaModestring · data.mediaMode
One ofproxy,directcliRewriterequiredobject | null · data.cliRewrite
allowedPrefixesrequiredstring[] | null · data.allowedPrefixes
allowedCountriesrequiredstring[] | null · data.allowedCountries
blockedCountriesrequiredstring[] | null · data.blockedCountries
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)copiedRatesrequiredinteger · data.copiedRates
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
List a trunk's allowed source addresses
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
cidrrequiredstring · data[].cidr
descriptionrequiredstring | null · data[].description
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Allow a source address on a trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Stored in canonical form. Refused when it cannot be saved (see addresses/preview); overlaps with other entries are returned in conflicts. Applies to new calls only.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
cidrrequiredstring
An IP address or CIDR blockmax 64 charsdescriptionstring
max 160 chars
Response 201
datarequiredobject
idrequiredstring (uuid) · data.id
cidrrequiredstring · data.cidr
descriptionrequiredstring | null · data.description
conflictsrequiredobject[] · data.conflicts
kindrequiredstring · data.conflicts[].kind
otherIdrequiredstring (uuid) · data.conflicts[].otherId
otherCidrrequiredstring · data.conflicts[].otherCidr
otherTrunkIdrequiredstring (uuid) | null · data.conflicts[].otherTrunkId
otherTrunkLabelrequiredstring | null · data.conflicts[].otherTrunkLabel
otherCustomerIdrequiredstring (uuid) | null · data.conflicts[].otherCustomerId
otherCustomerLabelrequiredstring | null · data.conflicts[].otherCustomerLabel
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
List a trunk's addresses with overlaps and customer-level entries
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The richer form of /ips: each entry with its canonical form and every overlapping entry on your switch, including addresses added on the customer.
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
trunkIdrequiredstring (uuid) · data.trunkId
trunkLabelrequiredstring · data.trunkLabel
customerIdrequiredstring (uuid) · data.customerId
entriesrequiredobject[] · data.entries
idrequiredstring (uuid) · data.entries[].id
cidrrequiredstring · data.entries[].cidr
canonicalrequiredstring | null · data.entries[].canonical
descriptionrequiredstring | null · data.entries[].description
ambiguousboolean · data.entries[].ambiguous
customerLevelrequiredobject[] · data.customerLevel
Addresses added on the customer, which apply to every trunkambiguousCountrequiredinteger · data.ambiguousCount
activationrequiredobject · data.activation
appliesTorequiredstring · data.activation.appliesTo
One ofnew_requestsaffectsCallsInProgressrequiredboolean · data.activation.affectsCallsInProgress
One offalsenoterequiredstring · data.activation.note
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Preview an address before allowing it on a trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Read-only: the canonical form, size, whether it would be refused, and what it overlaps.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
cidrrequiredstring
max 64 chars
Response 200
datarequiredobject
canonicalrequiredstring · data.canonical
prefixBitsrequiredinteger · data.prefixBits
addressCountrequirednumber · data.addressCount
blockedrequiredobject | null · data.blocked
Set when the address cannot be saved at allreasonrequiredstring · data.blocked.reason
conflictsrequiredobject[] · data.conflicts
kindrequiredstring · data.conflicts[].kind
otherIdrequiredstring (uuid) · data.conflicts[].otherId
otherCidrrequiredstring · data.conflicts[].otherCidr
otherTrunkIdrequiredstring (uuid) | null · data.conflicts[].otherTrunkId
otherTrunkLabelrequiredstring | null · data.conflicts[].otherTrunkLabel
otherCustomerIdrequiredstring (uuid) | null · data.conflicts[].otherCustomerId
otherCustomerLabelrequiredstring | null · data.conflicts[].otherCustomerLabel
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Test a caller-ID rewrite rule against a sample number
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Dry run; saves nothing and needs no trunk.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Request body (application/json)
ruleany
A cliRewrite rule as used on a trunksamplerequiredstring
max 32 chars
Response 200
datarequiredobject
okrequiredboolean · data.ok
resultrequiredstring | null · data.result
errorstring · data.error
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Remove an allowed source address from a trunk
DELETE/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
aclIdrequiredpath · string (uuid)
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
cidrrequiredstring · data.cidr
descriptionrequiredstring | null · data.description
deletedrequiredboolean · data.deleted
One oftrue
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Set routing on a Switch customer trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Route group, failover group, dialplan, strategy or a direct supplier for this trunk. Send X-If-Unchanged-Since: <updatedAt you loaded> to have the save refused with 409 STALE_WRITE if someone changed the record since.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
routePlanIdstring (uuid) | null
failoverRoutePlanIdstring (uuid) | null
directRouteIdstring (uuid) | null
directVendorTrunkIdstring (uuid) | null
dialplanIdstring (uuid) | null
strategyOverridestring | null
max 24 chars
Response 200
datarequiredobject
subAccountIdrequiredstring (uuid) · data.subAccountId
customerTrunkIdstring (uuid) | null · data.customerTrunkId
dialplanIdrequiredstring (uuid) | null · data.dialplanId
routePlanIdrequiredstring (uuid) | null · data.routePlanId
failoverRoutePlanIdrequiredstring (uuid) | null · data.failoverRoutePlanId
strategyOverriderequiredstring | null · data.strategyOverride
directRouteIdrequiredstring (uuid) | null · data.directRouteId
directVendorTrunkIdrequiredstring (uuid) | null · data.directVendorTrunkId
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Show the route wired up for a trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Customer, trunk, fixed route or route group, then supplier trunks, with ids. For what a specific number would do, use /switch/routing/preview.
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
customerrequiredobject | null · data.customer
idrequiredstring (uuid) · data.customer.id
labelrequiredstring · data.customer.label
customerTrunkrequiredobject · data.customerTrunk
idrequiredstring (uuid) · data.customerTrunk.id
labelrequiredstring · data.customerTrunk.label
statusrequiredstring · data.customerTrunk.status
techPrefixrequiredstring | null · data.customerTrunk.techPrefix
kindrequiredstring · data.kind
Fixed route, route group, or nothing wiredOne offixed,group,nonefixedrequiredobject | null · data.fixed
grouprequiredobject | null · data.group
failoverGrouprequiredobject | null · data.failoverGroup
dialplanrequiredobject | null · data.dialplan
idrequiredstring (uuid) · data.dialplan.id
namerequiredstring · data.dialplan.name
strategyOverriderequiredstring | null · data.strategyOverride
unroutedrequiredboolean · data.unrouted
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Reveal a Switch customer trunk's SIP credentials
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Returns the current username and password without changing them. Every reveal is recorded in the audit log.
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
sipUsernamerequiredstring | null · data.sipUsername
sipPasswordrequiredstring | null · data.sipPassword
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get a trunk's credential history and last successful authentication
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Everything about the credential except its value: username, storage, last change and reveal, and the last call identified with it.
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
trunkIdrequiredstring (uuid) · data.trunkId
trunkLabelrequiredstring · data.trunkLabel
customerIdrequiredstring (uuid) · data.customerId
customerLabelrequiredstring | null · data.customerLabel
usernamerequiredstring | null · data.username
passwordSetrequiredboolean · data.passwordSet
storagerequiredobject · data.storage
sealedrequiredboolean · data.storage.sealed
noterequiredstring · data.storage.note
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)lastChangeany · data.lastChange
lastRevealany · data.lastReveal
historyAvailablerequiredboolean · data.historyAvailable
lastSuccessfulAuthrequiredobject | null · data.lastSuccessfulAuth
atrequiredstring · data.lastSuccessfulAuth.at
sourceIprequiredstring | null · data.lastSuccessfulAuth.sourceIp
sourceIsRegisteredrequiredboolean · data.lastSuccessfulAuth.sourceIsRegistered
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Record that a trunk credential was copied
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Writes an audit entry only. Call it when your interface copies a credential to the clipboard.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
fieldstring
default "sipPassword"One ofsipPassword,sipUsername
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Response 204
Recorded.
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Replace a Switch customer trunk's SIP password
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Generate one, or set one by hand with mode: "manual". The new password is returned ONCE and the old one stops working immediately (no overlap window).
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
modestring
default "generate"One ofgenerate,manualpasswordstring
Required when mode is manualmax 128 chars
Response 200
datarequiredobject
trunkIdrequiredstring (uuid) · data.trunkId
usernamerequiredstring | null · data.username
passwordrequiredstring · data.password
The new password in plain text. Returned ONCE, here.moderequiredstring · data.mode
One ofgenerate,manualchangedAtrequiredstring (date-time) · data.changedAt
ISO-8601 timestamp (UTC)overlapWindowrequiredenum | null · data.overlapWindow
There is no grace period: the old password stops working immediatelyOne ofnullnoterequiredstring · data.note
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
List trunk configuration changes awaiting or after review
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
trunkIdquery · string (uuid)
statusquery · string
Comma-separated statuses, e.g. pending,approved
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
vendorTrunkIdrequiredstring (uuid) · data[].vendorTrunkId
trunkLabelrequiredstring | null · data[].trunkLabel
statusrequiredstring · data[].status
fieldsrequiredstring[] · data[].fields
changesrequiredobject[] · data[].changes
Secret fields show "(secret)", never their valuefieldrequiredstring · data[].changes[].field
fromany · data[].changes[].from
toany · data[].changes[].to
patchrequiredobject · data[].patch
beforeValuesrequiredobject · data[].beforeValues
noterequiredstring | null · data[].note
requestedByrequiredstring (uuid) · data[].requestedBy
requestedByEmailrequiredstring | null · data[].requestedByEmail
requestedAtrequiredstring (date-time) · data[].requestedAt
ISO-8601 timestamp (UTC)reviewedByrequiredstring (uuid) | null · data[].reviewedBy
reviewedAtrequiredstring (date-time) | null · data[].reviewedAt
ISO-8601 timestamp (UTC)reviewNoterequiredstring | null · data[].reviewNote
appliedAtrequiredstring (date-time) | null · data[].appliedAt
ISO-8601 timestamp (UTC)
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Approve and apply a trunk configuration change
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
applied is the trunk after the change, redacted like every trunk read (sipAuthPasswordSet / smppPasswordSet instead of the secrets). driftedSinceRequest lists fields that changed on the trunk after the request was made.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string
Request body (application/json)
notestring
Response 200
datarequiredobject
appliedrequiredobject · data.applied
driftedSinceRequestrequiredstring[] · data.driftedSinceRequest
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Reject a trunk configuration change
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string
Request body (application/json)
notestring
Response 200
datarequiredobject
rejectedrequiredboolean · data.rejected
One oftrue
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Withdraw your own pending trunk change
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
withdrawnrequiredboolean · data.withdrawn
One oftrue
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get whether supplier trunk changes need approval
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Response 200
datarequiredobject
requireTrunkApprovalrequiredboolean · data.requireTrunkApproval
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Turn supplier trunk change approval on or off
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Request body (application/json)
requireTrunkApprovalrequiredboolean
Response 200
datarequiredobject
requireTrunkApprovalrequiredboolean · data.requireTrunkApproval
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get whether trunk readiness blocks first activation
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Response 200
datarequiredobject
requireTrunkReadinessrequiredboolean · data.requireTrunkReadiness
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Turn the trunk readiness gate on or off
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
When on, it can refuse only the first-ever activation of a new trunk; existing trunks are grandfathered and bundle trunks are exempt.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Request body (application/json)
requireTrunkReadinessrequiredboolean
Response 200
datarequiredobject
requireTrunkReadinessrequiredboolean · data.requireTrunkReadiness
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get the sell deck in force on a trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The resolved deck, plus the customer and system defaults it did not pick, and a sentence saying which won.
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
deckrequiredobject | null · data.deck
idrequiredstring (uuid) · data.deck.id
namerequiredstring · data.deck.name
versionrequiredinteger · data.deck.version
statusrequiredstring · data.deck.status
currencyrequiredstring · data.deck.currency
isSystemDefaultrequiredboolean · data.deck.isSystemDefault
defaultRatePerUnitrequirednumber | null · data.deck.defaultRatePerUnit
USD per minute for destinations the deck does not list; null = refuse themchargingrequiredobject · data.deck.charging
moderequiredstring · data.mode
choicerequiredstring · data.choice
Which rule won: the trunk, the customer default or the system defaultbypassesCustomerDefaultrequiredboolean · data.bypassesCustomerDefault
customerDefaultrequiredobject | null · data.customerDefault
Same fields as SwitchCustomerSellDeckRef, shown earlier on this page.systemDefaultrequiredobject | null · data.systemDefault
Same fields as SwitchCustomerSellDeckRef, shown earlier on this page.liveRowCountrequiredinteger · data.liveRowCount
explanationrequiredstring · data.explanation
problemrequiredstring | null · data.problem
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Assign a sell deck to a trunk
PUT/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Without confirm: true nothing changes and the response shows what would be in force. With it, the trunk reprices from the next call.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
moderequiredstring
How a trunk picks its sell deckOne ofcustomer_default,system_default,deck,nonedeckIdstring (uuid) | null
confirmboolean
reasonstring
Response 200
datarequiredobject
changedboolean · data.changed
One oftruebeforeobject · data.before
Same fields as SwitchTrunkEffectiveSellDeck, shown earlier on this page.wouldBeobject · data.wouldBe
moderequiredstring · data.wouldBe.mode
deckrequiredobject | null · data.wouldBe.deck
Same fields as SwitchCustomerSellDeckRef, shown earlier on this page.ratesany · data.wouldBe.rates
bypassesCustomerDefaultrequiredboolean · data.wouldBe.bypassesCustomerDefault
warningrequiredstring | null · data.wouldBe.warning
defaultRaterequirednumber | null · data.wouldBe.defaultRate
unlistedDestinationsrequiredstring · data.wouldBe.unlistedDestinations
afterobject · data.after
Same fields as SwitchTrunkEffectiveSellDeck, shown earlier on this page.
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Preview a sell-deck assignment for a trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
What would be in force under a mode, computed by the same resolver. Writes nothing.
Parameters
trunkIdrequiredpath · string (uuid)
modequery · string
Default customer_defaultOne of customer_default, system_default, deck, nonedeckIdquery · string (uuid)
Response 200
datarequiredobject
moderequiredstring · data.mode
deckrequiredobject | null · data.deck
Same fields as SwitchCustomerSellDeckRef, shown earlier on this page.ratesany · data.rates
bypassesCustomerDefaultrequiredboolean · data.bypassesCustomerDefault
warningrequiredstring | null · data.warning
defaultRaterequirednumber | null · data.defaultRate
unlistedDestinationsrequiredstring · data.unlistedDestinations
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List a trunk's sell rates with buy cost and margin
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
trunkIdrequiredpath · string (uuid)
searchquery · string
Prefix or destination textlimitquery · integer
offsetquery · integer
viewquery · string
Default currentOne of current, scheduled, discontinued, expiring, alloriginquery · string
One of any, origin_only, destination_onlyincrementquery · string
One of any, custom, inheritedcostquery · string
One of any, missingmarginquery · string
One of any, thin, negative
Response 200
datarequiredobject
rowsrequiredobject[] · data.rows
idrequiredstring (uuid) · data.rows[].id
subAccountIdrequiredstring (uuid) · data.rows[].subAccountId
customerTrunkIdrequiredstring (uuid) | null · data.rows[].customerTrunkId
prefixrequiredstring · data.rows[].prefix
originPrefixrequiredstring · data.rows[].originPrefix
"" = any originratePerUnitrequiredmoney · data.rows[].ratePerUnit
Sell price per minute, 6-decimal USD string USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.rows[].billingIncrement
statusrequiredstring · data.rows[].status
active, pending (scheduled) or discontinuedeffectiveFromrequiredstring (date-time) · data.rows[].effectiveFrom
ISO-8601 timestamp (UTC)endDaterequiredstring (date-time) | null · data.rows[].endDate
ISO-8601 timestamp (UTC)buyCostrequirednumber | null · data.rows[].buyCost
Best eligible buy cost per minute (USD number); null = no supplier prices itmarginPctrequirednumber | null · data.rows[].marginPct
thinrequiredboolean · data.rows[].thin
negativerequiredboolean · data.rows[].negative
costSupplierrequiredstring | null · data.rows[].costSupplier
costSourcerequiredstring · data.rows[].costSource
costMatchedPrefixrequiredstring | null · data.rows[].costMatchedPrefix
costNoterequiredstring | null · data.rows[].costNote
totalrequiredinteger · data.total
totalIsPageScopedrequiredboolean · data.totalIsPageScoped
True when a cost or margin filter narrowed the page, sototalcounts this page onlylimitrequiredinteger · data.limit
offsetrequiredinteger · data.offset
viewrequiredstring · data.view
summaryrequiredobject · data.summary
prefixesrequiredinteger · data.summary.prefixes
blendedMarginPctrequirednumber | null · data.summary.blendedMarginPct
thinCountrequiredinteger · data.summary.thinCount
negativeCountrequiredinteger · data.summary.negativeCount
defaultRateCostCountrequiredinteger · data.summary.defaultRateCostCount
unpricedCountrequiredinteger · data.summary.unpricedCount
basisany · data.basis
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Add or replace one sell rate on a trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
prefixrequiredstring
max 24 charsraterequirednumber
USD per minutemin 0originstring
max 24 charsbillingIncrementstring
max 10 chars
Response 201
datarequiredobject
idrequiredstring (uuid) · data.id
subAccountIdrequiredstring (uuid) · data.subAccountId
customerTrunkIdrequiredstring (uuid) | null · data.customerTrunkId
prefixrequiredstring · data.prefix
originPrefixrequiredstring · data.originPrefix
"" = any originratePerUnitrequiredmoney · data.ratePerUnit
Sell price per minute, 6-decimal USD string USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.billingIncrement
statusrequiredstring · data.status
active, pending (scheduled) or discontinuedeffectiveFromrequiredstring (date-time) · data.effectiveFrom
ISO-8601 timestamp (UTC)endDaterequiredstring (date-time) | null · data.endDate
ISO-8601 timestamp (UTC)
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Count a trunk's sell rates by view
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
currentrequiredinteger · data.current
scheduledrequiredinteger · data.scheduled
expiringrequiredinteger · data.expiring
discontinuedrequiredinteger · data.discontinued
allrequiredinteger · data.all
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List upcoming sell-rate starts and ends on a trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
subAccountIdrequiredstring (uuid) · data[].subAccountId
customerTrunkIdrequiredstring (uuid) | null · data[].customerTrunkId
prefixrequiredstring · data[].prefix
originPrefixrequiredstring · data[].originPrefix
"" = any originratePerUnitrequiredmoney · data[].ratePerUnit
Sell price per minute, 6-decimal USD string USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data[].billingIncrement
statusrequiredstring · data[].status
active, pending (scheduled) or discontinuedeffectiveFromrequiredstring (date-time) · data[].effectiveFrom
ISO-8601 timestamp (UTC)endDaterequiredstring (date-time) | null · data[].endDate
ISO-8601 timestamp (UTC)kindrequiredstring · data[].kind
One ofstarts,endsatrequiredstring (date-time) | null · data[].at
ISO-8601 timestamp (UTC)
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List sell-rate discontinuation events on a trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject[]
revisionIdrequiredstring (uuid) | null · data[].revisionId
discontinuedAtrequiredstring (date-time) · data[].discontinuedAt
ISO-8601 timestamp (UTC)rowsrequiredinteger · data[].rows
labelrequiredstring · data[].label
effectiveany | null · data[].effective
timezonerequiredstring | null · data[].timezone
changeModerequiredstring | null · data[].changeMode
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Preview discontinuing a trunk's whole sell deck
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Omit the effective fields to act now. Send either effectiveFrom (an instant with an offset) or effectiveLocal plus timezone; a bare date is refused because midnight differs by country.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
effectiveFromstring
An instant with offset, e.g. "2026-10-01T00:00:00Z". A bare date is refused.max 40 charseffectiveLocalstring
A wall-clock time, e.g. "2026-10-01T00:00"; requirestimezonemax 30 charstimezonestring | null
IANA zone, e.g. Europe/London; always recordedmax 64 chars
Response 200
datarequiredobject
customerLabelrequiredstring · data.customerLabel
activeRatesrequiredinteger · data.activeRates
scheduledRatesrequiredinteger · data.scheduledRates
alreadyDiscontinuedrequiredinteger · data.alreadyDiscontinued
endDaterequiredstring (date-time) · data.endDate
ISO-8601 timestamp (UTC)immediaterequiredboolean · data.immediate
timezonerequiredstring | null · data.timezone
effectOnNewCallsrequiredstring · data.effectOnNewCalls
minutes30drequirednumber · data.minutes30d
calls30drequiredinteger · data.calls30d
revenue30drequirednumber · data.revenue30d
US dollars as a JSON number (computed figure)impactTruncatedrequiredboolean · data.impactTruncated
samplerequiredobject[] · data.sample
prefixrequiredstring · data.sample[].prefix
originPrefixrequiredstring · data.sample[].originPrefix
ratePerUnitrequiredmoney · data.sample[].ratePerUnit
USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.sample[].billingIncrement
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Discontinue a trunk's whole sell deck
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Nothing is deleted; priced calls keep their rate. Omit the effective fields to act now. Send either effectiveFrom (an instant with an offset) or effectiveLocal plus timezone; a bare date is refused because midnight differs by country.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
effectiveFromstring
An instant with offset, e.g. "2026-10-01T00:00:00Z". A bare date is refused.max 40 charseffectiveLocalstring
A wall-clock time, e.g. "2026-10-01T00:00"; requirestimezonemax 30 charstimezonestring | null
IANA zone, e.g. Europe/London; always recordedmax 64 charsincludeScheduledboolean
Response 200
datarequiredobject
endDaterequiredstring (date-time) · data.endDate
ISO-8601 timestamp (UTC)effectiveany · data.effective
The moment described in words and in the recorded zonerevisionIdstring (uuid) | null · data.revisionId
discontinuedrequiredinteger · data.discontinued
deletedrequiredinteger · data.deleted
Deprecated alias ofdiscontinued; nothing is deletedscheduledLeftrequiredinteger · data.scheduledLeft
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Discontinue one sell rate on a trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Omit the effective fields to act now. Send either effectiveFrom (an instant with an offset) or effectiveLocal plus timezone; a bare date is refused because midnight differs by country.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
rateIdrequiredpath · string (uuid)
Request body (application/json)
effectiveFromstring
An instant with offset, e.g. "2026-10-01T00:00:00Z". A bare date is refused.max 40 charseffectiveLocalstring
A wall-clock time, e.g. "2026-10-01T00:00"; requirestimezonemax 30 charstimezonestring | null
IANA zone, e.g. Europe/London; always recordedmax 64 chars
Response 200
datarequiredobject
endDaterequiredstring (date-time) · data.endDate
ISO-8601 timestamp (UTC)effectiveany · data.effective
The moment described in words and in the recorded zonerevisionIdstring (uuid) | null · data.revisionId
discontinuedrequiredboolean · data.discontinued
One oftruedeletedrequiredboolean · data.deleted
Deprecated alias; the rate is discontinued, not deletedOne oftrueimmediaterequiredboolean · data.immediate
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Add or replace many sell rates on a trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
rowsrequiredobject[]
prefixrequiredstring · rows[].prefix
max 24 charsraterequirednumber · rows[].rate
min 0originstring · rows[].origin
max 24 charsbillingIncrementstring · rows[].billingIncrement
max 10 chars
Response 200
datarequiredobject
appliedrequiredinteger · data.applied
revisionIdrequiredstring (uuid) | null · data.revisionId
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Discontinue one sell rate on a trunk now
DELETE/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Kept for existing clients: the rate is discontinued immediately, not deleted.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
rateIdrequiredpath · string (uuid)
Response 200
datarequiredobject
endDaterequiredstring (date-time) · data.endDate
ISO-8601 timestamp (UTC)effectiveany · data.effective
The moment described in words and in the recorded zonerevisionIdstring (uuid) | null · data.revisionId
discontinuedrequiredboolean · data.discontinued
One oftruedeletedrequiredboolean · data.deleted
Deprecated alias; the rate is discontinued, not deletedOne oftrueimmediaterequiredboolean · data.immediate
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Discontinue every sell rate on a trunk now
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject
endDaterequiredstring (date-time) · data.endDate
ISO-8601 timestamp (UTC)effectiveany · data.effective
The moment described in words and in the recorded zonerevisionIdstring (uuid) | null · data.revisionId
discontinuedrequiredinteger · data.discontinued
deletedrequiredinteger · data.deleted
Deprecated alias ofdiscontinued; nothing is deletedscheduledLeftrequiredinteger · data.scheduledLeft
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
List scheduled (future-dated) sell rates on a trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
trunkIdrequiredpath · string (uuid)
Response 200
datarequiredobject[]
Same fields as SwitchCustomerSellRate, shown earlier on this page.
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Schedule a future sell-rate change on a trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The rate becomes active at the effective moment. Omit the effective fields to act now. Send either effectiveFrom (an instant with an offset) or effectiveLocal plus timezone; a bare date is refused because midnight differs by country.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
effectiveFromstring
An instant with offset, e.g. "2026-10-01T00:00:00Z". A bare date is refused.max 40 charseffectiveLocalstring
A wall-clock time, e.g. "2026-10-01T00:00"; requirestimezonemax 30 charstimezonestring | null
IANA zone, e.g. Europe/London; always recordedmax 64 charsprefixrequiredstring
max 24 charsraterequirednumber
USD per minutemin 0originstring
max 24 charsbillingIncrementstring
max 10 chars
Response 201
datarequiredobject
Same fields as SwitchCustomerSellRate, shown earlier on this page.
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Cancel a scheduled sell rate on a trunk
DELETE/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
rateIdrequiredpath · string (uuid)
Response 200
datarequiredobject
cancelledrequiredboolean · data.cancelled
One oftrue
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Reprice as a markup over buy cost from a trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Applies to the customer's deck; on a single-trunk customer that is this trunk's deck.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
trunkIdrequiredpath · string (uuid)
Request body (application/json)
markupPctrequirednumber
min -100prefixesstring[]
Only these prefixes; omit for the whole deck
Response 200
datarequiredobject
updatedrequiredinteger · data.updated
skippedrequiredinteger · data.skipped
basisany · data.basis
revisionIdrequiredstring (uuid) | null · data.revisionId
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Export a trunk's sell rates as CSV
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Scoped to this trunk's deck; takes the same filters as the list.
Parameters
trunkIdrequiredpath · string (uuid)
searchquery · string
Prefix or destination textviewquery · string
Default currentOne of current, scheduled, discontinued, expiring, alloriginquery · string
One of any, origin_only, destination_onlyincrementquery · string
One of any, custom, inheritedcostquery · string
One of any, missingmarginquery · string
One of any, thin, negative
Response 200 (text/csv)
The trunk's filtered sell deck as a CSV attachment.
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.