Sandbox
Help

Revolut X Crypto Exchange REST API1.0.0

You can use the Revolut X REST API to streamline your trading experience.

This page covers:

  • Getting started — the base URL, and the difference between public and authenticated endpoints.
  • API key — generating an Ed25519 key pair and creating your API key.
  • Authentication headers — signing an authenticated request.
  • Trade with the CLI and AI assistants — installing the CLI to trade from your terminal or from an AI assistant.

Getting started

Base URL for all endpoints: https://revx.revolut.com/api/

The API has two types of endpoints:

  • Public endpoints include /public/ in their path and require no authentication. Use them to retrieve market data and exchange configuration.
  • Authenticated endpoints cover your account data and trading operations. Every request to them must include your API key and a signature.

Because public endpoints need no credentials, you can try one straight away:

curl -X GET "https://revx.revolut.com/api/2.0/public/order-book/BTC-USD"

API key

To get started using the authenticated endpoints, you need an API key to include with your requests. To create it, follow the instructions below.

Generate an Ed25519 key pair

Before creating your API key in the Revolut X web app, you must first generate an Ed25519 key pair.

An Ed25519 key pair consists of a private key and a public key. The private key is kept secret and used for signing data or authenticating, while the public key can be shared to verify signatures and authenticate access.

You can generate this pair using openssl.

1. Generate the private key

Run the following command in your terminal:

openssl genpkey -algorithm ed25519 -out private.pem

This command generates a file named private.pem, which contains your private key. It has the following structure:

-----BEGIN PRIVATE KEY-----
{YOUR BASE64-ENCODED PRIVATE KEY}
-----END PRIVATE KEY-----
IMPORTANT: Secure your private key

This is your private key, and it will be used for signing requests. Your private key is a secret. Never share it with anyone and never send it as a part of any request.

2. Generate the public key

Next, generate the public key from your private key:

openssl pkey -in private.pem -pubout -out public.pem

This command generates a file named public.pem with your public key. It has the following structure:

-----BEGIN PUBLIC KEY-----
{YOUR BASE64-ENCODED PUBLIC KEY}
-----END PUBLIC KEY-----
About your public key

This is your public key. It is not secret, and it is safe to share. You will provide this key to Revolut X so we can verify the requests signed with your matching private key.

When you provide it, make sure that you copy all of it, including the -----BEGIN KEY----- and -----END KEY----- lines.

Create your API key

Once you have your public key (the content of public.pem), you are ready to create your API key.

Go to the API keys page in the Revolut X web app to complete the setup.


Authentication headers

This API uses a custom authentication scheme based on Ed25519 signatures. Every request to an authenticated endpoint must include the following headers:

HeaderDescription
X-Revx-API-KeyYour API key (64-character alphanumeric string).
X-Revx-TimestampThe Unix timestamp of the request, provided in milliseconds.
X-Revx-SignatureThe request digest string signed with your private key.

Signing a request

To generate the X-Revx-Signature, you must sign a specific string constructed from your request data.

1. Construct the message string

The string to sign is a concatenation of the following values, in this specific order:

  1. Timestamp: Same value as the X-Revx-Timestamp header.
  2. HTTP Method: Uppercase (e.g., GET, POST).
  3. Request Path: The path starting from /api (e.g., /api/1.0/orders/active).
  4. Query String: The URL query string if present (e.g., limit=10). Do not include the ?.
  5. Request Body: The minified JSON body string, if present.

When concatenating, do not add any separators (spaces, newlines, or commas) between the fields.

Example Message:

1765360896219POST/api/1.0/orders{"client_order_id":"3b364427-1f4f-4f66-9935-86b6fb115d26","symbol":"BTC-USD","side":"BUY","order_configuration":{"limit":{"base_size":"0.1","price":"90000.1"}}}
2. Sign the message
  1. Sign the constructed string using your Ed25519 private key.
  2. Base64-encode the resulting signature.
  3. Send this value in the X-Revx-Signature header.

Code Examples

Python Example
import base64
from pathlib import Path
from nacl.signing import SigningKey
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend

# 1. Load your Private Key
pem_data = Path("private.pem").read_bytes()
private_key_obj = serialization.load_pem_private_key(
    pem_data,
    password=None,
    backend=default_backend()
)

# Extract raw bytes for PyNaCl
raw_private = private_key_obj.private_bytes(
    encoding=serialization.Encoding.Raw,
    format=serialization.PrivateFormat.Raw,
    encryption_algorithm=serialization.NoEncryption()
)

# 2. Prepare the message
timestamp = "1785313433816"
method = "GET"
path = "/api/1.0/orders/active"
query = "status=open&limit=10"
body = "" # Empty for GET

