Revolut Trades API
Retrieve Revolut X trade history and execution details: view public market trades or your specific private trade executions (fills).
Retrieve Revolut X trade history and execution details: view public market trades or your specific private trade executions (fills).
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/revolut:revolut-trades-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: 1.0.0
title: Revolut X Crypto Exchange REST Trades API
description: As a Revolut X customer, you can use the Revolut X REST API to streamline your trading experience.
contact: {}
servers:
- url: https://revx.revolut.com/api/1.0
description: Production server (uses live data)
- url: https://revx.revolut.codes/api/1.0
description: Dev server (uses test data)
security:
- ApiKey: []
tags:
- name: Trades
description: 'Retrieve Revolut X trade history and execution details: view public market trades or your specific private trade executions (fills).'
paths:
/trades/all/{symbol}:
get:
tags:
- Trades
summary: Get all public trades (market history)
operationId: getAllTrades
description: Retrieve a list of all trades for a specific symbol, not limited to the current client's activity.
parameters:
- $ref: '#/components/parameters/XRevxTimestamp'
- $ref: '#/components/parameters/XRevxSignature'
- name: symbol
in: path
required: true
description: Trading pair symbol (e.g., BTC-USD).
example: BTC-USD
schema:
type: string
- $ref: '#/components/parameters/StartDateQueryParam'
- $ref: '#/components/parameters/EndDateQueryParam'
- name: cursor
in: query
description: Pagination cursor obtained from the [`metadata.next_cursor`](https://developer.revolut.com/docs/api/revolut-x-crypto-exchange#get-all-trades#response) property of the previous response.
schema:
type: string
example: ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw==
- name: limit
in: query
description: Maximum number of records to return.
schema:
type: integer
format: int32
minimum: 1
maximum: 1900
default: 1900
example: 1000
responses:
'200':
description: 'OK
The list of trades.'
content:
application/json:
schema:
$ref: '#/components/schemas/AllTradesPaginatedResponse'
examples:
TradesPaginatedResponse:
summary: All trades paginated response
$ref: '#/components/examples/TradesPaginatedResponseExample'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/RateLimitExceeded'
5XX:
$ref: '#/components/responses/ServerError'
/trades/private/{symbol}:
get:
tags:
- Trades
summary: Get client trades (associated with the provided API key)
operationId: getPrivateTrades
description: 'Retrieve the trade history (fills) for the authenticated client.
The user context is resolved based on the provided API key.'
parameters:
- $ref: '#/components/parameters/XRevxTimestamp'
- $ref: '#/components/parameters/XRevxSignature'
- name: symbol
in: path
required: true
description: Trading pair symbol (e.g., BTC-USD).
schema:
type: string
example: BTC-USD
- $ref: '#/components/parameters/StartDateQueryParam'
- $ref: '#/components/parameters/EndDateQueryParam'
- name: cursor
in: query
description: Pagination cursor obtained from the [`metadata.next_cursor`](https://developer.revolut.com/docs/api/revolut-x-crypto-exchange#get-private-trades#response) property of the previous response.
schema:
type: string
example: ZGF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw==
- name: limit
in: query
description: Maximum number of records to return.
schema:
type: integer
format: int32
minimum: 1
maximum: 1900
default: 1900
example: 1000
responses:
'200':
description: 'OK
The list of trades.'
content:
application/json:
schema:
$ref: '#/components/schemas/PrivateTradesPaginatedResponse'
examples:
TradesPaginatedResponse:
summary: Client trades paginated response
$ref: '#/components/examples/ClientTradesPaginatedResponseExample'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/RateLimitExceeded'
5XX:
$ref: '#/components/responses/ServerError'
components:
schemas:
ClientTrade:
type: object
description: A single trade.
properties:
tdt:
type: integer
format: int64
description: Trade date and time, expressed in Unix epoch milliseconds.
example: 3318215482991
aid:
type: string
description: Crypto-asset ID code.
example: BTC
anm:
type: string
description: Crypto-asset full name.
example: Bitcoin
p:
type: string
description: Price in major currency units. For example, for USD, `116243.32` represents 116243.32 dollars.
example: '116243.32'
pc:
type: string
description: Price currency.
example: USD
pn:
type: string
description: Price notation.
example: MONE
q:
type: string
description: Quantity.
example: '0.24521000'
qc:
type: string
description: Quantity currency.
example: BTC
qn:
type: string
description: Quantity notation.
example: UNIT
ve:
type: string
description: Venue of execution. Always equals `REVX`.
example: REVX
pdt:
type: integer
format: int64
description: Publication date and time, expressed in Unix epoch milliseconds.
example: 3318215482991
vp:
type: string
description: Venue of publication. Always equals `REVX`.
example: REVX
tid:
type: string
description: Transaction identification code.
example: 5ef9648f658149f7ababedc97a6401f8
oid:
type: string
format: uuid
description: Unique identifier for the order associated with the trade.
example: 2affb2ac-4cf7-4bbf-b7b2-fc1e885bdc2c
s:
type: string
enum:
- buy
- sell
description: Indicates the trade direction of the order.
example: buy
im:
type: boolean
description: Indicates whether the trade was a maker (true) or taker (false).
example: true
required:
- tdt
- aid
- anm
- p
- pc
- pn
- q
- qc
- qn
- ve
- pdt
- vp
- tid
- oid
- im
ErrorResponse:
type: object
description: Standard error response structure
required:
- error_id
- message
- timestamp
properties:
error_id:
type: string
format: uuid
description: Unique identifier for this specific error occurrence.
message:
type: string
description: Human-readable description of the error.
timestamp:
type: integer
format: int64
description: The time the error occurred in Unix epoch milliseconds.
AllTradesPaginatedResponse:
type: object
required:
- data
- metadata
properties:
data:
type: array
items:
$ref: '#/components/schemas/Trade'
metadata:
type: object
required:
- timestamp
properties:
timestamp:
type: integer
format: int64
description: Timestamp in Unix epoch milliseconds.
next_cursor:
type: string
description: 'Cursor used to retrieve the next page of results.
To continue paginating through the results, make a new request and pass this value in the [`cursor`](https://developer.revolut.com/docs/api/revolut-x-crypto-exchange#get-all-trades#request) query parameter.'
PrivateTradesPaginatedResponse:
type: object
required:
- data
- metadata
properties:
data:
type: array
items:
$ref: '#/components/schemas/ClientTrade'
metadata:
type: object
required:
- timestamp
properties:
timestamp:
type: integer
format: int64
description: Timestamp in Unix epoch milliseconds.
next_cursor:
type: string
description: 'Cursor used to retrieve the next page of results.
To continue paginating through the results, make a new request and pass this value in the [`cursor`](https://developer.revolut.com/docs/api/revolut-x-crypto-exchange#get-private-trades#request) query parameter.'
Trade:
type: object
description: A single trade.
properties:
tdt:
type: integer
format: int64
description: Trade date and time, expressed in Unix epoch milliseconds.
example: 3318215482991
aid:
type: string
description: Crypto-asset ID code.
example: BTC
anm:
type: string
description: Crypto-asset full name.
example: Bitcoin
p:
type: string
description: Price in major currency units. For example, for USD, `116243.32` represents 116243.32 dollars.
example: '116243.32'
pc:
type: string
description: Price currency.
example: USD
pn:
type: string
description: Price notation.
example: MONE
q:
type: string
description: Quantity.
example: '0.24521000'
qc:
type: string
description: Quantity currency.
example: BTC
qn:
type: string
description: Quantity notation.
example: UNIT
ve:
type: string
description: Venue of execution. Always equals `REVX`.
example: REVX
pdt:
type: integer
format: int64
description: Publication date and time, expressed in Unix epoch milliseconds.
example: 3318215482991
vp:
type: string
description: Venue of publication. Always equals `REVX`.
example: REVX
tid:
type: string
description: Transaction identification code.
example: 5ef9648f658149f7ababedc97a6401f8
required:
- tdt
- aid
- anm
- p
- pc
- pn
- q
- qc
- qn
- ve
- pdt
- vp
- tid
responses:
RateLimitExceeded:
description: Rate Limit Exceeded
headers:
Retry-After:
description: The number of milliseconds to wait before making a new request.
schema:
type: integer
example: 5000
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Rate Limit Exceeded
error_id: 7d85b5e7-d0f0-4696-b7b5-a300d0d03a5e
timestamp: 3318215482991
Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Forbidden
error_id: 7d85b5e7-d0f0-4696-b7b5-a300d0d03a5e
timestamp: 3318215482991
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: API key can only be used for authentication from whitelisted IP
error_id: 7d85b5e7-d0f0-4696-b7b5-a300d0d03a5e
timestamp: 3318215482991
BadRequest:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: 'No such pair: BTC-BTC'
error_id: 7d85b5e7-d0f0-4696-b7b5-a300d0d03a5e
timestamp: 3318215482991
ServerError:
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Something went wrong!
error_id: 7d85b5e7-d0f0-4696-b7b5-a300d0d03a5e
timestamp: 3318215482991
Conflict:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Request timestamp is in the future
error_id: 7d85b5e7-d0f0-4696-b7b5-a300d0d03a5e
timestamp: 3318215482991
examples:
ClientTradesPaginatedResponseExample:
value:
data:
- tdt: 3318215482991
aid: BTC
anm: Bitcoin
p: '125056.76'
pc: USD
pn: MONE
q: '0.00003999'
qc: BTC
qn: UNIT
ve: REVX
pdt: 3318215482991
vp: REVX
tid: 80654a036323311cb0ea28462b42db6d
oid: 2affb2ac-4cf7-4bbf-b7b2-fc1e885bdc2c
s: buy
im: false
metadata:
timestamp: 3318215482991
next_cursor: GF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw==
TradesPaginatedResponseExample:
value:
data:
- tdt: 3318215482991
aid: BTC
anm: Bitcoin
p: '125056.76'
pc: USD
pn: MONE
q: '0.00003999'
qc: BTC
qn: UNIT
ve: REVX
pdt: 3318215482991
vp: REVX
tid: 80654a036323311cb0ea28462b42db6d
metadata:
timestamp: 3318215482991
next_cursor: GF0ZT0xNzY0OTMxNTAyODU0O2lkPTM3YjExMWJlLTcwMzYtNGYzNC1hYWYyLTM4ZDVjYTEyN2M1Yw==
parameters:
EndDateQueryParam:
name: end_date
in: query
description: 'End timestamp for the query range in Unix epoch milliseconds.
:::note
If `end_date` is omitted, it defaults to `start_date` + 7 days (if `start_date` is provided) or the current date (if `start_date` is missing).
The duration between `start_date` and `end_date` must not exceed 30 days.
:::'
schema:
type: integer
format: int64
example: 3318215482991
XRevxTimestamp:
in: header
name: X-Revx-Timestamp
required: true
description: "Current timestamp in Unix epoch milliseconds. \nUsed to prevent replay attacks and construct the signature.\nProvided with other authentication headers."
schema:
type: integer
example: 1746007718237
StartDateQueryParam:
name: start_date
in: query
description: 'Start timestamp for the query range in Unix epoch milliseconds.
:::note
If `start_date` is omitted, it defaults to 7 days prior to `end_date`.
The difference between `start_date` and `end_date` must be <= 30 days.
:::'
schema:
type: integer
format: int64
example: 3318215482991
XRevxSignature:
in: header
name: X-Revx-Signature
required: true
description: "The Ed25519 signature of the request. \nProvided with other authentication headers.\n\n:::tip\nSee **Authentication headers: Signing a request** for details on how to generate this.\n:::"
schema:
type: string
example: 2h/t5o8w+l5s+fjyfA0n/e7j4u5b7h4e+g4k4c8h7a2p6k0g7j1f+w0i2j3k9r0l3s8m5t6r+q1s+o3v/t4x8v5y+w1r+m2t/k3w/j4y+
securitySchemes:
ApiKey:
type: apiKey
in: header
name: X-Revx-API-Key
description: "The [API key](https://developer.revolut.com/docs/api/revolut-x-crypto-exchange#api-key) obtained from the [Revolut X web app](https://exchange.revolut.com/).\nIt takes the form of a 64-character alphanumeric string, and must be provided with other authentication headers.\n\nA sample API key might look like this: \n```sh\nM1VKFtwB0M9C9QJO7goPlwrOytrJsSNE19txsmpsWIKz7xYu3f8aNucIyynAhYBy\n```\n\nEach API key directly maps to the user account (either Business or Retail)."