Skip to content
Markets open

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/api/v1/switch/fraud/cli-watch

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

NameInTypeDescription
hoursquerynumber-
minCallsqueryinteger-
limitqueryinteger-

Response 200

FieldTypeDescription
datarequiredobject-
hoursrequireddata.hoursnumber-
minCallsrequireddata.minCallsinteger-
watchrequireddata.watchobject[]-
spoofingSuspectsrequireddata.spoofingSuspectsinteger-
wouldBlockrequireddata.wouldBlockobject-
clisrequireddata.wouldBlock.clisinteger-
callsrequireddata.wouldBlock.callsinteger-
totalCallsrequireddata.wouldBlock.totalCallsinteger-
percentrequireddata.wouldBlock.percentnumber-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

See which senders rotate through many caller IDs

GET/api/v1/switch/fraud/ani-watch

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

NameInTypeDescription
hoursquerynumber-
minCallsqueryinteger-
maxDistinctqueryinteger-
limitqueryinteger-

Response 200

FieldTypeDescription
datarequiredobject-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get fraud screening settings

GET/api/v1/switch/fraud/settings

Access
API key. Scoped keys need switch:manage.
Rate limit
100 requests per second (the default)

Response 200

FieldTypeDescription
datarequiredobject-
fraudEnabledrequireddata.fraudEnabledboolean-
fraudBlockScorerequireddata.fraudBlockScoreintegerRisk score at or above which a call is refused1 to 100
fraudAlertScorerequireddata.fraudAlertScoreintegerRisk score at or above which a call is flagged1 to 100
highRiskPrefixesrequireddata.highRiskPrefixesstring[]-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Update fraud screening settings

POST/api/v1/switch/fraud/settings

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)

FieldTypeDescription
fraudEnabledboolean-
fraudBlockScoreintegerRisk score at or above which a call is refused1 to 100
fraudAlertScoreintegerRisk score at or above which a call is flagged1 to 100
highRiskPrefixesstring[]-

Response 200

FieldTypeDescription
datarequiredobjectSame fields as SwitchFraudSettings, shown earlier on this page.

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

List fraud screening events

GET/api/v1/switch/fraud/events

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

FieldTypeDescription
datarequiredobject[]-
idrequireddata[].idstring (uuid)-
createdAtrequireddata[].createdAtstring (date-time)ISO-8601 timestamp (UTC)
customerLabelrequireddata[].customerLabelstring | null-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

List what needs attention first on the switch

GET/api/v1/switch/operations-queue

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

FieldTypeDescription
datarequiredobject[]-
priorityrequireddata[].prioritystring-
kindrequireddata[].kindstring-One of trunk, margin, quality, fraud, rating, deck, credit, setup
titlerequireddata[].titlestring-
subjectrequireddata[].subjectstring-
detailrequireddata[].detailstring-
sincerequireddata[].sincestring-
hrefrequireddata[].hrefstringDashboard path where it can be acted on
refrequireddata[].refstringIssue reference, e.g. OPS-3F9A1C22
severityrequireddata[].severitystring-One of critical, warning, review

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

List operational issues

GET/api/v1/switch/issues

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

NameInTypeDescription
customerIdquerystring (uuid)-
customerTrunkIdquerystring (uuid)-
trunkIdquerystring (uuid)Supplier trunk
supplierIdquerystring (uuid)-
destinationquerystring-
includeReviewquerystringInclude review-severity issues (default true)One of true, false

Response 200

FieldTypeDescription
datarequiredobject[]-
keyrequireddata[].keystring-
refrequireddata[].refstringQuotable reference, e.g. OPS-3F9A1C22
detectorrequireddata[].detectorstring-
severityrequireddata[].severitystring-One of critical, warning, review
actionablerequireddata[].actionableboolean-
statusrequireddata[].statusstring-One of open_unacknowledged, open_acknowledged, resolved
titlerequireddata[].titlestring-
summaryrequireddata[].summarystring-
reasonrequireddata[].reasonstring-
triggerrequireddata[].triggerstring-
recoveryrequireddata[].recoverystring-
objectNamerequireddata[].objectNamestring | null-
subjectsrequireddata[].subjectsobjectThe customer, trunks, supplier and destination the issue is about
evidencerequireddata[].evidenceobject[]-
labelrequireddata[].evidence[].labelstring-
valuerequireddata[].evidence[].valuestring-
firstDetectedAtrequireddata[].firstDetectedAtstring-
lastDetectedAtrequireddata[].lastDetectedAtstring-
detectionsrequireddata[].detectionsinteger-
acknowledgedAtrequireddata[].acknowledgedAtstring | null-
resolvedAtrequireddata[].resolvedAtstring | null-
resolvedViarequireddata[].resolvedViastring | null-One of operator, recovery, dismissed
dismissRulerequireddata[].dismissRulestring | nullWhat would reopen the issue if it were dismissed

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get an operational issue by reference

