API reference
Connections
Your SIP and SMPP connections to the exchange.
8 operationsBase URL https://packetexchange.io/api/v1Postman collection
BrowseConnections
Look up the account behind a connect code
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 |
|---|---|---|---|
tokenrequired | query | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
contactNamerequireddata.contactName | string | null | - |
companyNamerequireddata.companyName | string | null | - |
jobTitledata.jobTitle | string | null | - |
avatarUrldata.avatarUrl | string | null | - |
logoUrldata.logoUrl | string | null | - |
countryrequireddata.country | string | null | - |
verifiedrequireddata.verified | boolean | - |
memberSincedata.memberSince | 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.
Get your connect code
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Created on first read. Share it (or its QR) so another account can connect with you.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
tokenrequireddata.token | string | - |
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.
Rotate your connect code
POST/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
The old code stops working. Existing connections are kept.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
tokenrequireddata.token | string | - |
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.
Connect with another account by its code
POST/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Both sides can then see each other's public routes; the owner is notified.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
tokenrequired | string | -max 64 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
connectionIdrequireddata.connectionId | string (uuid) | - |
counterpartyrequireddata.counterparty | object | Same fields as ConnectionProfile, 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.
List your connections
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
counterpartyrequireddata[].counterparty | object | Same fields as ConnectionProfile, shown earlier on this page. |
visibleRouteCountrequireddata[].visibleRouteCount | integer | - |
createdAtrequireddata[].createdAt | 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.
Get a connection with the routes each side can see
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 |
|---|---|---|---|
idrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
connectionIdrequireddata.connectionId | string (uuid) | - |
counterpartyrequireddata.counterparty | object | Same fields as ConnectionProfile, shown earlier on this page. |
theirRoutesrequireddata.theirRoutes | object[] | - |
idrequireddata.theirRoutes[].id | string (uuid) | - |
typerequireddata.theirRoutes[].type | string | -One of voice, sms |
countryrequireddata.theirRoutes[].country | string | null | - |
countryCoderequireddata.theirRoutes[].countryCode | string | null | - |
prefixrequireddata.theirRoutes[].prefix | string[] | - |
destinationNamerequireddata.theirRoutes[].destinationName | string | null | - |
pricePerUnitrequireddata.theirRoutes[].pricePerUnit | money | Your negotiated price when the route was shared privately, else the list price USD as a decimal string with exactly 6 places, e.g. "0.012500". |
customPricerequireddata.theirRoutes[].customPrice | money | null | 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". |
cliTyperequireddata.theirRoutes[].cliType | string | null | - |
capacityrequireddata.theirRoutes[].capacity | integer | null | - |
billingIncrementrequireddata.theirRoutes[].billingIncrement | string | null | - |
expectedAsrrequireddata.theirRoutes[].expectedAsr | string | null | - |
expectedAcdrequireddata.theirRoutes[].expectedAcd | string | null | - |
routeTyperequireddata.theirRoutes[].routeType | string | null | - |
visibilityrequireddata.theirRoutes[].visibility | string | - |
jingleSipIprequireddata.theirRoutes[].jingleSipIp | enum | null | -One of null |
supportedCodecsrequireddata.theirRoutes[].supportedCodecs | string[] | null | - |
myRoutesrequireddata.myRoutes | object[] | - |
idrequireddata.myRoutes[].id | string (uuid) | - |
typerequireddata.myRoutes[].type | string | -One of voice, sms |
countryrequireddata.myRoutes[].country | string | null | - |
countryCoderequireddata.myRoutes[].countryCode | string | null | - |
prefixrequireddata.myRoutes[].prefix | string[] | - |
destinationNamerequireddata.myRoutes[].destinationName | string | null | - |
pricePerUnitrequireddata.myRoutes[].pricePerUnit | money | Your negotiated price when the route was shared privately, else the list price USD as a decimal string with exactly 6 places, e.g. "0.012500". |
customPricerequireddata.myRoutes[].customPrice | money | null | 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". |
cliTyperequireddata.myRoutes[].cliType | string | null | - |
capacityrequireddata.myRoutes[].capacity | integer | null | - |
billingIncrementrequireddata.myRoutes[].billingIncrement | string | null | - |
expectedAsrrequireddata.myRoutes[].expectedAsr | string | null | - |
expectedAcdrequireddata.myRoutes[].expectedAcd | string | null | - |
routeTyperequireddata.myRoutes[].routeType | string | null | - |
visibilityrequireddata.myRoutes[].visibility | string | - |
jingleSipIprequireddata.myRoutes[].jingleSipIp | enum | null | -One of null |
supportedCodecsrequireddata.myRoutes[].supportedCodecs | string[] | null | - |
mySharesPrivaterequireddata.mySharesPrivate | boolean | - |
theySharePrivaterequireddata.theySharePrivate | boolean | - |
interconnectrequireddata.interconnect | object | - |
whitelistedIpsrequireddata.interconnect.whitelistedIps | integer | - |
activePurchasesrequireddata.interconnect.activePurchases | integer | - |
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.
Remove a connection
DELETE/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Private route access granted through the connection is revoked on both sides.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
okrequireddata.ok | boolean | -One of true |
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. - 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.