Flipside Crypto JSON-RPC API

The JSON-RPC API from Flipside Crypto — 1 operation(s) for json-rpc.

Operations 1

POST /json-rpc JSON-RPC 2.0 entry point for all Data API methods. #

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/flipside-json-rpc-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

flipside-json-rpc-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Flipside Crypto Data JSON RPC API
  description: 'The Flipside Crypto Data API runs Snowflake-compatible SQL against curated on-chain datasets covering Ethereum, Solana, and 20+ other chains. The API uses a JSON-RPC 2.0 transport over a single HTTP endpoint: every call is an HTTP POST to /json-rpc whose body carries a {jsonrpc, method, params, id} envelope. Methods include createQuery, getQueryRun, getQueryRunResults, and cancelQueryRun. Authentication is via an x-api-key request header. Note: in May 2026 Flipside sold its blockchain data business to SonarX; this document describes the Flipside Data API as published.'
  termsOfService: https://flipsidecrypto.xyz
  contact:
    name: Flipside Crypto
    url: https://docs.flipsidecrypto.xyz
  version: '2.0'
servers:
- url: https://api-v2.flipsidecrypto.xyz
  description: Flipside Data API (JSON-RPC 2.0 over HTTP)
security:
- ApiKeyAuth: []
tags:
- name: JSON-RPC
paths:
  /json-rpc:
    post:
      operationId: jsonRpc
      summary: JSON-RPC 2.0 entry point for all Data API methods.
      description: Single HTTP endpoint for the Flipside Data API. The JSON-RPC `method` field selects the operation (createQuery, getQueryRun, getQueryRunResults, cancelQueryRun) and `params` carries an array with a single parameters object. All calls require the x-api-key header.
      tags:
      - JSON-RPC
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/CreateQueryRequest'
              - $ref: '#/components/schemas/GetQueryRunRequest'
              - $ref: '#/components/schemas/GetQueryRunResultsRequest'
              - $ref: '#/components/schemas/CancelQueryRunRequest'
            examples:
              createQuery:
                summary: Create and run a SQL query
                value:
                  jsonrpc: '2.0'
                  method: createQuery
                  params:
                  - sql: SELECT block_number, tx_hash FROM ethereum.core.fact_transactions LIMIT 100
                    resultTTLHours: 1
                    maxAgeMinutes: 0
                    tags:
                      sdk_package: python
                    dataSource: snowflake-default
                    dataProvider: flipside
                  id: 1
              getQueryRun:
                summary: Poll a query run status
                value:
                  jsonrpc: '2.0'
                  method: getQueryRun
                  params:
                  - queryRunId: 01h8z9e1-0000-0000-0000-000000000000
                  id: 1
              getQueryRunResults:
                summary: Fetch a page of results
                value:
                  jsonrpc: '2.0'
                  method: getQueryRunResults
                  params:
                  - queryRunId: 01h8z9e1-0000-0000-0000-000000000000
                    format: json
                    page:
                      number: 1
                      size: 1000
                  id: 1
              cancelQueryRun:
                summary: Cancel a running query
                value:
                  jsonrpc: '2.0'
                  method: cancelQueryRun
                  params:
                  - queryRunId: 01h8z9e1-0000-0000-0000-000000000000
                  id: 1
      responses:
        '200':
          description: JSON-RPC response. HTTP status is 200 even for JSON-RPC errors; the envelope contains either a `result` or an `error` member.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/CreateQueryResponse'
                - $ref: '#/components/schemas/GetQueryRunResponse'
                - $ref: '#/components/schemas/GetQueryRunResultsResponse'
                - $ref: '#/components/schemas/CancelQueryRunResponse'
                - $ref: '#/components/schemas/JsonRpcError'
        '401':
          description: Missing or invalid x-api-key.
        '429':
          description: Rate limit or query-seconds quota exceeded.
