Skip to Content
f1owdocs

REST API

The f1ow crypto market data REST API — every MCP tool as an HTTP resource with JSON responses, bearer or x402 auth, an OpenAPI 3.1 spec and RFC 9457 errors.

Every f1ow tool is also a REST resource. The tools, credentials and balance are the same as over MCP, so there is no MCP client to run.

EndpointURL
REST · Bearerhttps://mcp.f1ow.com/v1
REST · x402https://mcp.f1ow.com/x402/v1
REST · Key in pathhttps://mcp.f1ow.com/key/<your-key>/v1
WebSocket · Bearerwss://mcp.f1ow.com/v1/ws
WebSocket · Key in pathwss://mcp.f1ow.com/key/<your-key>/v1/ws
OpenAPI spechttps://mcp.f1ow.com/openapi.json
AsyncAPI spechttps://mcp.f1ow.com/asyncapi.json

A request

curl "https://mcp.f1ow.com/v1/derivatives/funding/BTC" \
  -H "Authorization: Bearer $F1OW_API_KEY"

Path segments and query parameters map one-to-one to the tool's arguments. Arrays are comma-separated (?symbols=BTC,ETH). The trade-plan check takes a JSON body:

curl -X POST "https://mcp.f1ow.com/v1/research/trade-plan" \
  -H "Authorization: Bearer $F1OW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"symbol":"BTC","entry":70000,"stop":68000,"target":75000,"account_size":10000,"risk_percent":1}'

Each tool page lists its path, parameters and ready-to-run cURL, TypeScript and Python examples.

Responses

The body is the tool's JSON result, typed per tool in the OpenAPI spec:

{
  "symbol": "BTC",
  "...": "the tool's fields",
  "generatedAt": "2026-11-07T15:36:14Z"
}
  • Every tool returns a JSON object. The fields are documented on its tool page.
  • generatedAt is when the data was produced, from the source's timestamp where it has one.
  • There is no text report here. The model-readable report is MCP-only: connect over MCP to get it next to the same JSON.

Errors

Errors are RFC 9457 problem details (application/problem+json):

{
  "type": "urn:problem-type:f1ow:validation",
  "title": "One or more arguments are invalid",
  "status": 400,
  "detail": "See 'errors' for each invalid argument.",
  "instance": "/v1/market/candles/BTC",
  "errors": { "interval": ["must be one of: 1m, 5m, 15m, 30m, 1h, 4h, 12h, 1d, 1w"] }
}
StatusMeaning
400An argument is missing or invalid; errors names each one.
401 / 403Missing or rejected credential.
402x402 payment required, or the account's period or balance is used up.
502A data source could not answer. Not charged; retry later.
500Unexpected server error. Not charged.

Specs

Get an API key

Sign in, get an API key and make your first call in under a minute. No card required.

For agents: this page as Markdown · all docs

On this page