Crypto.com Transaction History API

History will be stored for recent 6 months record only. For records over 6 months, please contact our support team.

Operations 4

POST /private/get-order-detail private/get-order-detail #
POST /private/get-order-history private/get-order-history #
POST /private/get-trades private/get-trades #
POST /private/get-transactions private/get-transactions #

Documentation

Specifications

Other Resources

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/crypto-com-transaction-history-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

crypto-com-transaction-history-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Crypto.com Exchange API v1 Transaction History API
  version: 1.0.0
  description: '## Welcome


    Welcome to the Crypto.com Exchange API v1 reference documentation.'
servers:
- url: https://api.crypto.com/exchange/v1
  description: Production
- url: https://uat-api.3ona.co/exchange/v1
  description: UAT Sandbox
tags:
- name: Transaction History
  description: History will be stored for recent 6 months record only. For records over 6 months, please contact our support team.
paths:
  /private/get-order-detail:
    post:
      tags:
      - Transaction History
      x-apply-to:
      - rest
      summary: private/get-order-detail
      description: Gets detail of a single order by order_id or client_oid.
      operationId: privateGetOrderDetail
      x-codeSamples:
      - lang: JavaScript
        label: JavaScript
        source: "const ccxt = require('ccxt');\nconst exchange = new ccxt.cryptocom({\n  apiKey: 'YOUR_API_KEY',\n  secret: 'YOUR_SECRET',\n  enableRateLimit: true,\n});\nconst res = await exchange.v1PrivatePostPrivateGetOrderDetail({\n  order_id: '19848525',\n});\nconsole.log(res);\n"
      - lang: Python
        label: Python
        source: "import ccxt\nexchange = ccxt.cryptocom({\n    'apiKey': 'YOUR_API_KEY',\n    'secret': 'YOUR_SECRET',\n    'enableRateLimit': True,\n})\nres = exchange.v1_private_post_private_get_order_detail({\n    'order_id': '19848525',\n})\nprint(res)\n"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivateGetOrderDetailRequest'
            example:
              id: '1'
              method: private/get-order-detail
              api_key: YOUR_API_KEY
              sig: DIGITAL_SIGNATURE
              params:
                order_id: '19848525'
              nonce: '1587846358253'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderDetailResponse'
              example:
                id: '1'
                method: private/get-order-detail
                code: '0'
                result:
                  account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5
                  order_id: '19848525'
                  client_oid: '1613571154900'
                  order_type: LIMIT
                  time_in_force: GOOD_TILL_CANCEL
                  side: BUY
                  exec_inst: []
                  quantity: '0.0100'
                  limit_price: '50000.0'
                  order_value: '500.000000'
                  maker_fee_rate: '0.000250'
                  taker_fee_rate: '0.000400'
                  avg_price: '0.0'
                  cumulative_quantity: '0.0000'
                  cumulative_value: '0.000000'
                  cumulative_fee: '0.000000'
                  status: ACTIVE
                  instrument_name: BTCUSD-PERP
                  fee_instrument_name: USD
                  reason: '43012'
                  create_time: '1613575617173'
                  create_time_ns: '1613575617173123456'
                  update_time: '1613575617173'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderDetailResponse'
              example:
                id: '1'
                method: private/get-order-detail
                code: '40001'
                message: BAD_REQUEST
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderDetailResponse'
              example:
                id: '1'
                method: private/get-order-detail
                code: '40101'
                message: UNAUTHORIZED
        '408':
          description: Request timeout.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderDetailResponse'
              example:
                id: '1'
                method: private/get-order-detail
                code: '40801'
                message: REQUEST_TIMEOUT
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderDetailResponse'
              example:
                id: '1'
                method: private/get-order-detail
                code: '42901'
                message: TOO_MANY_REQUESTS
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderDetailResponse'
              example:
                id: '1'
                method: private/get-order-detail
                code: '50001'
                message: INTERNAL_SERVER_ERROR
  /private/get-order-history:
    post:
      tags:
      - Transaction History
      x-apply-to:
      - rest
      summary: private/get-order-history
      description: 'Gets the order history for a particular instrument.


        Users should use `user.order` to keep track of real-time order updates, and `private/get-order-history` should primarily be used for recovery; typically when the websocket is disconnected.'
      operationId: privateGetOrderHistory
      x-codeSamples:
      - lang: JavaScript
        label: JavaScript
        source: "const ccxt = require('ccxt');\nconst exchange = new ccxt.cryptocom({\n  apiKey: 'YOUR_API_KEY',\n  secret: 'YOUR_SECRET',\n  enableRateLimit: true,\n});\nconst res = await exchange.v1PrivatePostPrivateGetOrderHistory({\n  instrument_name: 'BTCUSD-PERP',\n  start_time: \"1610905028000081486\",\n  end_time: \"1613570791058211357\",\n  limit: 20,\n});\nconsole.log(res);\n"
      - lang: Python
        label: Python
        source: "import ccxt\nexchange = ccxt.cryptocom({\n    'apiKey': 'YOUR_API_KEY',\n    'secret': 'YOUR_SECRET',\n    'enableRateLimit': True,\n})\nres = exchange.v1_private_post_private_get_order_history({\n    'instrument_name': 'BTCUSD-PERP',\n    'start_time': \"1610905028000081486\",\n    'end_time': \"1613570791058211357\",\n    'limit': 20,\n})\nprint(res)\n"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivateGetOrderHistoryRequest'
            example:
              id: '1'
              method: private/get-order-history
              api_key: YOUR_API_KEY
              sig: DIGITAL_SIGNATURE
              nonce: '1613570791060'
              params:
                instrument_name: BTCUSD-PERP
                start_time: '1610905028000081486'
                end_time: '1613570791058211357'
                limit: 20
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderHistoryResponse'
              example:
                id: '1'
                method: private/get-order-history
                code: '0'
                result:
                  data:
                  - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5
                    order_id: '18342311'
                    client_oid: '1613571154795'
                    order_type: LIMIT
                    time_in_force: GOOD_TILL_CANCEL
                    side: BUY
                    quantity: '0.0001'
                    limit_price: '51000.0'
                    order_value: '3.900100'
                    avg_price: '0.0'
                    cumulative_quantity: '0.0000'
                    status: CANCELED
                    instrument_name: BTCUSD-PERP
                    fee_instrument_name: USD
                    create_time: '1610905028000'
                    update_time: '1613571320251'
                  - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5
                    order_id: '18342500'
                    client_oid: '1613571154800'
                    order_type: LIMIT
                    side: BUY
                    quantity: '0.0500'
                    limit_price: '51283.0'
                    avg_price: '51278.5'
                    cumulative_quantity: '0.0500'
                    status: FILLED
                    instrument_name: BTCUSD-PERP
                    create_time: '1613570791059'
                    update_time: '1613570791060'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderHistoryResponse'
              example:
                id: '1'
                method: private/get-order-history
                code: '40001'
                message: BAD_REQUEST
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderHistoryResponse'
              example:
                id: '1'
                method: private/get-order-history
                code: '40101'
                message: UNAUTHORIZED
        '408':
          description: Request timeout.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderHistoryResponse'
              example:
                id: '1'
                method: private/get-order-history
                code: '40801'
                message: REQUEST_TIMEOUT
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderHistoryResponse'
              example:
                id: '1'
                method: private/get-order-history
                code: '42901'
                message: TOO_MANY_REQUESTS
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetOrderHistoryResponse'
              example:
                id: '1'
                method: private/get-order-history
                code: '50001'
                message: INTERNAL_SERVER_ERROR
  /private/get-trades:
    post:
      tags:
      - Transaction History
      x-apply-to:
      - rest
      summary: private/get-trades
      description: 'Gets all executed trades for a particular instrument.


        Users should use `user.trade` to keep track of real-time trades, and `private/get-trades` should primarily be used for recovery; typically when the websocket is disconnected.'
      operationId: privateGetTrades
      x-codeSamples:
      - lang: JavaScript
        label: JavaScript
        source: "const ccxt = require('ccxt');\nconst exchange = new ccxt.cryptocom({\n  apiKey: 'YOUR_API_KEY',\n  secret: 'YOUR_SECRET',\n  enableRateLimit: true,\n});\nconst res = await exchange.v1PrivatePostPrivateGetTrades({\n  instrument_name: 'BTCUSD-PERP',\n  start_time: '1619089031996081486',\n  end_time: '1619200052124211357',\n  limit: 20,\n});\nconsole.log(res);\n"
      - lang: Python
        label: Python
        source: "import ccxt\nexchange = ccxt.cryptocom({\n    'apiKey': 'YOUR_API_KEY',\n    'secret': 'YOUR_SECRET',\n    'enableRateLimit': True,\n})\nres = exchange.v1_private_post_private_get_trades({\n    'instrument_name': 'BTCUSD-PERP',\n    'start_time': '1619089031996081486',\n    'end_time': '1619200052124211357',\n    'limit': 20,\n})\nprint(res)\n"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivateGetTradesRequest'
            example:
              id: '1'
              method: private/get-trades
              api_key: YOUR_API_KEY
              sig: DIGITAL_SIGNATURE
              nonce: '1613570791060'
              params:
                instrument_name: BTCUSD-PERP
                start_time: '1619089031996081486'
                end_time: '1619200052124211357'
                limit: 20
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTradesResponse'
              example:
                id: '1'
                method: private/get-trades
                code: '0'
                result:
                  data:
                  - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5
                    event_date: '2021-02-17'
                    journal_type: TRADING
                    traded_quantity: '0.0500'
                    traded_price: '51278.5'
                    fees: '-1.025570'
                    fee_credits: '-0.500000'
                    order_id: '19708564'
                    trade_id: '38554669'
                    trade_match_id: '76423'
                    client_oid: 7665b001-2753-4d17-b266-61ecb755922d
                    taker_side: MAKER
                    side: BUY
                    instrument_name: BTCUSD-PERP
                    fee_instrument_name: USD
                    create_time: '1613570791060'
                    create_time_ns: '1613570791060827635'
                    transact_time_ns: '1613570791060827635'
                    match_count: '1'
                    match_index: '0'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTradesResponse'
              example:
                id: '1'
                method: private/get-trades
                code: '40001'
                message: BAD_REQUEST
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTradesResponse'
              example:
                id: '1'
                method: private/get-trades
                code: '40101'
                message: UNAUTHORIZED
        '408':
          description: Request timeout.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTradesResponse'
              example:
                id: '1'
                method: private/get-trades
                code: '40801'
                message: REQUEST_TIMEOUT
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTradesResponse'
              example:
                id: '1'
                method: private/get-trades
                code: '42901'
                message: TOO_MANY_REQUESTS
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTradesResponse'
              example:
                id: '1'
                method: private/get-trades
                code: '50001'
                message: INTERNAL_SERVER_ERROR
  /private/get-transactions:
    post:
      tags:
      - Transaction History
      x-apply-to:
      - rest
      summary: private/get-transactions
      description: Fetches recent transactions.
      operationId: privateGetTransactions
      x-codeSamples:
      - lang: JavaScript
        label: JavaScript
        source: "const ccxt = require('ccxt');\nconst exchange = new ccxt.cryptocom({\n  apiKey: 'YOUR_API_KEY',\n  secret: 'YOUR_SECRET',\n  enableRateLimit: true,\n});\nconst res = await exchange.v1PrivatePostPrivateGetTransactions({\n  instrument_name: 'BTCUSD-PERP',\n  start_time: '1619089031996081486',\n  end_time: '1619200052124211357',\n  limit: 20,\n});\nconsole.log(res);\n"
      - lang: Python
        label: Python
        source: "import ccxt\nexchange = ccxt.cryptocom({\n    'apiKey': 'YOUR_API_KEY',\n    'secret': 'YOUR_SECRET',\n    'enableRateLimit': True,\n})\nres = exchange.v1_private_post_private_get_transactions({\n    'instrument_name': 'BTCUSD-PERP',\n    'start_time': '1619089031996081486',\n    'end_time': '1619200052124211357',\n    'limit': 20,\n})\nprint(res)\n"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivateGetTransactionsRequest'
            example:
              id: '1'
              method: private/get-transactions
              api_key: YOUR_API_KEY
              sig: DIGITAL_SIGNATURE
              nonce: '1613640752166'
              params:
                instrument_name: BTCUSD-PERP
                start_time: '1619089031996081486'
                end_time: '1619200052124211357'
                limit: 20
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTransactionsResponse'
              example:
                id: '1'
                method: private/get-transactions
                code: '0'
                result:
                  data:
                  - account_id: 88888888-8888-8888-8888-000000000123
                    event_date: '2021-02-18'
                    journal_type: TRADING
                    journal_id: '187078'
                    transaction_qty: '-0.0005'
                    transaction_cost: '-24.500000'
                    realized_pnl: '-0.006125'
                    order_id: '72062'
                    trade_id: '71497'
                    trade_match_id: '8625'
                    event_timestamp_ms: '1613640752166'
                    event_timestamp_ns: '1613640752166234567'
                    client_oid: 6ac2421d-5078-4ef6-a9d5-9680602ce123
                    taker_side: MAKER
                    side: SELL
                    instrument_name: BTCUSD-PERP
                  - account_id: 88888888-8888-8888-8888-000000000123
                    event_date: '2021-02-18'
                    journal_type: SESSION_SETTLE
                    journal_id: '186959'
                    transaction_qty: '0'
                    transaction_cost: '0.000000'
                    realized_pnl: '-0.007800'
                    trade_match_id: '0'
                    event_timestamp_ms: '1613638800001'
                    event_timestamp_ns: '1613638800001124563'
                    client_oid: ''
                    taker_side: ''
                    instrument_name: BTCUSD-PERP
                  - account_id: 88888888-8888-8888-8888-000000000123
                    event_date: '2021-02-18'
                    journal_type: SESSION_SETTLE
                    journal_id: '186959'
                    transaction_qty: '0'
                    transaction_cost: '0.000000'
                    realized_pnl: '-0.007800'
                    trade_match_id: '0'
                    event_timestamp_ms: '1613638800002'
                    event_timestamp_ns: '1613638800001124563'
                    client_oid: ''
                    taker_side: ''
                    instrument_name: BTCUSD-PERP
                    isolation_id: '19848526'
                    isolation_type: ISOLATED_MARGIN
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTransactionsResponse'
              example:
                id: '1'
                method: private/get-transactions
                code: '40001'
                message: BAD_REQUEST
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTransactionsResponse'
              example:
                id: '1'
                method: private/get-transactions
                code: '40101'
                message: UNAUTHORIZED
        '408':
          description: Request timeout.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTransactionsResponse'
              example:
                id: '1'
                method: private/get-transactions
                code: '40801'
                message: REQUEST_TIMEOUT
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTransactionsResponse'
              example:
                id: '1'
                method: private/get-transactions
                code: '42901'
                message: TOO_MANY_REQUESTS
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateGetTransactionsResponse'
              example:
                id: '1'
                method: private/get-transactions
                code: '50001'
                message: INTERNAL_SERVER_ERROR
