Skip to content
Markets open

API reference

Compliance

Identity verification and US calling compliance.

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

Start identity verification

POST/api/v1/kyc/start

Access
API key. Scoped keys need billing:write.
Rate limit
10 requests per minute

Begins a verification with the identity provider and returns the hosted page to open. Each call starts a new attempt.

Request body (application/json)

FieldTypeDescription
accountTyperequiredstring-One of individual, business

Response 200

FieldTypeDescription
datarequiredobject-
verificationUrlrequireddata.verificationUrlstring (uri)-

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.

Get your identity verification status

GET/api/v1/kyc/status

Access
API key. Full-access keys only; not reachable by scoped keys.
Rate limit
100 requests per second (the default)

depositGate says whether verification is currently required before adding or withdrawing funds; configured whether verification is available at all.

Response 200

FieldTypeDescription
datarequiredobject-
kycStatusrequireddata.kycStatusstring-One of not_started, pending, verified, rejected
accountTyperequireddata.accountTypestring | null-One of individual, business
kycExemptrequireddata.kycExemptboolean-
depositGaterequireddata.depositGateboolean-
configuredrequireddata.configuredboolean-

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.

Get your US calling compliance profile

GET/api/v1/us-compliance/profile

Access
API key. Full-access keys only; not reachable by scoped keys.
Rate limit
100 requests per second (the default)

Your STIR/SHAKEN and FCC registrations, reused for every US voice purchase. data is null until you submit one.

Response 200

FieldTypeDescription
datarequiredobject | null-
userIdrequireddata.userIdstring (uuid)-
legalBusinessNamerequireddata.legalBusinessNamestring-
contactNamerequireddata.contactNamestring-
contactEmailrequireddata.contactEmailstring-
contactPhonerequireddata.contactPhonestring | null-
frnrequireddata.frnstringFCC Registration Number
filer499Idrequireddata.filer499IdstringFCC Form 499 Filer ID
ocnrequireddata.ocnstringOperating Company Number
rmdRegisteredrequireddata.rmdRegisteredbooleanListed in the FCC Robocall Mitigation Database
rmdReferencerequireddata.rmdReferencestring | null-
signsOwnTrafficrequireddata.signsOwnTrafficbooleanSigns its own STIR/SHAKEN attestations
stirShakenCertrequireddata.stirShakenCertstring | null-
attestationLevelrequireddata.attestationLevelstring | null-One of A, B, C
termsAcceptedAtrequireddata.termsAcceptedAtstring (date-time) | nullISO-8601 timestamp (UTC)
submittedAtrequireddata.submittedAtstring (date-time)ISO-8601 timestamp (UTC)
updatedAtrequireddata.updatedAtstring (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.

Submit or update your US calling compliance profile

PUT/api/v1/us-compliance/profile

Access
API key. Full-access keys only; not reachable by scoped keys.
Rate limit
100 requests per second (the default)

Required before a US voice route purchase can be reviewed. Accepting the terms stamps termsAcceptedAt.

Request body (application/json)

FieldTypeDescription
legalBusinessNamerequiredstring-max 255 chars
contactNamerequiredstring-max 255 chars
contactEmailrequiredstring (email)-max 255 chars
contactPhonestring | null-max 40 chars
frnrequiredstring-max 40 chars
filer499Idrequiredstring-max 40 chars
ocnrequiredstring-max 20 chars
rmdRegisteredrequiredboolean-
rmdReferencestring | null-max 2000 chars
signsOwnTrafficrequiredboolean-
stirShakenCertstring | null-max 4000 chars
attestationLevelstring | null-One of A, B, C
termsAcceptedrequiredboolean-

Response 200

FieldTypeDescription
datarequiredobjectSame fields as UsComplianceProfile, 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.

Check whether a route needs a US compliance profile

GET/api/v1/us-compliance/route/{routeId}/requirement

Access
API key. Full-access keys only; not reachable by scoped keys.
Rate limit
100 requests per second (the default)

Parameters

NameInTypeDescription
routeIdrequiredpathstring-

Response 200

FieldTypeDescription
datarequiredobject-
requiredrequireddata.requiredboolean-
hasProfilerequireddata.hasProfileboolean-
profileCompleterequireddata.profileCompleteboolean-

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.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get your US compliance review status

GET/api/v1/us-compliance/status

Access
API key. Full-access keys only; not reachable by scoped keys.
Rate limit
100 requests per second (the default)

actionNeeded is true when a US purchase is waiting on review and your profile is not complete enough for it to proceed.

Response 200

FieldTypeDescription
datarequiredobject-
hasProfilerequireddata.hasProfileboolean-
profileCompleterequireddata.profileCompleteboolean-
pendingReviewCountrequireddata.pendingReviewCountinteger-
actionNeededrequireddata.actionNeededboolean-

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.