Properties
| Name | Type | Description |
|---|---|---|
| data | array | |
| unavailable_ids | array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/tcgdata-dev/json-schema/tcgdata-dev-batch-response-schema.json",
"title": "BatchResponse",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/tcgdata-dev-openapi.json#/components/schemas/BatchResponse",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/$defs/Price"
}
},
"unavailable_ids": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"data",
"unavailable_ids"
],
"$defs": {
"Changes": {
"type": "object",
"properties": {
"1d": {
"anyOf": [
{
"type": "object",
"properties": {
"absolute": {
"type": "number"
},
"percent": {
"type": [
"number",
"null"
]
}
},
"required": [
"absolute",
"percent"
]
},
{
"type": "null"
}
]
},
"7d": {
"anyOf": [
{
"type": "object",
"properties": {
"absolute": {
"type": "number"
},
"percent": {
"type": [
"number",
"null"
]
}
},
"required": [
"absolute",
"percent"
]
},
{
"type": "null"
}
]
},
"30d": {
"anyOf": [
{
"type": "object",
"properties": {
"absolute": {
"type": "number"
},
"percent": {
"type": [
"number",
"null"
]
}
},
"required": [
"absolute",
"percent"
]
},
{
"type": "null"
}
]
}
},
"required": [
"1d",
"7d",
"30d"
]
},
"FinishDetails": {
"type": "object",
"properties": {
"guide_finish": {
"type": [
"string",
"null"
]
},
"physical_finish": {
"type": [
"string",
"null"
]
},
"possible_physical_finishes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"guide_finish",
"physical_finish",
"possible_physical_finishes"
],
"description": "Use guide_finish as the finish query parameter on readable price/history routes. Guide buckets and physical printing facts are independent: One Piece physical_finish nonfoil can use guide_finish normal while legacy finish is null. A sole explicit finish is exposed as physical_finish; multiple possible finishes never select a physical variant by guessing."
},
"Images": {
"type": "object",
"properties": {
"base": {
"type": "null"
},
"small": {
"type": [
"string",
"null"
]
},
"large": {
"type": [
"string",
"null"
]
}
},
"required": [
"base",
"small",
"large"
],
"description": "Available small/large images are root-relative API paths, fetched server-side with Bearer authentication against the API origin; null means unavailable. Follow the complete path, including catalogue_card_id for catv_ variants or face for Magic metadata.faces images. base is null. No public CDN URL or token is returned. Every admitted image response consumes one request from the shared daily and monthly limits; image and byte counters are diagnostic."
},
"MetadataQuality": {
"type": "object",
"properties": {
"state": {
"enum": [
"complete",
"partial",
"unavailable"
]
},
"scope": {
"const": "emitted_fields"
},
"unknown_fields": {
"type": "array",
"items": {
"type": "string"
}
},
"not_applicable_fields": {
"type": "array",
"items": {
"type": "string"
}
},
"known_empty_fields": {
"type": "array",
"items": {
"type": "string"
}
},
"unverified_empty_fields": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"state",
"scope",
"unknown_fields",
"not_applicable_fields",
"known_empty_fields",
"unverified_empty_fields"
]
},
"MetadataStatus": {
"type": "object",
"properties": {
"state": {
"enum": [
"available",
"unavailable"
]
},
"unknown_fields": {
"type": "array",
"items": {
"type": "string"
}
},
"unverified_empty_fields": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"state",
"unknown_fields",
"unverified_empty_fields"
]
},
"MetadataText": {
"type": "object",
"properties": {
"state": {
"enum": [
"mixed",
"single_language",
"unknown",
"unavailable"
]
},
"languages": {
"type": "array",
"items": {
"type": "string"
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "JSON Pointer relative to the metadata object."
},
"languages": {
"type": "array",
"items": {
"type": "string"
}
},
"evidence": {
"enum": [
"inferred",
"unknown"
]
}
},
"required": [
"path",
"languages",
"evidence"
]
}
}
},
"required": [
"state",
"languages",
"fields"
],
"description": "Best-effort language observations per nonempty rule/name text. Inferred languages are unverified, not printed-locale or translation provenance. Short/ambiguous text may remain unknown; card locale is never used to fill missing evidence."
},
"Metadata_lorcana": {
"type": "object",
"properties": {
"category": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Source card category. Its values depend on the game and card type."
},
{
"type": "null",
"description": "Source card category. Its values depend on the game and card type."
}
],
"description": "Source card category. Its values depend on the game and card type."
},
"subtypes": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"description": "Source classifications below the main category; an empty list may be unverified."
},
"rarity": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Source rarity label for this printing; labels are not normalized across games."
},
{
"type": "null",
"description": "Source rarity label for this printing; labels are not normalized across games."
}
],
"description": "Source rarity label for this printing; labels are not normalized across games."
},
"flavor_text": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 10000,
"description": "Available flavor text, preserved in its source language; no translation is performed."
},
{
"type": "null",
"description": "Available flavor text, preserved in its source language; no translation is performed."
}
],
"description": "Available flavor text, preserved in its source language; no translation is performed."
},
"version": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Source version or subtitle, separate from the printing finish."
},
{
"type": "null",
"description": "Source version or subtitle, separate from the printing finish."
}
],
"description": "Source version or subtitle, separate from the printing finish."
},
"cost": {
"default": null,
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "Supplied ink cost. Zero is a value, not missing data."
},
{
"type": "null",
"description": "Supplied ink cost. Zero is a value, not missing data."
}
],
"description": "Supplied ink cost. Zero is a value, not missing data."
},
"ink": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Source primary ink label. Prefer inks when handling a card with several supplied ink colors."
},
{
"type": "null",
"description": "Source primary ink label. Prefer inks when handling a card with several supplied ink colors."
}
],
"description": "Source primary ink label. Prefer inks when handling a card with several supplied ink colors."
},
"inks": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"description": "All supplied ink colors. Empty does not prove that the physical card has no ink color."
},
"inkwell": {
"default": null,
"type": [
"boolean",
"null"
],
"description": "Whether the source says this card can be placed in the inkwell. False is a known value; null is unknown."
},
"illustrator": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Available source artist credit."
},
{
"type": "null",
"description": "Available source artist credit."
}
],
"description": "Available source artist credit."
},
"strength": {
"default": null,
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "Supplied character strength. Locations, Actions and Items can mark an absent value not applicable."
},
{
"type": "null",
"description": "Supplied character strength. Locations, Actions and Items can mark an absent value not applicable."
}
],
"description": "Supplied character strength. Locations, Actions and Items can mark an absent value not applicable."
},
"willpower": {
"default": null,
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "Supplied willpower for applicable Characters or Locations. Absent Action/Item values can be not applicable."
},
{
"type": "null",
"description": "Supplied willpower for applicable Characters or Locations. Absent Action/Item values can be not applicable."
}
],
"description": "Supplied willpower for applicable Characters or Locations. Absent Action/Item values can be not applicable."
},
"lore": {
"default": null,
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "Supplied lore value. Zero is meaningful; absent Action/Item values can be not applicable."
},
{
"type": "null",
"description": "Supplied lore value. Zero is meaningful; absent Action/Item values can be not applicable."
}
],
"description": "Supplied lore value. Zero is meaningful; absent Action/Item values can be not applicable."
},
"abilities": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Ability or keyword name when supplied. Null does not mean the effect is absent."
},
{
"type": "null",
"description": "Ability or keyword name when supplied. Null does not mean the effect is absent."
}
],
"description": "Ability or keyword name when supplied. Null does not mean the effect is absent."
},
"text": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 10000,
"description": "Source effect text. Check metadata_text for inferred language observations."
},
{
"type": "null",
"description": "Source effect text. Check metadata_text for inferred language observations."
}
],
"description": "Source effect text. Check metadata_text for inferred language observations."
}
},
"required": [
"name",
"text"
],
"additionalProperties": false
},
"description": "Supplied named abilities and their effect text."
},
"keywords": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Ability or keyword name when supplied. Null does not mean the effect is absent."
},
{
"type": "null",
"description": "Ability or keyword name when supplied. Null does not mean the effect is absent."
}
],
"description": "Ability or keyword name when supplied. Null does not mean the effect is absent."
},
"text": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 10000,
"description": "Source effect text. Check metadata_text for inferred language observations."
},
{
"type": "null",
"description": "Source effect text. Check metadata_text for inferred language observations."
}
],
"description": "Source effect text. Check metadata_text for inferred language observations."
}
},
"required": [
"name",
"text"
],
"additionalProperties": false
},
"description": "Supplied keyword abilities and their text. These are objects, unlike Magic's keyword strings."
},
"rules": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 10000
},
"description": "Available rule text, preserved in source order. It can overlap ability text; it is not automatically deduplicated."
},
"legalities": {
"default": null,
"anyOf": [
{
"type": "object",
"properties": {
"core": {
"default": null,
"anyOf": [
{
"type": "object",
"properties": {
"legal": {
"default": null,
"type": [
"boolean",
"null"
],
"description": "Source allowed status: false is a supplied restriction, null is unknown."
},
"valid_until": {
"default": null,
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Source allowed-until date in YYYY-MM-DD format, or null. Null does not guarantee indefinite legality."
},
{
"type": "null",
"description": "Source allowed-until date in YYYY-MM-DD format, or null. Null does not guarantee indefinite legality."
}
],
"description": "Source allowed-until date in YYYY-MM-DD format, or null. Null does not guarantee indefinite legality."
},
"rotation_group": {
"default": null,
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "Source rotation group identifier, or null when unknown. It is not a date or a derived rotation prediction."
},
{
"type": "null",
"description": "Source rotation group identifier, or null when unknown. It is not a date or a derived rotation prediction."
}
],
"description": "Source rotation group identifier, or null when unknown. It is not a date or a derived rotation prediction."
}
},
"required": [
"legal",
"valid_until",
"rotation_group"
],
"additionalProperties": false,
"description": "Supplied core legality information. Null means the format information is unavailable."
},
{
"type": "null",
"description": "Supplied core legality information. Null means the format information is unavailable."
}
],
"description": "Supplied core legality information. Null means the format information is unavailable."
},
"infinity": {
"default": null,
"anyOf": [
{
"type": "object",
"properties": {
"legal": {
"default": null,
"type": [
"boolean",
"null"
],
"description": "Source allowed status: false is a supplied restriction, null is unknown."
},
"valid_until": {
"default": null,
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Source allowed-until date in YYYY-MM-DD format, or null. Null does not guarantee indefinite legality."
},
{
"type": "null",
"description": "Source allowed-until date in YYYY-MM-DD format, or null. Null does not guarantee indefinite legality."
}
],
"description": "Source allowed-until date in YYYY-MM-DD format, or null. Null does not guarantee indefinite legality."
},
"rotation_group": {
"default": null,
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "Source rotation group identifier, or null when unknown. It is not a date or a derived rotation prediction."
},
{
"type": "null",
"description": "Source rotation group identifier, or null when unknown. It is not a date or a derived rotation prediction."
}
],
"description": "Source rotation group identifier, or null when unknown. It is not a date or a derived rotation prediction."
}
},
"required": [
"legal",
"valid_until",
"rotation_group"
],
"additionalProperties": false,
"description": "Supplied infinity legality information. Null means the format information is unavailable."
},
{
"type": "null",
"description": "Supplied infinity legality information. Null means the format information is unavailable."
}
],
"description": "Supplied infinity legality information. Null means the format information is unavailable."
}
},
"required": [
"core",
"infinity"
],
"additionalProperties": false,
"description": "Source Core and Infinity format information, without an independent freshness guarantee."
},
{
"type": "null",
"description": "Source Core and Infinity format information, without an independent freshness guarantee."
}
],
"description": "Source Core and Infinity format information, without an independent freshness guarantee."
}
},
"required": [
"category",
"subtypes",
"rarity",
"flavor_text",
"version",
"cost",
"ink",
"inks",
"inkwell",
"illustrator",
"strength",
"willpower",
"lore",
"abilities",
"keywords",
"rules",
"legalities"
],
"additionalProperties": false
},
"Metadata_magic": {
"type": "object",
"properties": {
"printing": {
"default": {
"finishes": []
},
"type": "object",
"properties": {
"finishes": {
"default": [],
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"nonfoil",
"foil",
"etched"
]
},
"description": "Supplied possible physical finishes. Several values do not identify which finish a guide quote measures."
}
},
"required": [
"finishes"
],
"additionalProperties": false,
"description": "Explicit printing facts. Physical finishes are independent of the price-guide bucket."
},
"category": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Source card category. Its values depend on the game and card type."
},
{
"type": "null",
"description": "Source card category. Its values depend on the game and card type."
}
],
"description": "Source card category. Its values depend on the game and card type."
},
"subtypes": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"description": "Source classifications below the main category; an empty list may be unverified."
},
"rarity": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Source rarity label for this printing; labels are not normalized across games."
},
{
"type": "null",
"description": "Source rarity label for this printing; labels are not normalized across games."
}
],
"description": "Source rarity label for this printing; labels are not normalized across games."
},
"flavor_text": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 10000,
"description": "Available flavor text, preserved in its source language; no translation is performed."
},
{
"type": "null",
"description": "Available flavor text, preserved in its source language; no translation is performed."
}
],
"description": "Available flavor text, preserved in its source language; no translation is performed."
},
"illustrator": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Source illustrator credit for the card."
},
{
"type": "null",
"description": "Source illustrator credit for the card."
}
],
"description": "Source illustrator credit for the card."
},
"layout": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Source card layout, such as normal or transform. Use faces for supplied multi-face details."
},
{
"type": "null",
"description": "Source card layout, such as normal or transform. Use faces for supplied multi-face details."
}
],
"description": "Source card layout, such as normal or transform. Use faces for supplied multi-face details."
},
"mana_cost": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Mana-symbol expression, such as {1}{R}. Null does not establish a zero mana cost."
},
{
"type": "null",
"description": "Mana-symbol expression, such as {1}{R}. Null does not establish a zero mana cost."
}
],
"description": "Mana-symbol expression, such as {1}{R}. Null does not establish a zero mana cost."
},
"mana_value": {
"default": null,
"anyOf": [
{
"type": "number",
"minimum": 0,
"description": "Supplied numerical mana value; it can be fractional. It is distinct from the mana-symbol expression."
},
{
"type": "null",
"description": "Supplied numerical mana value; it can be fractional. It is distinct from the mana-symbol expression."
}
],
"description": "Supplied numerical mana value; it can be fractional. It is distinct from the mana-symbol expression."
},
"colors": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"description": "Source colors of the card. An unverified empty array is not proof of colorlessness."
},
"color_identity": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"description": "Source color identity, which is distinct from colors and can include symbols in rules text."
},
"type_line": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Available card types and subtypes as source text."
},
{
"type": "null",
"description": "Available card types and subtypes as source text."
}
],
"description": "Available card types and subtypes as source text."
},
"rules_text": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 10000,
"description": "Available rules text. This API does not certify current rulings or translate the text."
},
{
"type": "null",
"description": "Available rules text. This API does not certify current rulings or translate the text."
}
],
"description": "Available rules text. This API does not certify current rulings or translate the text."
},
"power": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 500,
"description": "Printed power expression, including values such as *. Null can be unknown or not applicable."
},
{
"type": "null",
"description":
# --- truncated at 32 KB (130 KB total) ---
# Full source: https://artifacts.apis.io/tcgdata-dev/json-schema/tcgdata-dev-batch-response-schema.json
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/tcgdata-dev-batch-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.