openapi: 3.0.3 info: title: 'InazumaCard API Documentation' description: 'Public REST API for browsing trading cards and sharing card collections.' version: 1.0.0 servers: - url: 'https://api.inazumacard.com' tags: - name: Endpoints description: '' paths: /api/cards: get: summary: 'List cards' operationId: listCards description: 'Returns a paginated list of cards (24 per page).' parameters: - in: query name: search description: 'Partial, case-insensitive match against the card name.' example: 'Axel Blaze' required: false schema: type: string description: 'Partial, case-insensitive match against the card name.' example: 'Axel Blaze' - in: query name: set description: 'Exact match against the set code.' example: 'Football Frontier' required: false schema: type: string description: 'Exact match against the set code.' example: 'Football Frontier' - in: query name: type description: 'Exact match against the card type.' example: Reserve required: false schema: type: string description: 'Exact match against the card type.' example: Reserve - in: query name: rarity description: 'Exact match against the rarity.' example: Rare required: false schema: type: string description: 'Exact match against the rarity.' example: Rare - in: query name: attribute description: 'Exact match against the attribute.' example: Power required: false schema: type: string description: 'Exact match against the attribute.' example: Power - in: query name: team description: 'Exact match against the team.' example: Raimon required: false schema: type: string description: 'Exact match against the team.' example: Raimon - in: query name: position description: 'Exact match against the position.' example: FW required: false schema: type: string description: 'Exact match against the position.' example: FW - in: query name: page description: 'Page number when paginating.' example: 1 required: false schema: type: integer description: 'Page number when paginating.' example: 1 responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 131 name: 'Aniya Mayer' set: 'Voluptate Dolor In Dolore' collectors_number: 'OV 73/100' rarity: 'Super Rare' type: Reserve image_url: 'https://api.inazumacard.com/storage/cards/lquaslzu.jpg' attribute: Tactic position: FW skill_points: 200 ability: 'Ut rerum porro est quas ut facere voluptatem.' effect: null requirement: null team: 'Eius Eaque' level: 3 fired_up_skill_points: 800 assist_points: 200 flavor_text: 'Quia fuga commodi incidunt quia culpa vel incidunt autem qui quasi saepe repellendus.' artist: 'Annamae Daugherty' - id: 132 name: 'Clarissa Hackett' set: 'Quisquam Molestiae Sit Cum' collectors_number: 'DL 24/100' rarity: Rare type: Reserve image_url: 'https://api.inazumacard.com/storage/cards/jtwwbigd.jpg' attribute: Speed position: MF skill_points: 400 ability: 'Aut id autem eos sit.' effect: null requirement: null team: 'Hic Non' level: 5 fired_up_skill_points: 900 assist_points: 200 flavor_text: 'Eius eos voluptates cum perspiciatis labore eveniet sed consequatur optio ut.' artist: 'Orrin Langosh' links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Next »' page: null active: false path: / per_page: 24 to: 2 total: 2 properties: data: type: array example: - id: 131 name: 'Aniya Mayer' set: 'Voluptate Dolor In Dolore' collectors_number: 'OV 73/100' rarity: 'Super Rare' type: Reserve image_url: 'https://api.inazumacard.com/storage/cards/lquaslzu.jpg' attribute: Tactic position: FW skill_points: 200 ability: 'Ut rerum porro est quas ut facere voluptatem.' effect: null requirement: null team: 'Eius Eaque' level: 3 fired_up_skill_points: 800 assist_points: 200 flavor_text: 'Quia fuga commodi incidunt quia culpa vel incidunt autem qui quasi saepe repellendus.' artist: 'Annamae Daugherty' - id: 132 name: 'Clarissa Hackett' set: 'Quisquam Molestiae Sit Cum' collectors_number: 'DL 24/100' rarity: Rare type: Reserve image_url: 'https://api.inazumacard.com/storage/cards/jtwwbigd.jpg' attribute: Speed position: MF skill_points: 400 ability: 'Aut id autem eos sit.' effect: null requirement: null team: 'Hic Non' level: 5 fired_up_skill_points: 900 assist_points: 200 flavor_text: 'Eius eos voluptates cum perspiciatis labore eveniet sed consequatur optio ut.' artist: 'Orrin Langosh' items: type: object properties: id: type: integer example: 131 name: type: string example: 'Aniya Mayer' set: type: string example: 'Voluptate Dolor In Dolore' collectors_number: type: string example: 'OV 73/100' rarity: type: string example: 'Super Rare' type: type: string example: Reserve image_url: type: string example: 'https://api.inazumacard.com/storage/cards/lquaslzu.jpg' attribute: type: string example: Tactic position: type: string example: FW skill_points: type: integer example: 200 ability: type: string example: 'Ut rerum porro est quas ut facere voluptatem.' effect: type: string example: null nullable: true requirement: type: string example: null nullable: true team: type: string example: 'Eius Eaque' level: type: integer example: 3 fired_up_skill_points: type: integer example: 800 assist_points: type: integer example: 200 flavor_text: type: string example: 'Quia fuga commodi incidunt quia culpa vel incidunt autem qui quasi saepe repellendus.' artist: type: string example: 'Annamae Daugherty' links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Next »' page: null active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' page: type: string example: null nullable: true active: type: boolean example: false path: type: string example: / per_page: type: integer example: 24 to: type: integer example: 2 total: type: integer example: 2 tags: - Endpoints security: [] '/api/cards/{card_id}': get: summary: 'Show a card' operationId: showACard description: 'Returns a single card.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 133 name: 'Tiffany Rath' set: 'Dolorem Veniam Esse Placeat' collectors_number: 'WB 96/100' rarity: Common type: Reserve image_url: 'https://api.inazumacard.com/storage/cards/qslmychy.jpg' attribute: Speed position: FW skill_points: 400 ability: 'Sed aperiam tempora ut veritatis et dolor eum.' effect: null requirement: null team: 'Sint Saepe' level: 4 fired_up_skill_points: 800 assist_points: 100 flavor_text: 'Blanditiis voluptatem culpa et id consequatur placeat corrupti voluptatum sed optio id.' artist: 'Jonathan Legros' properties: data: type: object properties: id: type: integer example: 133 name: type: string example: 'Tiffany Rath' set: type: string example: 'Dolorem Veniam Esse Placeat' collectors_number: type: string example: 'WB 96/100' rarity: type: string example: Common type: type: string example: Reserve image_url: type: string example: 'https://api.inazumacard.com/storage/cards/qslmychy.jpg' attribute: type: string example: Speed position: type: string example: FW skill_points: type: integer example: 400 ability: type: string example: 'Sed aperiam tempora ut veritatis et dolor eum.' effect: type: string example: null nullable: true requirement: type: string example: null nullable: true team: type: string example: 'Sint Saepe' level: type: integer example: 4 fired_up_skill_points: type: integer example: 800 assist_points: type: integer example: 100 flavor_text: type: string example: 'Blanditiis voluptatem culpa et id consequatur placeat corrupti voluptatum sed optio id.' artist: type: string example: 'Jonathan Legros' tags: - Endpoints security: [] parameters: - in: path name: card_id description: 'The ID of the card.' example: 1 required: true schema: type: integer /api/collections/encode: post: summary: 'Encode a collection' operationId: encodeACollection description: "Encodes a list of card IDs and counts into a compact, shareable token. Returns\na 422 validation error when the resulting token would exceed 2000 characters —\nin that case clients should fall back to the file-import flow." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: token: eJxdjsEKwjAQRH8l5GpJ... item_count: 12 token_length: 184 properties: data: type: object properties: token: type: string example: eJxdjsEKwjAQRH8l5GpJ... item_count: type: integer example: 12 token_length: type: integer example: 184 422: description: 'token too large' content: application/json: schema: type: object example: message: 'The given data was invalid.' errors: items: - 'Collection too large to share as a link — use file export instead.' properties: message: type: string example: 'The given data was invalid.' errors: type: object properties: items: type: array example: - 'Collection too large to share as a link — use file export instead.' items: type: string tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: items: type: array description: 'Must have at least 1 items. Must not have more than 200 items.' example: - [] items: type: object properties: cardId: type: integer description: '' example: 16 count: type: integer description: 'Must be at least 1. Must not be greater than 9999.' example: 22 required: - cardId - count required: - items security: [] /api/collections/decode: post: summary: 'Decode a collection token' operationId: decodeACollectionToken description: "Decodes a shared collection token back into card records. Cards whose IDs no\nlonger exist in the database are listed separately under `missing` so the\nclient can surface them to the user." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: items: - card: id: 134 name: 'Christelle Bailey' set: 'Animi Quos Velit Et' collectors_number: 'VD 29/100' rarity: Common type: Reserve image_url: 'https://api.inazumacard.com/storage/cards/ujwvlxjk.jpg' attribute: Speed position: MF skill_points: 400 ability: 'Aut ab provident perspiciatis quo omnis nostrum aut.' effect: null requirement: null team: 'Adipisci Quidem' level: 3 fired_up_skill_points: 600 assist_points: 400 flavor_text: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores enim non.' artist: 'Matilda Feeney' cardId: 134 count: 3 - card: null cardId: 1132 count: 1 missing: - cardId: 1132 count: 1 properties: data: type: object properties: items: type: array example: - card: id: 134 name: 'Christelle Bailey' set: 'Animi Quos Velit Et' collectors_number: 'VD 29/100' rarity: Common type: Reserve image_url: 'https://api.inazumacard.com/storage/cards/ujwvlxjk.jpg' attribute: Speed position: MF skill_points: 400 ability: 'Aut ab provident perspiciatis quo omnis nostrum aut.' effect: null requirement: null team: 'Adipisci Quidem' level: 3 fired_up_skill_points: 600 assist_points: 400 flavor_text: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores enim non.' artist: 'Matilda Feeney' cardId: 134 count: 3 - card: null cardId: 1132 count: 1 items: type: object properties: card: type: object properties: id: type: integer example: 134 name: type: string example: 'Christelle Bailey' set: type: string example: 'Animi Quos Velit Et' collectors_number: type: string example: 'VD 29/100' rarity: type: string example: Common type: type: string example: Reserve image_url: type: string example: 'https://api.inazumacard.com/storage/cards/ujwvlxjk.jpg' attribute: type: string example: Speed position: type: string example: MF skill_points: type: integer example: 400 ability: type: string example: 'Aut ab provident perspiciatis quo omnis nostrum aut.' effect: type: string example: null nullable: true requirement: type: string example: null nullable: true team: type: string example: 'Adipisci Quidem' level: type: integer example: 3 fired_up_skill_points: type: integer example: 600 assist_points: type: integer example: 400 flavor_text: type: string example: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores enim non.' artist: type: string example: 'Matilda Feeney' cardId: type: integer example: 134 count: type: integer example: 3 missing: type: array example: - cardId: 1132 count: 1 items: type: object properties: cardId: type: integer example: 1132 count: type: integer example: 1 tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: token: type: string description: 'The shareable collection token previously returned by the encode endpoint. Must not be greater than 4096 characters.' example: eJxdjsEKwjAQRH8l5GpJ... required: - token security: [] /api/collections/import-file: post: summary: 'Import a collection file' operationId: importACollectionFile description: "Imports a collection from an uploaded JSON file (max 256KB). The response\nshape matches the `decode` endpoint, with resolved cards under `items` and\nunresolved IDs under `missing`." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: items: - card: id: 135 name: 'Christelle Bailey' set: 'Animi Quos Velit Et' collectors_number: 'VD 29/100' rarity: Common type: Reserve image_url: 'https://api.inazumacard.com/storage/cards/ujwvlxjk.jpg' attribute: Speed position: MF skill_points: 400 ability: 'Aut ab provident perspiciatis quo omnis nostrum aut.' effect: null requirement: null team: 'Adipisci Quidem' level: 3 fired_up_skill_points: 600 assist_points: 400 flavor_text: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores enim non.' artist: 'Matilda Feeney' cardId: 135 count: 3 - card: null cardId: 1133 count: 1 missing: - cardId: 1133 count: 1 properties: data: type: object properties: items: type: array example: - card: id: 135 name: 'Christelle Bailey' set: 'Animi Quos Velit Et' collectors_number: 'VD 29/100' rarity: Common type: Reserve image_url: 'https://api.inazumacard.com/storage/cards/ujwvlxjk.jpg' attribute: Speed position: MF skill_points: 400 ability: 'Aut ab provident perspiciatis quo omnis nostrum aut.' effect: null requirement: null team: 'Adipisci Quidem' level: 3 fired_up_skill_points: 600 assist_points: 400 flavor_text: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores enim non.' artist: 'Matilda Feeney' cardId: 135 count: 3 - card: null cardId: 1133 count: 1 items: type: object properties: card: type: object properties: id: type: integer example: 135 name: type: string example: 'Christelle Bailey' set: type: string example: 'Animi Quos Velit Et' collectors_number: type: string example: 'VD 29/100' rarity: type: string example: Common type: type: string example: Reserve image_url: type: string example: 'https://api.inazumacard.com/storage/cards/ujwvlxjk.jpg' attribute: type: string example: Speed position: type: string example: MF skill_points: type: integer example: 400 ability: type: string example: 'Aut ab provident perspiciatis quo omnis nostrum aut.' effect: type: string example: null nullable: true requirement: type: string example: null nullable: true team: type: string example: 'Adipisci Quidem' level: type: integer example: 3 fired_up_skill_points: type: integer example: 600 assist_points: type: integer example: 400 flavor_text: type: string example: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores enim non.' artist: type: string example: 'Matilda Feeney' cardId: type: integer example: 135 count: type: integer example: 3 missing: type: array example: - cardId: 1133 count: 1 items: type: object properties: cardId: type: integer example: 1133 count: type: integer example: 1 tags: - Endpoints requestBody: required: true content: multipart/form-data: schema: type: object properties: collection: type: string format: binary description: 'Must be a file. Must not be greater than 256 kilobytes.' required: - collection security: []