GET/api/v1/switch/issues/{ref}

Access
API key. Scoped keys need switch:manage.
Rate limit
100 requests per second (the default)

Parameters

NameInTypeDescription
refrequiredpathstring-

Response 200

FieldTypeDescription
datarequiredobjectSame fields as SwitchIssue, shown earlier on this page.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get the history of an operational issue

GET/api/v1/switch/issues/{ref}/timeline

Access
API key. Scoped keys need switch:manage.
Rate limit
100 requests per second (the default)

Parameters

NameInTypeDescription
refrequiredpathstring-

Response 200

FieldTypeDescription
datarequiredobject[]-
actionrequireddata[].actionstring-
fromStatusrequireddata[].fromStatusstring | null-
toStatusrequireddata[].toStatusstring | null-
noterequireddata[].notestring | null-
atrequireddata[].atstring (date-time)ISO-8601 timestamp (UTC)
byrequireddata[].bystringWho acted, or "the platform" for automatic changes

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Acknowledge an operational issue

POST/api/v1/switch/issues/{ref}/acknowledge

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

NameInTypeDescription
refrequiredpathstring-

Request body (application/json)

FieldTypeDescription
notestring-max 1000 chars

Response 200

FieldTypeDescription
datarequiredobject-
refrequireddata.refstring-
statusrequireddata.statusstring-One of open_unacknowledged, open_acknowledged, resolved

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Assign an operational issue to a team member

POST/api/v1/switch/issues/{ref}/assign

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

NameInTypeDescription
refrequiredpathstring-

Request body (application/json)

FieldTypeDescription
userIdrequiredstring (uuid) | null-

Response 200

FieldTypeDescription
datarequiredobject-
refrequireddata.refstring-
ownerUserIdrequireddata.ownerUserIdstring (uuid) | null-

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Resolve an operational issue

POST/api/v1/switch/issues/{ref}/resolve

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

NameInTypeDescription
refrequiredpathstring-

Request body (application/json)

FieldTypeDescription
resolutionstring-max 2000 chars

Response 200

FieldTypeDescription
datarequiredobject-
refrequireddata.refstring-
statusrequireddata.statusstring-One of open_unacknowledged, open_acknowledged, resolved

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Dismiss an operational issue

POST/api/v1/switch/issues/{ref}/dismiss

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

NameInTypeDescription
refrequiredpathstring-

Request body (application/json)

FieldTypeDescription
reasonstring-max 500 chars

Response 200

FieldTypeDescription
datarequiredobject-
refrequireddata.refstring-
statusrequireddata.statusstring-One of open_unacknowledged, open_acknowledged, resolved
resolvedViarequireddata.resolvedViastring-One of dismissed
reasonrequireddata.reasonstring | null-
reopensWhenrequireddata.reopensWhenstring | null-

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Reopen a resolved or dismissed operational issue

POST/api/v1/switch/issues/{ref}/reopen

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

NameInTypeDescription
refrequiredpathstring-

Request body (application/json)

FieldTypeDescription
notestring-max 1000 chars

Response 200

FieldTypeDescription
datarequiredobject-
refrequireddata.refstring-
statusrequireddata.statusstring-One of open_unacknowledged, open_acknowledged, resolved

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Snooze notifications for an operational issue

POST/api/v1/switch/issues/{ref}/snooze

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

NameInTypeDescription
refrequiredpathstring-

Request body (application/json)

FieldTypeDescription
minutesrequiredinteger-1 to 20160

Response 200

FieldTypeDescription
datarequiredobject-
refrequireddata.refstring-
snoozedUntilrequireddata.snoozedUntilstring (date-time)ISO-8601 timestamp (UTC)
issueStatusrequireddata.issueStatusstring-One of open_unacknowledged, open_acknowledged, resolved

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Count fraud screening events

GET/api/v1/switch/fraud/summary

Access
API key. Scoped keys need switch:manage.
Rate limit
100 requests per second (the default)

Response 200

FieldTypeDescription
datarequiredobject-
totalrequireddata.totalinteger-
blockedrequireddata.blockedinteger-
flaggedrequireddata.flaggedinteger-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get the learned traffic baseline used for risk scoring

GET/api/v1/switch/fraud/baseline

Access
API key. Scoped keys need switch:manage.
Rate limit
100 requests per second (the default)

Response 200

FieldTypeDescription
datarequiredobject | null-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Retrain the traffic baseline from recent calls

