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-assets-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: 3.2.0
info:
title: Chainflip Broker as a Service Assets 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: Assets
description: 'The assets you can swap: their ids, decimals, minimum swap amounts, USD prices and logos. No key needed.'
paths:
/assets:
get:
tags:
- Assets
summary: Get all assets
description: 'Lists every asset you can swap, with its network, ticker, decimals, minimum swap
amount and current USD price. An asset''s `id` is what you pass as
`sourceAsset` or `destinationAsset` on every other endpoint.'
operationId: listAssets
responses:
'200':
description: All available assets.
content:
application/json:
schema:
$ref: '#/components/schemas/ChainflipBaas.Assets.AssetsResponse'
'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
/assets/{network}:
get:
tags:
- Assets
summary: Get all assets on a given network
description: The same list as `listAssets`, limited to the assets on one network.
operationId: listNetworkAssets
parameters:
- name: network
in: path
description: The network id to filter on.
required: true
schema:
enum:
- btc
- eth
- dot
- arb
- sol
- hub
- tron
type: string
description: 'Supported networks. Member names are lowercase on purpose: they are the wire-format network
ids used in asset identifiers (e.g. "usdc.eth") and API responses.'
x-ms-enum:
name: Network
modelAsString: true
example: eth
responses:
'200':
description: All available assets.
content:
application/json:
schema:
$ref: '#/components/schemas/ChainflipBaas.Assets.AssetsResponse'
'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/rfc7231#section-6.5.1
title: One or more validation errors occurred.
status: 400
traceId: 00-982607166a542147b435be3a847ddd71-fc75498eb9f09d48-00
errors:
network:
- The value 'nope' is not valid.
'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
/assets/{asset}/logo.svg:
get:
tags:
- Assets
summary: Get the logo for an asset
description: Returns the asset's logo as an SVG image, cacheable for an hour.
operationId: getAssetLogo
parameters:
- name: asset
in: path
description: The asset id, as listed by `listAssets`.
required: true
schema:
type: string
example: btc.btc
responses:
'200':
description: The asset logo in SVG format.
content:
image/svg+xml:
schema:
type: string
'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: {}
'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:
ChainflipBaas.Assets.AssetInfo:
type: object
properties:
enabled:
type: boolean
description: Is the asset available for swapping or not?
example: true
id:
type: string
description: 'The asset id, `ticker.network`: what you pass as `sourceAsset` or `destinationAsset` on every
other endpoint.'
example: flip.eth
direction:
enum:
- ingress
- egress
- both
type: string
description: Direction an asset can be used in. Ingress assets can only be used to swap from. Egress assets can only be used to swap to. Assets with both can be used to swap from and to.
example: both
x-ms-enum:
name: AssetDirection
modelAsString: true
ticker:
type: string
description: Display ticker of the asset.
example: FLIP
name:
type: string
description: Descriptive name of the asset.
example: Chainflip
network:
type: string
description: Name of the network where the asset is located.
example: Ethereum
contractAddress:
type:
- string
- 'null'
description: The contract address for tokens which have one.
example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
networkLogo:
type: string
description: A url to the logo for the network.
readOnly: true
example: /networks/eth/logo.svg
assetLogo:
type: string
description: A url to the logo for the asset.
readOnly: true
example: /assets/flip.eth/logo.svg
decimals:
type: integer
description: Number of decimals the asset native value contains.
format: int32
example: 18
minimalAmount:
type:
- number
- 'null'
description: Minimum amount required to swap the asset.
format: double
readOnly: true
example: 4
minimalAmountNative:
type:
- string
- 'null'
description: Minimum amount in native units required to swap the asset.
readOnly: true
example: '4000000000000000000'
usdPrice:
type:
- number
- 'null'
description: Current pool price of the asset in USDC.
format: double
readOnly: true
example: 4
usdPriceNative:
type:
- string
- 'null'
description: Current pool price of the asset in USDC native units.
readOnly: true
example: '4000000000000000000'
platforms:
type: array
items:
type: string
description: The providers that support this asset. Pass one as `platform` to `startSwap`.
readOnly: true
example:
- chainflip
additionalProperties: false
description: 'An asset you can swap: its id, network, decimals, minimum swap amount and current USD price.'
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.'
ChainflipBaas.Assets.AssetsResponse:
type: object
properties:
assets:
type: array
items:
$ref: '#/components/schemas/ChainflipBaas.Assets.AssetInfo'
description: All available assets.
readOnly: true
additionalProperties: false
description: The assets you can swap, ordered by id.
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