Skip to content

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

  • hours

    query · number

  • minCalls

    query · integer

  • limit

    query · integer

Response 200

  • datarequired

    object

  • hoursrequired

    number · data.hours

  • minCallsrequired

    integer · data.minCalls

  • watchrequired

    object[] · data.watch

  • spoofingSuspectsrequired

    integer · data.spoofingSuspects

  • wouldBlockrequired

    object · data.wouldBlock

  • clisrequired

    integer · data.wouldBlock.clis

  • callsrequired

    integer · data.wouldBlock.calls

  • totalCallsrequired

    integer · data.wouldBlock.totalCalls

  • percentrequired

    number · data.wouldBlock.percent

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

  • hours

    query · number

  • minCalls

    query · integer

  • maxDistinct

    query · integer

  • limit

    query · integer

Response 200

  • datarequired

    object

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

  • datarequired

    object

  • fraudEnabledrequired

    boolean · data.fraudEnabled

  • fraudBlockScorerequired

    integer · data.fraudBlockScore

    Risk score at or above which a call is refused1 to 100
  • fraudAlertScorerequired

    integer · data.fraudAlertScore

    Risk score at or above which a call is flagged1 to 100
  • highRiskPrefixesrequired

    string[] · data.highRiskPrefixes

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)

  • 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

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • datarequired

    object[]

  • idrequired

    string (uuid) · data[].id

  • createdAtrequired

    string (date-time) · data[].createdAt

    ISO-8601 timestamp (UTC)
  • customerLabelrequired

    string | null · data[].customerLabel

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

  • datarequired

    object[]

  • priorityrequired

    string · data[].priority

  • kindrequired

    string · data[].kind

    One of trunk, margin, quality, fraud, rating, deck, credit, setup
  • titlerequired

    string · data[].title

  • subjectrequired

    string · data[].subject

  • detailrequired

    string · data[].detail

  • sincerequired

    string · data[].since

  • hrefrequired

    string · data[].href

    Dashboard path where it can be acted on
  • refrequired

    string · data[].ref

    Issue reference, e.g. OPS-3F9A1C22
  • severityrequired

    string · data[].severity

    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

  • 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

  • datarequired

    object[]

  • keyrequired

    string · data[].key

  • refrequired

    string · data[].ref

    Quotable reference, e.g. OPS-3F9A1C22
  • detectorrequired

    string · data[].detector

  • severityrequired

    string · data[].severity

    One of critical, warning, review
  • actionablerequired

    boolean · data[].actionable

  • statusrequired

    string · data[].status

    One of open_unacknowledged, open_acknowledged, resolved
  • titlerequired

    string · data[].title

  • summaryrequired

    string · data[].summary

  • reasonrequired

    string · data[].reason

  • triggerrequired

    string · data[].trigger

  • recoveryrequired

    string · data[].recovery

  • objectNamerequired

    string | null · data[].objectName

  • subjectsrequired

    object · data[].subjects

    The customer, trunks, supplier and destination the issue is about
  • evidencerequired

    object[] · data[].evidence

  • labelrequired

    string · data[].evidence[].label

  • valuerequired

    string · data[].evidence[].value

  • firstDetectedAtrequired

    string · data[].firstDetectedAt

  • lastDetectedAtrequired

    string · data[].lastDetectedAt

  • detectionsrequired

    integer · data[].detections

  • acknowledgedAtrequired

    string | null · data[].acknowledgedAt

  • resolvedAtrequired

    string | null · data[].resolvedAt

  • resolvedViarequired

    string | null · data[].resolvedVia

    One of operator, recovery, dismissed
  • dismissRulerequired

    string | null · data[].dismissRule

    What 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

  • refrequired

    path · string

Response 200

  • datarequired

    object

    Same 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

  • refrequired

    path · string

Response 200

  • datarequired

    object[]

  • actionrequired

    string · data[].action

  • fromStatusrequired

    string | null · data[].fromStatus

  • toStatusrequired

    string | null · data[].toStatus

  • noterequired

    string | null · data[].note

  • atrequired

    string (date-time) · data[].at

    ISO-8601 timestamp (UTC)
  • byrequired

    string · data[].by

    Who 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

  • refrequired

    path · string

Request body (application/json)

  • note

    string

    max 1000 chars

Response 200

  • datarequired

    object

  • refrequired

    string · data.ref

  • statusrequired

    string · data.status

    One of open_unacknowledged, open_acknowledged, resolved

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • refrequired

    path · string

Request body (application/json)

  • userIdrequired

    string (uuid) | null