# Concatenate without separators
message = f"{timestamp}{method}{path}{query}{body}".encode('utf-8')

# 3. Sign and Encode
signing_key = SigningKey(raw_private)
signed = signing_key.sign(message)
signature = base64.b64encode(signed.signature).decode()

print(f"X-Revx-Signature: {signature}")
Node.js Example
const crypto = require('crypto');
const fs = require('fs');

// 1. Load your Private Key
const privateKey = fs.readFileSync('private.pem', 'utf8');

// 2. Prepare the message
const timestamp = Date.now().toString();
const method = 'POST';
const path = '/api/1.0/crypto-exchange/orders';
const body = JSON.stringify({
  symbol: "BTC/USD",
  type: "limit",
  side: "buy",
  qty: "0.005"
});

// Concatenate without separators
const message = timestamp + method + path + body;

// 3. Sign and Encode
// Note: Use crypto.sign with null to indicate pure Ed25519 signing (no hashing algorithm)
const signatureBuffer = crypto.sign(null, Buffer.from(message), privateKey);
const signature = signatureBuffer.toString('base64');

console.log(`X-Revx-Timestamp: ${timestamp}`);
console.log(`X-Revx-Signature: ${signature}`);

Trade with the CLI and AI assistants

The Revolut X CLI wraps the REST API, so that you can trade from your terminal or connect the API to a compatible AI assistant.

To install it, run:

npm install -g @revolut/revolut-x-cli

Learn more about connecting Revolut X with your AI assistant.


API endpoints

To see the reference for the specific endpoints and operations of this API, browse the menu on the left.

Authentication

Security scheme type:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Public market data

Retrieve public Revolut X market data and configuration.

Get order book

Retrieve the current public order book snapshot (bids and asks) for a specific trading pair.

Provide region to retrieve the order book for a specific region. The resolved region is returned in metadata.region.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit11 token / second1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Path parameters
symbol
stringrequired
Query parameters
limit
integer(int32)
region
string

Response

OK

The public Order Book snapshot for the given trading pair.

Body
object
data
objectrequired
metadata
objectrequired
get/2.0/public/order-book/{symbol}
curl -X GET "https://revx.revolut.com/api/2.0/public/order-book/BTC-USD?limit=50&region=EEA"

Response body samples

{
  "data": {
    "asks": [
      {
        "price": "4005.00",
        "quantity": "1.7000",
        "count": 3
      },
      {
        "price": "4010.00",
        "quantity": "2.1234",
        "count": 2
      }
    ],
    "bids": [
      {
        "price": "4000.00",
        "quantity": "0.25",
        "count": 1
      },
      {
        "price": "3995.00",
        "quantity": "4.4200",
        "count": 5
      }
    ]
  },
  "metadata": {
    "region": "UK",
    "timestamp": 1785313433816
  }
}

Get tickers

Retrieves the latest public market data snapshots for all supported currency pairs. The response includes the current best bid and ask prices, the calculated mid-price, the last traded price, and 24-hour market statistics for each active symbol.

Returns all unique tickers available on the exchange if no symbols are provided. Pass symbols to retrieve specific tickers across multiple regions. Pass region to fetch tickers for a single region.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit11 token / second1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Query parameters
symbols
array
region
string

Response

OK

The list of tickers.

Body
object
data
arrayrequired
metadata
objectrequired
get/1.0/public/tickers
curl -X GET "https://revx.revolut.com/api/1.0/public/tickers?symbols=BTC-USD%2CETH-USD&region=EEA"

Response body samples

{
  "data": [
    {
      "symbol": "BTC/USD",
      "bid": "119950.00",
      "ask": "120050.00",
      "mid": "120000.00",
      "last_price": "119980.00",
      "low_24h": "115000.00",
      "high_24h": "122500.00",
      "price_change_24h": "2480.00",
      "volume_24h": "135.42000000",
      "region": "EEA"
    },
    {
      "symbol": "BTC/GBP",
      "bid": "89950.00",
      "ask": "90050.00",
      "mid": "90000.00",
      "last_price": "89980.00",
      "low_24h": "87000.00",
      "high_24h": "92000.00",
      "price_change_24h": "1980.00",
      "volume_24h": "110.50000000",
      "region": "UK"
    }
  ],
  "metadata": {
    "timestamp": 1785313433816
  }
}

Get OHLCV candles

Retrieve public historical market data (Open, High, Low, Close, Volume) for a specific symbol. If there is trading volume, the view is based on recent trades. If there is no volume, the view is based on the Mid Price (Bid/Ask average).

