GammaFlip.io Discovery API

The Discovery API from GammaFlip.io — 4 operation(s) for discovery.

GitHub OpenAPI

Operations 4

GET /exchanges List available exchanges #
GET /coins List available coins #
GET /me Your plan, markets and quota #
GET /expirations/{exchange}/{coin} List expirations #

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/gammaflip-io:gammaflip-io-discovery-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

gammaflip-io-discovery-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GammaFlip GEX Discovery API
  version: 1.0.0
  description: 'Programmatic access to Gamma Exposure (GEX) data for crypto options

    (Bybit, Deribit, OKX, Derive, Binance) and US options (the `tradfi` exchange).


    API access is a plan entitlement (`api_access`). The trial includes it

    (50 requests/day); other plans with API access get 500 requests/day.

    Only `/gex/...`, `/levels/...` and the `/history/...` query endpoints count

    against the quota; `/exchanges`, `/coins`, `/expirations/...`, `/me` and

    `/history/coverage` are free. History file downloads use a separate daily

    bucket of file credits (trial 20, other plans 200). A `429` carries no

    `Retry-After` header: use `X-RateLimit-Reset`, `X-History-Files-Reset` or `/me`.


    All GEX values are USD per 1% move of the underlying. Field definitions:

    https://docs.gammaflip.io/data-dictionary'
  contact:
    name: GammaFlip Support
    email: admin@gammaflip.io
    url: https://gammaflip.io
servers:
- url: https://api.gammaflip.io/api/v1
  description: Production