Response 200

  • datarequired

    object

  • refrequired

    string · data.ref

  • ownerUserIdrequired

    string (uuid) | null · data.ownerUserId

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • refrequired

    path · string

Request body (application/json)

  • resolution

    string

    max 2000 chars

Response 200

  • datarequired

    object

  • refrequired

    string · data.ref

  • statusrequired

    string · data.status

    One of open_unacknowledged, open_acknowledged, resolved

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • refrequired

    path · string

Request body (application/json)

  • reason

    string

    max 500 chars

Response 200

  • datarequired

    object

  • refrequired

    string · data.ref

  • statusrequired

    string · data.status

    One of open_unacknowledged, open_acknowledged, resolved
  • resolvedViarequired

    string · data.resolvedVia

    One of dismissed
  • reasonrequired

    string | null · data.reason

  • reopensWhenrequired

    string | null · data.reopensWhen

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • refrequired

    path · string

Request body (application/json)

  • note

    string

    max 1000 chars

Response 200

  • datarequired

    object

  • refrequired

    string · data.ref

  • statusrequired

    string · data.status

    One of open_unacknowledged, open_acknowledged, resolved

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • refrequired

    path · string

Request body (application/json)

  • minutesrequired

    integer

    1 to 20160

Response 200

  • datarequired

    object

  • refrequired

    string · data.ref

  • snoozedUntilrequired

    string (date-time) · data.snoozedUntil

    ISO-8601 timestamp (UTC)
  • issueStatusrequired

    string · data.issueStatus

    One of open_unacknowledged, open_acknowledged, resolved

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • datarequired

    object

  • totalrequired

    integer · data.total

  • blockedrequired

    integer · data.blocked

  • flaggedrequired

    integer · data.flagged

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

  • datarequired

    object | 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

  • datarequired

    object

  • sampleCallsrequired

    integer · data.sampleCalls

  • baselinerequired

    object | null · data.baseline

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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)

  • subAccountIdrequired

    string (uuid)

  • destinationrequired

    string

    max 32 chars

Response 200

  • datarequired

    object

    Risk score, the factors behind it and the action screening would take

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • 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

  • datarequired

    object

    Live calls plus the filter vocabulary this surface supports
  • population

    any · data.population

  • supportsrequired

    string[] · data.supports

  • unsupportedrequired

    string[] · data.unsupported

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)

  • messagerequired

    string

    max 4000 chars
  • history

    any[]

    Earlier turns of the conversation

Response 200

  • datarequired

    object

  • replyrequired

    string | null · data.reply

  • actions

    object[] · data.actions

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • datarequired

    object

  • ownCountrequired

    integer · data.ownCount

    Entries on your own list
  • globalCountrequired

    integer · data.globalCount

    Entries on the platform-wide list
  • bySourcerequired

    object · data.bySource

    Your entries per source (manual, upload, sms_stop, callguard_optout)
  • hitsrequired

    object · data.hits

    Switch calls that matched, refused or only warned, over 7 and 30 days
  • refused7required

    integer · data.hits.refused7

  • warned7required

    integer · data.hits.warned7

  • refused30required

    integer · data.hits.refused30

  • warned30required

    integer · data.hits.warned30

  • customersHonoringrequired

    integer · data.customersHonoring

  • trunksHonoringrequired

    integer · data.trunksHonoring

    Trunks with the setting explicitly on
  • moderequired

    string · data.mode

    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
  • timeoutMsrequired

    integer · data.timeoutMs

    The 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

  • q

    query · string

    Number prefix to search for
  • scope

    query · string

    One of all, own, global
  • limit

    query · integer

  • offset

    query · integer

Response 200

  • datarequired

    object

  • rowsrequired

    object[] · data.rows

  • idrequired

    string (uuid) · data.rows[].id

  • phoneNumberrequired

    string · data.rows[].phoneNumber

  • sourcerequired

    string | null · data.rows[].source

  • createdAtrequired

    string (date-time) · data.rows[].createdAt

    ISO-8601 timestamp (UTC)
  • scoperequired

    string · data.rows[].scope

    own = your list; global = the platform-wide listOne of own, global
  • reasonrequired

    string | null · data.rows[].reason

  • hasMorerequired

    boolean · data.hasMore

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

  • limit

    query · integer

Response 200

  • datarequired

    object[]

  • idrequired

    string (uuid) · data[].id

  • phoneNumberrequired

    string · data[].phoneNumber

  • listScoperequired

    string · data[].listScope

    Which list matchedOne of own, global
  • outcomerequired

    string · data[].outcome

    refused = the call was blocked (enforce mode); warned = recorded onlyOne of refused, warned
  • createdAtrequired

    string (date-time) · data[].createdAt

    ISO-8601 timestamp (UTC)
  • subAccountIdrequired

    string (uuid) | null · data[].subAccountId

  • customerTrunkIdrequired

    string (uuid) | null · data[].customerTrunkId

  • customerrequired

    string | null · data[].customer

  • trunkrequired

    string | null · data[].trunk

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

  • numberrequired

    query · string