Provide region to retrieve candles for a specific region. The resolved region is returned in metadata.region.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit11 token / second1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Path parameters
symbol
stringrequired
Query parameters
interval
integer(int32)
since
integer(int64)
until
integer(int64)
region
string

Response

OK

List of OHLCV candles.

Body
object
data
arrayrequired
metadata
objectrequired
get/1.0/public/candles/{symbol}
curl -X GET "https://revx.revolut.com/api/1.0/public/candles/BTC-USD?interval=5&since=1785309833816&until=1785313433816&region=EEA"

Response body samples

{
  "data": [
    {
      "start": 1785309833816,
      "open": "119800.00",
      "high": "120100.00",
      "low": "119700.00",
      "close": "120000.00",
      "volume": "0.25000000"
    },
    {
      "start": 1785310133816,
      "open": "120000.00",
      "high": "120250.00",
      "low": "119950.00",
      "close": "120150.00",
      "volume": "0.18000000"
    }
  ],
  "metadata": {
    "region": "EEA",
    "timestamp": 1785313433816
  }
}

Get trade history

Retrieve all public trade history. Omit symbol to retrieve trades for all trading pairs, or specify it to retrieve trades for one trading pair.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit11 token / second1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Query parameters
symbol
string
start_date
integer(int64)
end_date
integer(int64)
cursor
string
limit
integer(int32)

Response

OK

The list of public trades.

Body
object
data
arrayrequired
metadata
objectrequired
get/1.0/public/trades/all
curl -X GET "https://revx.revolut.com/api/1.0/public/trades/all?symbol=BTC-USD&start_date=1785309833816&end_date=1785313433816&cursor=ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw%3D%3D&limit=1000"

Response body samples

{
  "data": [
    {
      "id": "3b2b202b-7668-43cf-a6c8-b3354e7f4c52",
      "symbol": "BTC/USD",
      "price": "119980.00",
      "quantity": "0.01000000",
      "side": "sell",
      "timestamp": 1785313433816
    },
    {
      "id": "1e09b1f7-e2da-4b1e-92a0-4c2d4f3b0e1d",
      "symbol": "BTC/USD",
      "price": "120010.00",
      "quantity": "0.00500000",
      "side": "buy",
      "timestamp": 1785313433816
    }
  ],
  "metadata": {
    "timestamp": 1785313433816,
    "next_cursor": "ZGF0ZT0xNzU0Njg5MjE2MTI0O2lkPTFlMDliMWY3LWUyZGEtNGIxZS05MmEwLTRjMmQ0ZjNiMGUxZA=="
  }
}

Get currencies

Get public configuration for all currencies used on the exchange.

Provide region to filter currencies by a specific region.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit11 token / second1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Query parameters
region
string

Response

OK

Supported currencies with their details.

Body
object
<*>
object
get/1.0/public/configuration/currencies
curl -X GET "https://revx.revolut.com/api/1.0/public/configuration/currencies?region=EEA"

Response body samples

{
  "BTC": {
    "symbol": "BTC",
    "name": "Bitcoin",
    "scale": 8,
    "asset_type": "crypto",
    "status": "active"
  },
  "ETH": {
    "symbol": "ETH",
    "name": "Ethereum",
    "scale": 8,
    "asset_type": "crypto",
    "status": "active"
  }
}

Get currency pairs

Get public configuration for all traded currency pairs.

Provide region to filter pairs by a specific region.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit11 token / second1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Query parameters
region
string

Response

OK

Supported currency pairs with their details.

Body
object
<*>
object
get/1.0/public/configuration/pairs
curl -X GET "https://revx.revolut.com/api/1.0/public/configuration/pairs?region=EEA"

Response body samples

{
  "BTC/USD": {
    "base": "BTC",
    "quote": "USD",
    "base_step": "0.0000001",
    "quote_step": "0.01",
    "min_order_size": "0.0000001",
    "max_order_size": "1000",
    "min_order_size_quote": "0.01",
    "status": "active"
  },
  "ETH/EUR": {
    "base": "ETH",
    "quote": "EUR",
    "base_step": "0.0000001",
    "quote_step": "0.01",
    "min_order_size": "0.00001",
    "max_order_size": "9000",
    "min_order_size_quote": "0.01",
    "status": "active"
  }
}

Market data

Retrieve authenticated Revolut X market data and configuration.

Get order book

Retrieve the current order book snapshot (bids and asks) for a specific trading pair.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / request
Per-minute limit1,0001,000 tokens / minute1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Path parameters
symbol
stringrequired
Query parameters
limit
integer(int32)

Response

OK

