API reference
Compliance
Identity verification and US calling compliance.
6 operationsBase URL https://packetexchange.io/api/v1Postman collection
BrowseCompliance
Start identity verification
POST/
- 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)
| Field | Type | Description |
|---|---|---|
accountTyperequired | string | -One of individual, business |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
verificationUrlrequireddata.verificationUrl | string (uri) | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get your identity verification status
GET/
- 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
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
kycStatusrequireddata.kycStatus | string | -One of not_started, pending, verified, rejected |
accountTyperequireddata.accountType | string | null | -One of individual, business |
kycExemptrequireddata.kycExempt | boolean | - |
depositGaterequireddata.depositGate | boolean | - |
configuredrequireddata.configured | boolean | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get your US calling compliance profile
GET/
- 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
| Field | Type | Description |
|---|---|---|
datarequired | object | null | - |
userIdrequireddata.userId | string (uuid) | - |
legalBusinessNamerequireddata.legalBusinessName | string | - |
contactNamerequireddata.contactName | string | - |
contactEmailrequireddata.contactEmail | string | - |
contactPhonerequireddata.contactPhone | string | null | - |
frnrequireddata.frn | string | FCC Registration Number |
filer499Idrequireddata.filer499Id | string | FCC Form 499 Filer ID |
ocnrequireddata.ocn | string | Operating Company Number |
rmdRegisteredrequireddata.rmdRegistered | boolean | Listed in the FCC Robocall Mitigation Database |
rmdReferencerequireddata.rmdReference | string | null | - |
signsOwnTrafficrequireddata.signsOwnTraffic | boolean | Signs its own STIR/SHAKEN attestations |
stirShakenCertrequireddata.stirShakenCert | string | null | - |
attestationLevelrequireddata.attestationLevel | string | null | -One of A, B, C |
termsAcceptedAtrequireddata.termsAcceptedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
submittedAtrequireddata.submittedAt | string (date-time) | ISO-8601 timestamp (UTC) |
updatedAtrequireddata.updatedAt | string (date-time) | ISO-8601 timestamp (UTC) |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Submit or update your US calling compliance profile
PUT/
- 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)
| Field | Type | Description |
|---|---|---|
legalBusinessNamerequired | string | -max 255 chars |
contactNamerequired | string | -max 255 chars |
contactEmailrequired | string (email) | -max 255 chars |
contactPhone | string | null | -max 40 chars |
frnrequired | string | -max 40 chars |
filer499Idrequired | string | -max 40 chars |
ocnrequired | string | -max 20 chars |
rmdRegisteredrequired | boolean | - |
rmdReference | string | null | -max 2000 chars |
signsOwnTrafficrequired | boolean | - |
stirShakenCert | string | null | -max 4000 chars |
attestationLevel | string | null | -One of A, B, C |
termsAcceptedrequired | boolean | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as UsComplianceProfile, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Check whether a route needs a US compliance profile
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
routeIdrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
requiredrequireddata.required | boolean | - |
hasProfilerequireddata.hasProfile | boolean | - |
profileCompleterequireddata.profileComplete | boolean | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get your US compliance review status
GET/
- 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
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
hasProfilerequireddata.hasProfile | boolean | - |
profileCompleterequireddata.profileComplete | boolean | - |
pendingReviewCountrequireddata.pendingReviewCount | integer | - |
actionNeededrequireddata.actionNeeded | boolean | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.