Switch API reference
Switch: customers
Customers you sell to: accounts, balances, credit, contacts and lifecycle.
BrowseSwitch: customers
Get a Switch customer routing assignment
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
subAccountIdrequiredstring (uuid) · data.subAccountId
customerTrunkIdstring (uuid) | null · data.customerTrunkId
dialplanIdrequiredstring (uuid) | null · data.dialplanId
routePlanIdrequiredstring (uuid) | null · data.routePlanId
failoverRoutePlanIdrequiredstring (uuid) | null · data.failoverRoutePlanId
strategyOverriderequiredstring | null · data.strategyOverride
directRouteIdrequiredstring (uuid) | null · data.directRouteId
directVendorTrunkIdrequiredstring (uuid) | null · data.directVendorTrunkId
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Assign routing to a Switch customer
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Sets the dialplan, route group, failover group, strategy or a direct supplier on the customer's first trunk. Use the per-trunk routing endpoint for a specific trunk. Send X-If-Unchanged-Since: <updatedAt you loaded> to have the save refused with 409 STALE_WRITE if someone changed the record since.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Request body (application/json)
dialplanIdstring (uuid) | null
routePlanIdstring (uuid) | null
failoverRoutePlanIdstring (uuid) | null
strategyOverridestring | null
One ofcheapest,best_quality,balanceddirectRouteIdstring (uuid) | null
directVendorTrunkIdstring (uuid) | null
Response 200
datarequiredobject
Same fields as SwitchCustomerRoutingAssignment, 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 a Switch customer trunks with traffic
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Each trunk with its authentication readiness, identification, addresses, routing, inherited limits and traffic over the chosen period.
Parameters
idrequiredpath · string (uuid)
scopequery · string
Default operational (excludes archived)One of operational, archived, allperiodHoursquery · integer
Window for the traffic figures; unrecognised values fall back to 24
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
subAccountIdrequiredstring (uuid) · data[].subAccountId
The customer this trunk belongs tolabelrequiredstring · data[].label
statusrequiredstring · data[].status
One ofactive,disabled,archivedauthModestring · data[].authMode
One ofip,credentials,ip_and_credentials,registration,certificatesipUsernamerequiredstring | null · data[].sipUsername
sipPasswordSetrequiredboolean · data[].sipPasswordSet
maxConcurrentCallsrequiredinteger | null · data[].maxConcurrentCalls
Null inherits the customer ceilingmaxCpsrequiredinteger | null · data[].maxCps
markupPctrequiredstring | null · data[].markupPct
billingIncrementrequiredstring | null · data[].billingIncrement
techPrefixrequiredstring | null · data[].techPrefix
mediaModestring · data[].mediaMode
One ofproxy,directcliRewriterequiredobject | null · data[].cliRewrite
allowedPrefixesrequiredstring[] | null · data[].allowedPrefixes
allowedCountriesrequiredstring[] | null · data[].allowedCountries
blockedCountriesrequiredstring[] | null · data[].blockedCountries
createdAtrequiredstring (date-time) · data[].createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data[].updatedAt
ISO-8601 timestamp (UTC)authenticationrequiredobject · data[].authentication
moderequiredstring · data[].authentication.mode
One ofip,credentials,ip_and_credentials,registration,certificatetitlerequiredstring · data[].authentication.title
summaryrequiredstring · data[].authentication.summary
sendsrequiredstring[] · data[].authentication.sends
checksrequiredstring[] · data[].authentication.checks
gapsrequiredstring[] · data[].authentication.gaps
Empty when the trunk is configured for its declared modeenforcedrequiredboolean · data[].authentication.enforced
identificationrequiredobject · data[].identification
namedByrequiredstring[] · data[].identification.namedBy
uniquerequiredboolean · data[].identification.unique
noterequiredstring | null · data[].identification.note
allowedIpsrequiredstring[] · data[].allowedIps
allowedAddressesrequiredobject[] · data[].allowedAddresses
idrequiredstring (uuid) · data[].allowedAddresses[].id
cidrrequiredstring · data[].allowedAddresses[].cidr
routingrequiredobject | null · data[].routing
inheritedrequiredobject · data[].inherited
fromrequiredstring · data[].inherited.from
One ofcustomermaxConcurrentCallsrequiredinteger | null · data[].inherited.maxConcurrentCalls
maxCpsrequiredinteger | null · data[].inherited.maxCps
billingIncrementrequiredstring | null · data[].inherited.billingIncrement
last24hrequiredobject · data[].last24h
callsrequiredinteger · data[].last24h.calls
minutesrequirednumber · data[].last24h.minutes
revenuerequirednumber · data[].last24h.revenue
US dollars as a JSON number (computed figure)periodany · data[].period
The window the traffic figures covertrafficrequiredobject · data[].traffic
callsrequiredinteger · data[].traffic.calls
answeredrequiredinteger · data[].traffic.answered
minutesrequirednumber · data[].traffic.minutes
revenuerequirednumber · data[].traffic.revenue
US dollars as a JSON number (computed figure)marginrequirednumber · data[].traffic.margin
US dollars as a JSON number (computed figure)asrrequirednumber | null · data[].traffic.asr
pddMsrequirednumber | null · data[].traffic.pddMs
refusedrequiredobject · data[].refused
forbiddenrequiredinteger · data[].refused.forbidden
capacityrequiredinteger · data[].refused.capacity
capacityChannelsrequiredinteger · data[].refused.capacityChannels
capacityCpsrequiredinteger · data[].refused.capacityCps
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 trunk to a Switch customer
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
If sipPassword is set it is echoed back ONCE in the response.
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 (uuid)
Request body (application/json)
labelstring
max 120 charsauthModestring
What the customer must present; the service refuses a mode the trunk is not configured forOne ofip,credentials,ip_and_credentials,registration,certificatesipUsernamestring | null
max 64 charssipPasswordstring | null
max 64 charsmaxConcurrentCallsinteger | null
0 to 100000maxCpsinteger | null
0 to 10000markupPctnumber | null
0 to 10000billingIncrementstring | null
max 10 charsblockedPrefixesstring | null
max 8000 charsstatusstring
One ofactive,disabledmediaModestring
One ofproxy,directtechPrefixstring | null
max 24 charscliRewriteobject | null
modestring · cliRewrite.mode
One ofpatternvaluestring · cliRewrite.value
max 24 charsstripinteger · cliRewrite.strip
0 to 15addstring · cliRewrite.add
max 12 charsmatchstring · cliRewrite.match
max 200 charsreplacestring · cliRewrite.replace
max 200 charsallowedPrefixesstring[] | null
allowedCountriesstring[] | null
blockedCountriesstring[] | null
maxCallDurationSecondsinteger | null
1 to 21600requireCliboolean
allowedClisstring[] | null
marginProtectionModestring
One ofoff,monitor,enforceminMarginPctnumber | null
0 to 99.999minMarginAbsnumber | null
0 to 1000maxLossPerMinutenumber | null
0 to 1000dailyLossLimitnumber | null
Warns only; never blocks0 to 10000000dailyLossLimitPctnumber | null
0 to 100000
Response 201
datarequiredobject
idrequiredstring (uuid) · data.id
subAccountIdrequiredstring (uuid) · data.subAccountId
The customer this trunk belongs tolabelrequiredstring · data.label
statusrequiredstring · data.status
One ofactive,disabled,archivedauthModestring · data.authMode
One ofip,credentials,ip_and_credentials,registration,certificatesipUsernamerequiredstring | null · data.sipUsername
maxConcurrentCallsrequiredinteger | null · data.maxConcurrentCalls
Null inherits the customer ceilingmaxCpsrequiredinteger | null · data.maxCps
markupPctrequiredstring | null · data.markupPct
billingIncrementrequiredstring | null · data.billingIncrement
techPrefixrequiredstring | null · data.techPrefix
mediaModestring · data.mediaMode
One ofproxy,directcliRewriterequiredobject | null · data.cliRewrite
allowedPrefixesrequiredstring[] | null · data.allowedPrefixes
allowedCountriesrequiredstring[] | null · data.allowedCountries
blockedCountriesrequiredstring[] | null · data.blockedCountries
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)sipPasswordrequiredstring | null · data.sipPassword
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 your Switch customers with live and 24-hour figures
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Every customer with trunk health, live calls, 24-hour traffic, credit used, primary contact and problem flags.
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
labelrequiredstring · data[].label
sourcerequiredstring · data[].source
One ofmarketplace,externalstatusrequiredstring · data[].status
One ofdraft,active,suspended,closedexternalRefrequiredstring | null · data[].externalRef
balancerequiredmoney · data[].balance
USD as a decimal string with exactly 6 places, e.g. "0.012500".creditLimitrequiredstring · data[].creditLimit
USD decimal string as stored (2 decimal places), e.g. "5000.00"currencyrequiredstring | null · data[].currency
sipUsernamerequiredstring | null · data[].sipUsername
portalEmailrequiredstring | null · data[].portalEmail
createdAtrequiredstring (date-time) · data[].createdAt
ISO-8601 timestamp (UTC)trunkCountrequiredinteger · data[].trunkCount
Trunks excluding archived onestrunksUprequiredinteger · data[].trunksUp
trunksDownrequiredinteger · data[].trunksDown
liveCallsrequiredinteger · data[].liveCalls
calls24hrequiredinteger · data[].calls24h
answered24hrequiredinteger · data[].answered24h
asr24hrequirednumber | null · data[].asr24h
Percent; null when no calls ran (not 0)revenue24hrequirednumber · data[].revenue24h
US dollars as a JSON number (computed figure)margin24hrequirednumber · data[].margin24h
US dollars as a JSON number (computed figure)marginPct24hrequirednumber | null · data[].marginPct24h
pddMs24hrequirednumber | null · data[].pddMs24h
creditUsedPctrequirednumber | null · data[].creditUsedPct
contactrequiredobject | null · data[].contact
namerequiredstring · data[].contact.name
emailrequiredstring | null · data[].contact.email
phonerequiredstring | null · data[].contact.phone
attentionrequiredobject | null · data[].attention
Open operational issues. Null means the check could not run, not that nothing is wrong.highestrequiredstring | null · data[].attention.highest
openrequiredinteger · data[].attention.open
unacknowledgedrequiredinteger · data[].attention.unacknowledged
refsrequiredstring[] · data[].attention.refs
setuprequiredobject · data[].setup
trunksrequiredinteger · data[].setup.trunks
enabledrequiredinteger · data[].setup.enabled
identifiedrequiredinteger · data[].setup.identified
routedrequiredinteger · data[].setup.routed
unroutedrequiredinteger · data[].setup.unrouted
refused24hrequiredobject · data[].refused24h
forbiddenrequiredinteger · data[].refused24h.forbidden
capacityrequiredinteger · data[].refused24h.capacity
flagsrequiredstring[] · data[].flags
Filterable problem and state flags, e.g. "problem:no_traffic"
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 Switch customer
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Creates the customer, a "Default" trunk carrying the same credentials and limits, an empty routing row, and the customer's first API key. The SIP password and API key are returned ONCE in this response.
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 charssourcestring
One ofmarketplace,externalstatusstring
One ofdraft,activeexternalRefstring | null
max 255 charscreditLimitnumber | null
min 0markupPctnumber | null
0 to 100000billingIncrementstring | null
max 10 charscurrencystring | null
max 3 charsminMarginPctnumber | null
0 to 100000marginFloorActionstring | null
One ofblock,alertdailySpendCapnumber | null
min 0maxConcurrentCallsinteger | null
min 0maxCpsinteger | null
min 0blockedPrefixesstring[]
portalEmailstring (email) | null
max 255 charstaxCountrystring | null
max 2 charstaxIdstring | null
max 64 chars
Response 201
datarequiredobject
idrequiredstring (uuid) · data.id
labelrequiredstring · data.label
sourcerequiredstring · data.source
One ofmarketplace,externalstatusrequiredstring · data.status
One ofdraft,active,suspended,closedexternalRefrequiredstring | null · data.externalRef
balancerequiredmoney · data.balance
Prepaid wallet balance (negative = owed), 6-decimal USD string USD as a decimal string with exactly 6 places, e.g. "0.012500".creditLimitrequiredstring · data.creditLimit
USD decimal string as stored (2 decimal places), e.g. "5000.00"currencyrequiredstring | null · data.currency
markupPctrequiredstring | null · data.markupPct
Default markup over cost, percent as a decimal stringbillingIncrementrequiredstring | null · data.billingIncrement
e.g. "60/60" or "6/6"minMarginPctrequiredstring | null · data.minMarginPct
marginFloorActionrequiredstring | null · data.marginFloorAction
One ofblock,alertdailySpendCaprequiredstring | null · data.dailySpendCap
USD decimal string as stored (2 decimal places), e.g. "5000.00"maxConcurrentCallsrequiredinteger | null · data.maxConcurrentCalls
maxCpsrequiredinteger | null · data.maxCps
blockedPrefixesrequiredstring[] | null · data.blockedPrefixes
sipUsernamerequiredstring | null · data.sipUsername
portalEmailrequiredstring | null · data.portalEmail
taxCountryrequiredstring | null · data.taxCountry
taxIdrequiredstring | null · data.taxId
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)sipPasswordrequiredstring · data.sipPassword
The inbound SIP password in plain text. Returned ONCE, here.defaultTrunkIdrequiredstring (uuid) · data.defaultTrunkId
The "Default" trunk created with every customerapiKeyrequiredstring · data.apiKey
The customer's first API key. Returned ONCE, here.apiKeyPrefixrequiredstring · data.apiKeyPrefix
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 Switch customer command-centre overview
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
KPIs, live traffic, quality, activity, setup state and data freshness in one read.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
customerrequiredobject · data.customer
idrequiredstring (uuid) · data.customer.id
labelrequiredstring · data.customer.label
statusrequiredstring · data.customer.status
One ofdraft,active,suspended,closedsourcerequiredstring · data.customer.source
kpisrequiredobject · data.kpis
Balance owed, wallet, credit used and today's traffic figures (numbers)commercialrequiredobject · data.commercial
activityrequiredobject[] · data.activity
topDestinationsTodayrequiredobject[] · data.topDestinationsToday
healthany · data.health
setupany · data.setup
reconciliationany · data.reconciliation
freshnessany · 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.
Get a Switch customer
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Includes customer-level IP allow-list entries in ipAcls. The SIP password is never returned here; see the credentials endpoint.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
labelrequiredstring · data.label
sourcerequiredstring · data.source
One ofmarketplace,externalstatusrequiredstring · data.status
One ofdraft,active,suspended,closedexternalRefrequiredstring | null · data.externalRef
balancerequiredmoney · data.balance
Prepaid wallet balance (negative = owed), 6-decimal USD string USD as a decimal string with exactly 6 places, e.g. "0.012500".creditLimitrequiredstring · data.creditLimit
USD decimal string as stored (2 decimal places), e.g. "5000.00"currencyrequiredstring | null · data.currency
markupPctrequiredstring | null · data.markupPct
Default markup over cost, percent as a decimal stringbillingIncrementrequiredstring | null · data.billingIncrement
e.g. "60/60" or "6/6"minMarginPctrequiredstring | null · data.minMarginPct
marginFloorActionrequiredstring | null · data.marginFloorAction
One ofblock,alertdailySpendCaprequiredstring | null · data.dailySpendCap
USD decimal string as stored (2 decimal places), e.g. "5000.00"maxConcurrentCallsrequiredinteger | null · data.maxConcurrentCalls
maxCpsrequiredinteger | null · data.maxCps
blockedPrefixesrequiredstring[] | null · data.blockedPrefixes
sipUsernamerequiredstring | null · data.sipUsername
sipPasswordSetrequiredboolean · data.sipPasswordSet
Whether an inbound SIP password is set. The value itself is only ever returned by the audited credentials endpoint.portalEmailrequiredstring | null · data.portalEmail
taxCountryrequiredstring | null · data.taxCountry
taxIdrequiredstring | null · data.taxId
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)ipAclsrequiredobject[] · data.ipAcls
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 Switch customer
PATCH/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Any field from create, all optional. A status change is applied as the matching lifecycle action, with the same guards and history entry as POST /lifecycle. Send X-If-Unchanged-Since: <updatedAt you loaded> to have the save refused with 409 STALE_WRITE if someone changed the record since.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Request body (application/json)
labelstring
max 160 charssourcestring
One ofmarketplace,externalstatusstring
One ofdraft,active,suspended,closedexternalRefstring | null
max 255 charscreditLimitnumber | null
min 0markupPctnumber | null
0 to 100000billingIncrementstring | null
max 10 charscurrencystring | null
max 3 charsminMarginPctnumber | null
0 to 100000marginFloorActionstring | null
One ofblock,alertdailySpendCapnumber | null
min 0maxConcurrentCallsinteger | null
min 0maxCpsinteger | null
min 0blockedPrefixesstring[]
portalEmailstring (email) | null
max 255 charstaxCountrystring | null
max 2 charstaxIdstring | null
max 64 charsstatusReasonstring | null
max 2000 chars
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
labelrequiredstring · data.label
sourcerequiredstring · data.source
One ofmarketplace,externalstatusrequiredstring · data.status
One ofdraft,active,suspended,closedexternalRefrequiredstring | null · data.externalRef
balancerequiredmoney · data.balance
Prepaid wallet balance (negative = owed), 6-decimal USD string USD as a decimal string with exactly 6 places, e.g. "0.012500".creditLimitrequiredstring · data.creditLimit
USD decimal string as stored (2 decimal places), e.g. "5000.00"currencyrequiredstring | null · data.currency
markupPctrequiredstring | null · data.markupPct
Default markup over cost, percent as a decimal stringbillingIncrementrequiredstring | null · data.billingIncrement
e.g. "60/60" or "6/6"minMarginPctrequiredstring | null · data.minMarginPct
marginFloorActionrequiredstring | null · data.marginFloorAction
One ofblock,alertdailySpendCaprequiredstring | null · data.dailySpendCap
USD decimal string as stored (2 decimal places), e.g. "5000.00"maxConcurrentCallsrequiredinteger | null · data.maxConcurrentCalls
maxCpsrequiredinteger | null · data.maxCps
blockedPrefixesrequiredstring[] | null · data.blockedPrefixes
sipUsernamerequiredstring | null · data.sipUsername
sipPasswordSetrequiredboolean · data.sipPasswordSet
Whether an inbound SIP password is set. The value itself is only ever returned by the audited credentials endpoint.portalEmailrequiredstring | null · data.portalEmail
taxCountryrequiredstring | null · data.taxCountry
taxIdrequiredstring | null · data.taxId
createdAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Delete a draft Switch customer
DELETE/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Only for a customer that never carried traffic or held financial records. Offboard a real customer with the close lifecycle action 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 (uuid)
Response 200
datarequiredobject
deletedrequiredboolean · data.deleted
One oftrueidrequiredstring (uuid) · data.id
labelrequiredstring · data.label
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Get a Switch customer lifecycle state and financial position
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Which lifecycle actions are available now, live calls, trunk counts, recent history and the money position a close or suspend would leave.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
customerrequiredobject · data.customer
idrequiredstring (uuid) · data.customer.id
labelrequiredstring · data.customer.label
statusrequiredstring · data.customer.status
One ofdraft,active,suspended,closedsourcerequiredstring · data.customer.source
createdAtrequiredstring (date-time) · data.customer.createdAt
ISO-8601 timestamp (UTC)availablerequiredstring[] · data.available
Actions allowed from the current stateOne ofactivate,suspend,reactivate,close,reopenliveCallsrequiredinteger · data.liveCalls
trunksrequiredobject · data.trunks
totalrequiredinteger · data.trunks.total
activerequiredinteger · data.trunks.active
historyrequiredobject[] · data.history
idrequiredstring · data.history[].id
atrequiredstring (date-time) · data.history[].at
ISO-8601 timestamp (UTC)actionrequiredstring · data.history[].action
fromrequiredstring | null · data.history[].from
torequiredstring | null · data.history[].to
reasonrequiredstring | null · data.history[].reason
actorrequiredstring | null · data.history[].actor
Email of whoever did itdetailrequiredobject · data.history[].detail
financialsrequiredobject · data.financials
currencyrequiredstring · data.financials.currency
prepaidBalancerequirednumber · data.financials.prepaidBalance
US dollars as a JSON number (computed figure)invoicesOutstandingrequirednumber · data.financials.invoicesOutstanding
US dollars as a JSON number (computed figure)invoicesOverduerequirednumber · data.financials.invoicesOverdue
US dollars as a JSON number (computed figure)creditNotesOpenrequirednumber · data.financials.creditNotesOpen
US dollars as a JSON number (computed figure)unbilledUsagerequirednumber · data.financials.unbilledUsage
US dollars as a JSON number (computed figure)creditLimitrequirednumber · data.financials.creditLimit
US dollars as a JSON number (computed figure)openInvoiceCountrequiredinteger · data.financials.openInvoiceCount
paidInvoiceCountrequiredinteger · data.financials.paidInvoiceCount
paymentCountrequiredinteger · data.financials.paymentCount
hasOpenPositionrequiredboolean · data.financials.hasOpenPosition
canDeleterequiredboolean · data.canDelete
deleteBlockersrequiredstring[] · data.deleteBlockers
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.
Activate, suspend, reactivate, close or reopen a Switch customer
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The one write path for a customer's state. Live calls keep talking unless disconnectLiveCalls is true. Send X-If-Unchanged-Since: <updatedAt you loaded> to have the save refused with 409 STALE_WRITE if someone changed the record since.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Request body (application/json)
actionrequiredstring
One ofactivate,suspend,reactivate,close,reopenreasonstring | null
max 2000 charsdisconnectLiveCallsboolean
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
labelrequiredstring · data.label
statusrequiredstring · data.status
One ofdraft,active,suspended,closedpreviousStatusrequiredstring · data.previousStatus
One ofdraft,active,suspended,closedactionrequiredstring · data.action
liveCallsAtChangerequiredinteger · data.liveCallsAtChange
disconnectedLiveCallsrequiredboolean · data.disconnectedLiveCalls
disconnectIncompleteboolean · data.disconnectIncomplete
apiKeysRevokedinteger · data.apiKeysRevoked
financialsUnchangedrequiredboolean · data.financialsUnchanged
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 a Switch customer lifecycle history
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string (uuid)
limitquery · integer
Default 50
Response 200
datarequiredobject[]
Same fields as SwitchCustomerLifecycleEntry, 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.
Rotate a Switch customer inbound SIP password
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Generates a new password and returns it ONCE. The old password stops working immediately.
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 (uuid)
Response 200
datarequiredobject
sipUsernamerequiredstring | null · data.sipUsername
sipPasswordrequiredstring | null · data.sipPassword
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
Reveal a Switch customer inbound SIP credentials
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Returns the current username and password without changing them. Every reveal is recorded in the audit log.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
Same fields as SwitchCustomerSipCredentials, 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.
List what needs attention on a Switch customer
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
A compact projection of the customer's open operational issues: quality, margin, credit and setup problems.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject[]
kindrequiredstring · data[].kind
One ofquality,commercial,credit,config,setuptitlerequiredstring · data[].title
detailrequiredstring · data[].detail
atrequiredstring · data[].at
actionablerequiredboolean · data[].actionable
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 operational issues on a Switch customer
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The full issue records behind the attention feed, with trigger, recovery rule, evidence and ownership.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject[]
refrequiredstring · data[].ref
Issue reference, e.g. OPS-1042detectorrequiredstring · data[].detector
severityrequiredstring · data[].severity
statusrequiredstring · data[].status
titlerequiredstring · data[].title
summaryrequiredstring · data[].summary
triggerrequiredstring · data[].trigger
recoveryrequiredstring · data[].recovery
sampleSizerequirednumber · data[].sampleSize
evidencerequiredobject[] · data[].evidence
labelrequiredstring · data[].evidence[].label
valuerequiredstring · data[].evidence[].value
firstDetectedAtrequiredstring · data[].firstDetectedAt
lastDetectedAtrequiredstring · data[].lastDetectedAt
acknowledgedAtrequiredstring | null · data[].acknowledgedAt
resolvedAtrequiredstring | null · data[].resolvedAt
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 Switch customer contacts
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Ordered by role, then priority. A contact is a person to reach, never a login.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
subAccountIdrequiredstring (uuid) · data[].subAccountId
namerequiredstring · data[].name
rolerequiredstring · data[].role
One oftechnical,noc,billing,escalation,commercialemailrequiredstring | null · data[].email
phonerequiredstring | null · data[].phone
priorityrequiredinteger · data[].priority
1 = try first within this roleisPrimaryrequiredboolean · data[].isPrimary
preferredMethodrequiredstring · data[].preferredMethod
One ofemail,phone,eitheravailabilityrequiredstring | null · data[].availability
One of24x7,business_hours,on_calltimezonerequiredstring | null · data[].timezone
notesrequiredstring | null · data[].notes
createdAtrequiredstring (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.
Add a Switch customer contact
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 (uuid)
Request body (application/json)
namerequiredstring
max 200 charsrolerequiredstring
One oftechnical,noc,billing,escalation,commercialemailstring (email) | null
max 255 charsphonestring | null
max 48 charspriorityinteger
1 to 99isPrimaryboolean
preferredMethodstring
One ofemail,phone,eitheravailabilitystring | null
One of24x7,business_hours,on_calltimezonestring | null
max 64 charsnotesstring | null
max 2000 chars
Response 201
datarequiredobject
Same fields as SwitchCustomerContact, 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 Switch customer 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 (uuid)
contactIdrequiredpath · string (uuid)
Request body (application/json)
namestring
max 200 charsrolestring
One oftechnical,noc,billing,escalation,commercialemailstring (email) | null
max 255 charsphonestring | null
max 48 charspriorityinteger
1 to 99isPrimaryboolean
preferredMethodstring
One ofemail,phone,eitheravailabilitystring | null
One of24x7,business_hours,on_calltimezonestring | null
max 64 charsnotesstring | null
max 2000 chars
Response 200
datarequiredobject
Same fields as SwitchCustomerContact, 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 Switch customer 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 (uuid)
contactIdrequiredpath · string (uuid)
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 internal notes on a Switch customer
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Operator-private notes with the author name. Never visible to the customer.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
subAccountIdrequiredstring (uuid) · data[].subAccountId
bodyrequiredstring · data[].body
typerequiredstring · data[].type
One ofgeneral,technical,billing,warningpinnedrequiredboolean · data[].pinned
followUpAtrequiredstring (date-time) | null · data[].followUpAt
ISO-8601 timestamp (UTC)createdByrequiredstring (uuid) | null · data[].createdBy
createdAtrequiredstring (date-time) · data[].createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data[].updatedAt
ISO-8601 timestamp (UTC)authorNamerequiredstring | null · data[].authorName
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 an internal note to a Switch customer
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 (uuid)
Request body (application/json)
bodyrequiredstring
max 4000 charstypestring
One ofgeneral,technical,billing,warningpinnedboolean
followUpAtstring (date-time) | null
Response 201
datarequiredobject
idrequiredstring (uuid) · data.id
subAccountIdrequiredstring (uuid) · data.subAccountId
bodyrequiredstring · data.body
typerequiredstring · data.type
One ofgeneral,technical,billing,warningpinnedrequiredboolean · data.pinned
followUpAtrequiredstring (date-time) | null · data.followUpAt
ISO-8601 timestamp (UTC)createdByrequiredstring (uuid) | null · data.createdBy
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
Edit, pin or flag a Switch customer note
PATCH/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The author and creation time never change.
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 (uuid)
noteIdrequiredpath · string (uuid)
Request body (application/json)
bodystring
max 4000 charstypestring
One ofgeneral,technical,billing,warningpinnedboolean
followUpAtstring (date-time) | null
Response 200
datarequiredobject
Same fields as SwitchCustomerNote, 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 Switch customer note
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 (uuid)
noteIdrequiredpath · string (uuid)
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 per-destination quality for a Switch customer
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
ASR, NER and PDD per destination over a window, with verdicts. The KPI row and the table are both computed from the same filtered set.
Parameters
idrequiredpath · string (uuid)
windowquery · integer
Hours: 1, 24 or 168. Default 24fromquery · string
Explicit window start (ISO-8601); overrideswindowtoquery · string
Explicit window end (ISO-8601)
Response 200
datarequiredobject
windowHoursrequirednumber · data.windowHours
windowrequiredobject · data.window
fromrequiredstring (date-time) · data.window.from
ISO-8601 timestamp (UTC)torequiredstring (date-time) · data.window.to
ISO-8601 timestamp (UTC)labelrequiredstring · data.window.label
destinationDigitsrequiredinteger · data.destinationDigits
kpisrequiredobject · data.kpis
callsrequiredinteger · data.kpis.calls
answeredrequiredinteger · data.kpis.answered
asrrequirednumber | null · data.kpis.asr
nerrequirednumber | null · data.kpis.ner
destinationsrequiredobject[] · data.destinations
prefixrequiredstring · data.destinations[].prefix
callsrequiredinteger · data.destinations[].calls
answeredrequiredinteger · data.destinations[].answered
asrrequirednumber | null · data.destinations[].asr
nerrequirednumber | null · data.destinations[].ner
healthrequiredstring · data.destinations[].health
thresholdsany · data.thresholds
minJudgeableSessionsrequiredinteger · data.minJudgeableSessions
supportsrequiredstring[] · data.supports
Call Records filter ids this view honoursunsupportedrequiredany[] · data.unsupported
Filters you sent that this view could not apply
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.
Drill into one destination for a Switch customer
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Which customer trunks sent it, which supplier trunks carried it, which route groups send it there, and how far the sessions got. Uses the same window and filters as the quality table.
Parameters
idrequiredpath · string (uuid)
windowquery · integer
Hours: 1, 24 or 168. Default 24fromquery · string
Explicit window start (ISO-8601); overrideswindowtoquery · string
Explicit window end (ISO-8601)prefixrequiredquery · string
The destination prefix to open
Response 200
datarequiredobject
windowHoursrequirednumber · data.windowHours
windowrequiredobject · data.window
fromrequiredstring (date-time) · data.window.from
ISO-8601 timestamp (UTC)torequiredstring (date-time) · data.window.to
ISO-8601 timestamp (UTC)labelrequiredstring · data.window.label
destinationDigitsrequiredinteger · data.destinationDigits
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 Switch customer receivables summary
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
What is owed, unbilled and unrated, payments recorded and ageing. Credit headroom is a separate endpoint (credit-position).
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
balanceOwedrequirednumber · data.balanceOwed
Open invoices less open credit notesgrossBalanceOwedrequirednumber · data.grossBalanceOwed
US dollars as a JSON number (computed figure)creditNotesOpenrequirednumber · data.creditNotesOpen
US dollars as a JSON number (computed figure)paymentsRecordedrequirednumber · data.paymentsRecorded
US dollars as a JSON number (computed figure)creditLimitrequirednumber · data.creditLimit
US dollars as a JSON number (computed figure)unbilledRatedrequirednumber · data.unbilledRated
US dollars as a JSON number (computed figure)unbilledSinceLastInvoicerequirednumber · data.unbilledSinceLastInvoice
US dollars as a JSON number (computed figure)unratedUsagerequiredobject · data.unratedUsage
callsrequiredinteger · data.unratedUsage.calls
minutesrequirednumber | null · data.unratedUsage.minutes
noterequiredstring · data.unratedUsage.note
overdueIsSubsetOfOpenInvoicesrequiredboolean · data.overdueIsSubsetOfOpenInvoices
One oftruedisputedrequiredenum | null · data.disputed
Customer-side disputes are not recorded, so always nullOne ofnullavgDaysToPayrequirednumber | null · data.avgDaysToPay
lastInvoicePeriodEndrequiredstring (date-time) | null · data.lastInvoicePeriodEnd
ISO-8601 timestamp (UTC)currencyrequiredstring · data.currency
agingrequiredobject · data.aging
currentrequirednumber · data.aging.current
US dollars as a JSON number (computed figure)d1_30requirednumber · data.aging.d1_30
US dollars as a JSON number (computed figure)d31_60requirednumber · data.aging.d31_60
US dollars as a JSON number (computed figure)d61_90requirednumber · data.aging.d61_90
US dollars as a JSON number (computed figure)d90_plusrequirednumber · data.aging.d90_plus
US dollars as a JSON number (computed figure)
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 Switch customer credit position
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Credit limit, exposure, funds reserved by live calls, available credit and whether the next call would be admitted. Read-only; it reports the admission arithmetic without performing it.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
customerIdrequiredstring (uuid) · data.customerId
labelrequiredstring · data.label
currencyrequiredstring · data.currency
moderequiredstring · data.mode
prepaid or postpaid, derived from the credit limitcreditLimitrequiredobject · data.creditLimit
valuerequirednumber · data.creditLimit.value
US dollars as a JSON number (computed figure)ambiguousrequiredstring | null · data.creditLimit.ambiguous
exposurerequirednumber · data.exposure
US dollars as a JSON number (computed figure)balancerequirednumber · data.balance
US dollars as a JSON number (computed figure)reservationsrequiredobject · data.reservations
amountrequirednumber · data.reservations.amount
US dollars as a JSON number (computed figure)callsrequiredinteger · data.reservations.calls
enforcedrequiredboolean · data.reservations.enforced
basisrequiredstring · data.reservations.basis
availableCreditrequirednumber · data.availableCredit
US dollars as a JSON number (computed figure)availableAfterReservationsrequirednumber · data.availableAfterReservations
US dollars as a JSON number (computed figure)admitsNextCallrequiredboolean · data.admitsNextCall
usedPctrequirednumber | null · data.usedPct
overCommittedrequiredboolean · data.overCommitted
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Preview how a payment would be allocated to invoices
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string (uuid)
amountquery · number
USD amount to preview
Response 200
datarequiredobject
billingModerequiredstring · data.billingMode
currencyrequiredstring · data.currency
wouldAllocaterequiredobject[] · data.wouldAllocate
invoiceIdrequiredstring (uuid) · data.wouldAllocate[].invoiceId
invoiceNumberrequiredstring · data.wouldAllocate[].invoiceNumber
appliedrequirednumber · data.wouldAllocate[].applied
US dollars as a JSON number (computed figure)clearsInvoicerequiredboolean · data.wouldAllocate[].clearsInvoice
wouldLeaveUnappliedrequirednumber · data.wouldLeaveUnapplied
US dollars as a JSON number (computed figure)
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Record a payment received from a Switch customer
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
- Safe retries
- Send
X-Idempotency-Key; a replay within 24 hours returns the first response. - Moves money
- Records or reverses a payment on a Switch customer ledger.
Records money the customer already paid you (nothing is collected). It credits the wallet and pays open invoices oldest-due first in one transaction; anything left is held unapplied.
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 (uuid)
X-Idempotency-Keyheader · string
Any unique string (a UUID is ideal). Replays within 24 hours return the first response instead of acting twice.
Request body (application/json)
amountrequirednumber
USDmin 0referencestring | null
Bank or remittance reference, for matching latermax 160 charsmethodstring | null
max 32 charspaidAtstring | null
When the money was received (ISO-8601); default now
Response 201
datarequiredobject
kindrequiredstring · data.kind
One ofpaymenttransactionIdrequiredstring (uuid) · data.transactionId
amountrequirednumber · data.amount
US dollars as a JSON number (computed figure)currencyrequiredstring · data.currency
postedAtrequiredstring (date-time) · data.postedAt
ISO-8601 timestamp (UTC)externalReferencerequiredstring | null · data.externalReference
methodrequiredstring | null · data.method
operatorLabelrequiredstring | null · data.operatorLabel
billingModerequiredstring · data.billingMode
allocationsrequiredobject[] · data.allocations
Oldest-due invoices firstinvoiceIdrequiredstring (uuid) · data.allocations[].invoiceId
invoiceNumberrequiredstring · data.allocations[].invoiceNumber
appliedrequirednumber · data.allocations[].applied
US dollars as a JSON number (computed figure)outstandingAfterrequirednumber · data.allocations[].outstandingAfter
US dollars as a JSON number (computed figure)statusrequiredstring · data.allocations[].status
unappliedrequirednumber · data.unapplied
Left on account after paying every open invoicepositionAfterrequiredobject · data.positionAfter
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
Reverse a recorded Switch customer payment
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
- Moves money
- Records or reverses a payment on a Switch customer ledger.
A posted payment is never edited or deleted. This posts a linked reversal and unwinds its invoice allocations; both entries stay on the record.
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 (uuid)
transactionIdrequiredpath · string (uuid)
Request body (application/json)
reasonrequiredstring
max 500 chars
Response 201
datarequiredobject
kindrequiredstring · data.kind
One ofreversalreversesTransactionIdrequiredstring (uuid) · data.reversesTransactionId
transactionIdrequiredstring (uuid) · data.transactionId
amountrequirednumber · data.amount
US dollars as a JSON number (computed figure)currencyrequiredstring · data.currency
reasonrequiredstring · data.reason
unwoundrequiredobject[] · data.unwound
positionAfterrequiredobject · data.positionAfter
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Preview an invoice for a Switch customer unbilled period
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The period runs from the last invoice's end (or the customer's creation) to now. Issues nothing; returns a reviewToken for generate-invoice.
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 (uuid)
Request body (application/json)
notesstring | null
max 2000 charsincludeBroughtForwardboolean
applyCreditsboolean
excludeUnratedobject | null
Issue despite unrated usage in the period, with the reason recorded on the invoicereasonrequiredstring · excludeUnrated.reason
max 2000 chars
Response 200
datarequiredobject
customerrequiredobject · data.customer
idrequiredstring (uuid) · data.customer.id
labelrequiredstring · data.customer.label
legalNamerequiredstring · data.customer.legalName
currencyrequiredstring · data.customer.currency
periodrequiredobject · data.period
dueDaterequiredstring · data.dueDate
paymentTermsDaysrequiredinteger · data.paymentTermsDays
currencyrequiredstring · data.currency
usagerequiredobject · data.usage
unratedrequiredobject · data.unrated
Usage that has no price yet; blocks issue unless excludedreviewTokenrequiredstring · data.reviewToken
Pass to generate-invoice to issue exactly what was reviewedreviewDigestrequiredstring · data.reviewDigest
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
Issue the reviewed invoice for a Switch customer
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Requires the reviewToken from invoice-preview; refused with 409 INVOICE_REVIEW_STALE if the data changed since, or INVOICE_UNRATED_USAGE if unrated usage remains and was not excluded.
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 (uuid)
Request body (application/json)
notesstring | null
max 2000 charsincludeBroughtForwardboolean
applyCreditsboolean
excludeUnratedobject | null
Issue despite unrated usage in the period, with the reason recorded on the invoicereasonrequiredstring · excludeUnrated.reason
max 2000 charsreviewTokenrequiredstring
max 120 chars
Response 201
datarequiredobject
idrequiredstring (uuid) · data.id
invoiceNumberrequiredstring · data.invoiceNumber
customerIdrequiredstring (uuid) · data.customerId
statusrequiredstring · data.status
subtotalrequiredmoney · data.subtotal
USD as a decimal string with exactly 6 places, e.g. "0.012500".totalrequiredmoney · data.total
USD as a decimal string with exactly 6 places, e.g. "0.012500".currencyrequiredstring · data.currency
periodStartrequiredstring (date-time) · data.periodStart
ISO-8601 timestamp (UTC)periodEndrequiredstring (date-time) · data.periodEnd
ISO-8601 timestamp (UTC)issueDaterequiredstring (date-time) | null · data.issueDate
ISO-8601 timestamp (UTC)dueDaterequiredstring (date-time) | null · data.dueDate
ISO-8601 timestamp (UTC)linesrequiredobject[] · data.lines
reviewDigestrequiredstring | null · data.reviewDigest
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
INVOICE_REVIEW_STALE,INVOICE_UNRATED_USAGE,STALE_WRITE
Get a Switch customer billing profile
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
profile is what was entered (null if none); resolved is what an invoice issued now would freeze, including fallbacks.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
profilerequiredobject | null · data.profile
idrequiredstring (uuid) · data.profile.id
legalNamerequiredstring · data.profile.legalName
versionrequiredinteger · data.profile.version
Bumped on every save; frozen onto invoices issued afterwardsupdatedAtrequiredstring (date-time) · data.profile.updatedAt
ISO-8601 timestamp (UTC)resolvedrequiredobject · data.resolved
sourcerequiredstring · data.resolved.source
One ofprofile,fallbackprofileIdrequiredstring (uuid) | null · data.resolved.profileId
profileVersionrequiredinteger | null · data.resolved.profileVersion
customerrequiredobject · data.resolved.customer
billingAddressrequiredobject | null · data.resolved.billingAddress
issuerrequiredobject · data.resolved.issuer
termsrequiredobject · data.resolved.terms
currencyrequiredstring · data.resolved.terms.currency
billingCyclerequiredstring | null · data.resolved.terms.billingCycle
billingTimezonerequiredstring · data.resolved.terms.billingTimezone
paymentTermsDaysrequiredinteger · data.resolved.terms.paymentTermsDays
purchaseOrderRefrequiredstring | null · data.resolved.terms.purchaseOrderRef
paymentInstructionsrequiredstring | null · data.resolved.terms.paymentInstructions
recipientsany · data.resolved.recipients
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.
Save a Switch customer billing profile
PUT/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The customer's legal and billing identity. Frozen onto invoices issued afterwards; never changes an invoice already issued. Send X-If-Unchanged-Since: <updatedAt you loaded> to have the save refused with 409 STALE_WRITE if someone changed the record since.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Request body (application/json)
legalNamestring
max 200 charstradingNamestring | null
max 200 charsregistrationNumberstring | null
max 64 charsaddressLine1string | null
max 200 charsaddressLine2string | null
max 200 charscitystring | null
max 120 charsregionstring | null
max 120 charspostcodestring | null
max 32 charscountrystring | null
max 2 charsbillingAddressLine1string | null
max 200 charsbillingAddressLine2string | null
max 200 charsbillingCitystring | null
max 120 charsbillingRegionstring | null
max 120 charsbillingPostcodestring | null
max 32 charsbillingCountrystring | null
max 2 charstaxCountrystring | null
max 2 charstaxIdstring | null
max 64 charstaxTreatmentstring | null
One ofstandard,reverse_charge,zero_rated,exemptinvoiceCurrencystring
max 3 charsbillingCyclestring | null
One ofweekly,biweekly,monthly,manualbillingTimezonestring
max 64 charspaymentTermsDaysinteger | null
0 to 365purchaseOrderRefstring | null
max 64 charsinvoiceRecipientsstring (email)[]
Response 200
datarequiredobject
Same fields as SwitchCustomerBillingProfile, 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
Get a Switch customer default sell deck and each trunk's deck
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
An unknown customer answers 404 NOT_FOUND.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
customerIdrequiredstring (uuid) · data.customerId
customerLabelrequiredstring · data.customerLabel
defaultDeckrequiredobject | null · data.defaultDeck
idrequiredstring (uuid) · data.defaultDeck.id
namerequiredstring · data.defaultDeck.name
versionrequiredinteger · data.defaultDeck.version
statusrequiredstring · data.defaultDeck.status
currencyrequiredstring · data.defaultDeck.currency
isSystemDefaultrequiredboolean · data.defaultDeck.isSystemDefault
defaultRatePerUnitrequirednumber | null · data.defaultDeck.defaultRatePerUnit
USD per minute for destinations the deck does not list; null = refuse themchargingrequiredobject · data.defaultDeck.charging
systemDefaultrequiredobject | null · data.systemDefault
Same fields as SwitchCustomerSellDeckRef, shown earlier on this page.trunksrequiredobject[] · data.trunks
effectiverequiredobject · data.trunks[].effective
deckrequiredobject | null · data.trunks[].effective.deck
Same fields as SwitchCustomerSellDeckRef, shown earlier on this page.moderequiredstring · data.trunks[].effective.mode
choicerequiredstring · data.trunks[].effective.choice
Which rule won: the trunk, the customer default or the system defaultbypassesCustomerDefaultrequiredboolean · data.trunks[].effective.bypassesCustomerDefault
customerDefaultrequiredobject | null · data.trunks[].effective.customerDefault
Same fields as SwitchCustomerSellDeckRef, shown earlier on this page.systemDefaultrequiredobject | null · data.trunks[].effective.systemDefault
Same fields as SwitchCustomerSellDeckRef, shown earlier on this page.liveRowCountrequiredinteger · data.trunks[].effective.liveRowCount
explanationrequiredstring · data.trunks[].effective.explanation
problemrequiredstring | null · data.trunks[].effective.problem
trunksDisagreerequiredboolean · data.trunksDisagree
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 a Switch customer default sell deck
PUT/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Without confirm: true nothing changes: the response lists the trunks whose prices would change. With it, the deck is assigned and trunks that follow the customer default reprice from the next call.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Request body (application/json)
deckIdstring (uuid) | null
null clears the defaultconfirmboolean
reasonstring
Response 200
datarequiredobject
changedboolean · data.changed
One oftruewouldChangeobject · data.wouldChange
trunksrequiredstring[] · data.wouldChange.trunks
messagerequiredstring · data.wouldChange.message
trunksinteger · data.trunks
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
Email a Switch customer a 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 sign-in link to the customer's portal email. With no portal email 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 (uuid)
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 a Switch customer sell rates with buy cost and margin
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string (uuid)
searchquery · string
Prefix or destination textlimitquery · integer
offsetquery · integer
viewquery · string
Default currentOne of current, scheduled, discontinued, expiring, alloriginquery · string
One of any, origin_only, destination_onlyincrementquery · string
One of any, custom, inheritedcostquery · string
One of any, missingmarginquery · string
One of any, thin, negative
Response 200
datarequiredobject
rowsrequiredobject[] · data.rows
idrequiredstring (uuid) · data.rows[].id
subAccountIdrequiredstring (uuid) · data.rows[].subAccountId
customerTrunkIdrequiredstring (uuid) | null · data.rows[].customerTrunkId
prefixrequiredstring · data.rows[].prefix
originPrefixrequiredstring · data.rows[].originPrefix
"" = any originratePerUnitrequiredmoney · data.rows[].ratePerUnit
Sell price per minute, 6-decimal USD string USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.rows[].billingIncrement
statusrequiredstring · data.rows[].status
active, pending (scheduled) or discontinuedeffectiveFromrequiredstring (date-time) · data.rows[].effectiveFrom
ISO-8601 timestamp (UTC)endDaterequiredstring (date-time) | null · data.rows[].endDate
ISO-8601 timestamp (UTC)buyCostrequirednumber | null · data.rows[].buyCost
Best eligible buy cost per minute (USD number); null = no supplier prices itmarginPctrequirednumber | null · data.rows[].marginPct
thinrequiredboolean · data.rows[].thin
negativerequiredboolean · data.rows[].negative
costSupplierrequiredstring | null · data.rows[].costSupplier
costSourcerequiredstring · data.rows[].costSource
costMatchedPrefixrequiredstring | null · data.rows[].costMatchedPrefix
costNoterequiredstring | null · data.rows[].costNote
totalrequiredinteger · data.total
totalIsPageScopedrequiredboolean · data.totalIsPageScoped
True when a cost or margin filter narrowed the page, sototalcounts this page onlylimitrequiredinteger · data.limit
offsetrequiredinteger · data.offset
viewrequiredstring · data.view
summaryrequiredobject · data.summary
prefixesrequiredinteger · data.summary.prefixes
blendedMarginPctrequirednumber | null · data.summary.blendedMarginPct
thinCountrequiredinteger · data.summary.thinCount
negativeCountrequiredinteger · data.summary.negativeCount
defaultRateCostCountrequiredinteger · data.summary.defaultRateCostCount
unpricedCountrequiredinteger · data.summary.unpricedCount
basisany · data.basis
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Add or replace one Switch customer sell rate
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Takes effect now on the customer's default trunk. Use the per-trunk rate endpoints to price a specific 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 (uuid)
Request body (application/json)
prefixrequiredstring
max 24 charsraterequirednumber
USD per minutemin 0originstring
max 24 charsbillingIncrementstring
max 10 chars
Response 201
datarequiredobject
idrequiredstring (uuid) · data.id
subAccountIdrequiredstring (uuid) · data.subAccountId
customerTrunkIdrequiredstring (uuid) | null · data.customerTrunkId
prefixrequiredstring · data.prefix
originPrefixrequiredstring · data.originPrefix
"" = any originratePerUnitrequiredmoney · data.ratePerUnit
Sell price per minute, 6-decimal USD string USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.billingIncrement
statusrequiredstring · data.status
active, pending (scheduled) or discontinuedeffectiveFromrequiredstring (date-time) · data.effectiveFrom
ISO-8601 timestamp (UTC)endDaterequiredstring (date-time) | null · data.endDate
ISO-8601 timestamp (UTC)
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Count a Switch customer sell rates by view
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
currentrequiredinteger · data.current
scheduledrequiredinteger · data.scheduled
expiringrequiredinteger · data.expiring
discontinuedrequiredinteger · data.discontinued
allrequiredinteger · data.all
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List upcoming sell-rate starts and ends for a Switch customer
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
subAccountIdrequiredstring (uuid) · data[].subAccountId
customerTrunkIdrequiredstring (uuid) | null · data[].customerTrunkId
prefixrequiredstring · data[].prefix
originPrefixrequiredstring · data[].originPrefix
"" = any originratePerUnitrequiredmoney · data[].ratePerUnit
Sell price per minute, 6-decimal USD string USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data[].billingIncrement
statusrequiredstring · data[].status
active, pending (scheduled) or discontinuedeffectiveFromrequiredstring (date-time) · data[].effectiveFrom
ISO-8601 timestamp (UTC)endDaterequiredstring (date-time) | null · data[].endDate
ISO-8601 timestamp (UTC)kindrequiredstring · data[].kind
One ofstarts,endsatrequiredstring (date-time) | null · data[].at
ISO-8601 timestamp (UTC)
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get a Switch customer rate-change notice period and what is queued
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The notice period you give this customer before a sell-rate increase takes effect, how many sell-rate changes are queued behind it, and who a notice email would go to by default (commercial contacts, then billing contacts, then the portal email; at most 5). Needs the rates.view permission. An unknown customer, or one that is not yours, answers 404.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
rateNoticeDaysrequiredinteger · data.rateNoticeDays
Days of notice before a sell-rate increase takes effect; 0 = nonequeuedrequiredinteger · data.queued
Sell-rate changes queued and not yet in effectincreasesrequiredinteger · data.increases
How many of the queued changes are increasesnextEffectiveFromrequiredstring (date-time) | null · data.nextEffectiveFrom
When the soonest queued change takes effectdefaultRecipientsrequiredstring[] · data.defaultRecipients
Who a notice goes to when you do not name recipients
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 a Switch customer rate-change notice period
PUT/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
With a notice period, a rise on any of this customer's prices (hand edit, bulk paste, sheet import, markup, sell-deck publish or assignment) is queued and takes effect that many days out, at the next 00:00 UTC; decreases and new destinations still apply at once. 0 = every change applies immediately. The new period applies to rises written from now on; changes already queued keep their dates. Needs the rates.publish permission; the change is audited. Send X-If-Unchanged-Since: <updatedAt you loaded> to have the save refused with 409 STALE_WRITE if someone changed the record since.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Request body (application/json)
rateNoticeDaysrequiredinteger
Whole days of notice before an increase takes effect; 0 = none0 to 365
Response 200
datarequiredobject
rateNoticeDaysrequiredinteger · data.rateNoticeDays
0 to 365
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 Switch customer queued sell-rate changes
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Every sell-rate change queued for this customer and not yet in effect, with the rate in force today beside it. Soonest first, then by prefix; at most 50,000 rows. The same rows as the CSV the customer receives.
Parameters
idrequiredpath · string (uuid)
trunkIdquery · string (uuid)
Only this trunk's changes
Response 200
datarequiredobject[]
trunkrequiredstring · data[].trunk
The customer trunk's label ("" when it has none)prefixrequiredstring · data[].prefix
originrequiredstring · data[].origin
Origin prefix for origin-based pricing; "" when the rate applies from any origincurrentRaterequiredmoney | null · data[].currentRate
The rate in force today; null for a new destination USD as a decimal string with exactly 6 places, e.g. "0.012500".newRaterequiredmoney · data[].newRate
USD as a decimal string with exactly 6 places, e.g. "0.012500".changePctrequirednumber | null · data[].changePct
Percentage move, 2 decimals; null for a new destinationcurrentIncrementrequiredstring | null · data[].currentIncrement
newIncrementrequiredstring | null · data[].newIncrement
effectiveFromrequiredstring (date-time) · data[].effectiveFrom
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.
Download a Switch customer queued sell-rate changes as CSV
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The list from GET /switch/customers/{id}/sell-rates/notice/changes as the CSV the customer receives, for you to check or forward.
Parameters
idrequiredpath · string (uuid)
trunkIdquery · string (uuid)
Only this trunk's changes
Response 200 (text/csv)
An attachment named rate-changes-<customer id>.csv. Columns: trunk, prefix, origin, current_rate, new_rate, change_pct, current_increment, new_increment, effective_from_utc. current_rate is empty for a new destination.
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.
Email a Switch customer a rate-change notice
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.
Emails the customer every queued change with its effective date: a table of the first 100 in the message and the full list (up to 5,000 rows) as CSV in the text part. The email is white-label: it is sent under your brand, replies go to your own support address, and it does not mention PacketExchange. Recipients are to when given (up to 10), otherwise the default recipients from GET .../sell-rates/notice. Answers 400 VALIDATION_ERROR when there are no queued changes, when trunkId is not one of this customer's trunks, or when there is no one to send to. A recipient the mail service refused is listed in failed, not raised as an error. Needs the rates.publish permission; the send is audited. Send X-If-Unchanged-Since: <updatedAt you loaded> to have the save refused with 409 STALE_WRITE if someone changed the record since.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Request body (application/json)
trunkIdstring (uuid) | null
Only this trunk's changes; omit for every trunk of the customertostring (email)[]
Recipients; omit to use the default recipientsmessagestring
A note of your own, added under the introductionmax 2000 chars
Response 200
datarequiredobject
sentrequiredstring[] · data.sent
Addresses the notice was accepted forfailedrequiredstring[] · data.failed
Addresses the mail service refusedrowsrequiredinteger · data.rows
Changes in the noticeincreasesrequiredinteger · data.increases
decreasesrequiredinteger · data.decreases
addedrequiredinteger · data.added
New destinations (no rate today)firstEffectiveFromrequiredstring (date-time) · data.firstEffectiveFrom
The earliest effective date in the notice
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Preview discontinuing a Switch customer whole sell deck
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Omit the effective fields to act now. Send either effectiveFrom (an instant with an offset) or effectiveLocal plus timezone; a bare date is refused because midnight differs by country.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Request body (application/json)
effectiveFromstring
An instant with offset, e.g. "2026-10-01T00:00:00Z". A bare date is refused.max 40 charseffectiveLocalstring
A wall-clock time, e.g. "2026-10-01T00:00"; requirestimezonemax 30 charstimezonestring | null
IANA zone, e.g. Europe/London; always recordedmax 64 chars
Response 200
datarequiredobject
customerLabelrequiredstring · data.customerLabel
activeRatesrequiredinteger · data.activeRates
scheduledRatesrequiredinteger · data.scheduledRates
alreadyDiscontinuedrequiredinteger · data.alreadyDiscontinued
endDaterequiredstring (date-time) · data.endDate
ISO-8601 timestamp (UTC)immediaterequiredboolean · data.immediate
timezonerequiredstring | null · data.timezone
effectOnNewCallsrequiredstring · data.effectOnNewCalls
minutes30drequirednumber · data.minutes30d
calls30drequiredinteger · data.calls30d
revenue30drequirednumber · data.revenue30d
US dollars as a JSON number (computed figure)impactTruncatedrequiredboolean · data.impactTruncated
samplerequiredobject[] · data.sample
prefixrequiredstring · data.sample[].prefix
originPrefixrequiredstring · data.sample[].originPrefix
ratePerUnitrequiredmoney · data.sample[].ratePerUnit
USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data.sample[].billingIncrement
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Discontinue a Switch customer whole sell deck
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Closes every rate's period at the effective moment; nothing is deleted and priced calls keep their rate. New calls fall back to your operator deck, then markup over cost. Omit the effective fields to act now. Send either effectiveFrom (an instant with an offset) or effectiveLocal plus timezone; a bare date is refused because midnight differs by country.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Request body (application/json)
effectiveFromstring
An instant with offset, e.g. "2026-10-01T00:00:00Z". A bare date is refused.max 40 charseffectiveLocalstring
A wall-clock time, e.g. "2026-10-01T00:00"; requirestimezonemax 30 charstimezonestring | null
IANA zone, e.g. Europe/London; always recordedmax 64 charsincludeScheduledboolean
Response 200
datarequiredobject
endDaterequiredstring (date-time) · data.endDate
ISO-8601 timestamp (UTC)effectiveany · data.effective
The moment described in words and in the recorded zonerevisionIdstring (uuid) | null · data.revisionId
discontinuedrequiredinteger · data.discontinued
deletedrequiredinteger · data.deleted
Deprecated alias ofdiscontinued; nothing is deletedscheduledLeftrequiredinteger · data.scheduledLeft
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Discontinue one Switch customer sell rate
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Omit the effective fields to act now. Send either effectiveFrom (an instant with an offset) or effectiveLocal plus timezone; a bare date is refused because midnight differs by country.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
rateIdrequiredpath · string (uuid)
Request body (application/json)
effectiveFromstring
An instant with offset, e.g. "2026-10-01T00:00:00Z". A bare date is refused.max 40 charseffectiveLocalstring
A wall-clock time, e.g. "2026-10-01T00:00"; requirestimezonemax 30 charstimezonestring | null
IANA zone, e.g. Europe/London; always recordedmax 64 chars
Response 200
datarequiredobject
endDaterequiredstring (date-time) · data.endDate
ISO-8601 timestamp (UTC)effectiveany · data.effective
The moment described in words and in the recorded zonerevisionIdstring (uuid) | null · data.revisionId
discontinuedrequiredboolean · data.discontinued
One oftruedeletedrequiredboolean · data.deleted
Deprecated alias; the rate is discontinued, not deletedOne oftrueimmediaterequiredboolean · data.immediate
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
List sell-rate discontinuation events for a Switch customer
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject[]
revisionIdrequiredstring (uuid) | null · data[].revisionId
discontinuedAtrequiredstring (date-time) · data[].discontinuedAt
ISO-8601 timestamp (UTC)rowsrequiredinteger · data[].rows
labelrequiredstring · data[].label
effectiveany | null · data[].effective
timezonerequiredstring | null · data[].timezone
changeModerequiredstring | null · data[].changeMode
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Reprice a Switch customer deck as a markup over buy cost
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 (uuid)
Request body (application/json)
markupPctrequirednumber
min -100prefixesstring[]
Only these prefixes; omit for the whole deck
Response 200
datarequiredobject
updatedrequiredinteger · data.updated
skippedrequiredinteger · data.skipped
basisany · data.basis
revisionIdrequiredstring (uuid) | null · data.revisionId
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Export a Switch customer sell rates as CSV
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Takes the same filters as the list, with buy cost and margin columns.
Parameters
idrequiredpath · string (uuid)
searchquery · string
Prefix or destination textviewquery · string
Default currentOne of current, scheduled, discontinued, expiring, alloriginquery · string
One of any, origin_only, destination_onlyincrementquery · string
One of any, custom, inheritedcostquery · string
One of any, missingmarginquery · string
One of any, thin, negative
Response 200 (text/csv)
The filtered sell deck as a CSV attachment.
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Add or replace many Switch customer sell rates
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 (uuid)
Request body (application/json)
rowsrequiredobject[]
prefixrequiredstring · rows[].prefix
max 24 charsraterequirednumber · rows[].rate
min 0originstring · rows[].origin
max 24 charsbillingIncrementstring · rows[].billingIncrement
max 10 chars
Response 200
datarequiredobject
appliedrequiredinteger · data.applied
revisionIdrequiredstring (uuid) | null · data.revisionId
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Discontinue one Switch customer sell rate now
DELETE/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Kept for existing clients: the rate is discontinued immediately, not deleted.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
rateIdrequiredpath · string (uuid)
Response 200
datarequiredobject
endDaterequiredstring (date-time) · data.endDate
ISO-8601 timestamp (UTC)effectiveany · data.effective
The moment described in words and in the recorded zonerevisionIdstring (uuid) | null · data.revisionId
discontinuedrequiredboolean · data.discontinued
One oftruedeletedrequiredboolean · data.deleted
Deprecated alias; the rate is discontinued, not deletedOne oftrueimmediaterequiredboolean · data.immediate
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Discontinue every Switch customer sell rate now
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject
endDaterequiredstring (date-time) · data.endDate
ISO-8601 timestamp (UTC)effectiveany · data.effective
The moment described in words and in the recorded zonerevisionIdstring (uuid) | null · data.revisionId
discontinuedrequiredinteger · data.discontinued
deletedrequiredinteger · data.deleted
Deprecated alias ofdiscontinued; nothing is deletedscheduledLeftrequiredinteger · data.scheduledLeft
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
List scheduled (future-dated) sell rates for a Switch customer
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
idrequiredpath · string (uuid)
Response 200
datarequiredobject[]
Same fields as SwitchCustomerSellRate, shown earlier on this page.
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Schedule a future Switch customer sell-rate change
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
The rate becomes active at the effective moment. Omit the effective fields to act now. Send either effectiveFrom (an instant with an offset) or effectiveLocal plus timezone; a bare date is refused because midnight differs by country.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Parameters
idrequiredpath · string (uuid)
Request body (application/json)
effectiveFromstring
An instant with offset, e.g. "2026-10-01T00:00:00Z". A bare date is refused.max 40 charseffectiveLocalstring
A wall-clock time, e.g. "2026-10-01T00:00"; requirestimezonemax 30 charstimezonestring | null
IANA zone, e.g. Europe/London; always recordedmax 64 charsprefixrequiredstring
max 24 charsraterequirednumber
USD per minutemin 0originstring
max 24 charsbillingIncrementstring
max 10 chars
Response 201
datarequiredobject
Same fields as SwitchCustomerSellRate, shown earlier on this page.
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Cancel a scheduled Switch customer sell rate
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 (uuid)
rateIdrequiredpath · string (uuid)
Response 200
datarequiredobject
cancelledrequiredboolean · data.cancelled
One oftrue
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STALE_WRITE
Set a Switch customer billing cycle and payment terms
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 (uuid)
Request body (application/json)
billingCyclestring | null
One ofweekly,biweekly,monthly,manualpaymentTermsDaysinteger | null
0 to 365
Response 200
datarequiredobject
customerIdrequiredstring (uuid) · data.customerId
billingCyclerequiredstring | null · data.billingCycle
paymentTermsDaysrequiredinteger | null · data.paymentTermsDays
nextInvoiceAtrequiredstring (date-time) | null · data.nextInvoiceAt
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