The Order Book snapshot for the given trading pair.

Body
object
data
objectrequired
metadata
objectrequired
get/1.0/order-book/{symbol}
curl -X GET "https://revx.revolut.com/api/1.0/order-book/BTC-USD?limit=50" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "data": {
    "asks": [
      {
        "aid": "ETH",
        "anm": "Ethereum",
        "s": "SELL",
        "p": "4005.00",
        "pc": "USD",
        "pn": "MONE",
        "q": "1.7000",
        "qc": "ETH",
        "qn": "UNIT",
        "ve": "REVX",
        "no": "3",
        "ts": "CLOB",
        "pdt": 1785309833816
      },
      {
        "aid": "ETH",
        "anm": "Ethereum",
        "s": "SELL",
        "p": "4010.00",
        "pc": "USD",
        "pn": "MONE",
        "q": "2.1234",
        "qc": "ETH",
        "qn": "UNIT",
        "ve": "REVX",
        "no": "2",
        "ts": "CLOB",
        "pdt": 1785309833816
      }
    ],
    "bids": [
      {
        "aid": "ETH",
        "anm": "Ethereum",
        "s": "BUYI",
        "p": "4000.00",
        "pc": "USD",
        "pn": "MONE",
        "q": "0.25",
        "qc": "ETH",
        "qn": "UNIT",
        "ve": "REVX",
        "no": "1",
        "ts": "CLOB",
        "pdt": 1785309833816
      },
      {
        "aid": "ETH",
        "anm": "Ethereum",
        "s": "BUYI",
        "p": "3995.00",
        "pc": "USD",
        "pn": "MONE",
        "q": "4.4200",
        "qc": "ETH",
        "qn": "UNIT",
        "ve": "REVX",
        "no": "5",
        "ts": "CLOB",
        "pdt": 1785309833816
      }
    ]
  },
  "metadata": {
    "timestamp": 1785313433816
  }
}

Get tickers

Retrieves the latest market data snapshots for all supported currency pairs. The response includes the current best bid and ask prices, the calculated mid-price, and the last traded price for each active symbol.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / request
Per-minute limit1,0001,000 tokens / minute1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Query parameters
symbols
array

Response

OK

The list of tickers.

Body
object
data
arrayrequired
metadata
objectrequired
get/1.0/tickers
curl -X GET "https://revx.revolut.com/api/1.0/tickers?symbols=BTC-USD%2CETH-USD" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "data": [
    {
      "symbol": "BTC/USD",
      "bid": "119950.00",
      "ask": "120050.00",
      "mid": "120000.00",
      "last_price": "119980.00",
      "low_24h": "115000.00",
      "high_24h": "122500.00",
      "price_change_24h": "2480.00",
      "volume_24h": "135.42000000"
    },
    {
      "symbol": "ETH/USD",
      "bid": "3998.00",
      "ask": "4002.00",
      "mid": "4000.00",
      "last_price": "4001.00",
      "low_24h": "3850.00",
      "high_24h": "4120.00",
      "price_change_24h": "151.00",
      "volume_24h": "4250.00000000"
    }
  ],
  "metadata": {
    "timestamp": 1785313433816
  }
}

Get OHLCV candles

Retrieve historical market data (Open, High, Low, Close, Volume) for a specific symbol. If there is trading volume, the view is based on recent trades. If there is no volume, the view is based on the Mid Price (Bid/Ask average).

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit500,000500,000 tokens / secondmin(5,000, candle count) tokens
Per-minute limit5,000,0005,000,000 tokens / minutemin(5,000, candle count) tokens

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Path parameters
symbol
stringrequired
Query parameters
interval
integer(int32)
since
integer(int64)
until
integer(int64)

Response

OK

List of OHLCV candles.

Body
object
data
arrayrequired
metadata
objectrequired
get/1.0/candles/{symbol}
curl -X GET "https://revx.revolut.com/api/1.0/candles/BTC-USD?interval=5&since=1785309833816&until=1785313433816" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "data": [
    {
      "start": 1785309833816,
      "open": "119800.00",
      "high": "120100.00",
      "low": "119700.00",
      "close": "120000.00",
      "volume": "0.25000000"
    },
    {
      "start": 1785310133816,
      "open": "120000.00",
      "high": "120250.00",
      "low": "119950.00",
      "close": "120150.00",
      "volume": "0.18000000"
    }
  ],
  "metadata": {
    "timestamp": 1785313433816
  }
}

Get trade history

