Switch API reference
Switch: suppliers
Suppliers and providers you buy from: accounts, trunks, admission and diagnostics.
BrowseSwitch: suppliers
List providers with their trunks
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Every provider on your switch, each with its trunks (secrets redacted) and endpoint counts, plus trunks not yet assigned to a provider.
Response 200
datarequiredobject
accountsrequiredobject[] · data.accounts
idrequiredstring (uuid) · data.accounts[].id
namerequiredstring · data.accounts[].name
accountCoderequiredstring | null · data.accounts[].accountCode
legalNamerequiredstring | null · data.accounts[].legalName
tradingNamerequiredstring | null · data.accounts[].tradingName
providerTyperequiredstring | null · data.accounts[].providerType
One ofcarrier,aggregator,mno,mvno,sip_providercountryrequiredstring | null · data.accounts[].country
servicesrequiredstring[] | null · data.accounts[].services
portalEmailrequiredstring | null · data.accounts[].portalEmail
currencyrequiredstring · data.accounts[].currency
statusrequiredstring · data.accounts[].status
One ofdraft,pending_approval,testing,active,suspended,terminatedstatusNoterequiredstring | null · data.accounts[].statusNote
statusChangedAtrequiredstring (date-time) | null · data.accounts[].statusChangedAt
ISO-8601 timestamp (UTC)routablerequiredboolean · data.accounts[].routable
Whether this provider admits new calls at all, given its statuscontractStartrequiredstring | null · data.accounts[].contractStart
YYYY-MM-DDcontractEndrequiredstring | null · data.accounts[].contractEnd
autoRenewrequiredboolean · data.accounts[].autoRenew
rateNoticeDaysrequiredinteger | null · data.accounts[].rateNoticeDays
disputeDaysrequiredinteger | null · data.accounts[].disputeDays
billingModerequiredstring · data.accounts[].billingMode
One ofprepaid,postpaidcreditLimitrequiredstring | null · data.accounts[].creditLimit
Decimal string with 2 decimal places, e.g. "5000.00"balancerequiredmoney · data.accounts[].balance
USD as a decimal string with exactly 6 places, e.g. "0.012500".paymentTermsDaysrequiredinteger | null · data.accounts[].paymentTermsDays
invoiceCyclerequiredstring | null · data.accounts[].invoiceCycle
createdAtrequiredstring (date-time) · data.accounts[].createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.accounts[].updatedAt
ISO-8601 timestamp (UTC)trunksrequiredobject[] · data.accounts[].trunks
idrequiredstring (uuid) · data.accounts[].trunks[].id
supplierIdrequiredstring (uuid) | null · data.accounts[].trunks[].supplierId
The owning provider; null = ungroupedlabelrequiredstring · data.accounts[].trunks[].label
sourcerequiredstring · data.accounts[].trunks[].source
"external" for a carrier you entered; "marketplace" for a trunk promoted from a marketplace purchasestatusrequiredstring · data.accounts[].trunks[].status
One ofactive,disabled,draft,testing,draining,faultsipHostrequiredstring | null · data.accounts[].trunks[].sipHost
Null on a marketplace trunk: the seller address is never disclosedsipPortrequiredinteger | null · data.accounts[].trunks[].sipPort
transportrequiredstring | null · data.accounts[].trunks[].transport
One ofudp,tcp,tlstechPrefixrequiredstring | null · data.accounts[].trunks[].techPrefix
sipAuthUsernamerequiredstring | null · data.accounts[].trunks[].sipAuthUsername
sipAuthPasswordSetrequiredboolean · data.accounts[].trunks[].sipAuthPasswordSet
Whether a SIP password is stored. The value is only readable via GET /switch/suppliers/{id}/credentialssmppPasswordSetrequiredboolean · data.accounts[].trunks[].smppPasswordSet
mediaModerequiredstring · data.accounts[].trunks[].mediaMode
One ofproxy,directdefaultRatePerUnitrequiredmoney | null · data.accounts[].trunks[].defaultRatePerUnit
Cost per minute used when no deck row matches USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.accounts[].trunks[].billingIncrement
currencyrequiredstring | null · data.accounts[].trunks[].currency
capacityrequiredinteger | null · data.accounts[].trunks[].capacity
Max concurrent channelsmaxCpsrequiredinteger | null · data.accounts[].trunks[].maxCps
settlementModerequiredstring · data.accounts[].trunks[].settlementMode
One ofap,prepaidbalancerequiredmoney · data.accounts[].trunks[].balance
Prepaid credit remaining with this supplier (prepaid settlement) USD as a decimal string with exactly 6 places, e.g. "0.012500".smsDeliveryMethodrequiredstring | null · data.accounts[].trunks[].smsDeliveryMethod
One ofhttp,smppreachablerequiredboolean | null · data.accounts[].trunks[].reachable
reachCheckedAtrequiredstring (date-time) | null · data.accounts[].trunks[].reachCheckedAt
ISO-8601 timestamp (UTC)createdAtrequiredstring (date-time) · data.accounts[].trunks[].createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.accounts[].trunks[].updatedAt
ISO-8601 timestamp (UTC)endpointCountrequiredinteger · data.accounts[].trunks[].endpointCount
endpointsEnabledrequiredinteger · data.accounts[].trunks[].endpointsEnabled
trunkCountrequiredinteger · data.accounts[].trunkCount
activeTrunksrequiredinteger · data.accounts[].activeTrunks
totalCapacityrequiredinteger · data.accounts[].totalCapacity
ungroupedrequiredobject[] · data.ungrouped
idrequiredstring (uuid) · data.ungrouped[].id
supplierIdrequiredstring (uuid) | null · data.ungrouped[].supplierId
The owning provider; null = ungroupedlabelrequiredstring · data.ungrouped[].label
sourcerequiredstring · data.ungrouped[].source
"external" for a carrier you entered; "marketplace" for a trunk promoted from a marketplace purchasestatusrequiredstring · data.ungrouped[].status
One ofactive,disabled,draft,testing,draining,faultsipHostrequiredstring | null · data.ungrouped[].sipHost
Null on a marketplace trunk: the seller address is never disclosedsipPortrequiredinteger | null · data.ungrouped[].sipPort
transportrequiredstring | null · data.ungrouped[].transport
One ofudp,tcp,tlstechPrefixrequiredstring | null · data.ungrouped[].techPrefix
sipAuthUsernamerequiredstring | null · data.ungrouped[].sipAuthUsername
sipAuthPasswordSetrequiredboolean · data.ungrouped[].sipAuthPasswordSet
Whether a SIP password is stored. The value is only readable via GET /switch/suppliers/{id}/credentialssmppPasswordSetrequiredboolean · data.ungrouped[].smppPasswordSet
mediaModerequiredstring · data.ungrouped[].mediaMode
One ofproxy,directdefaultRatePerUnitrequiredmoney | null · data.ungrouped[].defaultRatePerUnit
Cost per minute used when no deck row matches USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.ungrouped[].billingIncrement
currencyrequiredstring | null · data.ungrouped[].currency
capacityrequiredinteger | null · data.ungrouped[].capacity
Max concurrent channelsmaxCpsrequiredinteger | null · data.ungrouped[].maxCps
settlementModerequiredstring · data.ungrouped[].settlementMode
One ofap,prepaidbalancerequiredmoney · data.ungrouped[].balance
Prepaid credit remaining with this supplier (prepaid settlement) USD as a decimal string with exactly 6 places, e.g. "0.012500".smsDeliveryMethodrequiredstring | null · data.ungrouped[].smsDeliveryMethod
One ofhttp,smppreachablerequiredboolean | null · data.ungrouped[].reachable
reachCheckedAtrequiredstring (date-time) | null · data.ungrouped[].reachCheckedAt
ISO-8601 timestamp (UTC)createdAtrequiredstring (date-time) · data.ungrouped[].createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.ungrouped[].updatedAt
ISO-8601 timestamp (UTC)endpointCountrequiredinteger · data.ungrouped[].endpointCount
endpointsEnabledrequiredinteger · data.ungrouped[].endpointsEnabled
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.
Create a provider
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
A provider is the carrier or company that owns one or more supplier trunks.
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)
namerequiredstring
max 160 charsaccountCodestring | null
max 40 charslegalNamestring | null
max 200 charstradingNamestring | null
max 200 charsproviderTypestring | null
One ofcarrier,aggregator,mno,mvno,sip_providerregistrationNumberstring | null
max 80 charstaxIdstring | null
max 80 charsvatIdstring | null
max 80 charsaddressstring | null
max 600 charscountrystring | null
max 2 charsaccountManagerstring | null
max 160 charstagsstring[] | null
servicesstring[] | null
One oftermination,origination,did,smsportalEmailstring (email) | null
max 255 charsnotesstring | null
max 4000 charscurrencystring | null
max 3 charsstatusstring
Accepted on create only; later changes go through POST /{id}/statusOne ofdraft,pending_approval,testing,active,suspended,terminatedcontractStartstring | null
max 10 charscontractEndstring | null
max 10 charsautoRenewboolean
rateNoticeDaysnumber | string | null
disputeDaysnumber | string | null
billingModestring | null
One ofprepaid,postpaidcreditLimitnumber | string | null
paymentTermsDaysnumber | string | null
invoiceCyclestring | null
One ofweekly,biweekly,monthlybillingTimezonestring | null
max 64 chars
Response 201
datarequiredobject
idrequiredstring (uuid) · data.id
namerequiredstring · data.name
accountCoderequiredstring | null · data.accountCode
legalNamerequiredstring | null · data.legalName
tradingNamerequiredstring | null · data.tradingName
providerTyperequiredstring | null · data.providerType
One ofcarrier,aggregator,mno,mvno,sip_providercountryrequiredstring | null · data.country
servicesrequiredstring[] | null · data.services
portalEmailrequiredstring | null · data.portalEmail
currencyrequiredstring · data.currency
statusrequiredstring · data.status
One ofdraft,pending_approval,testing,active,suspended,terminatedstatusNoterequiredstring | null · data.statusNote
statusChangedAtrequiredstring (date-time) | null · data.statusChangedAt
ISO-8601 timestamp (UTC)routablerequiredboolean · data.routable
Whether this provider admits new calls at all, given its statuscontractStartrequiredstring | null · data.contractStart
YYYY-MM-DDcontractEndrequiredstring | null · data.contractEnd
autoRenewrequiredboolean · data.autoRenew
rateNoticeDaysrequiredinteger | null · data.rateNoticeDays
disputeDaysrequiredinteger | null · data.disputeDays
billingModerequiredstring · data.billingMode
One ofprepaid,postpaidcreditLimitrequiredstring | null · data.creditLimit
Decimal string with 2 decimal places, e.g. "5000.00"balancerequiredmoney · data.balance
USD as a decimal string with exactly 6 places, e.g. "0.012500".paymentTermsDaysrequiredinteger | null · data.paymentTermsDays
invoiceCyclerequiredstring | null · data.invoiceCycle
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. - 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 a provider with its trunks, endpoints and contacts
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
namerequiredstring · data.name
accountCoderequiredstring | null · data.accountCode
legalNamerequiredstring | null · data.legalName
tradingNamerequiredstring | null · data.tradingName
providerTyperequiredstring | null · data.providerType
One ofcarrier,aggregator,mno,mvno,sip_providercountryrequiredstring | null · data.country
servicesrequiredstring[] | null · data.services
portalEmailrequiredstring | null · data.portalEmail
currencyrequiredstring · data.currency
statusrequiredstring · data.status
One ofdraft,pending_approval,testing,active,suspended,terminatedstatusNoterequiredstring | null · data.statusNote
statusChangedAtrequiredstring (date-time) | null · data.statusChangedAt
ISO-8601 timestamp (UTC)routablerequiredboolean · data.routable
Whether this provider admits new calls at all, given its statuscontractStartrequiredstring | null · data.contractStart
YYYY-MM-DDcontractEndrequiredstring | null · data.contractEnd
autoRenewrequiredboolean · data.autoRenew
rateNoticeDaysrequiredinteger | null · data.rateNoticeDays
disputeDaysrequiredinteger | null · data.disputeDays
billingModerequiredstring · data.billingMode
One ofprepaid,postpaidcreditLimitrequiredstring | null · data.creditLimit
Decimal string with 2 decimal places, e.g. "5000.00"balancerequiredmoney · data.balance
USD as a decimal string with exactly 6 places, e.g. "0.012500".paymentTermsDaysrequiredinteger | null · data.paymentTermsDays
invoiceCyclerequiredstring | null · data.invoiceCycle
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)contactsrequiredobject[] · data.contacts
idrequiredstring (uuid) · data.contacts[].id
supplierIdrequiredstring (uuid) · data.contacts[].supplierId
rolerequiredstring · data.contacts[].role
One ofnoc,rates,billing,finance,fraud,account,emergencynamerequiredstring | null · data.contacts[].name
emailrequiredstring | null · data.contacts[].email
phonerequiredstring | null · data.contacts[].phone
timezonerequiredstring | null · data.contacts[].timezone
notifyrequiredboolean · data.contacts[].notify
notesrequiredstring | null · data.contacts[].notes
createdAtrequiredstring (date-time) · data.contacts[].createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.contacts[].updatedAt
ISO-8601 timestamp (UTC)trunksrequiredobject[] · data.trunks
idrequiredstring (uuid) · data.trunks[].id
supplierIdrequiredstring (uuid) | null · data.trunks[].supplierId
The owning provider; null = ungroupedlabelrequiredstring · data.trunks[].label
sourcerequiredstring · data.trunks[].source
"external" for a carrier you entered; "marketplace" for a trunk promoted from a marketplace purchasestatusrequiredstring · data.trunks[].status
One ofactive,disabled,draft,testing,draining,faultsipHostrequiredstring | null · data.trunks[].sipHost
Null on a marketplace trunk: the seller address is never disclosedsipPortrequiredinteger | null · data.trunks[].sipPort
transportrequiredstring | null · data.trunks[].transport
One ofudp,tcp,tlstechPrefixrequiredstring | null · data.trunks[].techPrefix
sipAuthUsernamerequiredstring | null · data.trunks[].sipAuthUsername
sipAuthPasswordSetrequiredboolean · data.trunks[].sipAuthPasswordSet
Whether a SIP password is stored. The value is only readable via GET /switch/suppliers/{id}/credentialssmppPasswordSetrequiredboolean · data.trunks[].smppPasswordSet
mediaModerequiredstring · data.trunks[].mediaMode
One ofproxy,directdefaultRatePerUnitrequiredmoney | null · data.trunks[].defaultRatePerUnit
Cost per minute used when no deck row matches USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.trunks[].billingIncrement
currencyrequiredstring | null · data.trunks[].currency
capacityrequiredinteger | null · data.trunks[].capacity
Max concurrent channelsmaxCpsrequiredinteger | null · data.trunks[].maxCps
settlementModerequiredstring · data.trunks[].settlementMode
One ofap,prepaidbalancerequiredmoney · data.trunks[].balance
Prepaid credit remaining with this supplier (prepaid settlement) USD as a decimal string with exactly 6 places, e.g. "0.012500".smsDeliveryMethodrequiredstring | null · data.trunks[].smsDeliveryMethod
One ofhttp,smppreachablerequiredboolean | null · data.trunks[].reachable
reachCheckedAtrequiredstring (date-time) | null · data.trunks[].reachCheckedAt
ISO-8601 timestamp (UTC)createdAtrequiredstring (date-time) · data.trunks[].createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.trunks[].updatedAt
ISO-8601 timestamp (UTC)endpointsrequiredobject[] · data.trunks[].endpoints
idrequiredstring (uuid) · data.trunks[].endpoints[].id
vendorTrunkIdrequiredstring (uuid) · data.trunks[].endpoints[].vendorTrunkId
rolerequiredstring · data.trunks[].endpoints[].role
One ofprimary,backuphostrequiredstring | null · data.trunks[].endpoints[].host
Null on a marketplace trunkportrequiredinteger | null · data.trunks[].endpoints[].port
transportrequiredstring · data.trunks[].endpoints[].transport
One ofudp,tcp,tlspriorityrequiredinteger · data.trunks[].endpoints[].priority
weightPctrequiredinteger | null · data.trunks[].endpoints[].weightPct
enabledrequiredboolean · data.trunks[].endpoints[].enabled
optionsIntervalSecondsrequiredinteger | null · data.trunks[].endpoints[].optionsIntervalSeconds
failureThresholdrequiredinteger · data.trunks[].endpoints[].failureThreshold
recoveryThresholdrequiredinteger · data.trunks[].endpoints[].recoveryThreshold
autoDisablerequiredboolean · data.trunks[].endpoints[].autoDisable
reachablerequiredboolean | null · data.trunks[].endpoints[].reachable
reachLatencyMsrequiredinteger | null · data.trunks[].endpoints[].reachLatencyMs
reachCheckedAtrequiredstring (date-time) | null · data.trunks[].endpoints[].reachCheckedAt
ISO-8601 timestamp (UTC)healthDisabledAtrequiredstring (date-time) | null · data.trunks[].endpoints[].healthDisabledAt
ISO-8601 timestamp (UTC)healthrequiredobject · data.trunks[].endpoints[].health
Derived health state (what routing believes), with its counters and thresholdsflapobject | null · data.trunks[].endpoints[].flap
createdAtrequiredstring (date-time) · data.trunks[].endpoints[].createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.trunks[].endpoints[].updatedAt
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.
Update a provider
PATCH/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Partial update; status is changed through POST /{id}/status instead. Send X-If-Unchanged-Since: <updatedAt you loaded> to be refused with 409 STALE_WRITE if someone else saved in between.
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)
namestring
max 160 charsaccountCodestring | null
max 40 charslegalNamestring | null
max 200 charstradingNamestring | null
max 200 charsproviderTypestring | null
One ofcarrier,aggregator,mno,mvno,sip_providerregistrationNumberstring | null
max 80 charstaxIdstring | null
max 80 charsvatIdstring | null
max 80 charsaddressstring | null
max 600 charscountrystring | null
max 2 charsaccountManagerstring | null
max 160 charstagsstring[] | null
servicesstring[] | null
One oftermination,origination,did,smsportalEmailstring (email) | null
max 255 charsnotesstring | null
max 4000 charscurrencystring | null
max 3 charsstatusstring
Accepted on create only; later changes go through POST /{id}/statusOne ofdraft,pending_approval,testing,active,suspended,terminatedcontractStartstring | null
max 10 charscontractEndstring | null
max 10 charsautoRenewboolean
rateNoticeDaysnumber | string | null
disputeDaysnumber | string | null
billingModestring | null
One ofprepaid,postpaidcreditLimitnumber | string | null
paymentTermsDaysnumber | string | null
invoiceCyclestring | null
One ofweekly,biweekly,monthlybillingTimezonestring | null
max 64 chars
Response 200
datarequiredobject
Same fields as SwitchProvider, 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
Delete a provider
DELETE/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Its trunks are NOT deleted: they are detached (ungrouped) with their routing intact.
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
deletedrequiredboolean · data.deleted
One oftruedetachedTrunksrequiredinteger · data.detachedTrunks
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
Change a provider lifecycle status
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Stops or resumes traffic on every trunk of the provider. The response says whether traffic changed and how many active trunks were affected.
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)
statusrequiredstring
One ofdraft,pending_approval,testing,active,suspended,terminatednotestring | null
max 1000 chars
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
namerequiredstring · data.name
accountCoderequiredstring | null · data.accountCode
legalNamerequiredstring | null · data.legalName
tradingNamerequiredstring | null · data.tradingName
providerTyperequiredstring | null · data.providerType
One ofcarrier,aggregator,mno,mvno,sip_providercountryrequiredstring | null · data.country
servicesrequiredstring[] | null · data.services
portalEmailrequiredstring | null · data.portalEmail
currencyrequiredstring · data.currency
statusrequiredstring · data.status
One ofdraft,pending_approval,testing,active,suspended,terminatedstatusNoterequiredstring | null · data.statusNote
statusChangedAtrequiredstring (date-time) | null · data.statusChangedAt
ISO-8601 timestamp (UTC)routablerequiredboolean · data.routable
Whether this provider admits new calls at all, given its statuscontractStartrequiredstring | null · data.contractStart
YYYY-MM-DDcontractEndrequiredstring | null · data.contractEnd
autoRenewrequiredboolean · data.autoRenew
rateNoticeDaysrequiredinteger | null · data.rateNoticeDays
disputeDaysrequiredinteger | null · data.disputeDays
billingModerequiredstring · data.billingMode
One ofprepaid,postpaidcreditLimitrequiredstring | null · data.creditLimit
Decimal string with 2 decimal places, e.g. "5000.00"balancerequiredmoney · data.balance
USD as a decimal string with exactly 6 places, e.g. "0.012500".paymentTermsDaysrequiredinteger | null · data.paymentTermsDays
invoiceCyclerequiredstring | null · data.invoiceCycle
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)trafficChangerequiredstring · data.trafficChange
One ofnone,resumed,stoppedaffectedTrunksrequiredinteger · data.affectedTrunks
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 provider contacts
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string
Response 200
datarequiredobject[]
Same fields as SwitchProviderContact, 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.
Add a provider contact
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
One contact per role (NOC, rates, billing, finance, fraud, account, emergency).
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)
rolerequiredstring
One ofnoc,rates,billing,finance,fraud,account,emergencynamestring | null
max 160 charsemailstring | null
max 255 charsphonestring | null
max 40 charstimezonestring | null
max 64 charsnotifyboolean
notesstring | null
max 1000 chars
Response 201
datarequiredobject
Same fields as SwitchProviderContact, 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
Update a provider contact
PATCH/
- 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
contactIdrequiredpath · string
Request body (application/json)
rolestring
One ofnoc,rates,billing,finance,fraud,account,emergencynamestring | null
max 160 charsemailstring | null
max 255 charsphonestring | null
max 40 charstimezonestring | null
max 64 charsnotifyboolean
notesstring | null
max 1000 chars
Response 200
datarequiredobject
Same fields as SwitchProviderContact, 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
Delete a provider contact
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
idrequiredpath · string
contactIdrequiredpath · string
Response 200
datarequiredobject
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
List providers with their trunks
GET/
Deprecated
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Every provider on your switch, each with its trunks (secrets redacted) and endpoint counts, plus trunks not yet assigned to a provider. Deprecated alias of the same operation under /switch/providers.
Response 200
datarequiredobject
Same fields as SwitchProviderList, 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. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Create a provider
POST/
Deprecated
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
A provider is the carrier or company that owns one or more supplier trunks. Deprecated alias of the same operation under /switch/providers.
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)
namerequiredstring
max 160 charsaccountCodestring | null
max 40 charslegalNamestring | null
max 200 charstradingNamestring | null
max 200 charsproviderTypestring | null
One ofcarrier,aggregator,mno,mvno,sip_providerregistrationNumberstring | null
max 80 charstaxIdstring | null
max 80 charsvatIdstring | null
max 80 charsaddressstring | null
max 600 charscountrystring | null
max 2 charsaccountManagerstring | null
max 160 charstagsstring[] | null
servicesstring[] | null
One oftermination,origination,did,smsportalEmailstring (email) | null
max 255 charsnotesstring | null
max 4000 charscurrencystring | null
max 3 charsstatusstring
Accepted on create only; later changes go through POST /{id}/statusOne ofdraft,pending_approval,testing,active,suspended,terminatedcontractStartstring | null
max 10 charscontractEndstring | null
max 10 charsautoRenewboolean
rateNoticeDaysnumber | string | null
disputeDaysnumber | string | null
billingModestring | null
One ofprepaid,postpaidcreditLimitnumber | string | null
paymentTermsDaysnumber | string | null
invoiceCyclestring | null
One ofweekly,biweekly,monthlybillingTimezonestring | null
max 64 chars
Response 201
datarequiredobject
Same fields as SwitchProvider, 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. - 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 a provider with its trunks, endpoints and contacts
GET/
Deprecated
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Deprecated alias of the same operation under /switch/providers.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
Same fields as SwitchProviderDetail, 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.
Update a provider
PATCH/
Deprecated
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Partial update; status is changed through POST /{id}/status instead. Send X-If-Unchanged-Since: <updatedAt you loaded> to be refused with 409 STALE_WRITE if someone else saved in between. Deprecated alias of the same operation under /switch/providers.
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)
namestring
max 160 charsaccountCodestring | null
max 40 charslegalNamestring | null
max 200 charstradingNamestring | null
max 200 charsproviderTypestring | null
One ofcarrier,aggregator,mno,mvno,sip_providerregistrationNumberstring | null
max 80 charstaxIdstring | null
max 80 charsvatIdstring | null
max 80 charsaddressstring | null
max 600 charscountrystring | null
max 2 charsaccountManagerstring | null
max 160 charstagsstring[] | null
servicesstring[] | null
One oftermination,origination,did,smsportalEmailstring (email) | null
max 255 charsnotesstring | null
max 4000 charscurrencystring | null
max 3 charsstatusstring
Accepted on create only; later changes go through POST /{id}/statusOne ofdraft,pending_approval,testing,active,suspended,terminatedcontractStartstring | null
max 10 charscontractEndstring | null
max 10 charsautoRenewboolean
rateNoticeDaysnumber | string | null
disputeDaysnumber | string | null
billingModestring | null
One ofprepaid,postpaidcreditLimitnumber | string | null
paymentTermsDaysnumber | string | null
invoiceCyclestring | null
One ofweekly,biweekly,monthlybillingTimezonestring | null
max 64 chars
Response 200
datarequiredobject
Same fields as SwitchProvider, 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
Delete a provider
DELETE/
Deprecated
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Its trunks are NOT deleted: they are detached (ungrouped) with their routing intact. Deprecated alias of the same operation under /switch/providers.
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
deletedrequiredboolean · data.deleted
One oftruedetachedTrunksrequiredinteger · data.detachedTrunks
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
Change a provider lifecycle status
POST/
Deprecated
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Stops or resumes traffic on every trunk of the provider. The response says whether traffic changed and how many active trunks were affected. Deprecated alias of the same operation under /switch/providers.
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)
statusrequiredstring
One ofdraft,pending_approval,testing,active,suspended,terminatednotestring | null
max 1000 chars
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
namerequiredstring · data.name
accountCoderequiredstring | null · data.accountCode
legalNamerequiredstring | null · data.legalName
tradingNamerequiredstring | null · data.tradingName
providerTyperequiredstring | null · data.providerType
One ofcarrier,aggregator,mno,mvno,sip_providercountryrequiredstring | null · data.country
servicesrequiredstring[] | null · data.services
portalEmailrequiredstring | null · data.portalEmail
currencyrequiredstring · data.currency
statusrequiredstring · data.status
One ofdraft,pending_approval,testing,active,suspended,terminatedstatusNoterequiredstring | null · data.statusNote
statusChangedAtrequiredstring (date-time) | null · data.statusChangedAt
ISO-8601 timestamp (UTC)routablerequiredboolean · data.routable
Whether this provider admits new calls at all, given its statuscontractStartrequiredstring | null · data.contractStart
YYYY-MM-DDcontractEndrequiredstring | null · data.contractEnd
autoRenewrequiredboolean · data.autoRenew
rateNoticeDaysrequiredinteger | null · data.rateNoticeDays
disputeDaysrequiredinteger | null · data.disputeDays
billingModerequiredstring · data.billingMode
One ofprepaid,postpaidcreditLimitrequiredstring | null · data.creditLimit
Decimal string with 2 decimal places, e.g. "5000.00"balancerequiredmoney · data.balance
USD as a decimal string with exactly 6 places, e.g. "0.012500".paymentTermsDaysrequiredinteger | null · data.paymentTermsDays
invoiceCyclerequiredstring | null · data.invoiceCycle
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)trafficChangerequiredstring · data.trafficChange
One ofnone,resumed,stoppedaffectedTrunksrequiredinteger · data.affectedTrunks
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 provider contacts
GET/
Deprecated
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Deprecated alias of the same operation under /switch/providers.
Parameters
idrequiredpath · string
Response 200
datarequiredobject[]
Same fields as SwitchProviderContact, 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.
Add a provider contact
POST/
Deprecated
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
One contact per role (NOC, rates, billing, finance, fraud, account, emergency). Deprecated alias of the same operation under /switch/providers.
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)
rolerequiredstring
One ofnoc,rates,billing,finance,fraud,account,emergencynamestring | null
max 160 charsemailstring | null
max 255 charsphonestring | null
max 40 charstimezonestring | null
max 64 charsnotifyboolean
notesstring | null
max 1000 chars
Response 201
datarequiredobject
Same fields as SwitchProviderContact, 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
Update a provider contact
PATCH/
Deprecated
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Deprecated alias of the same operation under /switch/providers.
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
contactIdrequiredpath · string
Request body (application/json)
rolestring
One ofnoc,rates,billing,finance,fraud,account,emergencynamestring | null
max 160 charsemailstring | null
max 255 charsphonestring | null
max 40 charstimezonestring | null
max 64 charsnotifyboolean
notesstring | null
max 1000 chars
Response 200
datarequiredobject
Same fields as SwitchProviderContact, 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
Delete a provider contact
DELETE/
Deprecated
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Deprecated alias of the same operation under /switch/providers.
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
contactIdrequiredpath · string
Response 200
datarequiredobject
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
Get call totals for a provider across its trunks
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Calls, answer rate, minutes and cost over a window, overall and per trunk. cost and minutes are JSON numbers here (report figures, not ledger amounts).
Parameters
idrequiredpath · string
fromquery · string
ISO start of the windowtoquery · string
ISO end of the windowlimitquery · string
offsetquery · string
Response 200
datarequiredobject
windowrequiredobject · data.window
fromrequiredstring · data.window.from
torequiredstring · data.window.to
summaryrequiredobject · data.summary
callsrequirednumber · data.summary.calls
answeredrequirednumber · data.summary.answered
asrrequirednumber | null · data.summary.asr
minutesrequirednumber · data.summary.minutes
costrequirednumber · data.summary.cost
acdrequirednumber | null · data.summary.acd
avgPddMsrequirednumber | null · data.summary.avgPddMs
byTrunkrequiredobject[] · data.byTrunk
trunkIdrequiredstring (uuid) | null · data.byTrunk[].trunkId
labelrequiredstring · data.byTrunk[].label
callsrequirednumber · data.byTrunk[].calls
answeredrequirednumber · data.byTrunk[].answered
asrrequirednumber | null · data.byTrunk[].asr
minutesrequirednumber · data.byTrunk[].minutes
costrequirednumber · data.byTrunk[].cost
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 provider payables and unbilled cost
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The provider billing terms, its payable documents, and cost carried since the last one that has not been raised yet (a JSON number).
Parameters
idrequiredpath · string
Response 200
datarequiredobject
currencyrequiredstring · data.currency
billingModerequiredstring · data.billingMode
creditLimitrequiredstring | null · data.creditLimit
Decimal string with 2 decimal places, e.g. "5000.00"paymentTermsDaysrequiredinteger | null · data.paymentTermsDays
invoiceCyclerequiredstring | null · data.invoiceCycle
invoicesrequiredobject[] · data.invoices
unbilledrequiredobject · data.unbilled
sincerequiredstring | null · data.unbilled.since
callsrequirednumber · data.unbilled.calls
minutesrequirednumber · data.unbilled.minutes
costrequirednumber · data.unbilled.cost
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 what is wrong with a provider right now
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Derived on every read, never stored: unroutable status, trunks in fault or draining, expiring credentials, expired trunks.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
alertsrequiredobject[] · data.alerts
severityrequiredstring · data.alerts[].severity
One ofcritical,warning,infocoderequiredstring · data.alerts[].code
messagerequiredstring · data.alerts[].message
trunkIdstring (uuid) · data.alerts[].trunkId
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 the change history for a provider and its trunks
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string
limitquery · string
Max entries (default 100)
Response 200
datarequiredobject
entriesrequiredobject[] · data.entries
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 billing disputes with a provider
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
supplierIdrequiredstring (uuid) · data[].supplierId
periodStartrequiredstring (date-time) | null · data[].periodStart
ISO-8601 timestamp (UTC)periodEndrequiredstring (date-time) | null · data[].periodEnd
ISO-8601 timestamp (UTC)ourAmountrequiredstring | null · data[].ourAmount
Decimal string with 2 decimal places, e.g. "5000.00"theirAmountrequiredstring | null · data[].theirAmount
Decimal string with 2 decimal places, e.g. "5000.00"currencyrequiredstring · data[].currency
statusrequiredstring · data[].status
One ofopen,submitted,accepted,rejected,settled,withdrawnreasonrequiredstring | null · data[].reason
resolutionrequiredstring | null · data[].resolution
invoiceRefrequiredstring | null · data[].invoiceRef
openedAtrequiredstring (date-time) · data[].openedAt
ISO-8601 timestamp (UTC)respondByrequiredstring (date-time) | null · data[].respondBy
ISO-8601 timestamp (UTC)closedAtrequiredstring (date-time) | null · data[].closedAt
ISO-8601 timestamp (UTC)daysLeftinteger | null · data[].daysLeft
Days left to respond (list only); negative = the window has passedcreatedAtrequiredstring (date-time) · data[].createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data[].updatedAt
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.
Open a billing dispute with a provider
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)
periodStartstring | null
max 40 charsperiodEndstring | null
max 40 charsourAmountnumber | string | null
theirAmountnumber | string | null
currencystring | null
max 3 charsreasonstring | null
max 4000 charsresolutionstring | null
max 4000 charsinvoiceRefstring | null
max 120 charsstatusstring
One ofopen,submitted,accepted,rejected,settled,withdrawn
Response 201
datarequiredobject
Same fields as SwitchProviderDispute, 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
Update a billing dispute
PATCH/
- 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
disputeIdrequiredpath · string
Request body (application/json)
periodStartstring | null
max 40 charsperiodEndstring | null
max 40 charsourAmountnumber | string | null
theirAmountnumber | string | null
currencystring | null
max 3 charsreasonstring | null
max 4000 charsresolutionstring | null
max 4000 charsinvoiceRefstring | null
max 120 charsstatusstring
One ofopen,submitted,accepted,rejected,settled,withdrawn
Response 200
datarequiredobject
Same fields as SwitchProviderDispute, 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
List SIP endpoints of a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Primary and backup addresses with derived health and flap reports. A trunk with an address but no endpoint rows has its address adopted as endpoint 1 on first read.
Parameters
idrequiredpath · string
Response 200
datarequiredobject[]
Same fields as SwitchTrunkEndpoint, 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.
Add a SIP endpoint to a supplier 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
idrequiredpath · string
Request body (application/json)
rolestring
One ofprimary,backuphostrequiredstring
max 255 charsportnumber | string | null
transportstring
One ofudp,tcp,tlsprioritynumber | string
weightPctnumber | string | null
enabledboolean
optionsIntervalSecondsnumber | string | null
failureThresholdnumber | string
recoveryThresholdnumber | string
autoDisableboolean
Response 201
datarequiredobject
Same fields as SwitchTrunkEndpoint, 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
Update a SIP endpoint
PATCH/
- 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
endpointIdrequiredpath · string
Request body (application/json)
rolestring
One ofprimary,backuphoststring
max 255 charsportnumber | string | null
transportstring
One ofudp,tcp,tlsprioritynumber | string
weightPctnumber | string | null
enabledboolean
optionsIntervalSecondsnumber | string | null
failureThresholdnumber | string
recoveryThresholdnumber | string
autoDisableboolean
Response 200
datarequiredobject
Same fields as SwitchTrunkEndpoint, 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
Remove a SIP endpoint
DELETE/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The last endpoint of a trunk cannot be removed: add its replacement 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
idrequiredpath · string
endpointIdrequiredpath · string
Response 200
datarequiredobject
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
Render the SBC gateway configuration for a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Read-only. Names which settings are profile-level (and so need a deploy) rather than applied per call. Each read is recorded in the audit log.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
trunkIdrequiredstring (uuid) · data.trunkId
trunkLabelrequiredstring · data.trunkLabel
profileLevelrequiredobject[] · data.profileLevel
endpointIdrequiredstring (uuid) · data.profileLevel[].endpointId
hostrequiredstring · data.profileLevel[].host
settingsrequiredstring[] · data.profileLevel[].settings
xmlrequiredstring · data.xml
Gateway configuration to place on the SBCapplyNoterequiredstring · data.applyNote
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.
Render the SBC gateway configuration for a provider
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Read-only. One rendered profile per trunk; needsReload says whether any of it needs deploying. Each read is recorded in the audit log.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
supplierIdrequiredstring (uuid) · data.supplierId
supplierNamerequiredstring · data.supplierName
trunksrequiredobject[] · data.trunks
Same fields as SwitchSbcProfile, shown earlier on this page.needsReloadrequiredboolean · data.needsReload
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 health events for a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Probe results, up/down transitions, auto-disables, restores and degradations. Probe rows are kept 7 days, state changes 90 days. Page with before = the previous nextBefore.
Parameters
idrequiredpath · string
endpointIdquery · string (uuid)
daysquery · integer
kindsquery · string
Comma-separated: probe, transition, auto_disable, restore, degradedbeforequery · string
ISO cursor from nextBeforelimitquery · integer
Response 200
datarequiredobject
eventsrequiredobject[] · data.events
windowDaysrequiredinteger · data.windowDays
retentionrequiredobject · data.retention
probeDaysrequiredinteger · data.retention.probeDays
eventDaysrequiredinteger · data.retention.eventDays
nextBeforerequiredstring | null · data.nextBefore
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 the flap report for a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Endpoints that changed state repeatedly in the window. Observe-only: nothing is disabled because of it.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
windowHoursrequirednumber · data.windowHours
minTransitionsrequiredinteger · data.minTransitions
endpointsrequiredobject[] · data.endpoints
endpointIdrequiredstring (uuid) | null · data.endpoints[].endpointId
hostrequiredstring | null · data.endpoints[].host
transitionsrequiredinteger · data.endpoints[].transitions
firstAtrequiredstring (date-time) · data.endpoints[].firstAt
ISO-8601 timestamp (UTC)lastAtrequiredstring (date-time) · data.endpoints[].lastAt
ISO-8601 timestamp (UTC)flappingrequiredboolean · data.endpoints[].flapping
flappingrequiredboolean · data.flapping
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.
Send a test call to a supplier trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 6 requests per minute
- Real traffic
- Places a real test call or sends a real test SMS over the trunk.
A real INVITE from every media worker, on demand. Never touches health counters or state. Address details are withheld for a marketplace trunk. Audited.
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)
endpointIdstring (uuid) | null
Response 200
datarequiredobject
ranAtrequiredstring (date-time) · data.ranAt
ISO-8601 timestamp (UTC)hostrequiredstring | null · data.host
portrequiredinteger | null · data.port
techPrefixrequiredstring | null · data.techPrefix
verdictrequiredstring · data.verdict
latencyMsrequiredinteger · data.latencyMs
diagnosticsrequiredobject · data.diagnostics
endpointHiddenboolean · data.endpointHidden
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
Move a supplier trunk to another provider
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Pass supplierId: null to ungroup the 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.
Parameters
idrequiredpath · string
Request body (application/json)
supplierIdrequiredstring (uuid) | null
Response 200
datarequiredobject
A supplier (vendor) trunk. Carries every spec section-4 policy field accepted on create/update; secrets are replaced by *Set booleans.idrequiredstring (uuid) · data.id
supplierIdrequiredstring (uuid) | null · data.supplierId
The owning provider; null = ungroupedlabelrequiredstring · data.label
sourcerequiredstring · data.source
"external" for a carrier you entered; "marketplace" for a trunk promoted from a marketplace purchasestatusrequiredstring · data.status
One ofactive,disabled,draft,testing,draining,faultsipHostrequiredstring | null · data.sipHost
Null on a marketplace trunk: the seller address is never disclosedsipPortrequiredinteger | null · data.sipPort
transportrequiredstring | null · data.transport
One ofudp,tcp,tlstechPrefixrequiredstring | null · data.techPrefix
sipAuthUsernamerequiredstring | null · data.sipAuthUsername
sipAuthPasswordSetrequiredboolean · data.sipAuthPasswordSet
Whether a SIP password is stored. The value is only readable via GET /switch/suppliers/{id}/credentialssmppPasswordSetrequiredboolean · data.smppPasswordSet
mediaModerequiredstring · data.mediaMode
One ofproxy,directdefaultRatePerUnitrequiredmoney | null · data.defaultRatePerUnit
Cost per minute used when no deck row matches USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.billingIncrement
currencyrequiredstring | null · data.currency
capacityrequiredinteger | null · data.capacity
Max concurrent channelsmaxCpsrequiredinteger | null · data.maxCps
settlementModerequiredstring · data.settlementMode
One ofap,prepaidbalancerequiredmoney · data.balance
Prepaid credit remaining with this supplier (prepaid settlement) USD as a decimal string with exactly 6 places, e.g. "0.012500".smsDeliveryMethodrequiredstring | null · data.smsDeliveryMethod
One ofhttp,smppreachablerequiredboolean | null · data.reachable
reachCheckedAtrequiredstring (date-time) | null · data.reachCheckedAt
ISO-8601 timestamp (UTC)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
List supplier trunks
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Every vendor trunk on your switch, newest first. SIP and SMPP secrets are replaced by *Set booleans.
Response 200
datarequiredobject[]
Same fields as SwitchSupplierTrunk, 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. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Create a supplier trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
A trunk needs at least one reachable endpoint: a SIP host, an HTTPS SMS delivery URL, or an SMPP host.
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)
labelrequiredstring
max 160 charssupplierIdstring (uuid) | null
sipHoststring | null
max 255 charssipPortinteger | null
1 to 65535transportstring | null
One ofudp,tcp,tlstechPrefixstring | null
max 24 charssipAuthUsernamestring | null
max 128 charssipAuthPasswordstring | null
max 128 charssupportedCodecsstring[] | null
defaultRatePerUnitnumber | null
min 0mediaModestring
One ofproxy,directbillingIncrementstring | null
max 10 charscurrencystring | null
max 3 charscapacityinteger | null
min 0maxCpsinteger | null
min 0statusstring
One ofactive,disabled,draft,testing,draining,faultsettlementModestring
One ofap,prepaidbalancenumber | null
min 0portalEmailstring (email) | null
max 255 charssmsDeliveryUrlstring (uri) | null
max 500 charssmsDeliveryMethodstring | null
One ofhttp,smppsmppHoststring | null
max 255 charssmppPortinteger | null
1 to 65535smppSystemIdstring | null
smppPasswordstring | null
max 64 charssmppBindTypestring | null
One oftransceiver,transmittersmppSystemTypestring | null
max 13 charssmppTpsinteger | null
1 to 1000codestring | null
max 40 charsdescriptionstring | null
max 2000 charsproductstring | null
max 32 charsdirectionstring
One oftermination,origination,bidirectionaltestModeboolean
activationDatestring | null
max 10 charsexpirationDatestring | null
max 10 charstagsstring[] | null
notesstring | null
max 4000 charscredentialExpiresAtstring | null
max 40 charscredentialRotatedAtstring | null
max 40 charsallowedSourceNetworksstring[] | null
requestRateLimitinteger | null
0 to 100000sipRegisterboolean
sipRealmstring | null
max 255 charsincomingTechPrefixstring | null
max 24 charstechPrefixModestring
One ofadd,remove,replacetechPrefixSeparatorstring | null
max 4 charscliRewriteany | null
dnisRewriteany | null
cliPolicystring
One ofpassthrough,replace,remove,poolcliPoolIdstring (uuid) | null
anonymousPolicystring
One ofpassthrough,reject,substitutee164Normaliseboolean
defaultCountryCodestring | null
max 6 charsminDnisLengthinteger | null
0 to 32maxDnisLengthinteger | null
0 to 32paiPolicystring
One ofomit,passthrough,generaterpidPolicystring
One ofomit,passthrough,generatediversionPolicystring
One ofomit,passthrough,generatehistoryInfoPolicystring
One ofomit,passthrough,generatelrnPolicystring
One ofnone,passthrough,strippacketizationMsinteger | null
10 to 120codecModestring
One oftransparent,transcodeforcedCodecstring | null
max 24 charssrtpModestring
One ofdisabled,optional,requireddtmfModestring
One ofrfc2833,info,inband,autot38Modestring
One ofdisabled,passthrough,relaycomfortNoiseboolean
silenceSuppressionboolean
symmetricRtpboolean
inviteTimeoutSecondsinteger | null
1 to 600pddTimeoutSecondsinteger | null
1 to 600ringTimeoutSecondsinteger | null
1 to 600sessionExpiresSecondsinteger | null
90 to 86400minSeSecondsinteger | null
90 to 86400prackModestring
One ofdisabled,supported,requiredallowReinviteboolean
allowUpdateboolean
allowReferboolean
earlyMediaPolicystring
One ofpassthrough,generate_ringback,suppressrecordRouteboolean
customHeadersobject | null
q850Mapobject | null
cpsBurstinteger | null
0 to 10000queueLimitinteger | null
0 to 100000maxChannelsPerDestinationinteger | null
0 to 100000maxCpsPerDestinationinteger | null
0 to 10000minCallSecondsinteger | null
0 to 86400maxCallSecondsinteger | null
0 to 86400dailyMinutesCapinteger | null
min 0dailySpendCapnumber | string | null
monthlySpendCapnumber | string | null
rampupChannelsinteger | null
0 to 100000rampupDaysinteger | null
0 to 365allowedPrefixesstring[] | null
blockedPrefixesstring[] | null
allowedCountriesstring[] | null
blockedCountriesstring[] | null
allowMobileboolean
allowFixedboolean
allowSatelliteboolean
allowPremiumboolean
allowTollfreeboolean
allowEmergencyboolean
jurisdictionPolicystring
One ofany,interstate,intrastate,localscheduleobject[] | null
daysrequiredinteger[] · schedule[].days
fromrequiredstring · schedule[].from
max 5 charstorequiredstring · schedule[].to
max 5 charstzrequiredstring · schedule[].tz
max 64 charsmaintenanceWindowsobject[] | null
fromrequiredstring · maintenanceWindows[].from
max 40 charstorequiredstring · maintenanceWindows[].to
max 40 charsnotestring · maintenanceWindows[].note
max 200 charsroutingEnabledboolean
lcrEligibleboolean
qualityEligibleboolean
popRegionstring | null
max 40 charsallowedCustomerGroupsstring[] | null
allowedProductsstring[] | null
minMarginPctnumber | string | null
minMarginAbsnumber | string | null
maxBuyRatenumber | string | null
overflowTrunkIdstring (uuid) | null
retryableSipCodesinteger[] | null
terminalSipCodesinteger[] | null
retryPolicystring
One ofsame_endpoint,next_endpoint,next_trunkmaxAttemptsPerCallinteger | null
1 to 10qosThresholdsobject | null
asrMinnumber · qosThresholds.asrMin
0 to 100acdMinnumber · qosThresholds.acdMin
0 to 86400nerMinnumber · qosThresholds.nerMin
0 to 100pddMaxMsinteger · qosThresholds.pddMaxMs
0 to 600000mosMinnumber · qosThresholds.mosMin
1 to 5shortCallMaxPctnumber · qosThresholds.shortCallMaxPct
0 to 100minCallsinteger · qosThresholds.minCalls
1 to 1000000windowMinutesinteger · qosThresholds.windowMinutes
5 to 10080actionstring · qosThresholds.action
One ofalert,demote,reduce_cps,block_destination,disable_trunkmodestring · qosThresholds.mode
One ofobserve,enforcefraudControlsobject | null
shortCallSecondsinteger · fraudControls.shortCallSeconds
1 to 3600longCallSecondsinteger · fraudControls.longCallSeconds
1 to 86400duplicateDetectboolean · fraudControls.duplicateDetect
spikeMultiplenumber · fraudControls.spikeMultiple
1.1 to 1000spendVelocityPerHournumber · fraudControls.spendVelocityPerHour
0 to 1000000highCostRatenumber · fraudControls.highCostRate
0 to 10000actionstring · fraudControls.action
One ofalert,demote,reduce_cps,block_destination,disable_trunkmodestring · fraudControls.mode
One ofobserve,enforce
Response 201
datarequiredobject
A supplier (vendor) trunk. Carries every spec section-4 policy field accepted on create/update; secrets are replaced by *Set booleans.Same fields as SwitchSupplierTrunk, 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. - 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 live metrics for active supplier trunks
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Concurrent channels, peak CPS, reachability and the last hour of answer rate and post-dial delay per active trunk. Meant to be polled.
Response 200
datarequiredobject
trunksrequiredobject[] · data.trunks
idrequiredstring (uuid) · data.trunks[].id
labelrequiredstring · data.trunks[].label
capacityrequiredinteger | null · data.trunks[].capacity
maxCpsrequiredinteger | null · data.trunks[].maxCps
reachablerequiredboolean | null · data.trunks[].reachable
healthrequiredobject · data.trunks[].health
Derived health state (what routing believes), with its counters and thresholdsasrrequirednumber | null · data.trunks[].asr
Last-hour answer rate %, null when idleasrSessionsrequiredinteger · data.trunks[].asrSessions
pddP95Msrequiredinteger | null · data.trunks[].pddP95Ms
lastSipCoderequiredinteger | null · data.trunks[].lastSipCode
lastCauserequiredstring | null · data.trunks[].lastCause
liveChannelsrequiredinteger · data.trunks[].liveChannels
cpsrequiredinteger · data.trunks[].cps
capacityPctrequiredinteger | null · data.trunks[].capacityPct
flappingrequiredboolean · data.trunks[].flapping
totalChannelsrequiredinteger · data.totalChannels
peakCpsrequiredinteger · data.peakCps
cpsAttemptsrequiredinteger · data.cpsAttempts
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.
Show where a supplier trunk sits in routing
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The route groups that reference it and at what priority, and any customer trunk wired straight to it. unrouted is true when no traffic can reach it.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
groupsrequiredobject[] · data.groups
directrequiredobject[] · data.direct
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.
Promote a marketplace purchase to a supplier trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Turns a route you bought on the marketplace into a trunk your switch can route to. Idempotent per route: promoting again returns the existing trunk. The seller address stays hidden.
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)
routeIdrequiredstring (uuid)
Response 201
datarequiredobject
A supplier (vendor) trunk. Carries every spec section-4 policy field accepted on create/update; secrets are replaced by *Set booleans.Same fields as SwitchSupplierTrunk, 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. - 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.
Reveal a supplier trunk SIP credentials
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The one audited way to read a stored SIP password back. Refused (403) for a trunk promoted from the marketplace, whose login belongs to the seller.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
sipAuthUsernamerequiredstring | null · data.sipAuthUsername
sipAuthPasswordrequiredstring | null · data.sipAuthPassword
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 supplier trunk overview and today figures
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Trunk settings plus KPIs: today cost, minutes and calls, last-hour answer rate, ACD, PDD and MOS, live channels, CPS and outstanding payables. KPI money is a JSON number.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
supplierrequiredobject · data.supplier
kpisrequiredobject · data.kpis
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 quality by destination for a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string
windowquery · integer
Window in hours (default 24)
Response 200
datarequiredobject
windowHoursrequirednumber · data.windowHours
windowrequiredobject · data.window
kpisrequiredobject · data.kpis
destinationsrequiredobject[] · data.destinations
thresholdsrequiredobject · data.thresholds
excludedMetricsrequiredany[] · data.excludedMetrics
minJudgeableSessionsrequirednumber · data.minJudgeableSessions
freshnessrequiredobject · data.freshness
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 quality and fraud protection events for a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
What the protection sweep saw on this trunk and what it did (enforced) or would have done (observe mode).
Parameters
idrequiredpath · string
limitquery · integer
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
vendorTrunkIdrequiredstring (uuid) · data[].vendorTrunkId
moderequiredstring · data[].mode
actionrequiredstring · data[].action
enforcedrequiredboolean · data[].enforced
reasonrequiredstring · data[].reason
breachesrequiredstring[] | null · data[].breaches
measuredany · data[].measured
windowMinutesrequiredinteger · data[].windowMinutes
callsrequiredinteger · data[].calls
createdAtrequiredstring (date-time) · data[].createdAt
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.
Get a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Includes its inbound IP ACLs, a loopback warning when its address is also one of your customers, and the derived health state.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
A supplier (vendor) trunk. Carries every spec section-4 policy field accepted on create/update; secrets are replaced by *Set booleans.idrequiredstring (uuid) · data.id
supplierIdrequiredstring (uuid) | null · data.supplierId
The owning provider; null = ungroupedlabelrequiredstring · data.label
sourcerequiredstring · data.source
"external" for a carrier you entered; "marketplace" for a trunk promoted from a marketplace purchasestatusrequiredstring · data.status
One ofactive,disabled,draft,testing,draining,faultsipHostrequiredstring | null · data.sipHost
Null on a marketplace trunk: the seller address is never disclosedsipPortrequiredinteger | null · data.sipPort
transportrequiredstring | null · data.transport
One ofudp,tcp,tlstechPrefixrequiredstring | null · data.techPrefix
sipAuthUsernamerequiredstring | null · data.sipAuthUsername
sipAuthPasswordSetrequiredboolean · data.sipAuthPasswordSet
Whether a SIP password is stored. The value is only readable via GET /switch/suppliers/{id}/credentialssmppPasswordSetrequiredboolean · data.smppPasswordSet
mediaModerequiredstring · data.mediaMode
One ofproxy,directdefaultRatePerUnitrequiredmoney | null · data.defaultRatePerUnit
Cost per minute used when no deck row matches USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.billingIncrement
currencyrequiredstring | null · data.currency
capacityrequiredinteger | null · data.capacity
Max concurrent channelsmaxCpsrequiredinteger | null · data.maxCps
settlementModerequiredstring · data.settlementMode
One ofap,prepaidbalancerequiredmoney · data.balance
Prepaid credit remaining with this supplier (prepaid settlement) USD as a decimal string with exactly 6 places, e.g. "0.012500".smsDeliveryMethodrequiredstring | null · data.smsDeliveryMethod
One ofhttp,smppreachablerequiredboolean | null · data.reachable
reachCheckedAtrequiredstring (date-time) | null · data.reachCheckedAt
ISO-8601 timestamp (UTC)createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)ipAclsrequiredobject[] · data.ipAcls
idrequiredstring (uuid) · data.ipAcls[].id
entityTyperequiredstring · data.ipAcls[].entityType
One ofcustomer,trunkentityIdrequiredstring (uuid) · data.ipAcls[].entityId
cidrrequiredstring · data.ipAcls[].cidr
descriptionrequiredstring | null · data.ipAcls[].description
createdAtrequiredstring (date-time) · data.ipAcls[].createdAt
ISO-8601 timestamp (UTC)hairpinrequiredobject | null · data.hairpin
Warning when this address is also one of your own customers (loopback)healthrequiredobject · data.health
Derived health state (what routing believes), with its counters and thresholds
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.
Update a supplier trunk
PATCH/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Partial update. When trunk change approval is on, the change is queued for review instead and the response carries pendingChange. Send X-If-Unchanged-Since: <updatedAt you loaded> to be refused with 409 STALE_WRITE if someone else saved in between.
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)
labelstring
max 160 charssupplierIdstring (uuid) | null
sipHoststring | null
max 255 charssipPortinteger | null
1 to 65535transportstring | null
One ofudp,tcp,tlstechPrefixstring | null
max 24 charssipAuthUsernamestring | null
max 128 charssipAuthPasswordstring | null
max 128 charssupportedCodecsstring[] | null
defaultRatePerUnitnumber | null
min 0mediaModestring
One ofproxy,directbillingIncrementstring | null
max 10 charscurrencystring | null
max 3 charscapacityinteger | null
min 0maxCpsinteger | null
min 0statusstring
One ofactive,disabled,draft,testing,draining,faultsettlementModestring
One ofap,prepaidbalancenumber | null
min 0portalEmailstring (email) | null
max 255 charssmsDeliveryUrlstring (uri) | null
max 500 charssmsDeliveryMethodstring | null
One ofhttp,smppsmppHoststring | null
max 255 charssmppPortinteger | null
1 to 65535smppSystemIdstring | null
smppPasswordstring | null
max 64 charssmppBindTypestring | null
One oftransceiver,transmittersmppSystemTypestring | null
max 13 charssmppTpsinteger | null
1 to 1000codestring | null
max 40 charsdescriptionstring | null
max 2000 charsproductstring | null
max 32 charsdirectionstring
One oftermination,origination,bidirectionaltestModeboolean
activationDatestring | null
max 10 charsexpirationDatestring | null
max 10 charstagsstring[] | null
notesstring | null
max 4000 charscredentialExpiresAtstring | null
max 40 charscredentialRotatedAtstring | null
max 40 charsallowedSourceNetworksstring[] | null
requestRateLimitinteger | null
0 to 100000sipRegisterboolean
sipRealmstring | null
max 255 charsincomingTechPrefixstring | null
max 24 charstechPrefixModestring
One ofadd,remove,replacetechPrefixSeparatorstring | null
max 4 charscliRewriteany | null
dnisRewriteany | null
cliPolicystring
One ofpassthrough,replace,remove,poolcliPoolIdstring (uuid) | null
anonymousPolicystring
One ofpassthrough,reject,substitutee164Normaliseboolean
defaultCountryCodestring | null
max 6 charsminDnisLengthinteger | null
0 to 32maxDnisLengthinteger | null
0 to 32paiPolicystring
One ofomit,passthrough,generaterpidPolicystring
One ofomit,passthrough,generatediversionPolicystring
One ofomit,passthrough,generatehistoryInfoPolicystring
One ofomit,passthrough,generatelrnPolicystring
One ofnone,passthrough,strippacketizationMsinteger | null
10 to 120codecModestring
One oftransparent,transcodeforcedCodecstring | null
max 24 charssrtpModestring
One ofdisabled,optional,requireddtmfModestring
One ofrfc2833,info,inband,autot38Modestring
One ofdisabled,passthrough,relaycomfortNoiseboolean
silenceSuppressionboolean
symmetricRtpboolean
inviteTimeoutSecondsinteger | null
1 to 600pddTimeoutSecondsinteger | null
1 to 600ringTimeoutSecondsinteger | null
1 to 600sessionExpiresSecondsinteger | null
90 to 86400minSeSecondsinteger | null
90 to 86400prackModestring
One ofdisabled,supported,requiredallowReinviteboolean
allowUpdateboolean
allowReferboolean
earlyMediaPolicystring
One ofpassthrough,generate_ringback,suppressrecordRouteboolean
customHeadersobject | null
q850Mapobject | null
cpsBurstinteger | null
0 to 10000queueLimitinteger | null
0 to 100000maxChannelsPerDestinationinteger | null
0 to 100000maxCpsPerDestinationinteger | null
0 to 10000minCallSecondsinteger | null
0 to 86400maxCallSecondsinteger | null
0 to 86400dailyMinutesCapinteger | null
min 0dailySpendCapnumber | string | null
monthlySpendCapnumber | string | null
rampupChannelsinteger | null
0 to 100000rampupDaysinteger | null
0 to 365allowedPrefixesstring[] | null
blockedPrefixesstring[] | null
allowedCountriesstring[] | null
blockedCountriesstring[] | null
allowMobileboolean
allowFixedboolean
allowSatelliteboolean
allowPremiumboolean
allowTollfreeboolean
allowEmergencyboolean
jurisdictionPolicystring
One ofany,interstate,intrastate,localscheduleobject[] | null
daysrequiredinteger[] · schedule[].days
fromrequiredstring · schedule[].from
max 5 charstorequiredstring · schedule[].to
max 5 charstzrequiredstring · schedule[].tz
max 64 charsmaintenanceWindowsobject[] | null
fromrequiredstring · maintenanceWindows[].from
max 40 charstorequiredstring · maintenanceWindows[].to
max 40 charsnotestring · maintenanceWindows[].note
max 200 charsroutingEnabledboolean
lcrEligibleboolean
qualityEligibleboolean
popRegionstring | null
max 40 charsallowedCustomerGroupsstring[] | null
allowedProductsstring[] | null
minMarginPctnumber | string | null
minMarginAbsnumber | string | null
maxBuyRatenumber | string | null
overflowTrunkIdstring (uuid) | null
retryableSipCodesinteger[] | null
terminalSipCodesinteger[] | null
retryPolicystring
One ofsame_endpoint,next_endpoint,next_trunkmaxAttemptsPerCallinteger | null
1 to 10qosThresholdsobject | null
asrMinnumber · qosThresholds.asrMin
0 to 100acdMinnumber · qosThresholds.acdMin
0 to 86400nerMinnumber · qosThresholds.nerMin
0 to 100pddMaxMsinteger · qosThresholds.pddMaxMs
0 to 600000mosMinnumber · qosThresholds.mosMin
1 to 5shortCallMaxPctnumber · qosThresholds.shortCallMaxPct
0 to 100minCallsinteger · qosThresholds.minCalls
1 to 1000000windowMinutesinteger · qosThresholds.windowMinutes
5 to 10080actionstring · qosThresholds.action
One ofalert,demote,reduce_cps,block_destination,disable_trunkmodestring · qosThresholds.mode
One ofobserve,enforcefraudControlsobject | null
shortCallSecondsinteger · fraudControls.shortCallSeconds
1 to 3600longCallSecondsinteger · fraudControls.longCallSeconds
1 to 86400duplicateDetectboolean · fraudControls.duplicateDetect
spikeMultiplenumber · fraudControls.spikeMultiple
1.1 to 1000spendVelocityPerHournumber · fraudControls.spendVelocityPerHour
0 to 1000000highCostRatenumber · fraudControls.highCostRate
0 to 10000actionstring · fraudControls.action
One ofalert,demote,reduce_cps,block_destination,disable_trunkmodestring · fraudControls.mode
One ofobserve,enforce
Response 200
datarequiredobject
A supplier (vendor) trunk. Carries every spec section-4 policy field accepted on create/update; secrets are replaced by *Set booleans.idrequiredstring (uuid) · data.id
supplierIdrequiredstring (uuid) | null · data.supplierId
The owning provider; null = ungroupedlabelrequiredstring · data.label
sourcerequiredstring · data.source
"external" for a carrier you entered; "marketplace" for a trunk promoted from a marketplace purchasestatusrequiredstring · data.status
One ofactive,disabled,draft,testing,draining,faultsipHostrequiredstring | null · data.sipHost
Null on a marketplace trunk: the seller address is never disclosedsipPortrequiredinteger | null · data.sipPort
transportrequiredstring | null · data.transport
One ofudp,tcp,tlstechPrefixrequiredstring | null · data.techPrefix
sipAuthUsernamerequiredstring | null · data.sipAuthUsername
sipAuthPasswordSetrequiredboolean · data.sipAuthPasswordSet
Whether a SIP password is stored. The value is only readable via GET /switch/suppliers/{id}/credentialssmppPasswordSetrequiredboolean · data.smppPasswordSet
mediaModerequiredstring · data.mediaMode
One ofproxy,directdefaultRatePerUnitrequiredmoney | null · data.defaultRatePerUnit
Cost per minute used when no deck row matches USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.billingIncrement
currencyrequiredstring | null · data.currency
capacityrequiredinteger | null · data.capacity
Max concurrent channelsmaxCpsrequiredinteger | null · data.maxCps
settlementModerequiredstring · data.settlementMode
One ofap,prepaidbalancerequiredmoney · data.balance
Prepaid credit remaining with this supplier (prepaid settlement) USD as a decimal string with exactly 6 places, e.g. "0.012500".smsDeliveryMethodrequiredstring | null · data.smsDeliveryMethod
One ofhttp,smppreachablerequiredboolean | null · data.reachable
reachCheckedAtrequiredstring (date-time) | null · data.reachCheckedAt
ISO-8601 timestamp (UTC)createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)pendingChangeobject · data.pendingChange
idrequiredstring (uuid) · data.pendingChange.id
fieldsrequiredstring[] · data.pendingChange.fields
statusrequiredstring · data.pendingChange.status
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 a supplier 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
idrequiredpath · string
Response 200
datarequiredobject
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
Get the production readiness checklist for a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
A pure read: it reports and never blocks. Bundle carriage trunks come back exempt with no checks.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
trunkIdrequiredstring (uuid) · data.trunkId
exemptrequiredboolean · data.exempt
exemptReasonrequiredstring | null · data.exemptReason
staterequiredstring · data.state
One ofready,not_ready,exemptchecksrequiredobject[] · data.checks
idrequiredstring · data.checks[].id
specrequiredstring · data.checks[].spec
titlerequiredstring · data.checks[].title
statusrequiredstring · data.checks[].status
pass, warn or failevidencerequiredstring · data.checks[].evidence
fixrequiredstring · data.checks[].fix
One ofsupplier,contacts,endpoints,configuration,cost_deck,diagnostics,settings,routingfailingrequiredinteger · data.failing
warningrequiredinteger · data.warning
grandfatheredrequiredboolean · data.grandfathered
blockingEnabledrequiredboolean · data.blockingEnabled
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 configuration versions of a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string
limitquery · integer
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
versionrequiredinteger · data[].version
sourcerequiredstring · data[].source
Which door the change came through, e.g. update, approval, apichangedFieldsrequiredstring[] · data[].changedFields
diffrequiredobject | null · data[].diff
noterequiredstring | null · data[].note
checksumrequiredstring | null · data[].checksum
changeRequestIdrequiredstring (uuid) | null · data[].changeRequestId
actorUserIdrequiredstring (uuid) | null · data[].actorUserId
actorEmailstring | null · data[].actorEmail
createdAtrequiredstring (date-time) · data[].createdAt
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.
Get one configuration version of a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The full snapshot as of that version, plus the previous version snapshot for comparison.
Parameters
idrequiredpath · string
versionIdrequiredpath · string
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
versionrequiredinteger · data.version
sourcerequiredstring · data.source
Which door the change came through, e.g. update, approval, apichangedFieldsrequiredstring[] · data.changedFields
diffrequiredobject | null · data.diff
noterequiredstring | null · data.note
checksumrequiredstring | null · data.checksum
changeRequestIdrequiredstring (uuid) | null · data.changeRequestId
actorUserIdrequiredstring (uuid) | null · data.actorUserId
actorEmailstring | null · data.actorEmail
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)snapshotrequiredobject · data.snapshot
previousrequiredobject | null · data.previous
idrequiredstring (uuid) · data.previous.id
versionrequiredinteger · data.previous.version
snapshotrequiredobject · data.previous.snapshot
createdAtrequiredstring (date-time) · data.previous.createdAt
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.
Test a supplier trunk SMS delivery
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 20 requests per minute
- Real traffic
- Places a real test call or sends a real test SMS over the trunk.
SMPP performs a real bind with the stored credentials and sends nothing; HTTP can only be checked for a well-formed https URL.
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
passrequiredboolean · data.pass
viarequiredstring · data.via
One ofhttp,smppchecksrequiredobject[] · data.checks
labelrequiredstring · data.checks[].label
valuerequiredstring · data.checks[].value
okrequiredboolean · data.checks[].ok
messagerequiredstring · data.message
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 unsaved SMS delivery details
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 20 requests per minute
- Real traffic
- Places a real test call or sends a real test SMS over the trunk.
For the create form. SMPP performs a real bind and sends nothing; HTTP can only be checked for a well-formed https URL. The password is used for this one handshake and never stored.
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)
smsDeliveryMethodstring | null
One ofhttp,smppsmsDeliveryUrlstring | null
max 500 charssmppHoststring | null
max 255 charssmppPortinteger | null
1 to 65535smppSystemIdstring | null
Short account code the supplier issued (max 16 chars). An email address is rejected.max 16 charssmppPasswordstring | null
max 64 charssmppBindTypestring | null
One oftransceiver,transmittersmppSystemTypestring | null
max 13 charssmppTpsinteger | null
1 to 1000
Response 200
datarequiredobject
Same fields as SwitchSmsEndpointTest, 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. - 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.
Email a supplier portal sign-in link
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
- Sends email
- Sends an email to a third party.
Sends a magic link to the trunk portalEmail. When no portal email is set it answers 400 VALIDATION_ERROR.
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
sentrequiredboolean · data.sent
One oftruetorequiredstring · data.to
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 the cost deck in force on a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Active rows only; scheduled and archived rows have their own endpoints. Search matches a prefix start.
Parameters
idrequiredpath · string
searchquery · string
Digits; matches prefixes starting with themlimitquery · string
1-1000, default 100offsetquery · string
Response 200
datarequiredobject
rowsrequiredobject[] · data.rows
idrequiredstring (uuid) · data.rows[].id
vendorTrunkIdrequiredstring (uuid) · data.rows[].vendorTrunkId
prefixrequiredstring · data.rows[].prefix
originPrefixrequiredstring · data.rows[].originPrefix
Caller-origin prefix; "" = any originratePerUnitrequiredmoney · data.rows[].ratePerUnit
Cost per minute USD as a decimal string with exactly 6 places, e.g. "0.012500".destinationNamerequiredstring | null · data.rows[].destinationName
billingIncrementrequiredstring | null · data.rows[].billingIncrement
e.g. "6/6"; null inherits the trunk defaultstatusrequiredstring · data.rows[].status
effectiveFromrequiredstring (date-time) | null · data.rows[].effectiveFrom
ISO-8601 timestamp (UTC)totalrequiredinteger · data.total
limitrequiredinteger · data.limit
offsetrequiredinteger · data.offset
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.
Set the cost for one prefix on a supplier trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Creates or replaces the active rate for the prefix (and origin), effective now.
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)
prefixrequiredstring
max 24 charsraterequirednumber
Cost per minute, USDmin 0originstring
max 24 charsbillingIncrementstring
max 10 chars
Response 201
datarequiredobject
Same fields as SwitchTrunkRate, 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
Set costs for many prefixes on a supplier 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
idrequiredpath · string
Request body (application/json)
rowsrequiredobject[]
prefixrequiredstring · rows[].prefix
max 24 charsraterequirednumber · rows[].rate
Cost per minute, USDmin 0originstring · rows[].origin
max 24 charsbillingIncrementstring · rows[].billingIncrement
max 10 chars
Response 200
datarequiredobject
appliedrequiredinteger · data.applied
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 one cost row from a supplier 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
idrequiredpath · string
rateIdrequiredpath · string
Response 200
datarequiredobject
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
Clear the cost deck of a supplier trunk
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The deck is archived, not destroyed: restore it with POST /{id}/rates/restore.
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
deletedrequiredinteger · data.deleted
archivedrequiredinteger · data.archived
recoverablerequiredboolean · data.recoverable
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
List archived cost decks of a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string
Response 200
datarequiredobject[]
revisionIdrequiredstring (uuid) | null · data[].revisionId
archivedAtrequiredstring (date-time) · data[].archivedAt
ISO-8601 timestamp (UTC)rowsrequiredinteger · data[].rows
labelrequiredstring · data[].label
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.
Restore an archived cost deck
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Restores the newest archive unless revisionId names one. Each row returns to the status it was archived from.
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)
revisionIdstring (uuid)
Response 200
datarequiredobject
restoredrequiredinteger · data.restored
skippedrequiredinteger · data.skipped
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
List scheduled cost changes on a supplier trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string
Response 200
datarequiredobject[]
Same fields as SwitchTrunkRate, 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 cost change for one prefix
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
A date in the past or now applies the rate immediately instead.
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)
prefixrequiredstring
max 24 charsraterequirednumber
Cost per minute, USDmin 0originstring
max 24 charsbillingIncrementstring
max 10 charseffectiveFromrequiredstring (date-time)
Response 201
datarequiredobject
Same fields as SwitchTrunkRate, 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 cost change
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
idrequiredpath · string
rateIdrequiredpath · string
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
Review queued cost changes before they take effect
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Every queued change with the price billed today, the price that takes over and when, and the effect on the last 30 days of traffic. Rates are 6-decimal strings; monthlyDelta and netMonthlyDelta are JSON numbers. At most 500 rows.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
rowsrequiredobject[] · data.rows
idrequiredstring · data.rows[].id
kindrequiredstring · data.rows[].kind
One ofdeck,row,removedprefixrequiredstring · data.rows[].prefix
destinationrequiredstring | null · data.rows[].destination
currentRaterequiredmoney | null · data.rows[].currentRate
US dollars as a decimal string with exactly 6 decimal places, e.g. "0.012500". Do money arithmetic with a decimal type, not floating point. USD as a decimal string with exactly 6 places, e.g. "0.012500".newRaterequiredstring | null · data.rows[].newRate
deltaPctrequirednumber | null · data.rows[].deltaPct
effectiveFromrequiredstring (date-time) · data.rows[].effectiveFrom
ISO-8601 timestamp (UTC)minutes30drequirednumber · data.rows[].minutes30d
calls30drequiredinteger · data.rows[].calls30d
monthlyDeltarequirednumber | null · data.rows[].monthlyDelta
totalRowsrequiredinteger · data.totalRows
decksrequiredobject[] · data.decks
impactTruncatedrequiredboolean · data.impactTruncated
summaryrequiredobject · data.summary
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.