Skip to content
Markets open

API reference

Do not call

Your opt-out and suppression list, applied to dialer and SMS traffic.

5 operationsBase URL https://packetexchange.io/api/v1Postman collection

List your do-not-call entries

GET/api/v1/dnc

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

Your own entries plus platform-wide ones. Both are suppressed from dialer and SMS traffic.

Response 200

FieldTypeDescription
datarequiredobject[]-
idrequireddata[].idstring (uuid)-
userIdrequireddata[].userIdstring (uuid) | nullnull = a platform-wide entry (read-only to you)
phoneNumberrequireddata[].phoneNumberstringDigits only
reasonrequireddata[].reasonstring | null-
sourcerequireddata[].sourcestringHow it was addedOne of manual, sms_stop, upload, callguard_optout
createdAtrequireddata[].createdAtstring (date-time)ISO-8601 timestamp (UTC)

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

Add a number to your do-not-call list

POST/api/v1/dnc

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

Adding a number already on the list returns the existing entry.

Request body (application/json)

FieldTypeDescription
phoneNumberrequiredstring-max 32 chars
reasonstring-max 500 chars

Response 200

FieldTypeDescription
datarequiredobjectSame fields as DncEntry, 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.
  • 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/dnc/export

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

Response 200 (text/csv)

Columns: phone_number, scope (mine or platform), 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.
  • 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.

Add many numbers to your do-not-call list

POST/api/v1/dnc/bulk

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

Up to 10,000 per request. Numbers already listed are skipped.

Request body (application/json)

FieldTypeDescription
numbersrequiredstring[]-

Response 200

FieldTypeDescription
datarequiredobject-
insertedrequireddata.insertedinteger-
submittedrequireddata.submittedinteger-

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.
  • 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 a number from your do-not-call list

DELETE/api/v1/dnc/{id}

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

Only your own entries can be removed; a platform-wide entry or another account's id is 404.

Parameters

NameInTypeDescription
idrequiredpathstring (uuid)-

Response 200

FieldTypeDescription
datarequiredobject-
idrequireddata.idstring (uuid)-
deletedrequireddata.deletedboolean-One of true

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