Retrieve a list of all trades for a specific symbol, not limited to the current client's activity.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / day in requested range
Per-minute limit1,0001,000 tokens / minute1 token / day in requested range

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Path parameters
symbol
stringrequired
Query parameters
start_date
integer(int64)
end_date
integer(int64)
cursor
string
limit
integer(int32)

Response

OK

The list of trades.

Body
object
data
arrayrequired
metadata
objectrequired
get/1.0/trades/all/{symbol}
curl -X GET "https://revx.revolut.com/api/1.0/trades/all/BTC-USD?start_date=1785309833816&end_date=1785313433816&cursor=ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw%3D%3D&limit=1000" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "data": [
    {
      "tdt": 1785309833816,
      "aid": "BTC",
      "anm": "Bitcoin",
      "p": "120050.00",
      "pc": "USD",
      "pn": "MONE",
      "q": "0.00300000",
      "qc": "BTC",
      "qn": "UNIT",
      "ve": "REVX",
      "pdt": 1785309833816,
      "vp": "REVX",
      "tid": "80654a036323311cb0ea28462b42db6d",
      "s": "buy"
    }
  ],
  "metadata": {
    "timestamp": 1785313433816,
    "next_cursor": "GF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw=="
  }
}

Get currencies

Get configuration for active currencies available in the authenticated client's region.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / request
Per-minute limit1,0001,000 tokens / minute1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired

Response

OK

Supported currencies with their details.

Body
object
<*>
object
get/1.0/configuration/currencies
curl -X GET "https://revx.revolut.com/api/1.0/configuration/currencies" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "BTC": {
    "symbol": "BTC",
    "name": "Bitcoin",
    "scale": 8,
    "asset_type": "crypto",
    "status": "active"
  },
  "ETH": {
    "symbol": "ETH",
    "name": "Ethereum",
    "scale": 8,
    "asset_type": "crypto",
    "status": "active"
  }
}

Get currency pairs

Get configuration for active traded currency pairs available in the authenticated client's region.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / request
Per-minute limit1,0001,000 tokens / minute1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired

Response

OK

Supported currency pairs with their details.

Body
object
<*>
object
get/1.0/configuration/pairs
curl -X GET "https://revx.revolut.com/api/1.0/configuration/pairs" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "BTC/USD": {
    "base": "BTC",
    "quote": "USD",
    "base_step": "0.0000001",
    "quote_step": "0.01",
    "min_order_size": "0.0000001",
    "max_order_size": "1000",
    "min_order_size_quote": "0.01",
    "status": "active"
  },
  "ETH/EUR": {
    "base": "ETH",
    "quote": "EUR",
    "base_step": "0.0000001",
    "quote_step": "0.01",
    "min_order_size": "0.00001",
    "max_order_size": "9000",
    "min_order_size_quote": "0.01",
    "status": "active"
  }
}

Account data

Retrieve balances, orders, fills, and trades associated with the provided API key.

Get balances

Get crypto exchange account balances for the requesting user. The user is resolved by the provided API key.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / request
Per-minute limit1,0001,000 tokens / minute1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired

Response

OK

The list of available balances.

Body
array of object
currency
stringrequired
available
string(decimal)required
staked
string(decimal)
reserved
string(decimal)required
total
string(decimal)required
get/1.0/balances
curl -X GET "https://revx.revolut.com/api/1.0/balances" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

[
  {
    "currency": "BTC",
    "available": "1.25000000",
    "reserved": "0.10000000",
    "total": "1.35000000"
  },
  {
    "currency": "ETH",
    "available": "10.00000000",
    "reserved": "0.00000000",
    "staked": "32.00000000",
    "total": "42.00000000"
  },
  {
    "currency": "USD",
    "available": "5400.50",
    "reserved": "100.00",
    "total": "5500.50"
  }
]

Get active orders

Get active crypto exchange orders for the requesting user. The user is resolved by the provided API key.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / request
Per-minute limit1,0001,000 tokens / minute1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Query parameters
symbols
array
order_states
array
order_types
array
side
string
cursor
string
limit
integer(int32)

Response

OK

The list of active orders.

Body
object
data
arrayrequired
metadata
objectrequired
get/1.0/orders/active
curl -X GET "https://revx.revolut.com/api/1.0/orders/active?symbols=BTC-USD%2CETH-USD&order_states=new%2Cpartially_filled&order_types=limit%2Cconditional&side=buy&cursor=ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw%3D%3D&limit=100" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "data": [
    {
      "id": "7a52e92e-8639-4fe1-abaa-68d3a2d5234b",
      "client_order_id": "984a4d8a-2a9b-4950-822f-2a40037f02bd",
      "symbol": "BTC/USD",
      "side": "buy",
      "type": "limit",
      "quantity": "0.002",
      "filled_quantity": "0",
      "leaves_quantity": "0.002",
      "price": "120000.00",
      "status": "new",
      "time_in_force": "gtc",
      "execution_instructions": [
        "allow_taker"
      ],
      "created_date": 1785309833816,
      "updated_date": 1785313433816
    }
  ],
  "metadata": {
    "timestamp": 1785313433816,
    "next_cursor": "GF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw=="
  }
}

