API reference
Account
Your profile, balance, preferences, team and account-level settings.
34 operationsBase URL https://packetexchange.io/api/v1Postman collection
BrowseAccount
Get your account profile
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Profile, balance and account state. Secrets are never included.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
emailrequireddata.email | string (email) | - |
contactNamerequireddata.contactName | string | - |
companyNamerequireddata.companyName | string | null | - |
jobTitlerequireddata.jobTitle | string | null | - |
phonerequireddata.phone | string | null | - |
countryrequireddata.country | string | null | ISO-3166-1 alpha-2 |
timezonerequireddata.timezone | string | - |
companyLogoUrlrequireddata.companyLogoUrl | string | null | - |
avatarUrlrequireddata.avatarUrl | string | null | - |
rolerequireddata.role | string | -One of user, admin |
statusrequireddata.status | string | -One of active, suspended |
accountKindrequireddata.accountKind | string | - |
balancerequireddata.balance | money | USD as a decimal string with exactly 6 places, e.g. "0.012500". |
testCreditrequireddata.testCredit | money | Sandbox credit, spendable only by test API keys USD as a decimal string with exactly 6 places, e.g. "0.012500". |
emailVerifiedAtrequireddata.emailVerifiedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
pendingEmailrequireddata.pendingEmail | string | null | An address change waiting for confirmation |
verificationStatusrequireddata.verificationStatus | string | -One of unverified, verified |
kycStatusrequireddata.kycStatus | string | -One of not_started, pending, verified, rejected |
totpEnabledrequireddata.totpEnabled | boolean | Two-factor authentication is on |
taxIdrequireddata.taxId | string | null | - |
taxCountryrequireddata.taxCountry | string | null | - |
payoutMethodrequireddata.payoutMethod | string | null | - |
onboardingGoalrequireddata.onboardingGoal | string | null | - |
onboardingDismissedrequireddata.onboardingDismissed | boolean | - |
onboardingSeenrequireddata.onboardingSeen | boolean | - |
emailNotificationsOptOutrequireddata.emailNotificationsOptOut | boolean | - |
switchStatusrequireddata.switchStatus | string | -One of none, active, past_due, canceled, comp |
createdAtrequireddata.createdAt | 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.
Update your account profile
PUT/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 100 requests per second (the default)
Every field is optional; send only what changes. An empty string clears an optional text field. Session only because it can change the payout destination.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
companyName | string | -max 255 chars |
contactName | string | -max 255 chars |
companyLogoUrl | string | -max 400000 chars |
jobTitle | string | -max 120 chars |
avatarUrl | string | -max 400000 chars |
phone | string | -max 20 chars |
country | string | -max 2 chars |
timezone | string | -max 50 chars |
taxId | string | -max 64 chars |
taxCountry | string | -max 2 chars |
payoutMethod | string | - |
payoutCryptoToken | string | -max 20 chars |
payoutCryptoNetwork | string | -max 40 chars |
payoutCryptoAddress | string | -max 120 chars |
payoutWireDetails | string | -max 2000 chars |
emailNotificationsOptOut | boolean | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as AccountProfile, 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.
Get one headline figure per workspace
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Counts for the post-login hub. A figure that cannot be computed is null, never a guess.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
traderequireddata.trade | number | null | - |
switchrequireddata.switch | number | null | - |
outboundrequireddata.outbound | number | null | - |
revenue-numbersrequireddata.revenue-numbers | number | null | - |
numbers-storerequireddata.numbers-store | number | null | - |
developersrequireddata.developers | number | null | - |
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 which walkthrough steps the account has completed
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Each key is a step signal derived from real data (a route exists, a call was made), true or false.
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. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Request an email address change
POST/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 100 requests per second (the default)
Needs the current password. Sends a confirmation link to the new address; the address changes only when it is confirmed. The old address is told.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
newEmailrequired | string (email) | -max 255 chars |
currentPasswordrequired | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
emailrequireddata.email | string (email) | - |
contactNamerequireddata.contactName | string | - |
companyNamerequireddata.companyName | string | null | - |
jobTitlerequireddata.jobTitle | string | null | - |
phonerequireddata.phone | string | null | - |
countryrequireddata.country | string | null | ISO-3166-1 alpha-2 |
timezonerequireddata.timezone | string | - |
companyLogoUrlrequireddata.companyLogoUrl | string | null | - |
avatarUrlrequireddata.avatarUrl | string | null | - |
rolerequireddata.role | string | -One of user, admin |
statusrequireddata.status | string | -One of active, suspended |
accountKindrequireddata.accountKind | string | - |
balancerequireddata.balance | money | USD as a decimal string with exactly 6 places, e.g. "0.012500". |
testCreditrequireddata.testCredit | money | Sandbox credit, spendable only by test API keys USD as a decimal string with exactly 6 places, e.g. "0.012500". |
emailVerifiedAtrequireddata.emailVerifiedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
pendingEmailrequireddata.pendingEmail | string | null | An address change waiting for confirmation |
verificationStatusrequireddata.verificationStatus | string | -One of unverified, verified |
kycStatusrequireddata.kycStatus | string | -One of not_started, pending, verified, rejected |
totpEnabledrequireddata.totpEnabled | boolean | Two-factor authentication is on |
taxIdrequireddata.taxId | string | null | - |
taxCountryrequireddata.taxCountry | string | null | - |
payoutMethodrequireddata.payoutMethod | string | null | - |
onboardingGoalrequireddata.onboardingGoal | string | null | - |
onboardingDismissedrequireddata.onboardingDismissed | boolean | - |
onboardingSeenrequireddata.onboardingSeen | boolean | - |
emailNotificationsOptOutrequireddata.emailNotificationsOptOut | boolean | - |
switchStatusrequireddata.switchStatus | string | -One of none, active, past_due, canceled, comp |
createdAtrequireddata.createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
updatedAtrequireddata.updatedAt | string (date-time) | ISO-8601 timestamp (UTC) |
pendingVerificationrequireddata.pendingVerification | 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. - 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.
Confirm an email change from a signed-in session
POST/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 100 requests per second (the default)
Same effect as the public POST /auth/confirm-email-change, which is what the emailed link uses.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
tokenrequired | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
emailrequireddata.email | string (email) | - |
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 recent security activity
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
The latest 50 security events on the account (sign-ins, password and key changes), newest first.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
typerequireddata[].type | string | e.g. login, password_change, api_key_created, session_revoked |
iprequireddata[].ip | string | null | - |
userAgentrequireddata[].userAgent | string | null | - |
metarequireddata[].meta | object | null | - |
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.
Export all your account data
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
A data-protection export of everything held about the account. JSON by default (served as an attachment); format=xlsx returns a workbook with one sheet per dataset.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
format | query | string | -One of json, xlsx, excel |
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. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Close your account
POST/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 100 requests per second (the default)
Needs the password (and a 2FA code when 2FA is on). Personal data is anonymised; financial records are kept. A balance under the payout minimum can only be closed by opting in to forfeitBalance and echoing the exact forfeitAmountUsd from GET /account/close/preview.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
passwordrequired | string | - |
code | string | - |
forfeitBalance | boolean | - |
confirmForfeitAmountUsd | number | 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. - 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.
Preview what closing the account would take
GET/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 100 requests per second (the default)
What is withdrawable, held or would be forfeited, and whether the account can be closed now.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
balanceUsdrequireddata.balanceUsd | string | USD, 2-decimal string |
heldUsdrequireddata.heldUsd | string | Held back because it came from a recent card top-up |
withdrawableUsdrequireddata.withdrawableUsd | string | - |
minWithdrawalUsdrequireddata.minWithdrawalUsd | number | - |
pendingPayoutsrequireddata.pendingPayouts | integer | - |
revshareEarningsUsdrequireddata.revshareEarningsUsd | string | - |
pendingRevsharePayoutsrequireddata.pendingRevsharePayouts | integer | - |
canCloseNowrequireddata.canCloseNow | boolean | - |
canWithdrawrequireddata.canWithdraw | boolean | - |
revshareCanWithdrawrequireddata.revshareCanWithdraw | boolean | - |
forfeitRequiredrequireddata.forfeitRequired | boolean | The only way out is to give up an amount stuck under the payout minimum |
forfeitBalanceUsdrequireddata.forfeitBalanceUsd | string | null | - |
forfeitRevshareUsdrequireddata.forfeitRevshareUsd | string | null | - |
forfeitAmountUsdrequireddata.forfeitAmountUsd | string | null | Echo this exact figure as confirmForfeitAmountUsd to close with a forfeit |
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. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Save your onboarding goal
POST/
- Access
- API key. Scoped keys need
account:write. - Rate limit
- 100 requests per second (the default)
Records the first-run goal, or marks the welcome wizard seen or dismissed.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
goal | string | -One of buyer, seller, developer, reseller |
dismissed | boolean | - |
seen | boolean | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as AccountProfile, 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.
Get your balance and test credit
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
balancerequireddata.balance | money | USD as a decimal string with exactly 6 places, e.g. "0.012500". |
testCreditrequireddata.testCredit | money | USD as a decimal string with exactly 6 places, e.g. "0.012500". |
totalrequireddata.total | money | balance + testCredit USD as a decimal string with exactly 6 places, e.g. "0.012500". |
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 Switch plan and trial status
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Works without a Switch plan: this is how an account finds out it has none.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
activerequireddata.active | boolean | May this account use the Switch right now |
statusrequireddata.status | string | -One of none, active, past_due, canceled, comp |
accessUntilrequireddata.accessUntil | string (date-time) | null | ISO-8601 timestamp (UTC) |
comprequireddata.comp | boolean | - |
nodeNftrequireddata.nodeNft | boolean | Access comes from a held Switch Node NFT |
priceUsdrequireddata.priceUsd | number | Monthly plan price in USD (a number, not a ledger amount) |
planrequireddata.plan | string | - |
purchasablePlansrequireddata.purchasablePlans | string[] | -One of starter, essentials, standard, growth, carrier |
onTrialrequireddata.onTrial | boolean | - |
trialEndsAtrequireddata.trialEndsAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
trialEligiblerequireddata.trialEligible | boolean | - |
trialDaysrequireddata.trialDays | integer | - |
trialApplicationrequireddata.trialApplication | object | null | - |
idrequireddata.trialApplication.id | string (uuid) | - |
statusrequireddata.trialApplication.status | string | -One of pending, approved, declined |
desiredPlanrequireddata.trialApplication.desiredPlan | string | - |
submittedAtrequireddata.trialApplication.submittedAt | string (date-time) | ISO-8601 timestamp (UTC) |
reviewedAtrequireddata.trialApplication.reviewedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
firstChargeDeferredTorequireddata.firstChargeDeferredTo | string (date-time) | null | ISO-8601 timestamp (UTC) |
cancelAtrequireddata.cancelAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
manageablerequireddata.manageable | boolean | Has a card subscription that the billing portal can manage |
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.
Start a Switch subscription checkout
POST/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 10 requests per 5 minutes
- Moves money
- Starts a paid Switch subscription checkout.
Returns a card checkout url to open, and when the first charge falls. Answers { alreadyActive: true } when the account already has the Switch, or { alreadySubscribed: true } when a subscription exists that our record had not caught up with.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
plan | string | -default "standard"One of starter, essentials, standard, growth, carrier |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
urldata.url | string (uri) | - |
firstChargeAtdata.firstChargeAt | string (date-time) | ISO-8601 timestamp (UTC) |
alreadyActivedata.alreadyActive | boolean | -One of true |
alreadySubscribeddata.alreadySubscribed | 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. - 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. - Also
SWITCH_BILLING_UNCONFIGURED,SWITCH_PRICE_MISMATCH
Get your Switch free-trial application
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Eligibility, the latest application if any, and profile values to prefill the form.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
eligiblerequireddata.eligible | boolean | - |
trialDaysrequireddata.trialDays | integer | - |
hasSwitchrequireddata.hasSwitch | boolean | - |
comprequireddata.comp | boolean | - |
onTrialrequireddata.onTrial | boolean | - |
trialEndsAtrequireddata.trialEndsAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
applicationrequireddata.application | object | null | - |
idrequireddata.application.id | string (uuid) | - |
statusrequireddata.application.status | string | -One of pending, approved, declined |
desiredPlanrequireddata.application.desiredPlan | string | - |
submittedAtrequireddata.application.submittedAt | string (date-time) | ISO-8601 timestamp (UTC) |
reviewedAtrequireddata.application.reviewedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
grantedPlanrequireddata.application.grantedPlan | string | null | - |
trialEndsAtrequireddata.application.trialEndsAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
prefillrequireddata.prefill | object | - |
companyNamerequireddata.prefill.companyName | string | - |
contactNamerequireddata.prefill.contactName | string | - |
countryrequireddata.prefill.country | string | - |
contactPhonerequireddata.prefill.contactPhone | string | - |
contactRolerequireddata.prefill.contactRole | 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.
Apply for a Switch free trial
POST/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 5 requests per 10 minutes
Our team reviews every application by hand. Refused with CONFLICT when the account already has the Switch or an application is pending.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
companyNamerequired | string | -max 255 chars |
companyWebsite | string | null | -max 255 chars |
country | string | null | - |
contactNamerequired | string | -max 255 chars |
contactRole | string | null | -max 120 chars |
contactPhone | string | null | -max 40 chars |
desiredPlanrequired | string | -One of starter, essentials, standard, growth, carrier |
expectedCps | integer | null | -0 to 100000 |
expectedChannels | integer | null | -0 to 10000000 |
expectedMonthlyMinutes | integer | null | -0 to 100000000000 |
trafficProfile | string | null | -max 2000 chars |
currentSetup | string | null | -max 2000 chars |
notes | string | null | -max 4000 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
statusrequireddata.status | string | -One of pending, approved, declined |
submittedAtrequireddata.submittedAt | 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. - 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.
Open the Switch billing portal
POST/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 10 requests per 5 minutes
Returns a URL where the card, cancellation and invoices of the Switch subscription are managed.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
urlrequireddata.url | 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. - Also
SWITCH_NO_SUBSCRIPTION
Start two-factor authentication setup
POST/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 100 requests per second (the default)
Generates a pending secret and an otpauth:// URI for an authenticator app. Nothing changes until POST /account/2fa/enable confirms a code.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
secretrequireddata.secret | string | - |
otpauthUrirequireddata.otpauthUri | 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.
Turn on two-factor authentication
POST/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 100 requests per second (the default)
Confirms a code from the authenticator and returns one-time backup codes, shown only this once.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
coderequired | string | 6-digit authenticator code |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
backupCodesrequireddata.backupCodes | 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.
Turn off two-factor authentication
POST/
- Access
- Dashboard session. API keys are refused with 403. Use a login access token.
- Rate limit
- 100 requests per second (the default)
Request body (application/json)
| Field | Type | Description |
|---|---|---|
code | string | - |
password | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as Message, 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.
Get your spend alert settings
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Defaults (no thresholds, email on) when nothing has been saved.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
lowBalanceThresholdrequireddata.lowBalanceThreshold | string | null | USD, 2-decimal string; null = no low-balance alert |
dailySpendCaprequireddata.dailySpendCap | string | null | USD, 2-decimal string; null = no daily cap alert |
notifyEmailrequireddata.notifyEmail | boolean | - |
updatedAtrequireddata.updatedAt | 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. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Update your spend alert settings
PUT/
- Access
- API key. Scoped keys need
account:write. - Rate limit
- 100 requests per second (the default)
Send at least one field. Thresholds are USD amounts; null removes one.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
lowBalanceThreshold | number | null | -min 0 |
dailySpendCap | number | null | -min 0 |
notifyEmail | boolean | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as AccountSpendAlerts, 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 saved marketplace searches
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
userIdrequireddata[].userId | string (uuid) | - |
namerequireddata[].name | string | - |
filtersrequireddata[].filters | object | Marketplace filter values, as the marketplace query parameters |
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.
Save a marketplace search
POST/
- Access
- API key. Scoped keys need
account:write. - Rate limit
- 100 requests per second (the default)
Up to 50 per account; the 51st is refused with CONFLICT.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
namerequired | string | -max 100 chars |
filtersrequired | object | - |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as AccountSavedSearch, 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.
Delete a saved search
DELETE/
- Access
- API key. Scoped keys need
account:write. - 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) | - |
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 your favorite routes
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Only routes you can still see (public and active, your own, or privately granted).
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
favoriteIdrequireddata[].favoriteId | string (uuid) | - |
favoritedAtrequireddata[].favoritedAt | string (date-time) | ISO-8601 timestamp (UTC) |
idrequireddata[].id | string (uuid) | The route id |
typerequireddata[].type | string | -One of voice, sms |
countryrequireddata[].country | string | - |
destinationNamerequireddata[].destinationName | 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. |
listingRefdata[].listingRef | string | Anonymous short reference of the listing (4 characters, e.g. "7K2Q"): stable for the life of the listing, unique enough to tell two same-named listings apart, and derived from the listing alone (it says nothing about the seller). Absent on your own listings. |
pricePerUnitrequireddata[].pricePerUnit | money | USD per minute (voice) or per message segment (SMS) USD as a decimal string with exactly 6 places, e.g. "0.012500". |
billingIncrementrequireddata[].billingIncrement | string | null | - |
statusrequireddata[].status | string | - |
expectedAsrrequireddata[].expectedAsr | string | null | Seller-stated ASR %, 2-decimal string |
expectedAcdrequireddata[].expectedAcd | string | null | Seller-stated ACD in minutes, 2-decimal string |
dialerCompatiblerequireddata[].dialerCompatible | 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.
Add a route to your favorites
POST/
- Access
- API key. Scoped keys need
account:write. - Rate limit
- 100 requests per second (the default)
Idempotent: favoriting twice is not an error.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
routeIdrequired | string (uuid) | - |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
routeIdrequireddata.routeId | string (uuid) | - |
favoritedrequireddata.favorited | boolean | -One of true |
idrequireddata.id | string (uuid) | null | - |
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.
Remove a route from your favorites
DELETE/
- Access
- API key. Scoped keys need
account:write. - Rate limit
- 100 requests per second (the default)
Idempotent: removing a route that is not a favorite is not an error.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
routeIdrequired | path | string | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
routeIdrequireddata.routeId | string (uuid) | - |
favoritedrequireddata.favorited | boolean | -One of false |
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 your dedicated IP addresses
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Empty, with enabled: false, while dedicated IPs are not offered.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
assignmentIdrequireddata[].assignmentId | string (uuid) | - |
ipIdrequireddata[].ipId | string (uuid) | - |
addressrequireddata[].address | string | - |
rolerequireddata[].role | string | ingress = where you send traffic; egress = where your calls leave fromOne of ingress, egress |
boundBoxrequireddata[].boundBox | string | null | - |
assignedAtrequireddata[].assignedAt | string (date-time) | ISO-8601 timestamp (UTC) |
hintrequireddata[].hint | string | Plain-English instruction for this address |
enabled | 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 SIP interconnect details
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Everything needed to connect: where to send traffic, which addresses our calls leave from, and what is already authorised.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
enableddata.enabled | boolean | - |
myIngressIprequireddata.myIngressIp | string | null | - |
myEgressIprequireddata.myEgressIp | string | null | - |
egressPendingNetworkdata.egressPendingNetwork | boolean | - |
edgeIprequireddata.edgeIp | string | The shared address to send SIP to when you hold no dedicated one |
egressIpsrequireddata.egressIps | string[] | Addresses our calls leave from; whitelist these with your carriers |
rtpPortRangerequireddata.rtpPortRange | string | - |
sipPortrequireddata.sipPort | integer | - |
onPlatformrequireddata.onPlatform | boolean | - |
onPlatformSignalsrequireddata.onPlatformSignals | object | - |
switchOperatorrequireddata.onPlatformSignals.switchOperator | boolean | - |
marketplaceBuyerrequireddata.onPlatformSignals.marketplaceBuyer | boolean | - |
dialerUserrequireddata.onPlatformSignals.dialerUser | boolean | - |
autoAuthorizedrequireddata.autoAuthorized | boolean | - |
manualWhitelistNeededrequireddata.manualWhitelistNeeded | boolean | - |
authorizedIpsrequireddata.authorizedIps | string[] | - |
poolAvailablerequireddata.poolAvailable | integer | - |
egressPoolAvailablerequireddata.egressPoolAvailable | integer | - |
egressAvailablerequireddata.egressAvailable | boolean | - |
sipUsernamerequireddata.sipUsername | string | null | - |
hasSipPasswordrequireddata.hasSipPassword | boolean | - |
enabled | 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 connectivity brief
GET/
- Access
- API key. Scoped keys need
account:read. - Rate limit
- 100 requests per second (the default)
Where to send traffic, what to whitelist and how you are recognised, including per-purchase destinations, in plain language.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
dedicatedIpsEnabledrequireddata.dedicatedIpsEnabled | boolean | - |
myAddressrequireddata.myAddress | string | null | - |
myAddressSummaryrequireddata.myAddressSummary | string | - |
sendTorequireddata.sendTo | string | Where to send your SIP traffic |
sendToPortrequireddata.sendToPort | integer | - |
sendToSummaryrequireddata.sendToSummary | string | - |
egressModerequireddata.egressMode | string | -One of dedicated, shared |
egressAddressesrequireddata.egressAddresses | string[] | - |
egressSummaryrequireddata.egressSummary | string | - |
authMethodsrequireddata.authMethods | string[] | -One of ip, digest |
authSummaryrequireddata.authSummary | string | - |
authorizedSourceIpsrequireddata.authorizedSourceIps | string[] | - |
purchasedRoutesrequireddata.purchasedRoutes | object[] | - |
purchaseIdrequireddata.purchasedRoutes[].purchaseId | string (uuid) | - |
routeIdrequireddata.purchasedRoutes[].routeId | string (uuid) | - |
routeNamerequireddata.purchasedRoutes[].routeName | string | null | - |
destinationrequireddata.purchasedRoutes[].destination | string | null | - |
typerequireddata.purchasedRoutes[].type | string | - |
statusrequireddata.purchasedRoutes[].status | string | - |
sendTorequireddata.purchasedRoutes[].sendTo | string | - |
sendToPortrequireddata.purchasedRoutes[].sendToPort | integer | - |
sipUsernamerequireddata.purchasedRoutes[].sipUsername | string | null | - |
rtpPortRangerequireddata.rtpPortRange | string | - |
codecsrequireddata.codecs | string[] | - |
autoAuthorizedrequireddata.autoAuthorized | boolean | - |
manualWhitelistNeededrequireddata.manualWhitelistNeeded | 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.
Take a dedicated ingress IP
POST/
- Access
- API key. Scoped keys need
account:write. - Rate limit
- 100 requests per second (the default)
- Moves money
- Takes a dedicated IP address.
Idempotent: when you already hold one it is returned with created: false and nothing is charged. Answers 201 when a new address was assigned.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
assignmentIdrequireddata.assignmentId | string (uuid) | - |
ipIdrequireddata.ipId | string (uuid) | - |
addressrequireddata.address | string | - |
rolerequireddata.role | string | ingress = where you send traffic; egress = where your calls leave fromOne of ingress, egress |
boundBoxrequireddata.boundBox | string | null | - |
assignedAtrequireddata.assignedAt | string (date-time) | ISO-8601 timestamp (UTC) |
hintrequireddata.hint | string | Plain-English instruction for this address |
createdrequireddata.created | boolean | False when you already held one (idempotent replay) |
monthlyPriceUsdrequireddata.monthlyPriceUsd | number | Monthly premium in USD (a number) |
chargedrequireddata.charged | number | USD booked by THIS call; 0 on a replay |
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.
Take a dedicated egress IP
POST/
- Access
- API key. Scoped keys need
account:write. - Rate limit
- 100 requests per second (the default)
- Moves money
- Takes a dedicated IP address.
Idempotent like the ingress version. Refused with VALIDATION_ERROR while dedicated sending addresses are not available.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as AccountActivatedIp, 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.
Release a dedicated IP
POST/
- Access
- API key. Scoped keys need
account:write. - Rate limit
- 100 requests per second (the default)
Hands the address back to the pool. id is the assignment id or IP id from the list.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
releasedrequireddata.released | boolean | -One of true |
addressrequireddata.address | string | - |
ipIdrequireddata.ipId | 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. - 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.