API reference
Rate sheets
Upload and manage per-prefix rate decks on routes you sell.
21 operationsBase URL https://packetexchange.io/api/v1Postman collection
BrowseRate sheets
List rate-sheet imports for a route
GET/
- Access
- API key. Scoped keys need
routes:read. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
routeIdrequireddata[].routeId | string (uuid) | - |
filenamerequireddata[].filename | string | - |
fileTyperequireddata[].fileType | string | - |
statusrequireddata[].status | string | - |
rowCountrequireddata[].rowCount | integer | null | - |
columnMappingdata[].columnMapping | any | - |
previewRowsdata[].previewRows | any | - |
warningsdata[].warnings | any | - |
currencyrequireddata[].currency | string | null | - |
fxRaterequireddata[].fxRate | string | null | - |
errorMessagerequireddata[].errorMessage | string | null | - |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
appliedAtrequireddata[].appliedAt | string (date-time) | null | 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.
Upload a rate sheet to a route
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 10 requests per minute
Multipart upload (field file, CSV or Excel). Creates an import to preview, diff and apply; nothing is priced until you apply it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Request body (multipart/form-data)
| Field | Type | Description |
|---|---|---|
filerequired | string | CSV or Excel rate sheet (binary) |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
routeIdrequireddata.routeId | string (uuid) | - |
filenamerequireddata.filename | string | - |
fileTyperequireddata.fileType | string | - |
statusrequireddata.status | string | - |
rowCountrequireddata.rowCount | integer | null | - |
columnMappingdata.columnMapping | any | - |
previewRowsdata.previewRows | any | - |
warningsdata.warnings | any | - |
currencyrequireddata.currency | string | null | - |
fxRaterequireddata.fxRate | string | null | - |
errorMessagerequireddata.errorMessage | string | null | - |
createdAtrequireddata.createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
appliedAtrequireddata.appliedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
rawSampledata.rawSample | any | - |
summarydata.summary | any | - |
confidencedata.confidence | any | - |
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.
Upload and apply a rate sheet in one step
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 10 requests per minute
Applies straight away when the sheet reads unambiguously; otherwise returns outcome: "review" with the reasons.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Request body (multipart/form-data)
| Field | Type | Description |
|---|---|---|
filerequired | string | CSV or Excel rate sheet (binary) |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
outcomerequireddata.outcome | 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. - 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.
Get a rate-sheet import
GET/
- Access
- API key. Scoped keys need
routes:read. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
importIdrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
routeIdrequireddata.routeId | string (uuid) | - |
filenamerequireddata.filename | string | - |
fileTyperequireddata.fileType | string | - |
statusrequireddata.status | string | - |
rowCountrequireddata.rowCount | integer | null | - |
columnMappingdata.columnMapping | any | - |
previewRowsdata.previewRows | any | - |
warningsdata.warnings | any | - |
currencyrequireddata.currency | string | null | - |
fxRaterequireddata.fxRate | string | null | - |
errorMessagerequireddata.errorMessage | string | null | - |
createdAtrequireddata.createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
appliedAtrequireddata.appliedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
rawSampledata.rawSample | any | - |
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.
Preview a rate-sheet import
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
importIdrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
fxRate | number | Multiply source rates by this to convert to USDmin 0 |
mapping | any | Column mapping override |
overrides | object | - |
defaultIncrement | string | null | - |
increaseEffectiveAt | string | string (date-time) | null | When the sheet's increases take effect: "now", an ISO instant, or omitted for the default notice period (diff and apply only) |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Parsed rows as they would be priced |
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.
Compare a rate-sheet import with the live deck
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
importIdrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
fxRate | number | Multiply source rates by this to convert to USDmin 0 |
mapping | any | Column mapping override |
overrides | object | - |
defaultIncrement | string | null | - |
increaseEffectiveAt | string | string (date-time) | null | When the sheet's increases take effect: "now", an ISO instant, or omitted for the default notice period (diff and apply only) |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Added, changed and removed rows |
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.
Apply a rate-sheet import
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Rate increases put list-rate buyers on hold until they accept the new rate.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
importIdrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
fxRate | number | Multiply source rates by this to convert to USDmin 0 |
mapping | any | Column mapping override |
overrides | object | - |
defaultIncrement | string | null | - |
increaseEffectiveAt | string | string (date-time) | null | When the sheet's increases take effect: "now", an ISO instant, or omitted for the default notice period (diff and apply only) |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
appliedrequireddata.applied | integer | - |
addedrequireddata.added | integer | - |
changedrequireddata.changed | integer | - |
removedrequireddata.removed | integer | - |
droppedBlockedrequireddata.droppedBlocked | integer | - |
diffdata.diff | any | - |
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.
Roll a route back to an earlier rate-sheet import
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
importIdrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
appliedrequireddata.applied | integer | - |
addedrequireddata.added | integer | - |
changedrequireddata.changed | integer | - |
removedrequireddata.removed | integer | - |
droppedBlockedrequireddata.droppedBlocked | integer | - |
diffdata.diff | any | - |
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.
Reapply a rate-sheet import with new settings
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
importIdrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
fxRate | number | Multiply source rates by this to convert to USDmin 0 |
mapping | any | Column mapping override |
overrides | object | - |
defaultIncrement | string | null | - |
increaseEffectiveAt | string | string (date-time) | null | When the sheet's increases take effect: "now", an ISO instant, or omitted for the default notice period (diff and apply only) |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
appliedrequireddata.applied | integer | - |
addedrequireddata.added | integer | - |
changedrequireddata.changed | integer | - |
removedrequireddata.removed | integer | - |
droppedBlockedrequireddata.droppedBlocked | integer | - |
diffdata.diff | any | - |
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.
Publish an A-Z deck as per-country listings
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 6 requests per minute
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
perCarrier | boolean | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | The listings created |
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.
Collapse per-country listings back into one deck
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
removedrequireddata.removed | 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. - 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 the per-country listings of a deck
GET/
- Access
- API key. Scoped keys need
routes:read. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
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.
List per-destination rates on a route
GET/
- Access
- Key optional. A key or token personalises the answer.
- Rate limit
- 100 requests per second (the default)
Public for public routes. Buyers see cleaned destination names and no upstream operator labels.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
search | query | string | - |
limit | query | integer | - |
offset | query | integer | - |
Response 200
| Field | Type | Description |
|---|---|---|
ratesrequired | object[] | - |
idrequiredrates[].id | string (uuid) | - |
routeIdrequiredrates[].routeId | string (uuid) | - |
destinationNamerequiredrates[].destinationName | string | - |
operatorrequiredrates[].operator | string | null | - |
prefixrequiredrates[].prefix | string | - |
ratePerUnitrequiredrates[].ratePerUnit | money | USD as a decimal string with exactly 6 places, e.g. "0.012500". |
billingIncrementrequiredrates[].billingIncrement | string | null | - |
minDurationrequiredrates[].minDuration | integer | null | - |
effectiveDaterequiredrates[].effectiveDate | string (date-time) | null | ISO-8601 timestamp (UTC) |
statusrequiredrates[].status | string | - |
mccMncrates[].mccMnc | string | null | SMS sheets priced by network code: the network the row price came from ("214" = whole country) |
operatorRatesrates[].operatorRates | object[] | null | SMS sheets priced by network: the price per destination network (charged per network when networkPriced is true). A message is charged its network's rate (networks not listed pay the All Operators rate when there is one); ratePerUnit is the price for other or unknown networks. The network is determined from the number's range (ported numbers may be priced at the network the range belongs to) |
mccMncrequiredrates[].operatorRates[].mccMnc | string | "214-07" for one network; "214" for All Operators |
operatorrequiredrates[].operatorRates[].operator | string | null | - |
raterequiredrates[].operatorRates[].rate | money | USD as a decimal string with exactly 6 places, e.g. "0.012500". |
networkPricedrates[].networkPriced | boolean | True when each SMS on this row is charged its destination network's rate from operatorRates; ratePerUnit then applies to other or unknown networks |
totalrequired | 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.
Add a rate to your route's deck
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
destinationNamerequired | string | -max 255 chars |
operator | string | null | -max 120 chars |
prefixrequired | string | -max 24 chars |
ratePerUnitrequired | string | - |
billingIncrement | string | -max 10 chars |
minDuration | integer | -min 0 |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
routeIdrequireddata.routeId | string (uuid) | - |
destinationNamerequireddata.destinationName | string | - |
operatorrequireddata.operator | string | null | - |
prefixrequireddata.prefix | string | - |
ratePerUnitrequireddata.ratePerUnit | money | USD as a decimal string with exactly 6 places, e.g. "0.012500". |
billingIncrementrequireddata.billingIncrement | string | null | - |
minDurationrequireddata.minDuration | integer | null | - |
effectiveDaterequireddata.effectiveDate | string (date-time) | null | ISO-8601 timestamp (UTC) |
statusrequireddata.status | string | - |
mccMncdata.mccMnc | string | null | SMS sheets priced by network code: the network the row price came from ("214" = whole country) |
operatorRatesdata.operatorRates | object[] | null | SMS sheets priced by network: the price per destination network (charged per network when networkPriced is true). A message is charged its network's rate (networks not listed pay the All Operators rate when there is one); ratePerUnit is the price for other or unknown networks. The network is determined from the number's range (ported numbers may be priced at the network the range belongs to) |
mccMncrequireddata.operatorRates[].mccMnc | string | "214-07" for one network; "214" for All Operators |
operatorrequireddata.operatorRates[].operator | string | null | - |
raterequireddata.operatorRates[].rate | money | USD as a decimal string with exactly 6 places, e.g. "0.012500". |
networkPriceddata.networkPriced | boolean | True when each SMS on this row is charged its destination network's rate from operatorRates; ratePerUnit then applies to other or unknown networks |
updatedrequireddata.updated | 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. - 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.
Export a route's rates as CSV
GET/
- Access
- Key optional. A key or token personalises the answer.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Response 200 (text/csv)
The deck as CSV (attachment).
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.
Add many rates to your route's deck
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
rowsrequired | object[] | - |
destinationNamerows[].destinationName | string | -max 255 chars |
operatorrows[].operator | string | null | -max 120 chars |
prefixrequiredrows[].prefix | string | -max 24 chars |
ratePerUnitrequiredrows[].ratePerUnit | string | -max 32 chars |
billingIncrementrows[].billingIncrement | string | -max 10 chars |
minDurationrows[].minDuration | integer | -min 0 |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
addedrequireddata.added | integer | - |
updatedrequireddata.updated | integer | - |
skippedrequireddata.skipped | integer | - |
skippedRowsrequireddata.skippedRows | object[] | - |
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.
Edit or block one rate in your deck
PATCH/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
rateIdrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
destinationName | string | -max 255 chars |
ratePerUnit | string | - |
billingIncrement | string | null | -max 10 chars |
minDuration | integer | null | -min 0 |
blocked | boolean | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as RouteRate, 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. - 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.
Delete one rate from your deck
DELETE/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
rateIdrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
messagerequireddata.message | 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. - 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.
List scheduled rate changes on your route
GET/
- Access
- API key. Scoped keys need
routes:read. - Rate limit
- 100 requests per second (the default)
With how many buyers are held by each change and how many already accepted it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
kindrequireddata[].kind | string | - |
statusrequireddata[].status | string | - |
effectiveDaterequireddata[].effectiveDate | string (date-time) | ISO-8601 timestamp (UTC) |
increasesrequireddata[].increases | integer | - |
decreasesrequireddata[].decreases | integer | - |
addedrequireddata[].added | integer | - |
removedrequireddata[].removed | integer | - |
largestIncreasePctrequireddata[].largestIncreasePct | number | null | - |
sampleOldRaterequireddata[].sampleOldRate | 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". |
sampleNewRaterequireddata[].sampleNewRate | 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". |
flatOldPricerequireddata[].flatOldPrice | 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". |
flatNewPricerequireddata[].flatNewPrice | 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". |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
notifiedAtrequireddata[].notifiedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
promotedAtrequireddata[].promotedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
cancelledAtrequireddata[].cancelledAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
heldPurchasesrequireddata[].heldPurchases | integer | null | - |
acceptedPurchasesrequireddata[].acceptedPurchases | 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.
Schedule a price change on a one-price route
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
An increase takes effect after the notice period when list-rate buyers are bound; buyers are notified and can accept in advance. Replaces any change already scheduled.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
newPricerequired | string | - |
effectiveDate | string (date-time) | null | Omit for the default notice period |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
scheduledrequireddata.scheduled | boolean | False when the change applied immediately |
changeIdrequireddata.changeId | string (uuid) | - |
effectiveDaterequireddata.effectiveDate | string (date-time) | ISO-8601 timestamp (UTC) |
boundBuyersrequireddata.boundBuyers | 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. - 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.
Withdraw a scheduled rate change
POST/
- Access
- API key. Scoped keys need
routes:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | - |
changeIdrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
cancelledrequireddata.cancelled | 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.