API reference
Onboarding
The guided first-call flow for new accounts.
BrowseOnboarding
Get everything the first-call guide needs
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Balance, verification, active purchases (with where to send traffic and the billing increment), the five most recent calls and the account connectivity brief. If the brief cannot be read, brief is null and briefError says why; no fallback address is ever guessed.
Response 200
datarequiredobject
balancerequiredmoney · data.balance
USD as a decimal string with exactly 6 places, e.g. "0.012500".balanceNumericrequirednumber · data.balanceNumeric
emailVerifiedrequiredboolean · data.emailVerified
accountStatusrequiredstring | null · data.accountStatus
activePurchasesrequiredobject[] · data.activePurchases
purchaseIdrequiredstring (uuid) · data.activePurchases[].purchaseId
routeIdrequiredstring (uuid) · data.activePurchases[].routeId
routeNamerequiredstring | null · data.activePurchases[].routeName
The listing name as a buyer reads it: generated by the platform, never the seller's text, and ending in the listing reference (e.g. "Niger Mobile · Ref 7K2Q", "A-Z Voice · Premium · Full CLI · Ref 3MX9"). Your own listings keep the name you gave them.countryCoderequiredstring | null · data.activePurchases[].countryCode
prefixesrequiredstring | null · data.activePurchases[].prefixes
Comma-joined prefixestyperequiredstring · data.activePurchases[].type
statusrequiredstring · data.activePurchases[].status
billingIncrementrequiredstring | null · data.activePurchases[].billingIncrement
e.g. "60/60"sipUsernamerequiredstring | null · data.activePurchases[].sipUsername
hasSipPasswordrequiredboolean · data.activePurchases[].hasSipPassword
sendTorequiredstring | null · data.activePurchases[].sendTo
Our address to send this traffic to, from the live briefsendToPortrequiredinteger | null · data.activePurchases[].sendToPort
recentCallsrequiredobject[] · data.recentCalls
idrequiredstring (uuid) · data.recentCalls[].id
createdAtrequiredstring (date-time) · data.recentCalls[].createdAt
ISO-8601 timestamp (UTC)directionrequiredstring · data.recentCalls[].direction
kindrequiredstring · data.recentCalls[].kind
toNumberrequiredstring | null · data.recentCalls[].toNumber
fromNumberrequiredstring | null · data.recentCalls[].fromNumber
statusrequiredstring | null · data.recentCalls[].status
sipCoderequiredinteger | null · data.recentCalls[].sipCode
hangupCauserequiredstring | null · data.recentCalls[].hangupCause
durationSecondsrequiredinteger | null · data.recentCalls[].durationSeconds
billedSecondsrequiredinteger | null · data.recentCalls[].billedSeconds
Seconds the charge was computed from, after increment roundingbuyerCostrequiredmoney | null · data.recentCalls[].buyerCost
US dollars as a decimal string with exactly 6 decimal places, e.g. "0.012500". Do money arithmetic with a decimal type, not floating point. USD as a decimal string with exactly 6 places, e.g. "0.012500".ratePerUnitrequiredmoney | null · data.recentCalls[].ratePerUnit
US dollars as a decimal string with exactly 6 decimal places, e.g. "0.012500". Do money arithmetic with a decimal type, not floating point. USD as a decimal string with exactly 6 places, e.g. "0.012500".isTestrequiredboolean · data.recentCalls[].isTest
hasAnyCallrequiredboolean · data.hasAnyCall
briefrequiredobject | null · data.brief
The account connectivity brief: authorised source addresses, purchased routes and where to send thembriefErrorrequiredstring | null · data.briefError
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.
Check first-call progress
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Three cheap yes/no checks for a progress badge: any call made, any active purchase, a positive balance.
Response 200
datarequiredobject
hasAnyCallrequiredboolean · data.hasAnyCall
hasActivePurchaserequiredboolean · data.hasActivePurchase
hasBalancerequiredboolean · data.hasBalance
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.
Activate your own switch address
POST/
- Access
- API key. Scoped keys need
account:write. - Rate limit
- 10 requests per minute
Moves the account onto its own ingress address. Call without confirm to preview what changes; send confirm: true to apply.
Request body (application/json)
confirmboolean
Response 200
datarequiredobject
What was (or would be) changed
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 call to a destination would be accepted
POST/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 20 requests per minute
Dry-runs inbound admission for a destination against each way your traffic can be recognised (source address or SIP credentials). Places no call and moves no money. When refused, rejection explains why and whose move it is.
Request body (application/json)
destinationrequiredstring
Destination number in international formatmax 24 chars
Response 200
datarequiredobject
checkablerequiredboolean · data.checkable
acceptedrequiredboolean · data.accepted
identityCheckedrequiredstring | null · data.identityChecked
identitiesTriedrequiredstring[] · data.identitiesTried
rejectionrequiredobject | null · data.rejection
coderequiredinteger · data.rejection.code
Stable PacketExchange cause code (not the SIP code)blockedByrequiredstring · data.rejection.blockedBy
Whose move it is to unblock the callreasonrequiredstring · data.rejection.reason
remedyrequiredstring · data.rejection.remedy
sipCoderequiredinteger · data.rejection.sipCode
noterequiredstring | null · data.note
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.