Skip to content

API (Cards)

t edited this page Dec 11, 2021 · 8 revisions

The Cards private1 API returns card data in a machine-friendly format.

Updated 11/12/2021: source and release_dates fields have been added.

Updated 01/03/2021: The with_accept_language parameter has been removed. You were formerly able to pass it to request string translations according to the Accept-Language HTTP header. This is now always enabled. If you want the old behaviour, (i.e. Japanese strings) set your Accept-Language header to ja-JP.

Updated 24/02/2021: Some keys now contain properly signed image URLs. They are guaranteed to be valid for at least 1 hour2. You should either use them immediately or cache them on your server for long-term use.

List all card IDs:

GET /api/private/cards/id_list.json

{
    "result": [
        {
            "ordinal": 1,
            "id": 100011001
        },
        ...
    ]
}

You can retrieve information for one or more cards, named by ID or ordinal:

GET /api/private/cards/ordinal/[ids].json
GET /api/private/cards/id/[ids].json

{
    "result": [
        (card),
        ...
    ]
}

[ids] is a comma separated list.

You can retrieve all cards of a particular member, named by their ID:

GET /api/private/cards/member/[id].json

{
    "result": [
        (card),
        ...
    ]
}

You cannot pass a list of names, but other remarks above apply.

Card objects

This object is returned where (card) is mentioned above.

{
    "id": 202053001,
    "ordinal": 244,
    "rarity": 30,
    "max_level": 80,
    "attribute": 3,
    "role": 1,
    "training_tree_m_id": 202053001,
    "sp_point": 4,
    "exchange_item_id": 3,
    "max_passive_skill_slot": 4,
    "background_asset_path": "sR",
    "member": 205,
    "role_effect": {
        "change_effect_type": 1,
        "change_effect_value": 500,
        "positive_type": 1,
        "positive_value": 500,
        "negative_type": 3,
        "negative_value": 500
    },
    "normal_appearance": {
        "name": "二人きりの時間を過ごしたい",
        "image_asset_path": "http://domain.example/image/abcd.jpg",
        "thumbnail_asset_path": "http://domain.example/image/abcd.png"
    },
    "idolized_appearance": {
        "name": "ハートビート★スクールガール",
        "image_asset_path": "http://domain.example/image/abcd.jpg",
        "thumbnail_asset_path": "http://domain.example/image/abcd.png"
    },
    "active_skill": {
        "id": 10023501,
        "name": "愛さんと遊ぶ準備、できてる?",
        "description": "5ノーツの間獲得ボルテージが6%増加\n対象:全員",
        "skill_type": 1,
        "sp_gauge_point": 200,
        "icon_asset_path": null,
        "thumbnail_asset_path": "~.",
        "rarity": 0,
        "trigger_type": 255,
        "trigger_probability": 3300,
        "target": {
            "id": 1,
            "self_only": 0,
            "not_self": 0,
            "apply_count": 9,
            "owner_party": 0,
            "owner_school": 0,
            "owner_year": 0,
            "owner_subunit": 0,
            "owner_attribute": 0,
            "owner_role": 0,
            "fixed_attributes": [],
            "fixed_members": [],
            "fixed_subunits": [],
            "fixed_schools": [],
            "fixed_years": [],
            "fixed_roles": []
        },
        "conditions": [],
        "levels": [
            # see Skill.Effect def in libcard2.dataclasses
            [2, 18, 600, 2, 2, 2, 2, 5],
            ...
        ],
        "levels_2": [
            # Same content as "levels" if the skill has a secondary effect. 
            # If not, the key is set to null (not an empty list). The key is always present.
            ...
        ]
    },
    "passive_skills": [
        ... (same struct as active_skill above)
    ],
                       # level, appeal, stamina, technique
    "idolized_offset": [1, 259, 123, 206],
    "tt_offset": [
        # level, appeal, stamina, technique
        [0, 3888, 1848, 3096],
        ...
    ],
    "stats": [
        # level, appeal, stamina, technique
        [1, 1947, 929, 1548],
        ...
    ],
    "costume_info": [
        ")2/", 202053001, null, null
    ],
    "source": 3,
    "release_dates": {
        "en": "2021-09-04T06:00:00+00:00",
        "jp": "2021-09-04T06:00:00+00:00"
    }
}

Unreliable fields

These fields in the card object are derived from other data sources, and so may be missing or incorrect. They can also change at any time without a corresponding master update, so be careful when using them.

  • source: The original source of the card (e.g. gacha, event reward, ...). A number that corresponds to one of the enums here: https://github.com/summertriangle-dev/arposandra/blob/e334baaacb51b29fd832844b2e350aafdda14676/captain/models/mine_models.py#L201 (starting with unspec = 1). This is extracted from JP news posts, so it can be incorrect. Note: since e_gacha_p2 will be removed eventually, the API maps a value of e_gacha_p2 (4) to e_gacha (3). Therefore, the source field will never be 4.
  • release_dates: The original release date of the card on each server. A map of server IDs to ISO 8601 dates. Not all server IDs are guaranteed to exist.

1: In this case, private means that functionality and shape of the API may change at any time.

2: In the current implementation they are valid forever, but you should not rely on this behaviour.