Get historical orders

Get historical crypto exchange orders for the requesting user. The user is resolved by the provided API key.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / day in requested range
Per-minute limit1,0001,000 tokens / minute1 token / day in requested range

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Query parameters
symbols
array
order_states
array
order_types
array
start_date
integer(int64)
end_date
integer(int64)
cursor
string
limit
integer(int32)

Response

OK

The list of historical orders.

Body
object
data
arrayrequired
metadata
objectrequired
get/1.0/orders/historical
curl -X GET "https://revx.revolut.com/api/1.0/orders/historical?symbols=BTC-USD%2CETH-USD&order_states=filled%2Crejected&order_types=market%2Climit&start_date=1785309833816&end_date=1785313433816&cursor=ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw%3D%3D&limit=1000" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "data": [
    {
      "id": "7a52e92e-8639-4fe1-abaa-68d3a2d5234b",
      "client_order_id": "984a4d8a-2a9b-4950-822f-2a40037f02bd",
      "symbol": "BTC/USD",
      "side": "buy",
      "type": "limit",
      "quantity": "0.002",
      "filled_quantity": "0",
      "leaves_quantity": "0.002",
      "price": "120000.00",
      "status": "filled",
      "time_in_force": "gtc",
      "execution_instructions": [
        "allow_taker"
      ],
      "created_date": 1785309833816,
      "updated_date": 1785313433816
    }
  ],
  "metadata": {
    "timestamp": 1785313433816,
    "next_cursor": "GF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw=="
  }
}

Get order by ID

Retrieve specific order details by ID. The user context is resolved based on the provided API key.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / request
Per-minute limit1,0001,000 tokens / minute1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Path parameters
venue_order_id
string(uuid)required

Response

OK - Order details.

Body
object
data
objectrequired
get/1.0/orders/{venue_order_id}
curl -X GET "https://revx.revolut.com/api/1.0/orders/123e4567-e89b-12d3-a456-426614174000" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "data": {
    "id": "7a52e92e-8639-4fe1-abaa-68d3a2d5234b",
    "client_order_id": "984a4d8a-2a9b-4950-822f-2a40037f02bd",
    "symbol": "BTC/USD",
    "side": "buy",
    "type": "limit",
    "quantity": "0.002",
    "filled_quantity": "0",
    "leaves_quantity": "0.002",
    "amount": "240.00",
    "filled_amount": "0",
    "price": "120000.00",
    "average_fill_price": "0",
    "total_fee": "0",
    "status": "new",
    "time_in_force": "gtc",
    "fee_currency": "USD",
    "execution_instructions": [
      "allow_taker"
    ],
    "created_date": 1785309833816,
    "updated_date": 1785313433816
  }
}

Get fills of order by ID

Retrieves the fills (trades) associated with a specific order belonging to the client. The user context is resolved based on the provided API key.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / request
Per-minute limit1,0001,000 tokens / minute1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Path parameters
venue_order_id
string(uuid)required

Response

OK - Order fills retrieved successfully

Body
object
data
arrayrequired
get/1.0/orders/fills/{venue_order_id}
curl -X GET "https://revx.revolut.com/api/1.0/orders/fills/123e4567-e89b-12d3-a456-426614174000" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "data": [
    {
      "tdt": 1785309833816,
      "aid": "BTC",
      "anm": "Bitcoin",
      "p": "119900.00",
      "pc": "USD",
      "pn": "MONE",
      "q": "0.00100000",
      "qc": "BTC",
      "qn": "UNIT",
      "ve": "REVX",
      "pdt": 1785309833816,
      "vp": "REVX",
      "tid": "ad3e8787ab623ba5a1dfea53819be6f9",
      "oid": "2affb2ac-4cf7-4bbf-b7b2-fc1e885bdc2c",
      "s": "buy",
      "im": false
    }
  ]
}

Get account trades

Retrieve the trade history (fills) for the authenticated client. The user context is resolved based on the provided API key.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / day in requested range
Per-minute limit1,0001,000 tokens / minute1 token / day in requested range

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Path parameters
symbol
stringrequired
Query parameters
start_date
integer(int64)
end_date
integer(int64)
cursor
string
limit
integer(int32)

