Switch API reference
Switch: operations
NOC, live calls, issues, fraud, the operations queue and AI control.
BrowseSwitch: operations
See which caller IDs are presented, and by whom
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Observe only: nothing here blocks traffic. wouldBlock states how much real traffic a "same caller ID N times" rule would refuse before anyone enables one.
Parameters
hoursquery · number
minCallsquery · integer
limitquery · integer
Response 200
datarequiredobject
hoursrequirednumber · data.hours
minCallsrequiredinteger · data.minCalls
watchrequiredobject[] · data.watch
spoofingSuspectsrequiredinteger · data.spoofingSuspects
wouldBlockrequiredobject · data.wouldBlock
clisrequiredinteger · data.wouldBlock.clis
callsrequiredinteger · data.wouldBlock.calls
totalCallsrequiredinteger · data.wouldBlock.totalCalls
percentrequirednumber · data.wouldBlock.percent
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.
See which senders rotate through many caller IDs
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Observe only. Per sender, how many distinct caller IDs were presented in the window.
Parameters
hoursquery · number
minCallsquery · integer
maxDistinctquery · integer
limitquery · integer
Response 200
datarequiredobject
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.
Get fraud screening settings
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Response 200
datarequiredobject
fraudEnabledrequiredboolean · data.fraudEnabled
fraudBlockScorerequiredinteger · data.fraudBlockScore
Risk score at or above which a call is refused1 to 100fraudAlertScorerequiredinteger · data.fraudAlertScore
Risk score at or above which a call is flagged1 to 100highRiskPrefixesrequiredstring[] · data.highRiskPrefixes
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Update fraud screening settings
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Request body (application/json)
fraudEnabledboolean
fraudBlockScoreinteger
Risk score at or above which a call is refused1 to 100fraudAlertScoreinteger
Risk score at or above which a call is flagged1 to 100highRiskPrefixesstring[]
Response 200
datarequiredobject
Same fields as SwitchFraudSettings, shown earlier on this page.
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List fraud screening events
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Calls that were flagged or blocked by fraud screening, newest first.
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
createdAtrequiredstring (date-time) · data[].createdAt
ISO-8601 timestamp (UTC)customerLabelrequiredstring | null · data[].customerLabel
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.
List what needs attention first on the switch
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Derived on every request from live trunk state, 24-hour margin and post-dial delay, rating and deck provenance. Each item carries the same issue reference used everywhere else.
Response 200
datarequiredobject[]
priorityrequiredstring · data[].priority
kindrequiredstring · data[].kind
One oftrunk,margin,quality,fraud,rating,deck,credit,setuptitlerequiredstring · data[].title
subjectrequiredstring · data[].subject
detailrequiredstring · data[].detail
sincerequiredstring · data[].since
hrefrequiredstring · data[].href
Dashboard path where it can be acted onrefrequiredstring · data[].ref
Issue reference, e.g. OPS-3F9A1C22severityrequiredstring · data[].severity
One ofcritical,warning,review
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.
List operational issues
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Every warning the product shows comes from this list. Team members see only issues within their customer and trunk scope. Nothing here changes routing, admission or rating: issue actions only change what people see and who owns it.
Parameters
customerIdquery · string (uuid)
customerTrunkIdquery · string (uuid)
trunkIdquery · string (uuid)
Supplier trunksupplierIdquery · string (uuid)
destinationquery · string
includeReviewquery · string
Include review-severity issues (default true)One of true, false
Response 200
datarequiredobject[]
keyrequiredstring · data[].key
refrequiredstring · data[].ref
Quotable reference, e.g. OPS-3F9A1C22detectorrequiredstring · data[].detector
severityrequiredstring · data[].severity
One ofcritical,warning,reviewactionablerequiredboolean · data[].actionable
statusrequiredstring · data[].status
One ofopen_unacknowledged,open_acknowledged,resolvedtitlerequiredstring · data[].title
summaryrequiredstring · data[].summary
reasonrequiredstring · data[].reason
triggerrequiredstring · data[].trigger
recoveryrequiredstring · data[].recovery
objectNamerequiredstring | null · data[].objectName
subjectsrequiredobject · data[].subjects
The customer, trunks, supplier and destination the issue is aboutevidencerequiredobject[] · data[].evidence
labelrequiredstring · data[].evidence[].label
valuerequiredstring · data[].evidence[].value
firstDetectedAtrequiredstring · data[].firstDetectedAt
lastDetectedAtrequiredstring · data[].lastDetectedAt
detectionsrequiredinteger · data[].detections
acknowledgedAtrequiredstring | null · data[].acknowledgedAt
resolvedAtrequiredstring | null · data[].resolvedAt
resolvedViarequiredstring | null · data[].resolvedVia
One ofoperator,recovery,dismisseddismissRulerequiredstring | null · data[].dismissRule
What would reopen the issue if it were dismissed
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.
Get an operational issue by reference
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
refrequiredpath · string
Response 200
datarequiredobject
Same fields as SwitchIssue, 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.
Get the history of an operational issue
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Parameters
refrequiredpath · string
Response 200
datarequiredobject[]
actionrequiredstring · data[].action
fromStatusrequiredstring | null · data[].fromStatus
toStatusrequiredstring | null · data[].toStatus
noterequiredstring | null · data[].note
atrequiredstring (date-time) · data[].at
ISO-8601 timestamp (UTC)byrequiredstring · data[].by
Who acted, or "the platform" for automatic changes
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.
Acknowledge an operational issue
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
refrequiredpath · string
Request body (application/json)
notestring
max 1000 chars
Response 200
datarequiredobject
refrequiredstring · data.ref
statusrequiredstring · data.status
One ofopen_unacknowledged,open_acknowledged,resolved
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.
Assign an operational issue to a team member
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Pass userId: null to unassign.
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
refrequiredpath · string
Request body (application/json)
userIdrequiredstring (uuid) | null
Response 200
datarequiredobject
refrequiredstring · data.ref
ownerUserIdrequiredstring (uuid) | null · data.ownerUserId
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.
Resolve an operational issue
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
refrequiredpath · string
Request body (application/json)
resolutionstring
max 2000 chars
Response 200
datarequiredobject
refrequiredstring · data.ref
statusrequiredstring · data.status
One ofopen_unacknowledged,open_acknowledged,resolved
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.
Dismiss an operational issue
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Closes it as dismissed. It reopens automatically if the condition in reopensWhen occurs.
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
refrequiredpath · string
Request body (application/json)
reasonstring
max 500 chars
Response 200
datarequiredobject
refrequiredstring · data.ref
statusrequiredstring · data.status
One ofopen_unacknowledged,open_acknowledged,resolvedresolvedViarequiredstring · data.resolvedVia
One ofdismissedreasonrequiredstring | null · data.reason
reopensWhenrequiredstring | null · data.reopensWhen
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.
Reopen a resolved or dismissed operational issue
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
refrequiredpath · string
Request body (application/json)
notestring
max 1000 chars
Response 200
datarequiredobject
refrequiredstring · data.ref
statusrequiredstring · data.status
One ofopen_unacknowledged,open_acknowledged,resolved
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.
Snooze notifications for an operational issue
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Mutes notifications only; the issue stays open and visible. Up to 14 days.
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
refrequiredpath · string
Request body (application/json)
minutesrequiredinteger
1 to 20160
Response 200
datarequiredobject
refrequiredstring · data.ref
snoozedUntilrequiredstring (date-time) · data.snoozedUntil
ISO-8601 timestamp (UTC)issueStatusrequiredstring · data.issueStatus
One ofopen_unacknowledged,open_acknowledged,resolved
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.
Count fraud screening events
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Response 200
datarequiredobject
totalrequiredinteger · data.total
blockedrequiredinteger · data.blocked
flaggedrequiredinteger · data.flagged
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.
Get the learned traffic baseline used for risk scoring
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Response 200
datarequiredobject | null
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.
Retrain the traffic baseline from recent calls
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.
Response 200
datarequiredobject
sampleCallsrequiredinteger · data.sampleCalls
baselinerequiredobject | null · data.baseline
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.
Score the risk of a call without placing it
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Dry run of the risk assessment for a customer calling a destination. An unknown customer answers 404 NOT_FOUND.
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)
subAccountIdrequiredstring (uuid)
destinationrequiredstring
max 32 chars
Response 200
datarequiredobject
Risk score, the factors behind it and the action screening would take
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.
List calls in progress
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Calls up now, from the live monitor. Filters narrow the list; unsupported names any requested filter this surface cannot apply.
Parameters
subAccountIdquery · string (uuid)
countryPrefixquery · string
destinationquery · string
kindquery · string
One of voice, smsansweredStatequery · string
One of answered, unansweredsupplierNamequery · string
Response 200
datarequiredobject
Live calls plus the filter vocabulary this surface supportspopulationany · data.population
supportsrequiredstring[] · data.supports
unsupportedrequiredstring[] · data.unsupported
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.
Ask AI Control a question about your switch
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Natural-language questions and requests about your traffic, answered from your own switch data within your team permissions. Returns a reply and any actions it proposes or took. Nothing changes unless your role allows it.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Request body (application/json)
messagerequiredstring
max 4000 charshistoryany[]
Earlier turns of the conversation
Response 200
datarequiredobject
replyrequiredstring | null · data.reply
actionsobject[] · data.actions
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. - Also
AI_UNAVAILABLE
Get Do Not Call list sizes and recent hits
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Do Not Call on the Switch uses ONE list: the same entries as the Dialer's suppression list (/dnc), plus the platform-wide list. A call from a customer or trunk with "Honor Do Not Call" on is checked against both. This returns the list sizes, your entries by source, the Switch calls that matched in the last 7 and 30 days, how many customers and trunks honour the list, and the platform mode.
Response 200
datarequiredobject
ownCountrequiredinteger · data.ownCount
Entries on your own listglobalCountrequiredinteger · data.globalCount
Entries on the platform-wide listbySourcerequiredobject · data.bySource
Your entries per source (manual, upload, sms_stop, callguard_optout)hitsrequiredobject · data.hits
Switch calls that matched, refused or only warned, over 7 and 30 daysrefused7requiredinteger · data.hits.refused7
warned7requiredinteger · data.hits.warned7
refused30requiredinteger · data.hits.refused30
warned30requiredinteger · data.hits.warned30
customersHonoringrequiredinteger · data.customersHonoring
trunksHonoringrequiredinteger · data.trunksHonoring
Trunks with the setting explicitly onmoderequiredstring · data.mode
The platform setting for Switch calls: off = not checked; warn = matches are recorded but the call proceeds; enforce = matches are refusedOne ofoff,warn,enforcetimeoutMsrequiredinteger · data.timeoutMs
The lookup time budget per call; a slower lookup lets the call through
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.
List Do Not Call entries
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Your own list and the platform-wide list. Reasons are shown only for your own entries.
Parameters
qquery · string
Number prefix to search forscopequery · string
One of all, own, globallimitquery · integer
offsetquery · integer
Response 200
datarequiredobject
rowsrequiredobject[] · data.rows
idrequiredstring (uuid) · data.rows[].id
phoneNumberrequiredstring · data.rows[].phoneNumber
sourcerequiredstring | null · data.rows[].source
createdAtrequiredstring (date-time) · data.rows[].createdAt
ISO-8601 timestamp (UTC)scoperequiredstring · data.rows[].scope
own = your list; global = the platform-wide listOne ofown,globalreasonrequiredstring | null · data.rows[].reason
hasMorerequiredboolean · data.hasMore
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.
List calls refused or warned by Do Not Call
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Your customers' Switch calls whose number matched a Do Not Call list, newest first (default 50, max 200).
Parameters
limitquery · integer
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
phoneNumberrequiredstring · data[].phoneNumber
listScoperequiredstring · data[].listScope
Which list matchedOne ofown,globaloutcomerequiredstring · data[].outcome
refused = the call was blocked (enforce mode); warned = recorded onlyOne ofrefused,warnedcreatedAtrequiredstring (date-time) · data[].createdAt
ISO-8601 timestamp (UTC)subAccountIdrequiredstring (uuid) | null · data[].subAccountId
customerTrunkIdrequiredstring (uuid) | null · data[].customerTrunkId
customerrequiredstring | null · data[].customer
trunkrequiredstring | null · data[].trunk
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.
Check whether a number is on a Do Not Call list
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Checks one number against your list and the platform list. When it is on both, your own entry is returned. The platform list never shows its reason.
Parameters
numberrequiredquery · string
Response 200
datarequiredobject
inputrequiredstring · data.input
What you sentnumberrequiredstring | null · data.number
The number as stored on the list (digits); null when nothing could be readvalidrequiredboolean · data.valid
Whether it reads as a dialable numberlistedrequiredboolean · data.listed
scoperequiredstring | null · data.scope
own = your list; global = the platform-wide listOne ofown,globalentryrequiredobject | null · data.entry
idrequiredstring (uuid) · data.entry.id
sourcerequiredstring | null · data.entry.source
createdAtrequiredstring (date-time) · data.entry.createdAt
ISO-8601 timestamp (UTC)reasonrequiredstring | null · data.entry.reason
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.
List which customers and trunks honour Do Not Call
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Every customer's setting with each trunk's own value (null = inherits from the customer) and the effective result.
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
labelrequiredstring · data[].label
statusrequiredstring · data[].status
honorDncrequiredboolean · data[].honorDnc
trunksrequiredobject[] · data[].trunks
idrequiredstring (uuid) · data[].trunks[].id
labelrequiredstring · data[].trunks[].label
statusrequiredstring · data[].trunks[].status
honorDncrequiredboolean | null · data[].trunks[].honorDnc
effectiverequiredboolean · data[].trunks[].effective
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.
Get the Do Not Call setting of a customer or trunk
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Name subAccountId or customerTrunkId. A customer or trunk that is not yours answers 404.
Parameters
subAccountIdquery · string (uuid)
customerTrunkIdquery · string (uuid)
Response 200
datarequiredobject
scoperequiredstring · data.scope
One ofcustomer,trunkidrequiredstring (uuid) · data.id
labelrequiredstring · data.label
valuerequiredboolean | null · data.value
The setting itself; null on a trunk means it inherits from its customerinheritedrequiredboolean | null · data.inherited
customerLabelrequiredstring | null · data.customerLabel
effectiverequiredboolean · data.effective
Whether calls are actually checked against Do Not CalldecidedByrequiredstring · data.decidedBy
Which level decidedeffectiveOne ofcustomer,trunkmoderequiredstring · data.mode
The platform setting for Switch calls: off = not checked; warn = matches are recorded but the call proceeds; enforce = matches are refusedOne ofoff,warn,enforcetrunkOverridesobject · data.trunkOverrides
Customer only: trunks that set their own value instead of inheritingonrequiredinteger · data.trunkOverrides.on
offrequiredinteger · data.trunkOverrides.off
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Turn Do Not Call on or off for a customer or trunk
PATCH/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Name exactly one of subAccountId or customerTrunkId. A trunk can pass honor: null to inherit from its customer; a customer is either on or off. Takes effect on the next call and is audited with the before and after values.
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)
subAccountIdstring (uuid)
customerTrunkIdstring (uuid)
honorrequiredboolean | null
Response 200
datarequiredobject
Same fields as SwitchDncHonorSetting, shown earlier on this page.
Response 202
datarequiredobject
approvalRequiredboolean · data.approvalRequired
One oftrueapprovalRequestIdstring (uuid) | null · data.approvalRequestId
permissionstring · data.permission
expiresAtstring (date-time) · data.expiresAt
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 402
SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Remove Do Not Call numbers from an uploaded list
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 10 requests per minute
Upload a CSV or text file (multipart, field file, up to 500,000 rows and 16 MB). Rows whose number is on your list or the platform list are removed; every other row, including a header, comes back unchanged. With ?format=csv the cleaned file is returned directly (counts in the X-Dnc-Rows, X-Dnc-Clean, X-Dnc-Removed-Own, X-Dnc-Removed-Global and X-Dnc-Invalid headers); otherwise the counts are returned and the file can be fetched from GET /switch/dnc/scrub/{id} for one hour. Rows that cannot be read as a number are kept and counted as invalid.
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
formatquery · string
One of csv, json
Request body (multipart/form-data)
filerequiredstring
CSV or text file of numbers (max 16 MB)
Response 200
datarequiredobject
idrequiredstring (uuid) | null · data.id
Download id, valid for one hour; null when the copy could not be stored (the counts are still correct: run again with ?format=csv)filenamerequiredstring · data.filename
countsrequiredobject · data.counts
rowsrequiredinteger · data.counts.rows
cleanrequiredinteger · data.counts.clean
removedOwnrequiredinteger · data.counts.removedOwn
removedGlobalrequiredinteger · data.counts.removedGlobal
invalidrequiredinteger · data.counts.invalid
hadHeaderrequiredboolean · data.counts.hadHeader
invalidSamplesrequiredstring[] · data.invalidSamples
Up to 10 unreadable rows (first 80 characters each)msrequiredinteger · data.ms
Processing time in milliseconds
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.
Download a scrubbed file
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Scrub results are kept for one hour; after that (or for an id that is not yours) the answer is 404 and the scrub must be run again.
Parameters
idrequiredpath · string (uuid)
Response 200 (text/csv)
The cleaned CSV, as an 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 numbers to your Do Not Call list from a file
POST/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 10 requests per minute
Multipart upload: field file (CSV or text of numbers, up to 500,000 rows and 16 MB) and an optional reason, which must come BEFORE the file part. The number column is found from the first line (a phone-like header, else the first column). Numbers already listed are skipped. Audited.
Test keys: refused with 403 TEST_KEY_NOT_ALLOWED. The Switch has no test mode, so a change always applies to your live configuration. Test keys can still read Switch data.
Request body (multipart/form-data)
filerequiredstring
CSV or text file of numbers (max 16 MB)reasonstring
max 500 chars
Response 200
datarequiredobject
rowsrequiredinteger · data.rows
Number rows read (a header row is not counted)addedrequiredinteger · data.added
skippedrequiredinteger · data.skipped
Valid numbers already listed, or repeated within the fileinvalidrequiredinteger · data.invalid
Rows that could not be read as a number
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.
Download your Do Not Call list as CSV
GET/
- Access
- API key. Scoped keys need
switch:manage. - Rate limit
- 100 requests per second (the default)
Response 200 (text/csv)
Your own Do Not Call list, as an attachment named do-not-call-<date>.csv. Columns: phone_number, source, reason, added_at.
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.