API reference
Account
Your profile, balance, preferences, team and account-level settings.
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
datarequiredobject
idrequiredstring (uuid) · data.id
emailrequiredstring (email) · data.email
contactNamerequiredstring · data.contactName
companyNamerequiredstring | null · data.companyName
jobTitlerequiredstring | null · data.jobTitle
phonerequiredstring | null · data.phone
countryrequiredstring | null · data.country
ISO-3166-1 alpha-2timezonerequiredstring · data.timezone
companyLogoUrlrequiredstring | null · data.companyLogoUrl
avatarUrlrequiredstring | null · data.avatarUrl
rolerequiredstring · data.role
One ofuser,adminstatusrequiredstring · data.status
One ofactive,suspendedaccountKindrequiredstring · data.accountKind
balancerequiredmoney · data.balance
USD as a decimal string with exactly 6 places, e.g. "0.012500".testCreditrequiredmoney · data.testCredit
Sandbox credit, spendable only by test API keys USD as a decimal string with exactly 6 places, e.g. "0.012500".emailVerifiedAtrequiredstring (date-time) | null · data.emailVerifiedAt
ISO-8601 timestamp (UTC)pendingEmailrequiredstring | null · data.pendingEmail
An address change waiting for confirmationverificationStatusrequiredstring · data.verificationStatus
One ofunverified,verifiedkycStatusrequiredstring · data.kycStatus
One ofnot_started,pending,verified,rejectedtotpEnabledrequiredboolean · data.totpEnabled
Two-factor authentication is ontaxIdrequiredstring | null · data.taxId
taxCountryrequiredstring | null · data.taxCountry
payoutMethodrequiredstring | null · data.payoutMethod
onboardingGoalrequiredstring | null · data.onboardingGoal
onboardingDismissedrequiredboolean · data.onboardingDismissed
onboardingSeenrequiredboolean · data.onboardingSeen
emailNotificationsOptOutrequiredboolean · data.emailNotificationsOptOut
switchStatusrequiredstring · data.switchStatus
One ofnone,active,past_due,canceled,compcreatedAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
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)
companyNamestring
max 255 charscontactNamestring
max 255 charscompanyLogoUrlstring
max 400000 charsjobTitlestring
max 120 charsavatarUrlstring
max 400000 charsphonestring
max 20 charscountrystring
max 2 charstimezonestring
max 50 charstaxIdstring
max 64 charstaxCountrystring
max 2 charspayoutMethodstring
payoutCryptoTokenstring
max 20 charspayoutCryptoNetworkstring
max 40 charspayoutCryptoAddressstring
max 120 charspayoutWireDetailsstring
max 2000 charsemailNotificationsOptOutboolean
Response 200
datarequiredobject
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
datarequiredobject
traderequirednumber | null · data.trade
switchrequirednumber | null · data.switch
outboundrequirednumber | null · data.outbound
revenue-numbersrequirednumber | null · data.revenue-numbers
numbers-storerequirednumber | null · data.numbers-store
developersrequirednumber | null · data.developers
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
datarequiredobject
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)
newEmailrequiredstring (email)
max 255 charscurrentPasswordrequiredstring
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
emailrequiredstring (email) · data.email
contactNamerequiredstring · data.contactName
companyNamerequiredstring | null · data.companyName
jobTitlerequiredstring | null · data.jobTitle
phonerequiredstring | null · data.phone
countryrequiredstring | null · data.country
ISO-3166-1 alpha-2timezonerequiredstring · data.timezone
companyLogoUrlrequiredstring | null · data.companyLogoUrl
avatarUrlrequiredstring | null · data.avatarUrl
rolerequiredstring · data.role
One ofuser,adminstatusrequiredstring · data.status
One ofactive,suspendedaccountKindrequiredstring · data.accountKind
balancerequiredmoney · data.balance
USD as a decimal string with exactly 6 places, e.g. "0.012500".testCreditrequiredmoney · data.testCredit
Sandbox credit, spendable only by test API keys USD as a decimal string with exactly 6 places, e.g. "0.012500".emailVerifiedAtrequiredstring (date-time) | null · data.emailVerifiedAt
ISO-8601 timestamp (UTC)pendingEmailrequiredstring | null · data.pendingEmail
An address change waiting for confirmationverificationStatusrequiredstring · data.verificationStatus
One ofunverified,verifiedkycStatusrequiredstring · data.kycStatus
One ofnot_started,pending,verified,rejectedtotpEnabledrequiredboolean · data.totpEnabled
Two-factor authentication is ontaxIdrequiredstring | null · data.taxId
taxCountryrequiredstring | null · data.taxCountry
payoutMethodrequiredstring | null · data.payoutMethod
onboardingGoalrequiredstring | null · data.onboardingGoal
onboardingDismissedrequiredboolean · data.onboardingDismissed
onboardingSeenrequiredboolean · data.onboardingSeen
emailNotificationsOptOutrequiredboolean · data.emailNotificationsOptOut
switchStatusrequiredstring · data.switchStatus
One ofnone,active,past_due,canceled,compcreatedAtrequiredstring (date-time) · data.createdAt
ISO-8601 timestamp (UTC)updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)pendingVerificationrequiredboolean · data.pendingVerification
One oftrue
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)
tokenrequiredstring
Response 200
datarequiredobject
emailrequiredstring (email) · data.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
datarequiredobject[]
idrequiredstring (uuid) · data[].id
typerequiredstring · data[].type
e.g. login, password_change, api_key_created, session_revokediprequiredstring | null · data[].ip
userAgentrequiredstring | null · data[].userAgent
metarequiredobject | null · data[].meta
createdAtrequiredstring (date-time) · data[].createdAt
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
formatquery · string
One of json, xlsx, excel
Response 200
datarequiredobject
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)
passwordrequiredstring
codestring
forfeitBalanceboolean
confirmForfeitAmountUsdnumber | string
Response 200
datarequiredobject
messagerequiredstring · data.message
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
datarequiredobject
balanceUsdrequiredstring · data.balanceUsd
USD, 2-decimal stringheldUsdrequiredstring · data.heldUsd
Held back because it came from a recent card top-upwithdrawableUsdrequiredstring · data.withdrawableUsd
minWithdrawalUsdrequirednumber · data.minWithdrawalUsd
pendingPayoutsrequiredinteger · data.pendingPayouts
revshareEarningsUsdrequiredstring · data.revshareEarningsUsd
pendingRevsharePayoutsrequiredinteger · data.pendingRevsharePayouts
canCloseNowrequiredboolean · data.canCloseNow
canWithdrawrequiredboolean · data.canWithdraw
revshareCanWithdrawrequiredboolean · data.revshareCanWithdraw
forfeitRequiredrequiredboolean · data.forfeitRequired
The only way out is to give up an amount stuck under the payout minimumforfeitBalanceUsdrequiredstring | null · data.forfeitBalanceUsd
forfeitRevshareUsdrequiredstring | null · data.forfeitRevshareUsd
forfeitAmountUsdrequiredstring | null · data.forfeitAmountUsd
Echo this exact figure as confirmForfeitAmountUsd to close with a forfeitmessagerequiredstring · data.message
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)
goalstring
One ofbuyer,seller,developer,resellerdismissedboolean
seenboolean
Response 200
datarequiredobject
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
datarequiredobject
balancerequiredmoney · data.balance
USD as a decimal string with exactly 6 places, e.g. "0.012500".testCreditrequiredmoney · data.testCredit
USD as a decimal string with exactly 6 places, e.g. "0.012500".totalrequiredmoney · data.total
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
datarequiredobject
activerequiredboolean · data.active
May this account use the Switch right nowstatusrequiredstring · data.status
One ofnone,active,past_due,canceled,compaccessUntilrequiredstring (date-time) | null · data.accessUntil
ISO-8601 timestamp (UTC)comprequiredboolean · data.comp
nodeNftrequiredboolean · data.nodeNft
Access comes from a held Switch Node NFTpriceUsdrequirednumber · data.priceUsd
Monthly plan price in USD (a number, not a ledger amount)planrequiredstring · data.plan
purchasablePlansrequiredstring[] · data.purchasablePlans
One ofstarter,essentials,standard,growth,carrieronTrialrequiredboolean · data.onTrial
trialEndsAtrequiredstring (date-time) | null · data.trialEndsAt
ISO-8601 timestamp (UTC)trialEligiblerequiredboolean · data.trialEligible
trialDaysrequiredinteger · data.trialDays
trialApplicationrequiredobject | null · data.trialApplication
idrequiredstring (uuid) · data.trialApplication.id
statusrequiredstring · data.trialApplication.status
One ofpending,approved,declineddesiredPlanrequiredstring · data.trialApplication.desiredPlan
submittedAtrequiredstring (date-time) · data.trialApplication.submittedAt
ISO-8601 timestamp (UTC)reviewedAtrequiredstring (date-time) | null · data.trialApplication.reviewedAt
ISO-8601 timestamp (UTC)firstChargeDeferredTorequiredstring (date-time) | null · data.firstChargeDeferredTo
ISO-8601 timestamp (UTC)cancelAtrequiredstring (date-time) | null · data.cancelAt
ISO-8601 timestamp (UTC)manageablerequiredboolean · data.manageable
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)
planstring
default "standard"One ofstarter,essentials,standard,growth,carrier
Response 200
datarequiredobject
urlstring (uri) · data.url
firstChargeAtstring (date-time) · data.firstChargeAt
ISO-8601 timestamp (UTC)alreadyActiveboolean · data.alreadyActive
One oftruealreadySubscribedboolean · data.alreadySubscribed
One oftrue
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
datarequiredobject
eligiblerequiredboolean · data.eligible
trialDaysrequiredinteger · data.trialDays
hasSwitchrequiredboolean · data.hasSwitch
comprequiredboolean · data.comp
onTrialrequiredboolean · data.onTrial
trialEndsAtrequiredstring (date-time) | null · data.trialEndsAt
ISO-8601 timestamp (UTC)applicationrequiredobject | null · data.application
idrequiredstring (uuid) · data.application.id
statusrequiredstring · data.application.status
One ofpending,approved,declineddesiredPlanrequiredstring · data.application.desiredPlan
submittedAtrequiredstring (date-time) · data.application.submittedAt
ISO-8601 timestamp (UTC)reviewedAtrequiredstring (date-time) | null · data.application.reviewedAt
ISO-8601 timestamp (UTC)grantedPlanrequiredstring | null · data.application.grantedPlan
trialEndsAtrequiredstring (date-time) | null · data.application.trialEndsAt
ISO-8601 timestamp (UTC)prefillrequiredobject · data.prefill
companyNamerequiredstring · data.prefill.companyName
contactNamerequiredstring · data.prefill.contactName
countryrequiredstring · data.prefill.country
contactPhonerequiredstring · data.prefill.contactPhone
contactRolerequiredstring · data.prefill.contactRole
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)
companyNamerequiredstring
max 255 charscompanyWebsitestring | null
max 255 charscountrystring | null
contactNamerequiredstring
max 255 charscontactRolestring | null
max 120 charscontactPhonestring | null
max 40 charsdesiredPlanrequiredstring
One ofstarter,essentials,standard,growth,carrierexpectedCpsinteger | null
0 to 100000expectedChannelsinteger | null
0 to 10000000expectedMonthlyMinutesinteger | null
0 to 100000000000trafficProfilestring | null
max 2000 charscurrentSetupstring | null
max 2000 charsnotesstring | null
max 4000 chars
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
statusrequiredstring · data.status
One ofpending,approved,declinedsubmittedAtrequiredstring (date-time) · data.submittedAt
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
datarequiredobject
urlrequiredstring (uri) · data.url
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
datarequiredobject
secretrequiredstring · data.secret
otpauthUrirequiredstring · data.otpauthUri
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)
coderequiredstring
6-digit authenticator code
Response 200
datarequiredobject
backupCodesrequiredstring[] · data.backupCodes
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)
codestring
passwordstring
Response 200
datarequiredobject
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
datarequiredobject
lowBalanceThresholdrequiredstring | null · data.lowBalanceThreshold
USD, 2-decimal string; null = no low-balance alertdailySpendCaprequiredstring | null · data.dailySpendCap
USD, 2-decimal string; null = no daily cap alertnotifyEmailrequiredboolean · data.notifyEmail
updatedAtrequiredstring (date-time) | null · data.updatedAt
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)
lowBalanceThresholdnumber | null
min 0dailySpendCapnumber | null
min 0notifyEmailboolean
Response 200
datarequiredobject
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
datarequiredobject[]
idrequiredstring (uuid) · data[].id
userIdrequiredstring (uuid) · data[].userId
namerequiredstring · data[].name
filtersrequiredobject · data[].filters
Marketplace filter values, as the marketplace query parameterscreatedAtrequiredstring (date-time) · data[].createdAt
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)
namerequiredstring
max 100 charsfiltersrequiredobject
Response 201
datarequiredobject
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
idrequiredpath · string
Response 200
datarequiredobject
idrequiredstring (uuid) · data.id
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
datarequiredobject[]
favoriteIdrequiredstring (uuid) · data[].favoriteId
favoritedAtrequiredstring (date-time) · data[].favoritedAt
ISO-8601 timestamp (UTC)idrequiredstring (uuid) · data[].id
The route idtyperequiredstring · data[].type
One ofvoice,smscountryrequiredstring · data[].country
destinationNamerequiredstring · data[].destinationName
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.listingRefstring · data[].listingRef
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.pricePerUnitrequiredmoney · data[].pricePerUnit
USD per minute (voice) or per message segment (SMS) USD as a decimal string with exactly 6 places, e.g. "0.012500".billingIncrementrequiredstring | null · data[].billingIncrement
statusrequiredstring · data[].status
expectedAsrrequiredstring | null · data[].expectedAsr
Seller-stated ASR %, 2-decimal stringexpectedAcdrequiredstring | null · data[].expectedAcd
Seller-stated ACD in minutes, 2-decimal stringdialerCompatiblerequiredboolean · data[].dialerCompatible
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)
routeIdrequiredstring (uuid)
Response 201
datarequiredobject
routeIdrequiredstring (uuid) · data.routeId
favoritedrequiredboolean · data.favorited
One oftrueidrequiredstring (uuid) | null · data.id
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
routeIdrequiredpath · string
Response 200
datarequiredobject
routeIdrequiredstring (uuid) · data.routeId
favoritedrequiredboolean · data.favorited
One offalse
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
datarequiredobject[]
assignmentIdrequiredstring (uuid) · data[].assignmentId
ipIdrequiredstring (uuid) · data[].ipId
addressrequiredstring · data[].address
rolerequiredstring · data[].role
ingress = where you send traffic; egress = where your calls leave fromOne ofingress,egressboundBoxrequiredstring | null · data[].boundBox
assignedAtrequiredstring (date-time) · data[].assignedAt
ISO-8601 timestamp (UTC)hintrequiredstring · data[].hint
Plain-English instruction for this addressenabledboolean
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
datarequiredobject
enabledboolean · data.enabled
myIngressIprequiredstring | null · data.myIngressIp
myEgressIprequiredstring | null · data.myEgressIp
egressPendingNetworkboolean · data.egressPendingNetwork
edgeIprequiredstring · data.edgeIp
The shared address to send SIP to when you hold no dedicated oneegressIpsrequiredstring[] · data.egressIps
Addresses our calls leave from; whitelist these with your carriersrtpPortRangerequiredstring · data.rtpPortRange
sipPortrequiredinteger · data.sipPort
onPlatformrequiredboolean · data.onPlatform
onPlatformSignalsrequiredobject · data.onPlatformSignals
switchOperatorrequiredboolean · data.onPlatformSignals.switchOperator
marketplaceBuyerrequiredboolean · data.onPlatformSignals.marketplaceBuyer
dialerUserrequiredboolean · data.onPlatformSignals.dialerUser
autoAuthorizedrequiredboolean · data.autoAuthorized
manualWhitelistNeededrequiredboolean · data.manualWhitelistNeeded
authorizedIpsrequiredstring[] · data.authorizedIps
poolAvailablerequiredinteger · data.poolAvailable
egressPoolAvailablerequiredinteger · data.egressPoolAvailable
egressAvailablerequiredboolean · data.egressAvailable
sipUsernamerequiredstring | null · data.sipUsername
hasSipPasswordrequiredboolean · data.hasSipPassword
enabledboolean
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
datarequiredobject
dedicatedIpsEnabledrequiredboolean · data.dedicatedIpsEnabled
myAddressrequiredstring | null · data.myAddress
myAddressSummaryrequiredstring · data.myAddressSummary
sendTorequiredstring · data.sendTo
Where to send your SIP trafficsendToPortrequiredinteger · data.sendToPort
sendToSummaryrequiredstring · data.sendToSummary
egressModerequiredstring · data.egressMode
One ofdedicated,sharedegressAddressesrequiredstring[] · data.egressAddresses
egressSummaryrequiredstring · data.egressSummary
authMethodsrequiredstring[] · data.authMethods
One ofip,digestauthSummaryrequiredstring · data.authSummary
authorizedSourceIpsrequiredstring[] · data.authorizedSourceIps
purchasedRoutesrequiredobject[] · data.purchasedRoutes
purchaseIdrequiredstring (uuid) · data.purchasedRoutes[].purchaseId
routeIdrequiredstring (uuid) · data.purchasedRoutes[].routeId
routeNamerequiredstring | null · data.purchasedRoutes[].routeName
destinationrequiredstring | null · data.purchasedRoutes[].destination
typerequiredstring · data.purchasedRoutes[].type
statusrequiredstring · data.purchasedRoutes[].status
sendTorequiredstring · data.purchasedRoutes[].sendTo
sendToPortrequiredinteger · data.purchasedRoutes[].sendToPort
sipUsernamerequiredstring | null · data.purchasedRoutes[].sipUsername
rtpPortRangerequiredstring · data.rtpPortRange
codecsrequiredstring[] · data.codecs
autoAuthorizedrequiredboolean · data.autoAuthorized
manualWhitelistNeededrequiredboolean · data.manualWhitelistNeeded
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
datarequiredobject
assignmentIdrequiredstring (uuid) · data.assignmentId
ipIdrequiredstring (uuid) · data.ipId
addressrequiredstring · data.address
rolerequiredstring · data.role
ingress = where you send traffic; egress = where your calls leave fromOne ofingress,egressboundBoxrequiredstring | null · data.boundBox
assignedAtrequiredstring (date-time) · data.assignedAt
ISO-8601 timestamp (UTC)hintrequiredstring · data.hint
Plain-English instruction for this addresscreatedrequiredboolean · data.created
False when you already held one (idempotent replay)monthlyPriceUsdrequirednumber · data.monthlyPriceUsd
Monthly premium in USD (a number)chargedrequirednumber · data.charged
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
datarequiredobject
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
idrequiredpath · string (uuid)
Response 200
datarequiredobject
releasedrequiredboolean · data.released
One oftrueaddressrequiredstring · data.address
ipIdrequiredstring (uuid) · data.ipId
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.