Revolut Trades API

Retrieve Revolut X trade history and execution details: view public market trades or your specific private trade executions (fills).

Operations 2

GET /trades/all/{symbol} Get all public trades (market history) #
GET /trades/private/{symbol} Get client trades (associated with the provided API key) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/revolut:revolut-trades-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

revolut-trades-api-openapi.yml Raw ↑
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)."