Switch API reference
Switch: operations
NOC, live calls, issues, fraud, the operations queue and AI control.
32 operationsBase URL https://packetexchange.io/api/v1Postman collection
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
| Name | In | Type | Description |
|---|---|---|---|
hours | query | number | - |
minCalls | query | integer | - |
limit | query | integer | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
hoursrequireddata.hours | number | - |
minCallsrequireddata.minCalls | integer | - |
watchrequireddata.watch | object[] | - |
spoofingSuspectsrequireddata.spoofingSuspects | integer | - |
wouldBlockrequireddata.wouldBlock | object | - |
clisrequireddata.wouldBlock.clis | integer | - |
callsrequireddata.wouldBlock.calls | integer | - |
totalCallsrequireddata.wouldBlock.totalCalls | integer | - |
percentrequireddata.wouldBlock.percent | number | - |
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
| Name | In | Type | Description |
|---|---|---|---|
hours | query | number | - |
minCalls | query | integer | - |
maxDistinct | query | integer | - |
limit | query | integer | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
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
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
fraudEnabledrequireddata.fraudEnabled | boolean | - |
fraudBlockScorerequireddata.fraudBlockScore | integer | Risk score at or above which a call is refused1 to 100 |
fraudAlertScorerequireddata.fraudAlertScore | integer | Risk score at or above which a call is flagged1 to 100 |
highRiskPrefixesrequireddata.highRiskPrefixes | string[] | - |
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)
| Field | Type | Description |
|---|---|---|
fraudEnabled | boolean | - |
fraudBlockScore | integer | Risk score at or above which a call is refused1 to 100 |
fraudAlertScore | integer | Risk score at or above which a call is flagged1 to 100 |
highRiskPrefixes | string[] | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as SwitchFraudSettings, shown earlier on this page. |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
customerLabelrequireddata[].customerLabel | string | 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.
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
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
priorityrequireddata[].priority | string | - |
kindrequireddata[].kind | string | -One of trunk, margin, quality, fraud, rating, deck, credit, setup |
titlerequireddata[].title | string | - |
subjectrequireddata[].subject | string | - |
detailrequireddata[].detail | string | - |
sincerequireddata[].since | string | - |
hrefrequireddata[].href | string | Dashboard path where it can be acted on |
refrequireddata[].ref | string | Issue reference, e.g. OPS-3F9A1C22 |
severityrequireddata[].severity | string | -One of critical, 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
| Name | In | Type | Description |
|---|---|---|---|
customerId | query | string (uuid) | - |
customerTrunkId | query | string (uuid) | - |
trunkId | query | string (uuid) | Supplier trunk |
supplierId | query | string (uuid) | - |
destination | query | string | - |
includeReview | query | string | Include review-severity issues (default true)One of true, false |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
keyrequireddata[].key | string | - |
refrequireddata[].ref | string | Quotable reference, e.g. OPS-3F9A1C22 |
detectorrequireddata[].detector | string | - |
severityrequireddata[].severity | string | -One of critical, warning, review |
actionablerequireddata[].actionable | boolean | - |
statusrequireddata[].status | string | -One of open_unacknowledged, open_acknowledged, resolved |
titlerequireddata[].title | string | - |
summaryrequireddata[].summary | string | - |
reasonrequireddata[].reason | string | - |
triggerrequireddata[].trigger | string | - |
recoveryrequireddata[].recovery | string | - |
objectNamerequireddata[].objectName | string | null | - |
subjectsrequireddata[].subjects | object | The customer, trunks, supplier and destination the issue is about |
evidencerequireddata[].evidence | object[] | - |
labelrequireddata[].evidence[].label | string | - |
valuerequireddata[].evidence[].value | string | - |
firstDetectedAtrequireddata[].firstDetectedAt | string | - |
lastDetectedAtrequireddata[].lastDetectedAt | string | - |
detectionsrequireddata[].detections | integer | - |
acknowledgedAtrequireddata[].acknowledgedAt | string | null | - |
resolvedAtrequireddata[].resolvedAt | string | null | - |
resolvedViarequireddata[].resolvedVia | string | null | -One of operator, recovery, dismissed |
dismissRulerequireddata[].dismissRule | string | null | 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
| Name | In | Type | Description |
|---|---|---|---|
refrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | 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
| Name | In | Type | Description |
|---|---|---|---|
refrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
actionrequireddata[].action | string | - |
fromStatusrequireddata[].fromStatus | string | null | - |
toStatusrequireddata[].toStatus | string | null | - |
noterequireddata[].note | string | null | - |
atrequireddata[].at | string (date-time) | ISO-8601 timestamp (UTC) |
byrequireddata[].by | string | 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
| Name | In | Type | Description |
|---|---|---|---|
refrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
note | string | -max 1000 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
refrequireddata.ref | string | - |
statusrequireddata.status | string | -One of open_unacknowledged, open_acknowledged, resolved |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Name | In | Type | Description |
|---|---|---|---|
refrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
userIdrequired | string (uuid) | null | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
refrequireddata.ref | string | - |
ownerUserIdrequireddata.ownerUserId | string (uuid) | null | - |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Name | In | Type | Description |
|---|---|---|---|
refrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
resolution | string | -max 2000 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
refrequireddata.ref | string | - |
statusrequireddata.status | string | -One of open_unacknowledged, open_acknowledged, resolved |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Name | In | Type | Description |
|---|---|---|---|
refrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
reason | string | -max 500 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
refrequireddata.ref | string | - |
statusrequireddata.status | string | -One of open_unacknowledged, open_acknowledged, resolved |
resolvedViarequireddata.resolvedVia | string | -One of dismissed |
reasonrequireddata.reason | string | null | - |
reopensWhenrequireddata.reopensWhen | string | null | - |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Name | In | Type | Description |
|---|---|---|---|
refrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
note | string | -max 1000 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
refrequireddata.ref | string | - |
statusrequireddata.status | string | -One of open_unacknowledged, open_acknowledged, resolved |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Name | In | Type | Description |
|---|---|---|---|
refrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
minutesrequired | integer | -1 to 20160 |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
refrequireddata.ref | string | - |
snoozedUntilrequireddata.snoozedUntil | string (date-time) | ISO-8601 timestamp (UTC) |
issueStatusrequireddata.issueStatus | string | -One of open_unacknowledged, open_acknowledged, resolved |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
totalrequireddata.total | integer | - |
blockedrequireddata.blocked | integer | - |
flaggedrequireddata.flagged | integer | - |
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
| Field | Type | Description |
|---|---|---|
datarequired | object | 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
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
sampleCallsrequireddata.sampleCalls | integer | - |
baselinerequireddata.baseline | object | null | - |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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)
| Field | Type | Description |
|---|---|---|
subAccountIdrequired | string (uuid) | - |
destinationrequired | string | -max 32 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Risk score, the factors behind it and the action screening would take |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Name | In | Type | Description |
|---|---|---|---|
subAccountId | query | string (uuid) | - |
countryPrefix | query | string | - |
destination | query | string | - |
kind | query | string | -One of voice, sms |
answeredState | query | string | -One of answered, unanswered |
supplierName | query | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Live calls plus the filter vocabulary this surface supports |
populationdata.population | any | - |
supportsrequireddata.supports | string[] | - |
unsupportedrequireddata.unsupported | string[] | - |
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)
| Field | Type | Description |
|---|---|---|
messagerequired | string | -max 4000 chars |
history | any[] | Earlier turns of the conversation |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
replyrequireddata.reply | string | null | - |
actionsdata.actions | object[] | - |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
ownCountrequireddata.ownCount | integer | Entries on your own list |
globalCountrequireddata.globalCount | integer | Entries on the platform-wide list |
bySourcerequireddata.bySource | object | Your entries per source (manual, upload, sms_stop, callguard_optout) |
hitsrequireddata.hits | object | Switch calls that matched, refused or only warned, over 7 and 30 days |
refused7requireddata.hits.refused7 | integer | - |
warned7requireddata.hits.warned7 | integer | - |
refused30requireddata.hits.refused30 | integer | - |
warned30requireddata.hits.warned30 | integer | - |
customersHonoringrequireddata.customersHonoring | integer | - |
trunksHonoringrequireddata.trunksHonoring | integer | Trunks with the setting explicitly on |
moderequireddata.mode | string | The platform setting for Switch calls: off = not checked; warn = matches are recorded but the call proceeds; enforce = matches are refusedOne of off, warn, enforce |
timeoutMsrequireddata.timeoutMs | integer | 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
| Name | In | Type | Description |
|---|---|---|---|
q | query | string | Number prefix to search for |
scope | query | string | -One of all, own, global |
limit | query | integer | - |
offset | query | integer | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
rowsrequireddata.rows | object[] | - |
idrequireddata.rows[].id | string (uuid) | - |
phoneNumberrequireddata.rows[].phoneNumber | string | - |
sourcerequireddata.rows[].source | string | null | - |
createdAtrequireddata.rows[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
scoperequireddata.rows[].scope | string | own = your list; global = the platform-wide listOne of own, global |
reasonrequireddata.rows[].reason | string | null | - |
hasMorerequireddata.hasMore | boolean | - |
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
| Name | In | Type | Description |
|---|---|---|---|
limit | query | integer | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
phoneNumberrequireddata[].phoneNumber | string | - |
listScoperequireddata[].listScope | string | Which list matchedOne of own, global |
outcomerequireddata[].outcome | string | refused = the call was blocked (enforce mode); warned = recorded onlyOne of refused, warned |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
subAccountIdrequireddata[].subAccountId | string (uuid) | null | - |
customerTrunkIdrequireddata[].customerTrunkId | string (uuid) | null | - |
customerrequireddata[].customer | string | null | - |
trunkrequireddata[].trunk | string | 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.
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
| Name | In | Type | Description |
|---|---|---|---|
numberrequired | query | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
inputrequireddata.input | string | What you sent |
numberrequireddata.number | string | null | The number as stored on the list (digits); null when nothing could be read |
validrequireddata.valid | boolean | Whether it reads as a dialable number |
listedrequireddata.listed | boolean | - |
scoperequireddata.scope | string | null | own = your list; global = the platform-wide listOne of own, global |
entryrequireddata.entry | object | null | - |
idrequireddata.entry.id | string (uuid) | - |
sourcerequireddata.entry.source | string | null | - |
createdAtrequireddata.entry.createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
reasonrequireddata.entry.reason | string | 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.
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
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
labelrequireddata[].label | string | - |
statusrequireddata[].status | string | - |
honorDncrequireddata[].honorDnc | boolean | - |
trunksrequireddata[].trunks | object[] | - |
idrequireddata[].trunks[].id | string (uuid) | - |
labelrequireddata[].trunks[].label | string | - |
statusrequireddata[].trunks[].status | string | - |
honorDncrequireddata[].trunks[].honorDnc | boolean | null | - |
effectiverequireddata[].trunks[].effective | boolean | - |
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
| Name | In | Type | Description |
|---|---|---|---|
subAccountId | query | string (uuid) | - |
customerTrunkId | query | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
scoperequireddata.scope | string | -One of customer, trunk |
idrequireddata.id | string (uuid) | - |
labelrequireddata.label | string | - |
valuerequireddata.value | boolean | null | The setting itself; null on a trunk means it inherits from its customer |
inheritedrequireddata.inherited | boolean | null | - |
customerLabelrequireddata.customerLabel | string | null | - |
effectiverequireddata.effective | boolean | Whether calls are actually checked against Do Not Call |
decidedByrequireddata.decidedBy | string | Which level decided effectiveOne of customer, trunk |
moderequireddata.mode | string | The platform setting for Switch calls: off = not checked; warn = matches are recorded but the call proceeds; enforce = matches are refusedOne of off, warn, enforce |
trunkOverridesdata.trunkOverrides | object | Customer only: trunks that set their own value instead of inheriting |
onrequireddata.trunkOverrides.on | integer | - |
offrequireddata.trunkOverrides.off | integer | - |
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)
| Field | Type | Description |
|---|---|---|
subAccountId | string (uuid) | - |
customerTrunkId | string (uuid) | - |
honorrequired | boolean | null | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as SwitchDncHonorSetting, shown earlier on this page. |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Name | In | Type | Description |
|---|---|---|---|
format | query | string | -One of csv, json |
Request body (multipart/form-data)
| Field | Type | Description |
|---|---|---|
filerequired | string | CSV or text file of numbers (max 16 MB) |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | null | Download id, valid for one hour; null when the copy could not be stored (the counts are still correct: run again with ?format=csv) |
filenamerequireddata.filename | string | - |
countsrequireddata.counts | object | - |
rowsrequireddata.counts.rows | integer | - |
cleanrequireddata.counts.clean | integer | - |
removedOwnrequireddata.counts.removedOwn | integer | - |
removedGlobalrequireddata.counts.removedGlobal | integer | - |
invalidrequireddata.counts.invalid | integer | - |
hadHeaderrequireddata.counts.hadHeader | boolean | - |
invalidSamplesrequireddata.invalidSamples | string[] | Up to 10 unreadable rows (first 80 characters each) |
msrequireddata.ms | integer | Processing time in milliseconds |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | 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)
| Field | Type | Description |
|---|---|---|
filerequired | string | CSV or text file of numbers (max 16 MB) |
reason | string | -max 500 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
rowsrequireddata.rows | integer | Number rows read (a header row is not counted) |
addedrequireddata.added | integer | - |
skippedrequireddata.skipped | integer | Valid numbers already listed, or repeated within the file |
invalidrequireddata.invalid | integer | Rows that could not be read as a number |
Response 202
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
approvalRequireddata.approvalRequired | boolean | -One of true |
approvalRequestIddata.approvalRequestId | string (uuid) | null | - |
permissiondata.permission | string | - |
expiresAtdata.expiresAt | string (date-time) | - |
messagedata.message | string | - |
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.