MENU navbar-image

Introduction

Public REST API for browsing trading cards and sharing card collections.

This documentation aims to provide all the information you need to work with our API.

Authenticating requests

This API is not authenticated.

Endpoints

List cards

Returns a paginated list of cards (24 per page).

Example request:
curl --request GET \
    --get "https://api.inazumacard.com/api/cards?search=Axel+Blaze&set=Football+Frontier&type=Reserve&rarity=Rare&attribute=Power&team=Raimon&position=FW&page=1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.inazumacard.com/api/cards"
);

const params = {
    "search": "Axel Blaze",
    "set": "Football Frontier",
    "type": "Reserve",
    "rarity": "Rare",
    "attribute": "Power",
    "team": "Raimon",
    "position": "FW",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "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
    }
}
 

Request      

GET api/cards

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Partial, case-insensitive match against the card name. Example: Axel Blaze

set   string  optional    

Exact match against the set code. Example: Football Frontier

type   string  optional    

Exact match against the card type. Example: Reserve

rarity   string  optional    

Exact match against the rarity. Example: Rare

attribute   string  optional    

Exact match against the attribute. Example: Power

team   string  optional    

Exact match against the team. Example: Raimon

position   string  optional    

Exact match against the position. Example: FW

page   integer  optional    

Page number when paginating. Example: 1

Show a card

Returns a single card.

Example request:
curl --request GET \
    --get "https://api.inazumacard.com/api/cards/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.inazumacard.com/api/cards/1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "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"
    }
}
 

Request      

GET api/cards/{card_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

card_id   integer     

The ID of the card. Example: 1

Encode a collection

Encodes a list of card IDs and counts into a compact, shareable token. Returns a 422 validation error when the resulting token would exceed 2000 characters — in that case clients should fall back to the file-import flow.

Example request:
curl --request POST \
    "https://api.inazumacard.com/api/collections/encode" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"items\": [
        {
            \"cardId\": 16,
            \"count\": 22
        }
    ]
}"
const url = new URL(
    "https://api.inazumacard.com/api/collections/encode"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "items": [
        {
            "cardId": 16,
            "count": 22
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, success):


{
    "data": {
        "token": "eJxdjsEKwjAQRH8l5GpJ...",
        "item_count": 12,
        "token_length": 184
    }
}
 

Example response (422, token too large):


{
    "message": "The given data was invalid.",
    "errors": {
        "items": [
            "Collection too large to share as a link — use file export instead."
        ]
    }
}
 

Request      

POST api/collections/encode

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

items   object[]     

Must have at least 1 items. Must not have more than 200 items.

cardId   integer     

Example: 16

count   integer     

Must be at least 1. Must not be greater than 9999. Example: 22

Decode a collection token

Decodes a shared collection token back into card records. Cards whose IDs no longer exist in the database are listed separately under missing so the client can surface them to the user.

Example request:
curl --request POST \
    "https://api.inazumacard.com/api/collections/decode" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"eJxdjsEKwjAQRH8l5GpJ...\"
}"
const url = new URL(
    "https://api.inazumacard.com/api/collections/decode"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "token": "eJxdjsEKwjAQRH8l5GpJ..."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "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
            }
        ]
    }
}
 

Request      

POST api/collections/decode

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

token   string     

The shareable collection token previously returned by the encode endpoint. Must not be greater than 4096 characters. Example: eJxdjsEKwjAQRH8l5GpJ...

Import a collection file

Imports a collection from an uploaded JSON file (max 256KB). The response shape matches the decode endpoint, with resolved cards under items and unresolved IDs under missing.

Example request:
curl --request POST \
    "https://api.inazumacard.com/api/collections/import-file" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "collection=@/tmp/phpqj9c7askfkm96jFAdtk" 
const url = new URL(
    "https://api.inazumacard.com/api/collections/import-file"
);

const headers = {
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('collection', document.querySelector('input[name="collection"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Example response (200):


{
    "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
            }
        ]
    }
}
 

Request      

POST api/collections/import-file

Headers

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

collection   file     

Must be a file. Must not be greater than 256 kilobytes. Example: /tmp/phpqj9c7askfkm96jFAdtk