components:
  schemas:
    CancelQueryRunRequest:
      allOf:
      - $ref: '#/components/schemas/JsonRpcEnvelope'
      - type: object
        properties:
          method:
            type: string
            enum:
            - cancelQueryRun
          params:
            type: array
            items:
              $ref: '#/components/schemas/QueryRunIdParams'
    GetQueryRunRequest:
      allOf:
      - $ref: '#/components/schemas/JsonRpcEnvelope'
      - type: object
        properties:
          method:
            type: string
            enum:
            - getQueryRun
          params:
            type: array
            items:
              $ref: '#/components/schemas/QueryRunIdParams'
    CreateQueryResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          oneOf:
          - type: integer
          - type: string
        result:
          type: object
          properties:
            queryRequest:
              type: object
              properties:
                queryRunId:
                  type: string
                userId:
                  type: string
                tags:
                  type: object
            queryRun:
              $ref: '#/components/schemas/QueryRun'
    JsonRpcError:
      type: object
      properties:
        jsonrpc:
          type: string
          enum:
          - '2.0'
        id:
          oneOf:
          - type: integer
          - type: string
        error:
          type: object
          properties:
            code:
              type: integer
            message:
              type: string
            data:
              type: object
    JsonRpcEnvelope:
      type: object
      required:
      - jsonrpc
      - method
      - params
      - id
      properties:
        jsonrpc:
          type: string
          enum:
          - '2.0'
        method:
          type: string
        params:
          type: array
          description: Array containing a single parameters object.
        id:
          oneOf:
          - type: integer
          - type: string
    GetQueryRunResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          oneOf:
          - type: integer
          - type: string
        result:
          type: object
          properties:
            queryRun:
              $ref: '#/components/schemas/QueryRun'
    GetQueryRunResultsResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          oneOf:
          - type: integer
          - type: string
        result:
          type: object
          properties:
            columnNames:
              type: array
              items:
                type: string
            columnTypes:
              type: array
              items:
                type: string
            rows:
              type: array
              items:
                type: array
                items: {}
            page:
              type: object
              properties:
                currentPageNumber:
                  type: integer
                currentPageSize:
                  type: integer
                totalRows:
                  type: integer
                totalPages:
                  type: integer
            originalQueryRun:
              $ref: '#/components/schemas/QueryRun'
    CancelQueryRunResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          oneOf:
          - type: integer
          - type: string
        result:
          type: object
          properties:
            canceledQueryRun:
              $ref: '#/components/schemas/QueryRun'
    GetQueryRunResultsParams:
      type: object
      required:
      - queryRunId
      properties:
        queryRunId:
          type: string
        format:
          type: string
          enum:
          - csv
          - json
          default: csv
          description: Result serialization format.
        page:
          type: object
          properties:
            number:
              type: integer
              default: 1
              description: 1-indexed page number; each page is capped at ~30MB.
            size:
              type: integer
              default: 1000
              description: Rows per page.
    GetQueryRunResultsRequest:
      allOf:
      - $ref: '#/components/schemas/JsonRpcEnvelope'
      - type: object
        properties:
          method:
            type: string
            enum:
            - getQueryRunResults
          params:
            type: array
            items:
              $ref: '#/components/schemas/GetQueryRunResultsParams'
    CreateQueryRequest:
      allOf:
      - $ref: '#/components/schemas/JsonRpcEnvelope'
      - type: object
        properties:
          method:
            type: string
            enum:
            - createQuery
          params:
            type: array
            items:
              $ref: '#/components/schemas/CreateQueryParams'
    CreateQueryParams:
      type: object
      required:
      - sql
      properties:
        sql:
          type: string
          description: Flipside Snowflake-compatible SQL query string.
        resultTTLHours:
          type: integer
          default: 1
          description: Hours to retain the materialized result set for retrieval.
        maxAgeMinutes:
          type: integer
          default: 0
          description: Maximum acceptable age of a cached result. 0 forces fresh execution.
        ttlMinutes:
          type: integer
          description: Legacy cache time-to-live in minutes.
        tags:
          type: object
          additionalProperties:
            type: string
          description: Arbitrary key/value labels attached to the query run.
        dataSource:
          type: string
          default: snowflake-default
        dataProvider:
          type: string
          default: flipside
    QueryRun:
      type: object
      properties:
        id:
          type: string
        sqlStatementId:
          type: string
        state:
          type: string
          enum:
          - QUERY_STATE_READY
          - QUERY_STATE_RUNNING
          - QUERY_STATE_STREAMING_RESULTS
          - QUERY_STATE_SUCCESS
          - QUERY_STATE_FAILED
          - QUERY_STATE_CANCELED
        rowCount:
          type: integer
        totalSize:
          type: integer
        errorName:
          type:
          - string
          - 'null'
        errorMessage:
          type:
          - string
          - 'null'
        startedAt:
          type:
          - string
          - 'null'
          format: date-time
        endedAt:
          type:
          - string
          - 'null'
          format: date-time
    QueryRunIdParams:
      type: object
      required:
      - queryRunId
      properties:
        queryRunId:
          type: string
          description: Identifier returned by createQuery.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Flipside Data API key, created in the Flipside account settings.