Response

OK

The list of trades.

Body
object
data
arrayrequired
metadata
objectrequired
get/1.0/trades/private/{symbol}
curl -X GET "https://revx.revolut.com/api/1.0/trades/private/BTC-USD?start_date=1785309833816&end_date=1785313433816&cursor=ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw%3D%3D&limit=1000" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

{
  "data": [
    {
      "tdt": 1785309833816,
      "aid": "BTC",
      "anm": "Bitcoin",
      "p": "120050.00",
      "pc": "USD",
      "pn": "MONE",
      "q": "0.00300000",
      "qc": "BTC",
      "qn": "UNIT",
      "ve": "REVX",
      "pdt": 1785309833816,
      "vp": "REVX",
      "tid": "80654a036323311cb0ea28462b42db6d",
      "oid": "2affb2ac-4cf7-4bbf-b7b2-fc1e885bdc2c",
      "s": "buy",
      "im": false
    }
  ],
  "metadata": {
    "timestamp": 1785313433816,
    "next_cursor": "GF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw=="
  }
}

Trading

Place, cancel, and replace Revolut X orders.

Place order

Place a new order. The user is resolved by the provided API key.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit1010 tokens / second1 token / request
Per-day limit1,0001,000 tokens / day1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Request body
client_order_id
string(uuid)required
symbol
stringrequired
side
stringrequired
order_configuration
objectrequired

Response

OK

The successfully placed order details.

