API reference
Route messages
Buyer and seller conversations about a route.
3 operationsBase URL https://packetexchange.io/api/v1Postman collection
BrowseRoute messages
List your route conversations
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
The other party is shown by a label, never by account.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
routeIdrequireddata[].routeId | string (uuid) | - |
buyerIdrequireddata[].buyerId | string (uuid) | - |
rolerequireddata[].role | string | -One of buyer, seller |
routeNamerequireddata[].routeName | string | 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. |
otherPartyrequireddata[].otherParty | string | - |
unreadrequireddata[].unread | integer | - |
totalrequireddata[].total | 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. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get one route conversation
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 | - |
buyerIdrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
routeIdrequireddata.routeId | string (uuid) | - |
buyerIdrequireddata.buyerId | string (uuid) | - |
rolerequireddata.role | string | -One of buyer, seller |
routeNamerequireddata.routeName | string | 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. |
otherPartyrequireddata.otherParty | string | - |
messagesrequireddata.messages | object[] | - |
idrequireddata.messages[].id | string (uuid) | - |
routeIdrequireddata.messages[].routeId | string (uuid) | - |
buyerIdrequireddata.messages[].buyerId | string (uuid) | - |
minerequireddata.messages[].mine | boolean | - |
bodyrequireddata.messages[].body | string | - |
readAtrequireddata.messages[].readAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
createdAtrequireddata.messages[].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. - 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.
Send a message about a route
POST/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Contact details (emails, phone numbers, links, handles) are refused. Sellers must pass buyerId to start a thread.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
routeIdrequired | string (uuid) | - |
bodyrequired | string | -max 4000 chars |
buyerId | string (uuid) | - |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
routeIdrequireddata.routeId | string (uuid) | - |
buyerIdrequireddata.buyerId | string (uuid) | - |
minerequireddata.mine | boolean | - |
bodyrequireddata.body | string | - |
readAtrequireddata.readAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
createdAtrequireddata.createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
senderIdrequireddata.senderId | string (uuid) | - |
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.