ExchangeRebel Fact Bank API
The Fact Bank API from ExchangeRebel — 6 operation(s) for fact bank.
The Fact Bank API from ExchangeRebel — 6 operation(s) for fact bank.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/exchangerebel-com:exchangerebel-com-fact-bank-api"
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.
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: ExchangeRebel — pay-per-call APIs for AI agents (x402 on…
version: 1.0.0
contact:
name: 'ExchangeRebel (operator: Rebel Data)'
url: https://exchangerebel.com
email: sound.money.investing@gmail.com
x-guidance: 'All paid operations use x402 on Solana: call without payment to get a 402 challenge (SOL recipient + USDC token account + fresh memo), pay with the memo attached via the Solana Memo program, then retry with header X-Payment-Tx: <signature> and ?toll_memo=<memo>. Challenges are dual-version: the PAYMENT-REQUIRED header carries the x402 v2 PaymentRequired object and the response body carries the same challenge in x402 v1 form for compatibility. Free operations (security: []) include each service''s /health catalog with full response shapes. Prices in x-payment-info are USD per call unless the summary says otherwise (RPC is per 1,000-request block; Telegram provisioning is per bot-month; transcription is per minute of audio).'
description: '67 data and utility APIs behind x402 tolls, settled in SOL or USDC on Solana. Call a paid endpoint without payment to receive a 402 x402 challenge (recipient + fresh memo), pay with the memo attached via the Solana Memo program, then retry with the X-Payment-Tx header and toll_memo query parameter. Free catalog/health endpoints are marked without x-payment-info. Full catalogs: GET /toll/discovery and each service''s /health.'
servers:
- url: https://exchangerebel.com
tags:
- name: Fact Bank
paths:
/toll/facts/catalog:
get:
tags:
- Fact Bank
summary: Fact bank catalog (free, counts-only)
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
security: []
operationId: getTollFactsCatalog
x-operation-id-source: derived
/toll/facts/health:
get:
tags:
- Fact Bank
summary: Fact bank health (free, counts-only)
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
security: []
operationId: getTollFactsHealth
x-operation-id-source: derived
/toll/facts/status/preflight:
post:
tags:
- Fact Bank
summary: 'Free pre-check twin: exact $0.01 RULED price first'
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
requestBody:
content:
application/json:
schema:
type: object
properties:
stream:
type: string
description: string (required) - one of nfl-player-status, epl-player-status, bls-release-status, fed-board-status
entity_id:
type: string
description: string - canonical entity id, verbatim as stored
name:
type: string
description: string - name-resolution form (alternative to entity_id)
required:
- stream
security: []
operationId: postTollFactsStatusPreflight
x-operation-id-source: derived
/toll/facts/status:
post:
tags:
- Fact Bank
summary: 'Fact bank STATUS lookup: $0.01 RULED per call'
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
content:
application/json:
example:
stream: nfl-player-status
entity:
id: nfl:sirvocea-dennis:buccaneers
type: player
name: SirVocea Dennis
team: Buccaneers
league: NFL
position: LB
fields:
- status_field: game_status
status_value: Questionable
fact_id: fb_a250dff5623c2049d957
kind: change
previous_value: No designation
fact_backed: true
as_of:
first_seen_at: '2026-10-17T21:24:06Z'
source_published_at: null
source:
attribution: National Football League official injury report (nfl.com) — league-published team reports
name: NFL official injury report
url: https://www.nfl.com/injuries/
grade: official
capture_cadence: daily
detail:
report: Injuries - WEEK 6
run_id: 20261017T212406Z-aec54f
snapshot: snapshots/2026-10-17/20261017T212406Z-aec54f__nfl-player-status.json
- status_field: injury
status_value: Ankle, Foot
fact_id: fb_400b1ef01acedb689a61
kind: initial
previous_value: null
fact_backed: true
as_of:
first_seen_at: '2026-10-13T22:35:33Z'
source_published_at: null
source:
attribution: National Football League official injury report (nfl.com) — league-published team reports
name: NFL official injury report
url: https://www.nfl.com/injuries/
grade: official
capture_cadence: null
detail:
report: Injuries - WEEK 5
run_id: 20261013T223533Z-195f25
snapshot: snapshots/2026-10-13/20261013T223533Z-195f25__nfl-player-status.json
- status_field: practice_status
status_value: Full Participation in Practice
fact_id: fb_45a2223329068cd023c7
kind: change
previous_value: Limited Participation in Practice
fact_backed: true
as_of:
first_seen_at: '2026-10-17T21:24:06Z'
source_published_at: null
source:
attribution: National Football League official injury report (nfl.com) — league-published team reports
name: NFL official injury report
url: https://www.nfl.com/injuries/
grade: official
capture_cadence: daily
detail:
report: Injuries - WEEK 6
run_id: 20261017T212406Z-aec54f
snapshot: snapshots/2026-10-17/20261017T212406Z-aec54f__nfl-player-status.json
freshness:
newest_fact_at: '2026-10-17T21:24:06Z'
newest_fact_age_seconds: 172806
value_since: '2026-10-17T21:24:06Z'
store_last_run_at: '2026-10-19T21:24:12Z'
capture_cadence: daily
class: settled
label: Value first seen 2026-10-17; store last captured 2026-10-19 (daily cadence).
store_stale: false
page:
limit: 25
returned: 3
total: 3
next_cursor: null
store_stamp:
facts_sha256: 5ebdfe2bdb4bf9890f319fa687207c037b939e5475b67ce5f8e2cf6e3433ade7
facts_lines: 3431
last_run_id: 20261019T212412Z-7d6547
built_at: '2026-10-19T00:00:00Z'
price_usd: 0.01
toll:
usdc_units: 10000
sol_lamports: 68000
schema:
type: object
properties:
stream:
type: string
enum:
- nfl-player-status
- epl-player-status
- bls-release-status
- fed-board-status
entity:
type: object
properties:
id:
type: string
type:
type:
- string
- 'null'
name:
type:
- string
- 'null'
team:
type: string
league:
type: string
position:
type: string
series_id:
type: string
required:
- id
- type
- name
fields:
type: array
items:
type: object
properties:
status_field:
type: string
status_value:
description: The stored status value, verbatim (string or number, by stream).
fact_id:
type:
- string
- 'null'
kind:
type: string
previous_value:
description: The previous stored value, verbatim, or null (always null on baseline rows).
fact_backed:
type: boolean
since_is_baseline_capture:
type: boolean
description: Present (true) only on baseline rows -- fields with no fact yet, captured at store build.
as_of:
type: object
properties:
first_seen_at:
type: string
source_published_at:
type:
- string
- 'null'
required:
- first_seen_at
- source_published_at
source:
anyOf:
- type: object
properties:
name:
type: string
url:
type: string
attribution:
type: string
required:
- name
- url
- attribution
- type: 'null'
description: Null on baseline rows.
grade:
type:
- string
- 'null'
capture_cadence:
type:
- string
- 'null'
detail:
type: object
run_id:
type: string
snapshot:
type:
- string
- 'null'
required:
- status_field
- status_value
- fact_id
- kind
- previous_value
- fact_backed
- as_of
- source
- grade
- capture_cadence
- detail
- run_id
- snapshot
freshness:
type: object
properties:
newest_fact_at:
type:
- string
- 'null'
newest_fact_age_seconds:
type:
- integer
- 'null'
value_since:
type:
- string
- 'null'
store_last_run_at:
type:
- string
- 'null'
capture_cadence:
type: string
class:
type:
- string
- 'null'
enum:
- current
- settled
- long_unchanged
- null
label:
type:
- string
- 'null'
store_stale:
type: boolean
required:
- newest_fact_at
- newest_fact_age_seconds
- value_since
- store_last_run_at
- capture_cadence
- class
- label
- store_stale
page:
type: object
properties:
limit:
type: integer
returned:
type: integer
total:
type: integer
next_cursor:
type:
- string
- 'null'
required:
- limit
- returned
- total
- next_cursor
store_stamp:
type: object
properties:
facts_sha256:
type:
- string
- 'null'
facts_lines:
type: integer
last_run_id:
type:
- string
- 'null'
built_at:
type:
- string
- 'null'
required:
- facts_sha256
- facts_lines
- last_run_id
- built_at
price_usd:
type: number
toll:
type: object
properties:
usdc_units:
type: integer
sol_lamports:
type: integer
required:
- usdc_units
- sol_lamports
required:
- stream
- entity
- fields
- freshness
- page
- store_stamp
- price_usd
- toll
'402':
description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
requestBody:
content:
application/json:
schema:
type: object
properties:
stream:
type: string
description: string (required) - one of nfl-player-status, epl-player-status, bls-release-status, fed-board-status
entity_id:
type: string
description: string - canonical entity id, verbatim as stored
name:
type: string
description: string - name-resolution form (alternative to entity_id)
status_field:
type: string
description: string - optional; omit for all current fields
required:
- stream
x-payment-info:
protocols:
- x402
price:
mode: fixed
currency: USD
amount: '0.01'
security:
- x402Payment: []
operationId: postTollFactsStatus
x-operation-id-source: derived
/toll/facts/tendency/preflight:
post:
tags:
- Fact Bank
summary: 'Free pre-check twin: exact $0.02 RULED price first'
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
requestBody:
content:
application/json:
schema:
type: object
properties:
stream:
type: string
description: string (required) - one of nfl-player-status, epl-player-status, bls-release-status, fed-board-status
entity_id:
type: string
description: string - canonical entity id, verbatim as stored
status_field:
type: string
description: string (required) - the status field whose history is computed over
required:
- stream
- status_field
security: []
operationId: postTollFactsTendencyPreflight
x-operation-id-source: derived
/toll/facts/tendency:
post:
tags:
- Fact Bank
summary: 'Fact bank TENDENCY: $0.02 RULED per call'
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
content:
application/json:
example:
stream: epl-player-status
entity:
id: epl:player:552
type: player
name: Brobbey
team: Sunderland
league: Premier League
position: FWD
status_field: chance_of_playing_next_round
value_class: numeric
direction: mixed
first_value: 0
last_value: 75
delta: 75
min: 0
max: 100
fact_count: 3
transitions: 2
window:
facts_used: 3
from: '2026-10-13T22:35:33Z'
to: '2026-10-19T21:24:12Z'
capped: false
rank_map: null
steps:
- fact_id: fb_b9b673e845c2d8ca2232
status_value: 0
previous_value: null
kind: initial
first_seen_at: '2026-10-13T22:35:33Z'
source:
name: Premier League Fantasy API (official)
url: https://fantasy.premierleague.com/api/bootstrap-static/
attribution: Premier League official Fantasy API (fantasy.premierleague.com) — league-published availability status
- fact_id: fb_32cd812499bcb2ce7a97
status_value: 100
previous_value: 0
kind: change
first_seen_at: '2026-10-15T21:24:13Z'
source:
name: Premier League Fantasy API (official)
url: https://fantasy.premierleague.com/api/bootstrap-static/
attribution: Premier League official Fantasy API (fantasy.premierleague.com) — league-published availability status
- fact_id: fb_47c7e2802db01fa88a8c
status_value: 75
previous_value: 100
kind: change
first_seen_at: '2026-10-19T21:24:12Z'
source:
name: Premier League Fantasy API (official)
url: https://fantasy.premierleague.com/api/bootstrap-static/
attribution: Premier League official Fantasy API (fantasy.premierleague.com) — league-published availability status
freshness:
newest_fact_at: '2026-10-19T21:24:12Z'
newest_fact_age_seconds: 0
value_since: '2026-10-19T21:24:12Z'
store_last_run_at: '2026-10-19T21:24:12Z'
capture_cadence: daily
class: current
label: Value first seen 2026-10-19; store last captured 2026-10-19 (daily cadence).
store_stale: false
page:
limit: 25
returned: 3
total: 3
next_cursor: null
store_stamp:
facts_sha256: 5ebdfe2bdb4bf9890f319fa687207c037b939e5475b67ce5f8e2cf6e3433ade7
facts_lines: 3431
last_run_id: 20261019T212412Z-7d6547
built_at: '2026-10-19T00:00:00Z'
computation: direction = sign(last − first) over the window; steps listed verbatim; no values estimated or interpolated
price_usd: 0.02
price_status: PROPOSED
toll:
usdc_units: 20000
sol_lamports: 136000
schema:
type: object
properties:
stream:
type: string
enum:
- nfl-player-status
- epl-player-status
- bls-release-status
- fed-board-status
entity:
type: object
properties:
id:
type: string
type:
type:
- string
- 'null'
name:
type:
- string
- 'null'
team:
type: string
league:
type: string
position:
type: string
series_id:
type: string
required:
- id
- type
- name
status_field:
type: string
value_class:
type: string
enum:
- numeric
- ordinal
direction:
type: string
enum:
- rising
- falling
- flat
- mixed
- stable
- improving
- worsening
first_value:
description: The first stored value in the window, verbatim.
last_value:
description: The last stored value in the window, verbatim.
delta:
type: number
min:
description: 'Window minimum: a number for numeric streams; the earliest-ranked stored value for ordinal streams.'
max:
description: 'Window maximum: a number for numeric streams; the latest-ranked stored value for ordinal streams.'
fact_count:
type: integer
transitions:
type: integer
window:
type: object
properties:
facts_used:
type: integer
from:
type: string
to:
type: string
capped:
type: boolean
required:
- facts_used
- from
- to
- capped
rank_map:
type:
- object
- 'null'
additionalProperties:
type: integer
description: 'Ordinal streams only: stored value -> rank. Null for numeric streams.'
steps:
type: array
items:
type: object
properties:
fact_id:
type: string
status_value:
description: The stored value, verbatim.
previous_value:
description: The previous stored value, verbatim, or null.
kind:
type: string
first_seen_at:
type: string
source:
type: object
properties:
name:
type: string
url:
type: string
attribution:
type: string
required:
- name
- url
- attribution
required:
- fact_id
- status_value
- previous_value
- kind
- first_seen_at
- source
freshness:
type: object
properties:
newest_fact_at:
type:
- string
- 'null'
newest_fact_age_seconds:
type:
- integer
- 'null'
value_since:
type:
- string
- 'null'
store_last_run_at:
type:
- string
- 'null'
capture_cadence:
type: string
class:
type:
- string
- 'null'
enum:
- current
- settled
- long_unchanged
- null
label:
type:
- string
- 'null'
store_stale:
type: boolean
required:
- newest_fact_at
- newest_fact_age_seconds
- value_since
- store_last_run_at
- capture_cadence
- class
- label
- store_stale
page:
type: object
properties:
limit:
type: integer
returned:
type: integer
total:
type: integer
next_cursor:
type:
- string
- 'null'
required:
- limit
- returned
- total
- next_cursor
store_stamp:
type: object
properties:
facts_sha256:
type:
- string
- 'null'
facts_lines:
type: integer
last_run_id:
type:
- string
- 'null'
built_at:
type:
- string
- 'null'
required:
- facts_sha256
- facts_lines
- last_run_id
- built_at
computation:
type: string
price_usd:
type: number
price_status:
type: string
toll:
type: object
properties:
usdc_units:
type: integer
sol_lamports:
type: integer
required:
- usdc_units
- sol_lamports
required:
- stream
- entity
- status_field
- value_class
- direction
- first_value
- last_value
- delta
- min
- max
- fact_count
- transitions
- window
- rank_map
- steps
- freshness
- page
- store_stamp
- computation
- price_usd
- price_status
- toll
'402':
description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
requestBody:
content:
application/json:
schema:
type: object
properties:
stream:
type: string
description: string (required) - one of nfl-player-status, epl-player-status, bls-release-status, fed-board-status
entity_id:
type: string
description: string - canonical entity id, verbatim as stored
status_field:
type: string
description: string (required) - the status field whose history is computed over
required:
- stream
- status_field
x-payment-info:
protocols:
- x402
price:
mode: fixed
currency: USD
amount: '0.02'
security:
- x402Payment: []
operationId: postTollFactsTendency
x-operation-id-source: derived
components:
securitySchemes:
x402Payment:
type: apiKey
in: header
name: X-Payment-Tx
description: 'x402 toll payment proof: the Solana transaction signature of a payment carrying the memo from the 402 challenge; send together with ?toll_memo=<memo>. Payment itself is made on-chain in SOL or USDC to the recipient named in the challenge.'