Body
object
data
objectrequired
post/1.0/orders
curl -X POST "https://revx.revolut.com/api/1.0/orders" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "Content-Type: application/json" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+" \
  -d '{
  "client_order_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "symbol": "BTC-USD",
  "side": "sell",
  "order_configuration": {
    "limit": {
      "base_size": "0.1",
      "price": "120000.50",
      "execution_instructions": [
        "post_only"
      ]
    }
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Request body samples

{
  "client_order_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "symbol": "BTC-USD",
  "side": "sell",
  "order_configuration": {
    "limit": {
      "base_size": "0.1",
      "price": "120000.50",
      "execution_instructions": [
        "post_only"
      ]
    }
  }
}

Response body samples

{
  "data": [
    {
      "venue_order_id": "7a52e92e-8639-4fe1-abaa-68d3a2d5234b",
      "client_order_id": "984a4d8a-2a9b-4950-822f-2a40037f02bd",
      "state": "new"
    }
  ]
}

Cancel all active orders

Cancels all open limit, conditional, and Take Profit/Stop Loss (TPSL) orders associated with the authenticated account.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / request
Per-minute limit1,0001,000 tokens / minute1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired

Response

OK - Orders cancelled successfully.

delete/1.0/orders
curl -X DELETE "https://revx.revolut.com/api/1.0/orders" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

No contentThis response does not have a body.

Cancel order by ID

Cancel an active order by its Venue ID.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit100100 tokens / second1 token / request
Per-minute limit1,0001,000 tokens / minute1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Path parameters
venue_order_id
string(uuid)required

Response

OK - Order deleted successfully.

delete/1.0/orders/{venue_order_id}
curl -X DELETE "https://revx.revolut.com/api/1.0/orders/123e4567-e89b-12d3-a456-426614174000" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+"
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Response body samples

No contentThis response does not have a body.

Replace order

Replace an existing order. The user is resolved by the provided API key.

Venue order id of the order will be updated as well.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit1010 tokens / second1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Header parameters
X-Revx-Timestamp
integerrequired
X-Revx-Signature
stringrequired
Path parameters
venue_order_id
string(uuid)required
Request body
client_order_id
string(uuid)required
base_size
string(decimal)
quote_size
string(decimal)
price
string(decimal)
time_in_force
string
execution_instructions
array

Response

OK

The successfully replaced order details.

Body
object
data
objectrequired
put/1.0/orders/{venue_order_id}
curl -X PUT "https://revx.revolut.com/api/1.0/orders/123e4567-e89b-12d3-a456-426614174000" \
  -H "X-Revx-API-Key: <yourSecretApiKey>" \
  -H "Content-Type: application/json" \
  -H "X-Revx-Timestamp: 1785313433816" \
  -H "X-Revx-Signature: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+" \
  -d '{
  "client_order_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "base_size": "0.1",
  "price": "120000.50",
  "execution_instructions": [
    "post_only"
  ]
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:X-Revx-API-Key

The API key obtained from the Revolut X web app. It takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.

A sample API key might look like this:

M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy

Each API key directly maps to the user account (either Business or Retail).

Request body samples

{
  "client_order_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "base_size": "0.1",
  "price": "120000.50",
  "execution_instructions": [
    "post_only"
  ]
}

Response body samples

{
  "data": [
    {
      "venue_order_id": "7a52e92e-8639-4fe1-abaa-68d3a2d5234b",
      "client_order_id": "984a4d8a-2a9b-4950-822f-2a40037f02bd",
      "state": "new"
    }
  ]
}

Deprecated

Deprecated Revolut X API endpoints.

Get last trades (deprecated)deprecated

Deprecated

Use Get trade history instead.

Get the list of the latest 100 trades executed on Revolut X crypto exchange.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit11 token / second1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Response

OK

The list of the latest trades executed on Revolut X crypto exchange.

Body
object
data
arrayrequired
metadata
objectrequired
get/1.0/public/last-trades
curl -X GET "https://revx.revolut.com/api/1.0/public/last-trades"

Response body samples

{
  "data": [
    {
      "tdt": "2026-07-29T07:23:53.816Z",
      "aid": "BTC",
      "anm": "Bitcoin",
      "p": "119980.00",
      "pc": "USD",
      "pn": "MONE",
      "q": "0.01000000",
      "qc": "BTC",
      "qn": "UNIT",
      "ve": "REVX",
      "pdt": "2026-07-29T07:23:53.816Z",
      "vp": "REVX",
      "tid": "5ef9648f658149f7ababedc97a6401f8"
    },
    {
      "tdt": "2026-07-29T07:23:53.816Z",
      "aid": "ETH",
      "anm": "Ethereum",
      "p": "4001.00",
      "pc": "USDC",
      "pn": "MONE",
      "q": "1.20000000",
      "qc": "ETH",
      "qn": "UNIT",
      "ve": "REVX",
      "pdt": "2026-07-29T07:23:53.816Z",
      "vp": "REVX",
      "tid": "3b2b202b766843cfa6c8b3354e7f4c52"
    }
  ],
  "metadata": {
    "timestamp": "2026-07-29T08:23:53.816Z"
  }
}

Get order book (deprecated)deprecated

Deprecated

Use Get order book v2 instead.

Fetch the current order book (bids and asks) for a given trading pair (with a maximum of 5 price levels).

Provide region to retrieve the order book for a specific region. The resolved region is returned in metadata.region.

Rate limits

LimitTotal tokensRefresh rateToken cost rule
Per-second limit11 token / second1 token / request

For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.

Request

Path parameters
symbol
stringrequired
Query parameters
region
string

Response

OK

The Order Book snapshot for the given trading pair (with a maximum of 5 price levels).

Body
object
data
objectrequired
metadata
objectrequired
get/1.0/public/order-book/{symbol}
curl -X GET "https://revx.revolut.com/api/1.0/public/order-book/BTC-USD?region=EEA"

Response body samples

{
  "data": {
    "asks": [
      {
        "aid": "ETH",
        "anm": "Ethereum",
        "s": "SELL",
        "p": "4005.00",
        "pc": "USD",
        "pn": "MONE",
        "q": "1.7000",
        "qc": "ETH",
        "qn": "UNIT",
        "ve": "REVX",
        "no": "3",
        "ts": "CLOB",
        "pdt": "2026-07-29T07:23:53.816Z"
      },
      {
        "aid": "ETH",
        "anm": "Ethereum",
        "s": "SELL",
        "p": "4010.00",
        "pc": "USD",
        "pn": "MONE",
        "q": "2.1234",
        "qc": "ETH",
        "qn": "UNIT",
        "ve": "REVX",
        "no": "2",
        "ts": "CLOB",
        "pdt": "2026-07-29T07:23:53.816Z"
      }
    ],
    "bids": [
      {
        "aid": "ETH",
        "anm": "Ethereum",
        "s": "BUYI",
        "p": "4000.00",
        "pc": "USD",
        "pn": "MONE",
        "q": "0.25",
        "qc": "ETH",
        "qn": "UNIT",
        "ve": "REVX",
        "no": "1",
        "ts": "CLOB",
        "pdt": "2026-07-29T07:23:53.816Z"
      },
      {
        "aid": "ETH",
        "anm": "Ethereum",
        "s": "BUYI",
        "p": "3995.00",
        "pc": "USD",
        "pn": "MONE",
        "q": "4.4200",
        "qc": "ETH",
        "qn": "UNIT",
        "ve": "REVX",
        "no": "5",
        "ts": "CLOB",
        "pdt": "2026-07-29T07:23:53.816Z"
      }
    ]
  },
  "metadata": {
    "region": "UK",
    "timestamp": "2026-07-29T08:23:53.816Z"
  }
}