Instruments

instruments Channel

Subscribe to real-time updates when the list of available trading instruments changes (new expirations added, instruments expired and removed).

Subscribe

ParameterRequiredDescription
marketNoBase token filter: "BTC", "ETH", or "ARB". If omitted, subscribes to all markets.

Single market:

{
  "type": "subscribe",
  "subscriptions": [
    {
      "channel": "instruments",
      "query": {
        "market": "BTC"
      }
    }
  ]
}

All markets:

{
  "type": "subscribe",
  "subscriptions": [
    {
      "channel": "instruments",
      "query": {}
    }
  ]
}

Event: instruments

Emitted when the list of available trading instruments is updated.

{
  "kind": "event",
  "type": "instruments",
  "timestamp_ms": 1777829658433,
  "data": {
    "updated_at": 1777829658433,
    "instruments": [
      "BTC_USDC-08MAY26-76000-C",
      "BTC_USDC-08MAY26-76000-P",
      "BTC_USDC-15MAY26-75000-C",
      "BTC_USDC-15MAY26-75000-P",
      "BTC_USDC-26JUN26-100000-C",
      "BTC_USDC-26JUN26-100000-P"
    ]
  },
  "subscription": {
    "channel": "instruments",
    "query": {
      "market": "BTC"
    }
  }
}
FieldTypeDescription
data.updated_atnumberUnix timestamp in milliseconds of when the instrument list was last updated
data.instrumentsstring[]Array of instrument names currently available for trading

Example: snapshot before vs after an expiry

Options expire at 08:00 UTC on their maturity date. The two events below show the same BTC subscription before and after the 04MAY26 expiry — the expired contract simply disappears from the array (no separate "removed" event).

Beforeupdated_at: 1777881540000 (2026-05-04T07:59:00Z):

{
  "data": {
    "updated_at": 1777881540000,
    "instruments": [
      "BTC_USDC-04MAY26-80500-C",
      "BTC_USDC-08MAY26-76000-C",
      "BTC_USDC-08MAY26-76000-P",
      "BTC_USDC-15MAY26-75000-C",
      "BTC_USDC-15MAY26-75000-P",
      "BTC_USDC-26JUN26-100000-C",
      "BTC_USDC-26JUN26-100000-P"
    ]
  }
}

Afterupdated_at: 1777881605000 (2026-05-04T08:00:05Z):

{
  "data": {
    "updated_at": 1777881605000,
    "instruments": [
      "BTC_USDC-08MAY26-76000-C",
      "BTC_USDC-08MAY26-76000-P",
      "BTC_USDC-15MAY26-75000-C",
      "BTC_USDC-15MAY26-75000-P",
      "BTC_USDC-26JUN26-100000-C",
      "BTC_USDC-26JUN26-100000-P"
    ]
  }
}

BTC_USDC-04MAY26-80500-C is gone from the second array — clients detect the removal by diffing against the previous snapshot.

Notes

  • Each event is a full snapshot, not a delta. The instruments array always contains the complete current list of active instruments for the market — there is no separate "added" or "removed" field.
  • Initial subscription provides a snapshot of all current instruments for the specified market(s)
  • Subsequent events are sent only when the instrument list changes — both when new instruments are added and when expired instruments are removed
  • To detect removals (e.g., expired contracts), diff the new instruments array against the previously received one — anything missing was removed
  • The instruments array contains options only (perpetuals are not published on this channel)
  • If no market is specified in the query, you'll receive separate events for each market (BTC, ETH, ARB)

Use Cases

  • Monitor when new option expirations become available
  • Track when instruments expire and are removed
  • Keep your trading application's instrument list synchronized with the exchange
  • Receive immediate notification when new trading instruments become available