components:
  schemas:
    PrivateGetOrderHistoryRequest:
      $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetOrderHistoryRequest
    PrivateGetOrderDetailRequest:
      $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetOrderDetailRequest
    PrivateGetTransactionsResponse:
      $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetTransactionsResponse
    PrivateGetTradesRequest:
      $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetTradesRequest
    PrivateGetTransactionsRequest:
      $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetTransactionsRequest
    PrivateGetOrderDetailResponse:
      $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetOrderDetailResponse
    PrivateGetTradesResponse:
      $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetTradesResponse
    PrivateGetOrderHistoryResponse:
      $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetOrderHistoryResponse
x-additional-descriptions:
- name: Prediction Reference Data
  slug: prediction-reference-data
  x-guide: prediction-reference-data
  tags:
  - Reference and Market Data
  location: insert
  method: guide
  description: "## Prediction Reference Data\n\nPrediction market instruments contain rich metadata from `public/get-events` and `public/get-instruments` response. This metadata enables partners to build flexible navigation hierarchies tailored to their application's needs.\n\n### Physical Instrument Hierarchy\n\nThe physical data model consists of two levels:\n\n```\nEvent (underlying game/match/tournament)\n  └─ Instrument (tradable contract)\n```\n\n- Each **Event** groups related instruments under a common `event_symbol`. Event has metadata which allows you to extract League and Year information for higher level grouping, e.g. a Series.\n- Given an `event_symbol`, you can drill down for associated Instruments. Each **Instrument** represents a single tradable outcome with its own symbol and metadata.\n\nYou can try [Prediction Instrument Hierarchy Explorer](/prediction-explorer) to visualise the instrument hierarchy.\n\n### Event\n\nAn **Event** represents a real-world occurrence that can have tradable outcomes — such as a sports match, tournament, election, or other predictable event. Events are returned by `public/get-events` and serve as the grouping level for related instruments.\n\n#### Sample Event Response\n\n```json\n{\n  \"symbol\": \"FIFA-00001-260629-M\",\n  \"series_symbols\": [],\n  \"name\": \"Japan @ Brazil\",\n  \"description\": \"Japan @ Brazil\",\n  \"event_date\": 1782766800000000000,\n  \"last_updated_time\": 1782443710514350000,\n  \"event_details\": {\n    \"metaData\": {\n      \"NAME\": \"Japan @ Brazil\",\n      \"EVENT_DATE\": \"2026-06-29T17:00:00-04:00\",\n      \"SPORTS_GROUPING\": \"SOCCER\"\n    },\n    \"eventName\": \"Japan @ Brazil\"\n  }\n}\n```\n\n#### Key Event Fields\n\n| Field | Description | Example |\n|-------|-------------|---------|\n| `symbol` | Unique event identifier. The prefix indicates the league (e.g., `FIFA`, `MLB`, `UFC`). Use this to query instruments via `public/get-instruments?event_symbol=...` | `\"FIFA-00001-260629-M\"` |\n| `event_details.metaData.SPORTS_GROUPING` | Sport category for grouping events. Specific to sports events. | `\"SOCCER\"`, `\"MLB\"`, `\"ESPORT\"`, `\"MMA\"` |\n| `event_details.metaData.NAME` | Human-readable event name, typically in \"Away @ Home\" format for matches | `\"Japan @ Brazil\"` |\n| `event_details.metaData.EVENT_DATE` | Event start time in ISO 8601 format. Extract the year component for season-based grouping. | `\"2026-06-29T17:00:00-04:00\"` |\n\n### Instrument\n\nAn **Instrument** represents a single tradable option contract tied to a specific outcome of an event. Instruments are returned by `public/get-instruments` and contain rich metadata for building navigation hierarchies and displaying contract details.\n\n#### Sample Instrument Response\n\n```json\n{\n  \"id\": -1,\n  \"method\": \"public/get-instruments\",\n  \"code\": 0,\n  \"result\": {\n    \"data\": [\n      {\n        \"symbol\": \"NX.F.OPT.FIFA-00001-260714-M.O.1.67.20260830\",\n        \"inst_type\": \"BINARY_OPTION\",\n        \"display_name\": \"France vs Spain ; Spain (2-Way) ; AT&T Stadium ; 260714\",\n        \"base_ccy\": \"USD\",\n        \"quote_ccy\": \"USD\",\n        \"tradable\": true,\n        \"expiry_timestamp_ms\": 1788127200000,\n        \"underlying_symbol\": \"FIFA-00001-260714-M\",\n        \"event_details\": {\n          \"metaData\": {\n            \"NAME\": \"Spain @ France\",\n            \"VENUE\": \"AT&T Stadium\",\n            \"LEAGUE\": \"FIFA\",\n            \"EVENT_DATE\": \"2026-07-14T19:00:00+00:00\",\n            \"PARTICIPANT\": \"Spain\",\n            \"SPORTS_GROUPING\": \"SOCCER\",\n            \"AWAY_PARTICIPANT\": \"Spain\",\n            \"HOME_PARTICIPANT\": \"France\",\n            \"PREDICT_CATEGORY\": \"Sports\",\n            \"PREDICT_EVENT_TYPE\": \"Game\",\n            \"PREDICT_MARKET_TYPE\": \"Game Line\",\n            \"PREDICT_PERIOD_TYPE\": \"90 Minutes and Stoppage Time\",\n            \"PREDICT_OUTCOME_TYPE\": \"Away\",\n            \"PREDICT_CONTRACT_TYPE\": \"Moneyline (2-Way)\"\n          },\n          \"eventName\": \"Spain to win\"\n        }\n      },\n      {\n        \"symbol\": \"NX.F.OPT.FIFA-00001-260714-M.O.1.68.20260830\",\n        \"inst_type\": \"BINARY_OPTION\",\n        \"display_name\": \"France vs Spain ; France (2-Way) ; AT&T Stadium ; 260714\",\n        \"base_ccy\": \"USD\",\n        \"quote_ccy\": \"USD\",\n        \"tradable\": true,\n        \"expiry_timestamp_ms\": 1788127200000,\n        \"underlying_symbol\": \"FIFA-00001-260714-M\",\n        \"event_details\": {\n          \"metaData\": {\n            \"NAME\": \"Spain @ France\",\n            \"VENUE\": \"AT&T Stadium\",\n            \"LEAGUE\": \"FIFA\",\n            \"EVENT_DATE\": \"2026-07-14T19:00:00+00:00\",\n            \"PARTICIPANT\": \"France\",\n            \"SPORTS_GROUPING\": \"SOCCER\",\n            \"AWAY_PARTICIPANT\": \"Spain\",\n            \"HOME_PARTICIPANT\": \"France\",\n            \"PREDICT_CATEGORY\": \"Sports\",\n            \"PREDICT_EVENT_TYPE\": \"Game\",\n            \"PREDICT_MARKET_TYPE\": \"Game Line\",\n            \"PREDICT_PERIOD_TYPE\": \"90 Minutes and Stoppage Time\",\n            \"PREDICT_OUTCOME_TYPE\": \"Home\",\n            \"PREDICT_CONTRACT_TYPE\": \"Moneyline (2-Way)\"\n          },\n          \"eventName\": \"France to win\"\n        }\n      }\n    ]\n  }\n}\n```\n\n#### Key Instrument Fields\n\nUse these metadata fields to build navigation hierarchies:\n\n| Field | Description | Example |\n|-------|-------------|---------|\n| `event_details.metaData.PREDICT_CATEGORY` | Top-level category for all prediction markets | `\"Sports\"`, `\"Politics\"`, `\"Culture\"` |\n| `event_details.metaData.SPORTS_GROUPING` | Sport category (for sports events) | `\"SOCCER\"`, `\"MLB\"`, `\"ESPORT\"`, `\"MMA\"` |\n| `event_details.metaData.LEAGUE` | Specific league within the sport | `\"FIFA\"`, `\"EPL\"`, `\"UCL\"`, `\"MLS\"` |\n| `event_details.metaData.EVENT_DATE` | Event start time (ISO 8601). Extract year for season grouping. | `\"2026-07-14T19:00:00+00:00\"` |\n| `event_details.metaData.NAME` | Human-readable event name in \"Away @ Home\" format | `\"Spain @ France\"` |\n| `event_details.metaData.PREDICT_CONTRACT_TYPE` | Type of contract/market | `\"Moneyline (2-Way)\"`, `\"Spread\"`, `\"Total Goals\"` |\n| `event_details.metaData.PREDICT_PERIOD_TYPE` | Time period the contract covers | `\"90 Minutes and Stoppage Time\"`, `\"Full Game\"`, `\"1st Half\"` |\n\n#### Example Hierarchy\n\nUsing the fields above, you can, for example, build a three-level navigation hierarchy:\n\n| Level | Fields | Example |\n|-------|--------|---------|\n| **Series** | `PREDICT_CATEGORY` → `SPORTS_GROUPING` → `LEAGUE` → `YEAR(EVENT_DATE)` | Sports > SOCCER > FIFA > 2026 |\n| **Event** | `NAME` → `PREDICT_CONTRACT_TYPE` → `PREDICT_PERIOD_TYPE` | Spain @ France > Moneyline (2-Way) > 90 Minutes and Stoppage Time |\n| **Contract** | The instrument record itself | `NX.F.OPT.FIFA-00001-260714-M.O.1.67.20260830` |\n\n### Getting Continuous Updates\n\nBoth `public/get-events` and `public/get-instruments` support pagination and incremental updates using `since` and `cursor` parameters.\n\n#### Initial Load\n\n```\nGET /dcm/v1/public/get-events?since=0\nGET /dcm/v1/public/get-instruments?since=0\n```\n\nUse `since=0` to fetch all available records from the beginning.\n\n#### Pagination\n\nWhen results exceed the page limit, the response includes a `next_cursor` field. Use it to fetch the next page:\n\n```\nGET /dcm/v1/public/get-events?since=0&cursor={next_cursor}\nGET /dcm/v1/public/get-instruments?since=0&cursor={next_cursor}\n```\n\nContinue paginating until no `next_cursor` is returned.\n\n#### Incremental Updates\n\nAfter the initial load, use the `last_updated_time` from the most recent record as your `since` value to fetch only new or updated records:\n\n```\nGET /dcm/v1/public/get-events?since={last_updated_time}\nGET /dcm/v1/public/get-instruments?since={last_updated_time}\n```\n\nThis enables efficient polling for changes without re-fetching the entire dataset.\n\n### Example: Continuously Building a 3-Level Instrument Hierarchy\n\nThis example demonstrates how to build and maintain a **Series > Event > Contract** hierarchy using REST polling with `since` and `cursor` parameters.\n\n**Goal:**\n- Build a 3-level navigation hierarchy: Series → Event → Contract\n- Keep data up-to-date via continuous REST polling\n\n**Procedure:**\n\n1. **Initialize tracking variables:**\n   ```\n   events_last_modified = 0\n   instruments_last_modified = 0\n   ```\n\n2. **Fetch events with changes:**\n   ```\n   GET /dcm/v1/public/get-events?since={events_last_modified}\n   ```\n   Paginate using `cursor` until all pages are retrieved.\n\n3. **For each event, fetch associated instruments:**\n   ```\n   GET /dcm/v1/public/get-instruments?event_symbol={symbol}&since={instruments_last_modified}\n   ```\n   This can be done in parallel for multiple events. Paginate each using `cursor`.\n\n4. **Build the hierarchy from instrument metadata:**\n   - **Series level:** Group by `PREDICT_CATEGORY` → `SPORTS_GROUPING` → `LEAGUE` → `YEAR(EVENT_DATE)`\n   - **Event level:** Group by `NAME` → `PREDICT_CONTRACT_TYPE` → `PREDICT_PERIOD_TYPE`\n   - **Contract level:** Individual instrument records\n\n5. **Update tracking variables:**\n   Record the maximum `last_updated_time` from events and instruments for the next polling cycle.\n\n6. **Sleep and repeat:**\n   Wait for your desired polling interval, then return to step 2 with the updated `since` values.\n\nThis approach ensures you only fetch changed records on subsequent cycles, minimizing API calls and data transfer.\n\n### Full Meta Data Reference\n\nFor the complete metadata specification, please refer to [FIX Document Pack > Prediction Market Appendix](/docs/api/fix/fix-introduction) for details.\n"
- name: Instrument Status Updates
  slug: instrument-status-updates
  x-guide: instrument-status-updates
  tags:


# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/crypto-com/refs/heads/main/openapi/crypto-com-transaction-history-api-openapi.yml