The Revolut X REST API helps you streamline your trading experience.
Learn more about the Revolut X Crypto Exchange REST API and its features — check the user guides. Read how to:
- Get started
- Create an API key and authenticate requests
- Make your first request
- Trade with the CLI and AI assistants ...and more
You can reach the guides at any time from the main navigation bar → Guides → Crypto Exchange.
You can retrieve public and authenticated market data, view your account data, and place and manage trading orders:
The base URL for all endpoints is:
https://revx.revolut.com/api/The API has two types of endpoints that you can use:
- Public endpoints:
- Public market data: retrieve public Revolut X market data and configuration.
- Authenticated endpoints:
- Market data: retrieve authenticated Revolut X market data and configuration.
- Account data: retrieve balances, sub-accounts, trading volume, fee tiers, orders, fills, and trades associated with the provided API key.
- Trading: place, cancel, and replace Revolut X orders.
- RFQ trading: trade large blocks with the request-for-quote flow.
To see the reference for the specific endpoints and operations of this API, browse the menu on the left.
Authentication
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 1 | 1 token / second | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The public Order Book snapshot for the given trading pair.
curl -X GET "https://revx.revolut.com/api/2.0/public/order-book/BTC-USD?limit=50®ion=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.
Without a region or symbols, all available tickers are returned.
Pass region to fetch tickers for a single region.
Pass symbols to retrieve specific tickers.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 1 | 1 token / second | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The list of tickers.
Public response containing ticker information for currency pairs.
curl -X GET "https://revx.revolut.com/api/1.0/public/tickers?symbols=BTC-USD%2CETH-USD®ion=EEA"Response body samples
{
"data": [
{
"symbol": "BTC/USD",
"bid": "119950.00",
"ask": "120050.00",
"mid": "120000.00",
"index_price": "119995.50",
"last_price": "119980.00",
"low_24h": "115000.00",
"high_24h": "122500.00",
"price_change_24h": "2480.00",
"volume_24h": "135.42000000",
"quote_volume_24h": "16250400.00",
"region": "EEA"
},
{
"symbol": "BTC/GBP",
"bid": "89950.00",
"ask": "90050.00",
"mid": "90000.00",
"index_price": "89995.50",
"last_price": "89980.00",
"low_24h": "87000.00",
"high_24h": "92000.00",
"price_change_24h": "1980.00",
"volume_24h": "110.50000000",
"quote_volume_24h": "9945000.00",
"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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 1 | 1 token / second | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
List of OHLCV candles.
curl -X GET "https://revx.revolut.com/api/1.0/public/candles/BTC-USD?interval=5&since=1785309833816&until=1785313433816®ion=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.
Without a region, trades from all regions are returned.
Pass region to retrieve trades for a single region.
Each returned trade includes the region it was executed in.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 1 | 1 token / second | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The list of public trades.
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=100®ion=EEA"Response body samples
{
"data": [
{
"id": "3b2b202b-7668-43cf-a6c8-b3354e7f4c52",
"symbol": "BTC/USD",
"price": "119980.00",
"quantity": "0.01000000",
"side": "sell",
"timestamp": 1785313433816,
"region": "EEA"
},
{
"id": "1e09b1f7-e2da-4b1e-92a0-4c2d4f3b0e1d",
"symbol": "BTC/USD",
"price": "120010.00",
"quantity": "0.00500000",
"side": "buy",
"timestamp": 1785313433816,
"region": "UK"
}
],
"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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 1 | 1 token / second | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
Supported currencies with their details.
Supported currencies, represented as an object containing other objects.
This outer object contains multiple key-value pairs, where each key is a currency code (e.g. BTC, ETH), and each corresponding value is an inner object containing details about that currency.
< * >
The inner object representing a single currency. It has the following schema:
| Parameter | Description |
|---|---|
symbol | The symbol of the currency. |
name | The full name of the currency. |
scale | The scale of the currency, that is, the number of decimal places used to express the currency's smallest unit. For example, a scale of 8 means that the currency amount can be represented with precision up to eight decimal places, e.g. BTC: 0.00000001. |
asset_type | The type of the currency. Possible values are: fiat, crypto. |
status | Indicates whether it is available for use. |
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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 1 | 1 token / second | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
Supported currency pairs with their details.
Supported currency pairs, represented as an object containing other objects.
This outer object contains multiple key-value pairs, where each key is a currency pair code (e.g. BTC/USD, ETH/EUR), and each corresponding value is an inner object containing details about that currency pair.
< * >
The inner object representing a single currency pair. It has the following schema:
| Parameter | Description |
|---|---|
base | The base currency. |
quote | The quote currency. |
base_step | The minimal step for changing the quantity in the base currency. |
quote_step | The minimal step for changing the amount in the quote currency. |
min_order_size | The minimal order quantity (in the base currency) accepted by the exchange. |
max_order_size | The maximal order quantity (in the base currency) accepted by the exchange. |
min_order_size_quote | The minimal order quantity (in the quote currency) accepted by the exchange. |
status | The status of the currency pair. Indicates whether it is available for use. Possible values are: active, inactive. |
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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The Order Book snapshot for the given trading pair.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The list of tickers.
Response containing ticker information for currency pairs.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Response body samples
{
"data": [
{
"symbol": "BTC/USD",
"bid": "119950.00",
"ask": "120050.00",
"mid": "120000.00",
"index_price": "119995.50",
"last_price": "119980.00",
"low_24h": "115000.00",
"high_24h": "122500.00",
"price_change_24h": "2480.00",
"volume_24h": "135.42000000",
"quote_volume_24h": "16250400.00"
},
{
"symbol": "ETH/USD",
"bid": "3998.00",
"ask": "4002.00",
"mid": "4000.00",
"index_price": "4001.50",
"last_price": "4001.00",
"low_24h": "3850.00",
"high_24h": "4120.00",
"price_change_24h": "151.00",
"volume_24h": "4250.00000000",
"quote_volume_24h": "17000000.00"
}
],
"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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 500,000 | 500,000 tokens / second | max(5,000, candle count) tokens |
| Per-minute limit | 5,000,000 | 5,000,000 tokens / minute | max(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
Response
OK
List of OHLCV candles.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / day in requested range |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 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
Response
OK
The list of trades.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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": "ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw=="
}
}Get currencies
Get configuration for active currencies available in the authenticated client's region.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
Supported currencies with their details.
Supported currencies, represented as an object containing other objects.
This outer object contains multiple key-value pairs, where each key is a currency code (e.g. BTC, ETH), and each corresponding value is an inner object containing details about that currency.
< * >
The inner object representing a single currency. It has the following schema:
| Parameter | Description |
|---|---|
symbol | The symbol of the currency. |
name | The full name of the currency. |
scale | The scale of the currency, that is, the number of decimal places used to express the currency's smallest unit. For example, a scale of 8 means that the currency amount can be represented with precision up to eight decimal places, e.g. BTC: 0.00000001. |
asset_type | The type of the currency. Possible values are: fiat, crypto. |
status | Indicates whether it is available for use. |
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
Supported currency pairs with their details.
Supported currency pairs, represented as an object containing other objects.
This outer object contains multiple key-value pairs, where each key is a currency pair code (e.g. BTC/USD, ETH/EUR), and each corresponding value is an inner object containing details about that currency pair.
< * >
The inner object representing a single currency pair. It has the following schema:
| Parameter | Description |
|---|---|
base | The base currency. |
quote | The quote currency. |
base_step | The minimal step for changing the quantity in the base currency. |
quote_step | The minimal step for changing the amount in the quote currency. |
min_order_size | The minimal order quantity (in the base currency) accepted by the exchange. |
max_order_size | The maximal order quantity (in the base currency) accepted by the exchange. |
min_order_size_quote | The minimal order quantity (in the quote currency) accepted by the exchange. |
status | The status of the currency pair. Indicates whether it is available for use. Possible values are: active, inactive. |
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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, sub-accounts, trading volume, fee tiers, 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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The list of available 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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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 sub-accounts
List the Revolut X sub-accounts and the primary account of the authenticated user with their total balances converted to a requested currency, or to USD by default. The user context is resolved based on the provided API key.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 10 | 10 tokens / second | 1 token / request |
| Per-minute limit | 100 | 100 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The list of sub-accounts.
curl -X GET "https://revx.revolut.com/api/1.0/sub-accounts?convert_to=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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Response body samples
{
"data": {
"sub_accounts": [
{
"name": "Primary",
"total_balance": {
"amount": "53200.50",
"currency": "USD"
},
"created_date": 1733011200000,
"updated_date": 1785313433816
},
{
"name": "TradingBot",
"total_balance": {
"amount": "12500.00",
"currency": "USD"
},
"created_date": 1774953600000,
"updated_date": 1785223200000
}
]
},
"metadata": {
"timestamp": 1785313433816,
"convert_to": "USD"
}
}Get active orders
Get active crypto exchange orders for the requesting user. The user is resolved by the provided API key.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The list of active orders.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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": "ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw=="
}
}Get historical orders
Get historical crypto exchange orders for the requesting user. The user is resolved by the provided API key.
TWAP slices are not returned in this list: a TWAP order appears as a single order of type=twap,
without its individual slice orders.
To get the slices, retrieve the TWAP order with get order details and use the
linked_ids returned in the order details.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / day in requested range |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 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
Response
OK
The list of historical orders.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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": "ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw=="
}
}Get order details by ID
Retrieve specific order details by ID. The user context is resolved based on the provided API key.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK - Order details.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK - Order fills retrieved successfully
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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 trading volume
Retrieve the total trading volume of the authenticated user over the requested interval, aggregated separately for each trading type. The user context is resolved based on the provided API key.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 10 | 10 tokens / second | 1 token / request |
| Per-minute limit | 100 | 100 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The trading volume per product type.
curl -X GET "https://revx.revolut.com/api/1.0/trades/private/volume?interval_days=30" \
-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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Response body samples
{
"data": [
{
"type": "spot",
"amount": "12500000.00",
"currency": "USD",
"start_date": 1782721433816,
"end_date": 1785313433816
},
{
"type": "futures",
"amount": "8250000.00",
"currency": "USD",
"start_date": 1782721433816,
"end_date": 1785313433816
}
],
"metadata": {
"timestamp": 1785313433816
}
}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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / day in requested range |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 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
Response
OK
The list of trades.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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": "ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw=="
}
}Get transactions
Retrieve a list of account transactions for the authenticated client.
This endpoint returns legs with the net amount (after fees) for current account transactions.
To get more data such as fees, counterparty account details, on-chain information, etc., call the Get transaction details by ID endpoint.
The user context is resolved based on the provided API key.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / day in requested range |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 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
Response
OK
The list of transactions.
curl -X GET "https://revx.revolut.com/api/1.0/transactions?start_date=1785309833816&end_date=1785313433816&types=buy%2Csell&statuses=completed¤cies=BTC%2CUSD&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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Response body samples
{
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef0123456789",
"status": "completed",
"type": "buy",
"source": {
"amount": "1000.00",
"currency": "USD",
"account": {
"type": "revolut"
}
},
"destination": {
"amount": "0.01",
"currency": "BTC",
"account": {
"type": "revolut_x"
}
},
"created_date": 1700000000000,
"processed_date": 1700000001000
},
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"status": "completed",
"type": "reward",
"destination": {
"amount": "0.005",
"currency": "ETH",
"account": {
"type": "revolut_x"
}
},
"created_date": 1700000100000,
"processed_date": 1700000101000
},
{
"id": "c3d4e5f6-a7b8-9012-cdef-234567890123",
"status": "pending",
"type": "send",
"source": {
"amount": "0.5",
"currency": "BTC",
"account": {
"type": "revolut_x"
}
},
"destination": {
"amount": "0.5",
"currency": "BTC",
"account": {
"type": "external_crypto_wallet"
}
},
"created_date": 1700000200000
}
],
"metadata": {
"timestamp": 1785313433816,
"next_cursor": "ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw=="
}
}Get transaction details by ID
Retrieve details of a single transaction by its ID.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK - Transaction details.
The legs included in a transaction depend on the transaction type:
| Transaction type | Source leg | Destination leg |
|---|---|---|
buy | ||
sell | ||
receive | ||
send | ||
reward | ||
stake | ||
un_stake |
Full details of a single transaction.
The legs included in a transaction depend on the transaction type:
| Transaction type | Source leg | Destination leg |
|---|---|---|
buy | ||
sell | ||
receive | ||
send | ||
reward | ||
stake | ||
un_stake |
In addition to the list representation, each leg may include the fee paid and full details of the account involved (display name and, for external crypto wallets, the on-chain address), and the transaction may include the venue order ID, on-chain information, and a description.
curl -X GET "https://revx.revolut.com/api/1.0/transactions/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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Response body samples
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef0123456789",
"status": "completed",
"type": "buy",
"source": {
"amount": "1001.00",
"currency": "USD",
"fee": "1.00",
"fee_currency": "USD",
"account": {
"type": "revolut_x",
"display_name": "Crypto Primary"
}
},
"destination": {
"amount": "0.01",
"currency": "BTC",
"account": {
"type": "revolut_x",
"display_name": "Crypto Primary"
}
},
"order_id": "2affb2ac-4cf7-4bbf-b7b2-fc1e885bdc2c",
"description": "Buy BTC",
"created_date": 1700000000000,
"processed_date": 1700000001000
}Get fee tiers
Retrieve the maker and taker fee schedules of the authenticated user with the tier currently applied to their account. The user context is resolved based on the provided API key.
Each product type has its own fee ladder, and the current tier is determined by the user's total trading volume over the last 30 days.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 10 | 10 tokens / second | 1 token / request |
| Per-minute limit | 100 | 100 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The fee tiers per product type.
curl -X GET "https://revx.revolut.com/api/1.0/configuration/fees/tiers" \
-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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Response body samples
{
"data": [
{
"type": "spot",
"current_tier": 1,
"currency": "USD",
"tiers": [
{
"tier": 0,
"volume_from": "0",
"volume_to": "10000000",
"maker_fee": "0",
"taker_fee": "0.0010"
},
{
"tier": 1,
"volume_from": "10000000",
"volume_to": "50000000",
"maker_fee": "0",
"taker_fee": "0.0008"
},
{
"tier": 2,
"volume_from": "50000000",
"maker_fee": "0",
"taker_fee": "0.0005"
}
]
},
{
"type": "futures",
"current_tier": 0,
"currency": "USD",
"tiers": [
{
"tier": 0,
"volume_from": "0",
"volume_to": "25000000",
"maker_fee": "0.0001",
"taker_fee": "0.0009"
},
{
"tier": 1,
"volume_from": "25000000",
"maker_fee": "0",
"taker_fee": "0.0004"
}
]
}
],
"metadata": {
"timestamp": 1785313433816
}
}Trading
Place, cancel, and replace Revolut X orders.
Place order
Place a new order. The user is resolved by the provided API key.
The following order types are supported via order_configuration:
market— executed immediately at the current market price.limit— executed only if the asset reaches a specified price.conditional— submitted once the market price reaches the specifiedtrigger_price.tpsl— sets or adjusts the Take Profit and Stop Loss levels for a position.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 10 | 10 tokens / second | 1 token / request |
| Per-day limit | 1,000 | 1,000 tokens / day | 1 token / request |
The daily limit does not apply to sub-accounts. Learn more about sub-accounts.
The maximum number of active orders per account or sub-account is 300. The total maximum across all accounts is 1,000.
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The successfully placed order details.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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, Take Profit/Stop Loss (TPSL), and TWAP orders associated with the authenticated account.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK - Orders cancelled successfully.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Response body samples
Cancel order by ID
Cancel an active order by its Venue ID. The ID can refer to a limit, conditional, Take Profit/Stop Loss (TPSL), or TWAP order.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 100 | 100 tokens / second | 1 token / request |
| Per-minute limit | 1,000 | 1,000 tokens / minute | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK - Order deleted successfully.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Response body samples
Replace order
Replace an existing order. The user is resolved by the provided API key.
For limit and market orders, the venue order ID of the order will be updated as well.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 10 | 10 tokens / second | 1 token / request |
Replacing orders does not count towards the daily limit.
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Request to replace an existing open order with a new one, atomically cancelling the original. Only the fields provided in the request are updated; omitted fields are inherited from the original order (with the exception of sizes, which may be recalculated to preserve the counter-side amount — see field docs).
The applicable fields depend on the order type:
- For
limitorders:base_size,quote_size,price,time_in_force,execution_instructions. - For
conditionalorders:base_size,quote_size,conditional. - For
tpslorders:base_size,take_profit,stop_loss.
Response
OK
The successfully replaced order details.
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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
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"
}
}RFQ trading
Trade large blocks with the Request for Quote (RFQ) flow: request an RFQ quote, accept it to place an order, and check RFQ limits.
RFQ trading is available to UK customers with passed KYC/KYB. Additionally, UK retail clients must be categorised as High Net Worth investors.
For more information, see the guides: RFQ trading.
Request RFQ quote
Request an RFQ quote for a large-block trade.
RFQ trading is available to UK customers with passed KYC/KYB. Additionally, UK retail clients must be categorised as High Net Worth investors.
Provide exactly one of:
qty: The quantity to trade, in the pair's base currency (e.g., BTC inBTC/USD).amount: The amount to spend or receive, in the pair's counter currency (e.g., USD inBTC/USD).
The returned signature is a signed, short-lived token that binds the quote to your account.
To execute the trade, pass it to Accept RFQ quote before expires_at.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 10 | 10 tokens / second | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Required API key permissions
To call this endpoint, your API key must have the following permissions (scopes):
| Permission | Mapped scope | Audience |
|---|---|---|
| View | rest.otc.view | Users |
| View | agent.otc.view | Agentic clients |
For more information, see the guides: RFQ trading.
Request
RFQ quote request.
Exactly one of qty or amount must be provided.
Response
OK
The RFQ quote, including the signed token to accept it.
An RFQ quote response with data and response metadata.
curl -X POST "https://revx.revolut.com/api/1.0/otc/quotes" \
-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 '{
"symbol": "BTC/USD",
"side": "buy",
"qty": "2.5"
}'Authorization
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Request body samples
{
"symbol": "BTC/USD",
"side": "buy",
"qty": "2.5"
}Response body samples
{
"data": {
"quote_id": "550e8400-e29b-41d4-a716-446655440000",
"symbol": "BTC/USD",
"side": "buy",
"price": "79979.90",
"qty": "2.5",
"order_book_price": "80100",
"expires_at": 1785313438816,
"signature": "ZXlKaGRXUWlPaUpsTm1RME1qVTNKR1ZGVmpFd01UQmlNakF3TkRVMFlqRmtOREU1WVdGaE5qRTNPRFV3TWpWbE9XWlpNRFUyWlROa1pUUXdPR1JtTmpnMFpUZzBabU0yT1RJM09XWlpNR0U0WkRsak4yRmla",
"liquidity_status": "filled"
},
"metadata": {
"timestamp": 1785313433816
}
}Accept RFQ quote
Accept a previously requested RFQ quote and place the RFQ order.
RFQ trading is available to UK customers with passed KYC/KYB. Additionally, UK retail clients must be categorised as High Net Worth investors.
Pass the signature token from the Request RFQ quote response.
The quote's terms (pair, side, size, and price) are taken from the signed token — they cannot be modified.
The signed token is bound to your account. Treat it as single-use: once the downstream order has been submitted, retrying it does not create a second order. If acceptance fails before submission, request a new quote rather than relying on replay.
- Tokens that are invalid or tampered with are rejected with
400. - Tokens that have expired are rejected with
422. - Tokens issued to a different account are rejected with
403.
If immediate execution or the fincrime decision rejects the order, the endpoint returns status: rejected with a reason.
Insufficient balance and other processing failures are returned as HTTP errors instead.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 5 | 5 tokens / second | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Required API key permissions
To call this endpoint, your API key must have the following permissions (scopes):
| Permission | Mapped scope | Audience |
|---|---|---|
| Trade | rest.otc.trade | Users |
| Trade | agent.otc.trade | Agentic clients |
For more information, see the guides: RFQ trading.
Request
The signed quote token to accept.
Response
OK
The placed RFQ order.
The placed RFQ order response with data and response metadata.
curl -X POST "https://revx.revolut.com/api/1.0/otc/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 '{
"signature": "ZXlKaGRXUWlPaUpsTm1RME1qVTNKR1ZGVmpFd01UQmlNakF3TkRVMFlqRmtOREU1WVdGaE5qRTNPRFV3TWpWbE9XWlpNRFUyWlROa1pUUXdPR1JtTmpnMFpUZzBabU0yT1RJM09XWlpNR0U0WkRsak4yRmla"
}'Authorization
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Request body samples
{
"signature": "ZXlKaGRXUWlPaUpsTm1RME1qVTNKR1ZGVmpFd01UQmlNakF3TkRVMFlqRmtOREU1WVdGaE5qRTNPRFV3TWpWbE9XWlpNRFUyWlROa1pUUXdPR1JtTmpnMFpUZzBabU0yT1RJM09XWlpNR0U0WkRsak4yRmla"
}Response body samples
{
"data": {
"transaction_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "filled"
},
"metadata": {
"timestamp": 1785313433816
}
}Get RFQ limits
Get the minimum RFQ trade amount for a currency pair.
RFQ trading is available to UK customers with passed KYC/KYB. Additionally, UK retail clients must be categorised as High Net Worth investors.
The minimum is expressed in the pair's counter currency.
Requesting an RFQ quote below this minimum is rejected with 400.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 10 | 10 tokens / second | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Required API key permissions
To call this endpoint, your API key must have the following permissions (scopes):
| Permission | Mapped scope | Audience |
|---|---|---|
| View | rest.otc.view | Users |
| View | agent.otc.view | Agentic clients |
For more information, see the guides: RFQ trading.
Request
Response
OK
The minimum RFQ trade amount for the pair.
The minimum RFQ trade amount response with data and response metadata.
curl -X GET "https://revx.revolut.com/api/1.0/otc/limits?symbol=BTC%2FUSD" \
-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
apiKeyX-Revx-API-KeyThe 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:
M1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYByEach API key directly maps to the user account (either Business or Retail).
Additionally, the request must also include the Timestamp (X-Revx-Timestamp) and Signature (X-Revx-Signature) headers.
For more information on authentication headers and signing instructions, see the guides: Authenticate requests.
API keys used with the RFQ trading endpoints are permission-scoped: each RFQ endpoint lists the permissions (scopes) it requires in its description.
Response body samples
{
"data": {
"min_amount": "100000",
"symbol": "BTC/USD"
},
"metadata": {
"timestamp": 1785313433816
}
}Deprecated
Deprecated Revolut X API endpoints.
Get last trades (deprecated)deprecated
Get the list of the latest 100 trades executed on Revolut X crypto exchange.
Rate limits
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 1 | 1 token / second | 1 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.
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
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
| Limit | Total tokens | Refresh rate | Token cost rule |
|---|---|---|---|
| Per-second limit | 1 | 1 token / second | 1 token / request |
For retry guidance, see the 429 Rate Limit Exceeded response below. The Retry-After header specifies the delay in milliseconds.
Request
Response
OK
The Order Book snapshot for the given trading pair (with a maximum of 5 price levels).
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"
}
}