POST/api/v1/switch/fraud/retrain

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

FieldTypeDescription
datarequiredobject-
sampleCallsrequireddata.sampleCallsinteger-
baselinerequireddata.baselineobject | null-

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Score the risk of a call without placing it

POST/api/v1/switch/fraud/score

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)

FieldTypeDescription
subAccountIdrequiredstring (uuid)-
destinationrequiredstring-max 32 chars

Response 200

FieldTypeDescription
datarequiredobjectRisk score, the factors behind it and the action screening would take

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

List calls in progress

GET/api/v1/switch/live

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

NameInTypeDescription
subAccountIdquerystring (uuid)-
countryPrefixquerystring-
destinationquerystring-
kindquerystring-One of voice, sms
answeredStatequerystring-One of answered, unanswered
supplierNamequerystring-

Response 200

FieldTypeDescription
datarequiredobjectLive calls plus the filter vocabulary this surface supports
populationdata.populationany-
supportsrequireddata.supportsstring[]-
unsupportedrequireddata.unsupportedstring[]-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Ask AI Control a question about your switch

POST/api/v1/switch/noc/ask

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)

FieldTypeDescription
messagerequiredstring-max 4000 chars
historyany[]Earlier turns of the conversation

Response 200

FieldTypeDescription
datarequiredobject-
replyrequireddata.replystring | null-
actionsdata.actionsobject[]-

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.
  • AlsoAI_UNAVAILABLE

Get Do Not Call list sizes and recent hits

GET/api/v1/switch/dnc/summary

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

FieldTypeDescription
datarequiredobject-
ownCountrequireddata.ownCountintegerEntries on your own list
globalCountrequireddata.globalCountintegerEntries on the platform-wide list
bySourcerequireddata.bySourceobjectYour entries per source (manual, upload, sms_stop, callguard_optout)
hitsrequireddata.hitsobjectSwitch calls that matched, refused or only warned, over 7 and 30 days
refused7requireddata.hits.refused7integer-
warned7requireddata.hits.warned7integer-
refused30requireddata.hits.refused30integer-
warned30requireddata.hits.warned30integer-
customersHonoringrequireddata.customersHonoringinteger-
trunksHonoringrequireddata.trunksHonoringintegerTrunks with the setting explicitly on
moderequireddata.modestringThe 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.timeoutMsintegerThe lookup time budget per call; a slower lookup lets the call through

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

List Do Not Call entries

GET/api/v1/switch/dnc/entries

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

NameInTypeDescription
qquerystringNumber prefix to search for
scopequerystring-One of all, own, global
limitqueryinteger-
offsetqueryinteger-

Response 200

FieldTypeDescription
datarequiredobject-
rowsrequireddata.rowsobject[]-
idrequireddata.rows[].idstring (uuid)-
phoneNumberrequireddata.rows[].phoneNumberstring-
sourcerequireddata.rows[].sourcestring | null-
createdAtrequireddata.rows[].createdAtstring (date-time)ISO-8601 timestamp (UTC)
scoperequireddata.rows[].scopestringown = your list; global = the platform-wide listOne of own, global
reasonrequireddata.rows[].reasonstring | null-
hasMorerequireddata.hasMoreboolean-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

List calls refused or warned by Do Not Call

GET/api/v1/switch/dnc/hits

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

NameInTypeDescription
limitqueryinteger-

Response 200

FieldTypeDescription
datarequiredobject[]-
idrequireddata[].idstring (uuid)-
phoneNumberrequireddata[].phoneNumberstring-
listScoperequireddata[].listScopestringWhich list matchedOne of own, global
outcomerequireddata[].outcomestringrefused = the call was blocked (enforce mode); warned = recorded onlyOne of refused, warned
createdAtrequireddata[].createdAtstring (date-time)ISO-8601 timestamp (UTC)
subAccountIdrequireddata[].subAccountIdstring (uuid) | null-
customerTrunkIdrequireddata[].customerTrunkIdstring (uuid) | null-
customerrequireddata[].customerstring | null-
trunkrequireddata[].trunkstring | null-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Check whether a number is on a Do Not Call list

GET/api/v1/switch/dnc/check

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

NameInTypeDescription
numberrequiredquerystring-

Response 200

FieldTypeDescription
datarequiredobject-
inputrequireddata.inputstringWhat you sent
numberrequireddata.numberstring | nullThe number as stored on the list (digits); null when nothing could be read
validrequireddata.validbooleanWhether it reads as a dialable number
listedrequireddata.listedboolean-
scoperequireddata.scopestring | nullown = your list; global = the platform-wide listOne of own, global
entryrequireddata.entryobject | null-
idrequireddata.entry.idstring (uuid)-
sourcerequireddata.entry.sourcestring | null-
createdAtrequireddata.entry.createdAtstring (date-time)ISO-8601 timestamp (UTC)
reasonrequireddata.entry.reasonstring | null-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