security:
- ApiKeyAuth: []
tags:
- name: Discovery
paths:
  /exchanges:
    get:
      operationId: listExchanges
      summary: List available exchanges
      description: 'Returns the exchanges currently available, plus the virtual `all` aggregator and

        the same exchanges grouped by market. **Free**: not counted against the quota.'
      tags:
      - Discovery
      responses:
        '200':
          description: Exchange list
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Envelope'
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        available:
                          type: array
                          items:
                            type: string
                          example:
                          - bybit
                          - deribit
                          - okx
                          - derive
                          - binance
                          - tradfi
                        virtual:
                          type: array
                          items:
                            type: string
                          example:
                          - all
                        markets:
                          $ref: '#/components/schemas/Markets'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /coins:
    get:
      operationId: listCoins
      summary: List available coins
      description: 'Returns the union of symbols across all exchanges (crypto coins and TradFi tickers),

        plus the same list split by market. **Free**: not counted against the quota.'
      tags:
      - Discovery
      responses:
        '200':
          description: Coin list
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Envelope'
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        coins:
                          type: array
                          items:
                            type: string
                          example:
                          - BTC
                          - ETH
                          - QQQ
                          - SOL
                          - SPX
                        markets:
                          $ref: '#/components/schemas/Markets'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /me:
    get:
      operationId: getMe
      summary: Your plan, markets and quota
      description: 'Returns your tier, the markets your plan includes, `api_access`, and today''s quota

        for both buckets (`requests` and `history_files`).

        **Free**: not counted against the quota. Use it to find out when the quota resets

        (a 429 carries no `Retry-After`).'
      tags:
      - Discovery
      responses:
        '200':
          description: Account info
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Envelope'
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        tier:
                          type: string
                          example: trial
                        markets:
                          type: array
                          items:
                            type: string
                          example:
                          - crypto
                          - tradfi
                        api_access:
                          type: boolean
                        quota:
                          type: object
                          properties:
                            requests:
                              type: object
                              properties:
                                limit:
                                  type: integer
                                  description: Daily limit; 0 means unlimited.
                                  example: 50
                                used:
                                  type:
                                  - integer
                                  - 'null'
                                  example: 13
                                remaining:
                                  type:
                                  - integer
                                  - 'null'
                                  example: 37
                                reset:
                                  type: string
                                  format: date-time
                                  example: '2026-10-07T00:00:00+00:00'
                            history_files:
                              type: object
                              description: 'Separate daily bucket for history file downloads

                                (trial 20, other plans with API access 200, admin unlimited).

                                '
                              properties:
                                limit:
                                  type: integer
                                  description: Daily file credits; 0 means unlimited.
                                  example: 20
                                used:
                                  type:
                                  - integer
                                  - 'null'
                                  example: 2
                                remaining:
                                  type:
                                  - integer
                                  - 'null'
                                  example: 18
                                reset:
                                  type: string
                                  format: date-time
                                  example: '2026-10-07T00:00:00+00:00'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /expirations/{exchange}/{coin}:
    get:
      operationId: listExpirations
      summary: List expirations
      description: 'Returns sorted, non-expired option expirations for a given exchange and coin.

        `expirations` keeps the `DDMMMYY` codes; `expirations_detail` adds the ISO date,

        days to the cutoff, the cutoff instant and a 0DTE flag. The cutoff is 08:00 UTC for

        crypto and 16:00 US Eastern for TradFi. **Free**: not counted against the quota.'
      tags:
      - Discovery
      parameters:
      - $ref: '#/components/parameters/Exchange'
      - $ref: '#/components/parameters/Coin'
      responses:
        '200':
          description: Expiration list
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Envelope'
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        expirations:
                          type: array
                          items:
                            type: string
                          example:
                          - 25APR26
                          - 02MAY26
                          - 09MAY26
                          - 27JUN26
                        expirations_detail:
                          type: array
                          items:
                            $ref: '#/components/schemas/ExpirationDetail'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '503':
          description: TradFi data temporarily unavailable (`market_unavailable`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    RateLimit:
      type: object
      properties:
        limit:
          type: integer
          example: 500
        remaining:
          type: integer
          example: 487
        reset:
          type: string
          format: date-time
          example: '2026-04-15T00:00:00+00:00'
    Envelope:
      type: object
      required:
      - data
      - meta
      properties:
        data:
          type: object
          description: The response payload.
        meta:
          type: object
          properties:
            timestamp:
              type: string
              format: date-time
              description: When the response was generated.
              example: '2026-04-14T10:00:00+00:00'
            exchange:
              type: string
              example: all
            coin:
              type: string
              example: BTC
            rate_limit:
              $ref: '#/components/schemas/RateLimit'
    Markets:
      type: object
      properties:
        crypto:
          type: array
          items:
            type: string
        tradfi:
          type: array
          items:
            type: string
    ExpirationDetail:
      type: object
      properties:
        code:
          type: string
          example: 17OCT26
        iso:
          type:
          - string
          - 'null'
          example: '2026-10-17'
        dte:
          type:
          - number
          - 'null'
          description: Days to the cutoff (two decimals).
          example: 11.2
        cutoff_utc:
          type:
          - string
          - 'null'
          format: date-time
          example: '2026-10-17T20:00:00Z'
        is_0dte:
          type: boolean
    Error:
      type: object
      description: 'Standard error body. `error` is a stable slug safe to branch on; `message` is human-readable prose that may change and must not be parsed. Errors are never wrapped in the data/meta envelope used by successful responses. Some errors add hint fields.

        '
      required:
      - error
      - message
      properties:
        error:
          type: string
          enum:
          - unauthorized
          - subscription_required
          - market_not_in_plan
          - rate_limit_exceeded
          - invalid_exchange
          - invalid_pair
          - invalid_expiration
          - invalid_param
          - no_data
          - unsupported_coin
          - market_unavailable
          - history_not_available
          - range_too_large
          - no_snapshot
          - no_file
          - files_unavailable
          - history_files_limit_exceeded
          - method_not_allowed
          example: invalid_exchange
        message:
          type: string
          example: Exchange 'kraken' is not available.
        current_tier:
          type: string
          description: With `subscription_required` and `market_not_in_plan`.
          example: trial
        valid_exchanges:
          type: array
          items:
            type: string
          description: With `invalid_exchange`, `invalid_pair` and `history_not_available`.
          example:
          - deribit
          - bybit
          - okx
          - derive
          - binance
          - combined
        nearest_expirations:
          type: array
          items:
            type: string
          description: With `invalid_expiration`; up to five ISO dates closest to the request (the earliest five if the value is not a date).
          example:
          - '2026-10-17'
          - '2026-10-19'
        valid_values:
          type: array
          items:
            type: string
          description: With `invalid_param` for `view`, `granularity`, `file` and `compare`.
          example:
          - full
          - levels
        max_value:
          type: number
          description: With `invalid_param` for `range_pct`.
          example: 50
        max_window_days:
          type: integer
          description: With `range_too_large`.
          example: 31
        nearest_timestamps:
          type: array
          items:
            type: string
            format: date-time
          description: With `no_snapshot`; up to three capture times closest to `at`.
          example:
          - '2026-10-05T20:15:00Z'
          - '2026-10-05T13:45:00Z'
        market:
          type: string
          description: With `market_not_in_plan`; the market the requested coin belongs to.
          enum:
          - crypto
          - tradfi
          example: tradfi
        markets_in_plan:
          type: array
          items:
            type: string
          description: With `market_not_in_plan`.
        supported_crypto:
          type: array
          items:
            type: string
          description: With `unsupported_coin`; crypto coins listed by at least one exchange.
          example:
          - BTC
          - ETH
          - HYPE
          - SOL
          - XRP
        supported_tradfi:
          type: array
          items:
            type: string
          description: With `unsupported_coin`; US tickers we track.
          example:
          - QQQ
          - SPX
          - SPY
        rate_limit:
          allOf:
          - $ref: '#/components/schemas/RateLimit'
          description: With `rate_limit_exceeded` and `history_files_limit_exceeded`; mirrors the X-RateLimit-* headers.
  responses:
    Forbidden:
      description: '`subscription_required` (the plan has no API access) or `market_not_in_plan`

        (the plan does not include the coin''s market).

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: 'Missing or invalid credential, or a credential that does not resolve to a user. Both return `unauthorized`.

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: '`invalid_exchange`, `invalid_pair`, `invalid_expiration` or `invalid_param`,

        with hint fields (`valid_exchanges`, `nearest_expirations`, `valid_values`, `max_value`).

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    Exchange:
      name: exchange
      in: path
      required: true
      description: 'Crypto: `bybit`, `deribit`, `okx`, `derive`, `binance`, `all` / `combined`, or a `+`-joined

        subset such as `deribit+derive`. TradFi tickers: `tradfi` (`all` and `combined`

        are aliases). Use `/exchanges` for the live list.

        '
      schema:
        type: string
        examples:
        - all
        - deribit+derive
        - tradfi
    Coin:
      name: coin
      in: path
      required: true
      description: Symbol (case-insensitive), for example `BTC` or `QQQ`. Use `/coins` for the list.
      schema:
        type: string
        example: BTC
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'API key prefixed with `gex_sk_`. Create one in your

        [account dashboard](https://gammaflip.io/account).

        '