Response 200

  • datarequired

    object

  • inputrequired

    string · data.input

    What you sent
  • numberrequired

    string | null · data.number

    The number as stored on the list (digits); null when nothing could be read
  • validrequired

    boolean · data.valid

    Whether it reads as a dialable number
  • listedrequired

    boolean · data.listed

  • scoperequired

    string | null · data.scope

    own = your list; global = the platform-wide listOne of own, global
  • entryrequired

    object | null · data.entry

  • idrequired

    string (uuid) · data.entry.id

  • sourcerequired

    string | null · data.entry.source

  • createdAtrequired

    string (date-time) · data.entry.createdAt

    ISO-8601 timestamp (UTC)
  • reasonrequired

    string | null · data.entry.reason

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

  • datarequired

    object[]

  • idrequired

    string (uuid) · data[].id

  • labelrequired

    string · data[].label

  • statusrequired

    string · data[].status

  • honorDncrequired

    boolean · data[].honorDnc

  • trunksrequired

    object[] · data[].trunks

  • idrequired

    string (uuid) · data[].trunks[].id

  • labelrequired

    string · data[].trunks[].label

  • statusrequired

    string · data[].trunks[].status

  • honorDncrequired

    boolean | null · data[].trunks[].honorDnc

  • effectiverequired

    boolean · data[].trunks[].effective

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

  • subAccountId

    query · string (uuid)

  • customerTrunkId

    query · string (uuid)

Response 200

  • datarequired

    object

  • scoperequired

    string · data.scope

    One of customer, trunk
  • idrequired

    string (uuid) · data.id

  • labelrequired

    string · data.label

  • valuerequired

    boolean | null · data.value

    The setting itself; null on a trunk means it inherits from its customer
  • inheritedrequired

    boolean | null · data.inherited

  • customerLabelrequired

    string | null · data.customerLabel

  • effectiverequired

    boolean · data.effective

    Whether calls are actually checked against Do Not Call
  • decidedByrequired

    string · data.decidedBy

    Which level decided effectiveOne of customer, trunk
  • moderequired

    string · data.mode

    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
  • trunkOverrides

    object · data.trunkOverrides

    Customer only: trunks that set their own value instead of inheriting
  • onrequired

    integer · data.trunkOverrides.on

  • offrequired

    integer · data.trunkOverrides.off

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)

  • subAccountId

    string (uuid)

  • customerTrunkId

    string (uuid)

  • honorrequired

    boolean | null

Response 200

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • format

    query · string

    One of csv, json

Request body (multipart/form-data)

  • filerequired

    string

    CSV or text file of numbers (max 16 MB)

Response 200

  • datarequired

    object

  • idrequired

    string (uuid) | null · data.id

    Download id, valid for one hour; null when the copy could not be stored (the counts are still correct: run again with ?format=csv)
  • filenamerequired

    string · data.filename

  • countsrequired

    object · data.counts

  • rowsrequired

    integer · data.counts.rows

  • cleanrequired

    integer · data.counts.clean

  • removedOwnrequired

    integer · data.counts.removedOwn

  • removedGlobalrequired

    integer · data.counts.removedGlobal

  • invalidrequired

    integer · data.counts.invalid

  • hadHeaderrequired

    boolean · data.counts.hadHeader

  • invalidSamplesrequired

    string[] · data.invalidSamples

    Up to 10 unreadable rows (first 80 characters each)
  • msrequired

    integer · data.ms

    Processing time in milliseconds

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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

  • idrequired

    path · string (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)

  • filerequired

    string

    CSV or text file of numbers (max 16 MB)
  • reason

    string

    max 500 chars

Response 200

  • datarequired

    object

  • rowsrequired

    integer · data.rows

    Number rows read (a header row is not counted)
  • addedrequired

    integer · data.added

  • skippedrequired

    integer · data.skipped

    Valid numbers already listed, or repeated within the file
  • invalidrequired

    integer · data.invalid

    Rows that could not be read as a number

Response 202

  • datarequired

    object

  • approvalRequired

    boolean · data.approvalRequired

    One of true
  • approvalRequestId

    string (uuid) | null · data.approvalRequestId

  • permission

    string · data.permission

  • expiresAt

    string (date-time) · data.expiresAt

  • message

    string · data.message

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.