Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
description: The Blockworks Data API is a unified, read-only REST interface to Blockworks' warehouse-modeled crypto dataset, powered by Messari's research and data infrastructure.
title: Blockworks Data TCG Platforms API
version: 0.1.0
servers:
- description: Blockworks API
url: https://api.blockworks.com
security:
- apiKey: []
tags:
- description: 'Models documented under TCG Platforms: TCG Platform Chains (table), TCG Platforms by Chain (timeseries).'
name: TCG Platforms
paths:
/query/tabular/tcg-platform-chains:
get:
description: 'One row per trading card and collectibles platform on one blockchain, keyed by platform and chain: name, platform, chain, project slug and network slug. The id is the series key of the tcg-platforms-by-chain timeseries model.'
operationId: getTabular_tcg_platform_chains
parameters:
- description: TCG Platform Chain ID equals.
in: query
name: idEq
schema:
type: string
- description: TCG Platform Chain ID is one of (comma-separated).
in: query
name: idIsOneOf
schema:
items:
type: string
type: array
- description: Name equals.
in: query
name: nameEq
schema:
type: string
- description: Name is one of (comma-separated).
in: query
name: nameIsOneOf
schema:
items:
type: string
type: array
- description: Name contains (case-insensitive substring).
in: query
name: nameContains
schema:
type: string
- description: Slug equals.
in: query
name: slugEq
schema:
type: string
- description: Slug is one of (comma-separated).
in: query
name: slugIsOneOf
schema:
items:
type: string
type: array
- description: Platform equals.
in: query
name: platformEq
schema:
type: string
- description: Platform is one of (comma-separated).
in: query
name: platformIsOneOf
schema:
items:
type: string
type: array
- description: Chain equals.
in: query
name: chainEq
schema:
type: string
- description: Chain is one of (comma-separated).
in: query
name: chainIsOneOf
schema:
items:
type: string
type: array
- description: Network Slug equals.
in: query
name: networkSlugEq
schema:
type: string
- description: Network Slug is one of (comma-separated).
in: query
name: networkSlugIsOneOf
schema:
items:
type: string
type: array
- description: Field to sort by; defaults to the model's default sort column.
in: query
name: sortBy
schema:
default: name
enum:
- name
- slug
- platform
- chain
- networkSlug
type: string
- description: Sort direction.
in: query
name: sortDirection
schema:
default: asc
enum:
- asc
- desc
type: string
- description: 1-based page number.
in: query
name: page
schema:
type: integer
- description: Rows per page (max 1000, default 100).
in: query
name: pageSize
schema:
type: integer
- description: Comma-separated fields to return; defaults to all fields.
in: query
name: selections
schema:
items:
enum:
- id
- name
- slug
- platform
- chain
- networkSlug
type: string
type: array
- description: 'Response format, overriding the Accept header: json (default), csv, or jsonl (NDJSON). csv and jsonl return the rows as a downloadable file.'
in: query
name: acceptFormat
schema:
default: json
enum:
- json
- csv
- jsonl
type: string
responses:
'200':
content:
application/json:
example:
data:
- chain: <chain>
id: <id>
name: <name>
networkSlug: <networkSlug>
platform: <platform>
slug: <slug>
error: null
metadata:
totalPages: 1
totalRows: 1
schema:
properties:
data:
items:
$ref: '#/components/schemas/TcgPlatformChainsRow'
type: array
error:
type:
- string
- 'null'
metadata:
description: Pagination totals for the full filtered result set, independent of the current page.
properties:
totalPages:
format: int64
type: integer
totalRows:
format: int64
type: integer
required:
- totalRows
- totalPages
type: object
required:
- data
- metadata
type: object
application/x-ndjson:
schema:
description: JSON Lines (NDJSON); one JSON object per line.
type: string
text/csv:
schema:
description: CSV with a header row; one row per record.
type: string
description: One page of matching rows, with the totals for the whole filtered set.
'400':
content:
application/json:
example:
data: null
error: unknown query parameter "id"
schema:
$ref: '#/components/schemas/ErrorResponse'
description: 'The request is malformed: an unknown query parameter (a filter needs its operator suffix, such as idEq), a filter value of the wrong type, a sortBy field that is not sortable, an unknown selections field, or a pageSize above 1000.'
'401':
content:
application/json:
example:
data: null
error: this model requires authentication
schema:
$ref: '#/components/schemas/ErrorResponse'
description: No API key was sent and the model requires one.
'403':
content:
application/json:
example:
data: null
error: this model requires the "projects_protocols_unified" permission
schema:
$ref: '#/components/schemas/ErrorResponse'
description: The API key is not valid, or does not hold the "projects_protocols_unified" permission.
'404':
content:
application/json:
example:
data: null
error: tabular model "unknown-model" not found
schema:
$ref: '#/components/schemas/ErrorResponse'
description: 'The path names a model that does not exist: the slug is mistyped or the model was removed.'
summary: List TCG Platform Chains
tags:
- TCG Platforms
x-badges:
- color: '#7c3aed'
name: projects_protocols_unified
position: after
x-mint:
metadata:
sidebarTitle: List TCG Platform Chains
title: List TCG Platform Chains
/query/timeseries/tcg-platforms-by-chain/{granularity}:
get:
description: 'Metrics for a trading-card and collectibles platform on one blockchain: revenue and expenses, gross merchandise value, marketplace volume, sales, buyers, gacha pack openings, credit-card spend and daily active users. Each series is one platform on one chain, keyed by platform and chain.'
operationId: getTimeseries_tcg_platforms_by_chain
parameters:
- description: Data granularity.
in: path
name: granularity
required: true
schema:
enum:
- 1d
type: string
- description: Comma-separated Platform Chain ID values naming the series to return (up to 10). Omit it to get every TCG Platform Chain as a series in one response.
in: query
name: series
schema:
type: string
- description: 'Time window, one of: to-date (ytd, qtd, mtd, dtd, htd); relative, <n> followed by m, h, d or w (30d, 12h, 4w; 1y and 1M are not accepted, use 365d, 52w, ytd or a calendar year); a calendar day (YYYY-MM-DD), month (YYYY-MM) or year (YYYY); or an RFC3339 instant, which runs from then to now. Mutually exclusive with start/end. Default: everything retained, up to now.'
in: query
name: timeframe
schema:
type: string
- description: 'Window start, inclusive (RFC3339, unix seconds, or YYYY-MM-DD). Default: unbounded.'
in: query
name: start
schema:
type: string
- description: 'Window end, exclusive (RFC3339, unix seconds, or YYYY-MM-DD). Default: now.'
in: query
name: end
schema:
type: string
- description: If true, return only the first and last point of the resolved time window instead of every point in it.
in: query
name: bounds
schema:
type: boolean
- description: Comma-separated metric fields to return; defaults to every metric. A point always leads with its timestamp, and the values that follow are described by point_schema in catalog order regardless of the order requested here.
in: query
name: selections
schema:
items:
enum:
- grossRevenueUSD
- netRevenueUSD
- miscRevenueUSD
- buybackExpenseUSD
- referralExpenseUSD
- gmvUSD
- volumeInclBuybackUSD
- gachaSpendUSD
- creditcardSpendUSD
- dauNew
- dauRecurring
- dauTotal
- marketplaceVolumeUSD
- organicVolumeUSD
- buybackVolumeUSD
- salesCount
- uniqueBuyers
- topSaleUSD
- marketplaceFeesUSD
- packsOpened
- gachaSpendGrossUSD
type: string
type: array
- description: 'Response format, overriding the Accept header: json (default), csv, or jsonl (NDJSON). csv and jsonl return the rows as a downloadable file.'
in: query
name: acceptFormat
schema:
default: json
enum:
- json
- csv
- jsonl
type: string
responses:
'200':
content:
application/json:
example:
data:
point_schema:
- description: Timestamp of the data point.
field: time
name: Time
time: true
type: time
- description: Gross platform revenue in USD.
field: grossRevenueUSD
name: Gross Revenue (USD)
time: false
type: float64
- description: Net platform revenue in USD.
field: netRevenueUSD
name: Net Revenue (USD)
time: false
type: float64
series:
- entity:
chain: <chain>
name: <name>
platform: <platform>
slug: <slug>
key: <Platform Chain ID>
points:
- - 1704067200
- 123.45
- 123.45
error: null
schema:
properties:
data:
$ref: '#/components/schemas/TcgPlatformsByChainData'
error:
type:
- string
- 'null'
required:
- data
type: object
application/x-ndjson:
schema:
description: JSON Lines (NDJSON); one JSON object per line.
type: string
text/csv:
schema:
description: CSV with a header row; one row per record.
type: string
description: Timeseries points for each series.
'400':
content:
application/json:
example:
data: null
error: 'too many series requested: 11 exceeds the maximum of 10'
schema:
$ref: '#/components/schemas/ErrorResponse'
description: 'The request is malformed: an empty, duplicated or too long series list (at most 10 keys), an unknown query parameter, an unrecognized timeframe (1y and 1M are not accepted; use 365d, 52w, ytd or a calendar year), timeframe combined with start or end, an unknown selections field, or an invalid bounds or acceptFormat value.'
'401':
content:
application/json:
example:
data: null
error: this model requires authentication
schema:
$ref: '#/components/schemas/ErrorResponse'
description: No API key was sent and the model requires one.
'403':
content:
application/json:
example:
data: null
error: this model requires the "projects_protocols_unified" permission
schema:
$ref: '#/components/schemas/ErrorResponse'
description: The API key is not valid, or does not hold the "projects_protocols_unified" permission.
'404':
content:
application/json:
example:
data: null
error: 'model "tcg-platforms-by-chain" does not support granularity "1h" (supported: 1d)'
schema:
$ref: '#/components/schemas/ErrorResponse'
description: 'The path names a model that does not exist ("no timeseries model ..."), or a granularity the model is not available at. An unknown series key is not a 404: it is returned with an empty points array.'
summary: Batch Get TCG Platform Chain timeseries
tags:
- TCG Platforms
x-badges:
- color: '#7c3aed'
name: projects_protocols_unified
position: after
x-mint:
metadata:
sidebarTitle: Batch Get TCG Platform Chain timeseries
title: Batch Get TCG Platform Chain timeseries
x-series-key-entity: tcg-platform-chains
/query/timeseries/tcg-platforms-by-chain/{granularity}/{id}:
get:
description: 'Metrics for a trading-card and collectibles platform on one blockchain: revenue and expenses, gross merchandise value, marketplace volume, sales, buyers, gacha pack openings, credit-card spend and daily active users. Each series is one platform on one chain, keyed by platform and chain.'
operationId: getTimeseriesSeries_tcg_platforms_by_chain
parameters:
- description: Data granularity.
in: path
name: granularity
required: true
schema:
enum:
- 1d
type: string
- description: 'The Platform Chain ID identifying the series. A key no series has is not an error: the response carries an empty points array.'
in: path
name: id
required: true
schema:
type: string
- description: 'Time window, one of: to-date (ytd, qtd, mtd, dtd, htd); relative, <n> followed by m, h, d or w (30d, 12h, 4w; 1y and 1M are not accepted, use 365d, 52w, ytd or a calendar year); a calendar day (YYYY-MM-DD), month (YYYY-MM) or year (YYYY); or an RFC3339 instant, which runs from then to now. Mutually exclusive with start/end. Default: everything retained, up to now.'
in: query
name: timeframe
schema:
type: string
- description: 'Window start, inclusive (RFC3339, unix seconds, or YYYY-MM-DD). Default: unbounded.'
in: query
name: start
schema:
type: string
- description: 'Window end, exclusive (RFC3339, unix seconds, or YYYY-MM-DD). Default: now.'
in: query
name: end
schema:
type: string
- description: If true, return only the first and last point of the resolved time window instead of every point in it.
in: query
name: bounds
schema:
type: boolean
- description: Comma-separated metric fields to return; defaults to every metric. A point always leads with its timestamp, and the values that follow are described by point_schema in catalog order regardless of the order requested here.
in: query
name: selections
schema:
items:
enum:
- grossRevenueUSD
- netRevenueUSD
- miscRevenueUSD
- buybackExpenseUSD
- referralExpenseUSD
- gmvUSD
- volumeInclBuybackUSD
- gachaSpendUSD
- creditcardSpendUSD
- dauNew
- dauRecurring
- dauTotal
- marketplaceVolumeUSD
- organicVolumeUSD
- buybackVolumeUSD
- salesCount
- uniqueBuyers
- topSaleUSD
- marketplaceFeesUSD
- packsOpened
- gachaSpendGrossUSD
type: string
type: array
- description: 'Response format, overriding the Accept header: json (default), csv, or jsonl (NDJSON). csv and jsonl return the rows as a downloadable file.'
in: query
name: acceptFormat
schema:
default: json
enum:
- json
- csv
- jsonl
type: string
responses:
'200':
content:
application/json:
example:
data:
entity:
chain: <chain>
name: <name>
platform: <platform>
slug: <slug>
key: <Platform Chain ID>
point_schema:
- description: Timestamp of the data point.
field: time
name: Time
time: true
type: time
- description: Gross platform revenue in USD.
field: grossRevenueUSD
name: Gross Revenue (USD)
time: false
type: float64
- description: Net platform revenue in USD.
field: netRevenueUSD
name: Net Revenue (USD)
time: false
type: float64
points:
- - 1704067200
- 123.45
- 123.45
error: null
schema:
properties:
data:
$ref: '#/components/schemas/TcgPlatformsByChainSeriesData'
error:
type:
- string
- 'null'
required:
- data
type: object
application/x-ndjson:
schema:
description: JSON Lines (NDJSON); one JSON object per line.
type: string
text/csv:
schema:
description: CSV with a header row; one row per record.
type: string
description: Timeseries points for the series.
'400':
content:
application/json:
example:
data: null
error: 'unrecognized timeframe "1y": expected ytd|qtd|mtd|dtd|htd, <n>m|h|d|w, YYYY-MM-DD, YYYY-MM, YYYY, or RFC3339'
schema:
$ref: '#/components/schemas/ErrorResponse'
description: 'The request is malformed: an unknown query parameter, an unrecognized timeframe (1y and 1M are not accepted; use 365d, 52w, ytd or a calendar year), timeframe combined with start or end, a start after the end, an unknown selections field, or an invalid bounds or acceptFormat value.'
'401':
content:
application/json:
example:
data: null
error: this model requires authentication
schema:
$ref: '#/components/schemas/ErrorResponse'
description: No API key was sent and the model requires one.
'403':
content:
application/json:
example:
data: null
error: this model requires the "projects_protocols_unified" permission
schema:
$ref: '#/components/schemas/ErrorResponse'
description: The API key is not valid, or does not hold the "projects_protocols_unified" permission.
'404':
content:
application/json:
example:
data: null
error: 'model "tcg-platforms-by-chain" does not support granularity "1h" (supported: 1d)'
schema:
$ref: '#/components/schemas/ErrorResponse'
description: 'The path names a model that does not exist ("no timeseries model ..."), or a granularity the model is not available at. An unknown series key is not a 404: it returns 200 with an empty points array.'
summary: Get TCG Platform Chain timeseries
tags:
- TCG Platforms
x-badges:
- color: '#7c3aed'
name: projects_protocols_unified
position: after
x-mint:
metadata:
sidebarTitle: Get TCG Platform Chain timeseries
title: Get TCG Platform Chain timeseries
x-series-key-entity: tcg-platform-chains
components:
schemas:
ErrorResponse:
properties:
data:
description: Always null on an error.
type:
- object
- 'null'
error:
description: What went wrong, in one sentence.
type: string
required:
- error
- data
type: object
TcgPlatformsByChainData:
properties:
point_schema:
items:
properties:
description:
type: string
field:
type: string
name:
type: string
time:
type: boolean
type:
type: string
unit:
description: What the value is denominated in. Absent for a plain number.
enum:
- usd
- btc
- sats
- eth
- gwei
- native-token
- percent
- count
- ratio
type: string
type: object
type: array
series:
items:
properties:
entity:
description: Information about what the series key identifies, from the "tcg-platform-chains" model.
properties:
chain:
description: The short name of the chain the platform operates on (solana, base, polygon).
type:
- string
- 'null'
name:
description: The display name of the platform-chain pair (for example courtyard (polygon)).
type:
- string
- 'null'
platform:
description: Blockworks Research platform slug (for example courtyard, collector-crypt).
type:
- string
- 'null'
slug:
description: The platform's project slug; null until the platform is mapped to a project record.
type:
- string
- 'null'
type: object
key:
type: string
points:
items:
description: A unix timestamp (seconds) followed by the metric values, in point_schema order.
items:
type:
- number
- 'null'
type: array
type: array
type: object
type: array
required:
- point_schema
- series
type: object
TcgPlatformChainsRow:
properties:
chain:
description: The short name of the chain the platform operates on (solana, base, polygon).
type:
- string
- 'null'
id:
description: The series key of the tcg-platforms-by-chain timeseries model, the platform and chain joined with an underscore (courtyard_polygon).
type:
- string
- 'null'
name:
description: The display name of the platform-chain pair (for example courtyard (polygon)).
type:
- string
- 'null'
networkSlug:
description: The chain's slug in the blockchains model; null until mapped.
type:
- string
- 'null'
platform:
description: Blockworks Research platform slug (for example courtyard, collector-crypt).
type:
- string
- 'null'
slug:
description: The platform's project slug; null until the platform is mapped to a project record.
type:
- string
- 'null'
type: object
TcgPlatformsByChainSeriesData:
properties:
entity:
description: Information about what the series key identifies, from the "tcg-platform-chains" model.
properties:
chain:
description: The short name of the chain the platform operates on (solana, base, polygon).
type:
- string
- 'null'
name:
description: The display name of the platform-chain pair (for example courtyard (polygon)).
type:
- string
- 'null'
platform:
description: Blockworks Research platform slug (for example courtyard, collector-crypt).
type:
- string
- 'null'
slug:
description: The platform's project slug; null until the platform is mapped to a project record.
type:
- string
- 'null'
type: object
key:
type: string
point_schema:
items:
properties:
description:
type: string
field:
type: string
name:
type: string
time:
type: boolean
type:
type: string
unit:
description: What the value is denominated in. Absent for a plain number.
enum:
- usd
- btc
- sats
- eth
- gwei
- native-token
- percent
- count
- ratio
type: string
type: object
type: array
points:
items:
description: A unix timestamp (seconds) followed by the metric values, in point_schema order.
items:
type:
- number
- 'null'
type: array
type: array
required:
- point_schema
- key
- points
type: object
securitySchemes:
apiKey:
description: API key sent in the `X-Blockworks-API-Key` header; `x-messari-api-key` is accepted for existing integrations. The catalog endpoints and models on the public access tier need no key.
in: header
name: X-Blockworks-API-Key
type: apiKey
x-tagGroups:
- name: Meta
tags:
- Tabular
- Timeseries
- name: Market Data
tags:
- Assets
- Markets
- Exchanges
- Derivatives
- Market Overview
- name: Blockchains
tags:
- Blockchains
- name: Projects & Protocols
tags:
- Projects & Entities
- Protocol Revenue
- Lending Protocols
- Spot DEXes
- Perp DEXes
- Vaults
- Launchpads
- TCG Platforms
- name: Real World Assets
tags:
- Stablecoins
- Tokenized Equities
- Tokenized Commodities
- name: Institutional
tags:
- ETFs
- Digital Asset Treasuries
- name: Fundraising
tags:
- Funding Rounds
- Funds & Investors
- Acquisitions
- name: Social & Mindshare
tags:
- Social & Mindshare
- name: News & Research
tags:
- News & Research
- name: Token Transparency Framework
tags:
- Token Transparency Framework