Chainflip Broker as a Service Rpc API

A Chainflip broker JSON-RPC endpoint for the Chainflip SDK and other broker clients: point their broker URL at it and the deposit channels and vault swaps they open earn your commission.

Operations 1

POST /rpc/{apiKey} Make an RPC call #

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/chainflip-broker-io:chainflip-broker-io-rpc-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

chainflip-broker-io-rpc-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Chainflip Broker as a Service Rpc API
  description: Run your own Chainflip Broker without any hassle.
  version: v1
  x-onboarding:
    freeToStart: true
    noKeyNeeded:
    - /mcp
    - /assets
    - /networks
    apiKeys:
      selfServe: true
      signup: /register
      secret: false
    sandbox: Testing environment on the Chainflip Perseverance testnet; its URLs are listed at /onboarding.
    firstCall: GET /assets
    facts: /onboarding
servers:
- url: /
  description: 'Free to start. The MCP server (/mcp), /assets and /networks need no key or account; get an API key self-serve at /register, free and without payment details. Onboarding facts: /onboarding.'
tags:
- name: RPC
  description: 'A Chainflip broker JSON-RPC endpoint for the Chainflip SDK and other broker clients: point their broker URL at it and the deposit channels and vault swaps they open earn your commission.'
paths:
  /rpc/{apiKey}:
    post:
      tags:
      - RPC
      summary: Make an RPC call
      description: 'A JSON-RPC endpoint compatible with the native Chainflip broker, so code written for

        it, the Chainflip SDK and Swapkit can use BaaS by pointing their broker URL here. Your

        configured commission is enforced: a lower commission in the request is raised to it.

        One call per request, with positional (array) params.'
      operationId: brokerRpc
      parameters:
      - name: apiKey
        in: path
        description: The partner API key.
        required: true
        schema:
          type: string
      requestBody:
        description: An RPC request for the RPC call.
        content:
          application/json:
            schema: {}
        required: true
      responses:
        '200':
          description: An RPC response for the RPC call.
          content:
            application/json:
              schema: {}
        '400':
          description: The request has invalid information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails'
              example:
                type: https://tools.ietf.org/html/rfc9110#section-15.5.1
                title: One or more validation errors occurred.
                status: 400
                detail: The request has invalid information.
                traceId: 00-982607166a542147b435be3a847ddd71-fc75498eb9f09d48-00
                errors: {}
        '401':
          description: The partner does not have access.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
              example:
                type: https://tools.ietf.org/html/rfc9110#section-15.5.2
                title: Unauthorized
                status: 401
                detail: Invalid partner.
                traceId: 00-982607166a542147b435be3a847ddd71-fc75498eb9f09d48-00
        '403':
          description: Swaps between these assets are not enabled for the partner.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
              example:
                type: https://tools.ietf.org/html/rfc9110#section-15.5.4
                title: Forbidden
                status: 403
                detail: Swaps from BTC to ETH are not enabled for your account.
                traceId: 00-982607166a542147b435be3a847ddd71-fc75498eb9f09d48-00
        '500':
          description: An error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
              example:
                type: https://tools.ietf.org/html/rfc9110#section-15.6.1
                title: An error occurred while processing your request.
                status: 500
                traceId: 00-982607166a542147b435be3a847ddd71-fc75498eb9f09d48-00
components:
  schemas:
    Microsoft.AspNetCore.Mvc.ValidationProblemDetails:
      type: object
      properties:
        type:
          type:
          - string
          - 'null'
          description: A URI reference [RFC3986] that identifies the problem type. This specification encourages that, when dereferenced, it provide human-readable documentation for the problem type (e.g., using HTML [W3C.REC-html5-20141028]). When this member is not present, its value is assumed to be "about:blank".
        title:
          type:
          - string
          - 'null'
          description: A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization(e.g., using proactive content negotiation; see[RFC7231], Section 3.4).
        status:
          type:
          - integer
          - 'null'
          description: The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.
          format: int32
        detail:
          type:
          - string
          - 'null'
          description: A human-readable explanation specific to this occurrence of the problem.
        instance:
          type:
          - string
          - 'null'
          description: A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: The validation errors associated with this problem details.
      additionalProperties:
        description: Problem type definitions MAY extend the problem details object with additional members. Extension members appear in the same namespace as other members of a problem type.
      description: 'A request that failed input validation (RFC 9457 problem details): `errors` lists the messages per parameter.'
    Microsoft.AspNetCore.Mvc.ProblemDetails:
      type: object
      properties:
        type:
          type:
          - string
          - 'null'
          description: A URI reference [RFC3986] that identifies the problem type. This specification encourages that, when dereferenced, it provide human-readable documentation for the problem type (e.g., using HTML [W3C.REC-html5-20141028]). When this member is not present, its value is assumed to be "about:blank".
        title:
          type:
          - string
          - 'null'
          description: A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization(e.g., using proactive content negotiation; see[RFC7231], Section 3.4).
        status:
          type:
          - integer
          - 'null'
          description: The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.
          format: int32
        detail:
          type:
          - string
          - 'null'
          description: A human-readable explanation specific to this occurrence of the problem.
        instance:
          type:
          - string
          - 'null'
          description: A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.
        code:
          type: string
          description: 'A stable, machine-readable error code (lowercase snake_case, e.g. "asset_disabled") identifying why the request failed, so clients can branch without matching the human-readable `detail` text. The HTTP status follows the code: 400 when the request as sent cannot be fulfilled, 404 when a status lookup found nothing to answer with, 503 for a temporary upstream condition, 500 when unclassified. Omitted when the failure has no classification. Clients must tolerate both an omitted code and unrecognised future values. See the Error codes reference: https://docs.chainflip-broker.io/features/error-codes'
          example: asset_disabled
      additionalProperties:
        description: Problem type definitions MAY extend the problem details object with additional members. Extension members appear in the same namespace as other members of a problem type.
      description: An error response (RFC 9457 problem details). Branch on `code` when it is present, never on the `detail` text.
  securitySchemes:
    apiKey:
      type: apiKey
      description: Your partner API key, from registering at /register on this site. It identifies your account and is not a secret; it grants no access beyond your own partner's quotes, swaps, fees and statuses. There is no OAuth and there are no scopes. A key is also accepted in an X-API-Key request header; when both are present, this query parameter wins, even when it is empty.
      name: apiKey
      in: query
    apiKeyHeader:
      type: apiKey
      description: Your partner API key, from registering at /register on this site, sent as a request header so it does not appear in URLs that proxies and access logs capture. It identifies your account and is not a secret; it grants no access beyond your own partner's quotes, swaps, fees and statuses. There is no OAuth and there are no scopes. When an apiKey query parameter is present it wins.
      name: X-API-Key
      in: header