Send Your First Request
Your first request reads the balance of one of your accounts. It is read-only, changes nothing, and exercises the complete request-signing flow.
Before you begin
API key and signing credentials
With the
Internal transfersorPartner transfersscope. See API key and host setup.API host
Provided during onboarding. The path below is relative to that host.
Request signing
Every request carries the signed
EXN-*headers described in Request signing. A complete signing helper is available in Code Examples.An account number
Use one of your wallets (Personal Area → Payments & wallet) or trading accounts on the Exness platform (Personal Area → Trading → Accounts). Partners can use their Reward Wallet number (Partner Personal Area → Wallet accounts). Send the account number as a string, exactly as shown.
Example requests
GET /v1/accounts/{account_id}/balance
The example below is structural: replace the placeholders in angle brackets with your values. For a runnable implementation, see Read a balance in Code Examples.
GET /v1/accounts/8066808/balance HTTP/1.1
EXN-API-KEY: <your API key>
EXN-IDEMPOTENCY-KEY:
EXN-TIMESTAMP: <current Unix time in milliseconds>
EXN-SIGN-VERSION: 1
EXN-DATA: <base64url-encoded signed payload>
EXN-SIGN: <base64url-encoded signature>
EXN-IDEMPOTENCY-KEYis present with an empty value, and the signedidempotency_keyfield is an empty string.- The request has no body, so the signed
body_hashis the SHA-256 hash of the empty string:47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU. - The signed
pathis/v1/accounts/8066808/balance, exactly as sent.
What to expect in return
HTTP 200 with the account balance:
{
"account_id": "8066808",
"balance": "1000.00",
"currency": "USD"
}
balance is the amount available for transfers from the account, as a non-negative decimal string in the account currency.
A 200 response proves that your API key is active, your key has access to the account, and your request signature is correct. To create transfers and track their status, continue with Create and Track a Transfer.
Troubleshooting common errors
| HTTP | code | error_message | What to do |
|---|---|---|---|
| 401 | 1000 | AUTH_INVALID_API_KEY | The API key is invalid or inactive. Check the EXN-API-KEY header and the signed api_key field. |
| 401 | 1001 | AUTH_INVALID_SIGNATURE | Rebuild the signed payload: check the method, the signed path, body_hash, the timestamp in milliseconds, and base64url encoding without padding. |
| 403 | 1002 | AUTH_PERMISSION_DENIED | Check that your key has a Payments scope and that your source IP is allowed for the key. |
| 404 | 2000 | ACCOUNT_NOT_FOUND | The account does not exist or is not available to your API key. Check the account number. |
| 400 | 3000 | REQUEST_INVALID | The request structure is invalid. Fix it and send the request again. |
| 422 | 3001 | REQUEST_INVALID_PARAMETERS | The account number did not pass validation. Send it as a string, exactly as shown in your Personal Area. |
For all error codes, see Troubleshooting Your API Requests.