List which customers and trunks honour Do Not Call

GET/api/v1/switch/dnc/customers

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

FieldTypeDescription
datarequiredobject[]-
idrequireddata[].idstring (uuid)-
labelrequireddata[].labelstring-
statusrequireddata[].statusstring-
honorDncrequireddata[].honorDncboolean-
trunksrequireddata[].trunksobject[]-
idrequireddata[].trunks[].idstring (uuid)-
labelrequireddata[].trunks[].labelstring-
statusrequireddata[].trunks[].statusstring-
honorDncrequireddata[].trunks[].honorDncboolean | null-
effectiverequireddata[].trunks[].effectiveboolean-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get the Do Not Call setting of a customer or trunk

GET/api/v1/switch/dnc/honor

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

NameInTypeDescription
subAccountIdquerystring (uuid)-
customerTrunkIdquerystring (uuid)-

Response 200

FieldTypeDescription
datarequiredobject-
scoperequireddata.scopestring-One of customer, trunk
idrequireddata.idstring (uuid)-
labelrequireddata.labelstring-
valuerequireddata.valueboolean | nullThe setting itself; null on a trunk means it inherits from its customer
inheritedrequireddata.inheritedboolean | null-
customerLabelrequireddata.customerLabelstring | null-
effectiverequireddata.effectivebooleanWhether calls are actually checked against Do Not Call
decidedByrequireddata.decidedBystringWhich level decided effectiveOne of customer, trunk
moderequireddata.modestringThe 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.trunkOverridesobjectCustomer only: trunks that set their own value instead of inheriting
onrequireddata.trunkOverrides.oninteger-
offrequireddata.trunkOverrides.offinteger-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Turn Do Not Call on or off for a customer or trunk

PATCH/api/v1/switch/dnc/honor

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)

FieldTypeDescription
subAccountIdstring (uuid)-
customerTrunkIdstring (uuid)-
honorrequiredboolean | null-

Response 200

FieldTypeDescription
datarequiredobjectSame fields as SwitchDncHonorSetting, shown earlier on this page.

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Remove Do Not Call numbers from an uploaded list

POST/api/v1/switch/dnc/scrub

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

NameInTypeDescription
formatquerystring-One of csv, json

Request body (multipart/form-data)

FieldTypeDescription
filerequiredstringCSV or text file of numbers (max 16 MB)

Response 200

FieldTypeDescription
datarequiredobject-
idrequireddata.idstring (uuid) | nullDownload id, valid for one hour; null when the copy could not be stored (the counts are still correct: run again with ?format=csv)
filenamerequireddata.filenamestring-
countsrequireddata.countsobject-
rowsrequireddata.counts.rowsinteger-
cleanrequireddata.counts.cleaninteger-
removedOwnrequireddata.counts.removedOwninteger-
removedGlobalrequireddata.counts.removedGlobalinteger-
invalidrequireddata.counts.invalidinteger-
hadHeaderrequireddata.counts.hadHeaderboolean-
invalidSamplesrequireddata.invalidSamplesstring[]Up to 10 unreadable rows (first 80 characters each)
msrequireddata.msintegerProcessing time in milliseconds

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Download a scrubbed file

GET/api/v1/switch/dnc/scrub/{id}

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

NameInTypeDescription
idrequiredpathstring (uuid)-

Response 200 (text/csv)

The cleaned CSV, as an attachment.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Add numbers to your Do Not Call list from a file

POST/api/v1/switch/dnc/import

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)

FieldTypeDescription
filerequiredstringCSV or text file of numbers (max 16 MB)
reasonstring-max 500 chars

Response 200

FieldTypeDescription
datarequiredobject-
rowsrequireddata.rowsintegerNumber rows read (a header row is not counted)
addedrequireddata.addedinteger-
skippedrequireddata.skippedintegerValid numbers already listed, or repeated within the file
invalidrequireddata.invalidintegerRows that could not be read as a number

Response 202

FieldTypeDescription
datarequiredobject-
approvalRequireddata.approvalRequiredboolean-One of true
approvalRequestIddata.approvalRequestIdstring (uuid) | null-
permissiondata.permissionstring-
expiresAtdata.expiresAtstring (date-time)-
messagedata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Download your Do Not Call list as CSV

GET/api/v1/switch/dnc/export

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

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 402SWITCH_SUBSCRIPTION_REQUIRED: the account has no active Switch plan or trial.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.