/api/v1/azuki/expansions read:catalog 1
creditList every Azuki TCG expansion, or filter with `q` (e.g. `series_id:sv`, `release_date:[2024-01-01 TO *]`) and sort with `orderBy`. Wrapped in `{ success, data, page, page_size, total_count, language }`.
GET /api/v1/azuki/expansions?page_size=10 These inputs are shared across all docs pages, so an id entered here carries over.
{
"success": true,
"data": [
{
"id": "azk-promo",
"name": "Azuki Promos",
"total": 6,
"language": "English",
"language_code": "en",
"series": "Azuki TCG",
"code": "AZP",
"printed_total": 3,
"release_date": "2026/06/29",
"logo": "https://tcg.azuki.com/azuki_tcg_logo.svg",
"symbol": "https://tcg.azuki.com/azuki_tcg_logo.svg"
},
{
"id": "azk-01",
"name": "Gates Awakened",
"total": 154,
"language": "English",
"language_code": "en",
"series": "Azuki TCG",
"code": "AZK-01",
"printed_total": 129,
"release_date": "2026/06/29",
"logo": "https://tcg.azuki.com/azuki_tcg_logo.svg",
"symbol": "https://tcg.azuki.com/azuki_tcg_logo.svg"
},
{
"id": "azk-alpha",
"name": "Gates Awakened Alpha",
"total": 9,
"language": "English",
"language_code": "en",
"series": "Azuki TCG",
"code": "AZK-01A",
"printed_total": 9,
"release_date": "2026/01/01",
"logo": "https://tcg.azuki.com/azuki_tcg_logo.svg",
"symbol": "https://tcg.azuki.com/azuki_tcg_logo.svg"
},
{
"id": "azk-stt-03",
"name": "Gates Awakened Starter Deck: Bobu (Earth)",
"total": 19,
"language": "English",
"language_code": "en",
"series": "Azuki TCG",
"code": "STT-03",
"printed_total": 17,
"release_date": "2026/06/29",
"logo": "https://tcg.azuki.com/azuki_tcg_logo.svg",
"symbol": "https://tcg.azuki.com/azuki_tcg_logo.svg"
},
{
"id": "azk-stt-01",
"name": "Gates Awakened Starter Deck: Raizan (Lightning)",
"total": 19,
"language": "English",
"language_code": "en",
"series": "Azuki TCG",
"code": "STT-01",
"printed_total": 17,
"release_date": "2026/06/29",
"logo": "https://tcg.azuki.com/azuki_tcg_logo.svg",
"symbol": "https://tcg.azuki.com/azuki_tcg_logo.svg"
},
{
"id": "azk-stt-02",
"name": "Gates Awakened Starter Deck: Shao (Water)",
"total": 19,
"language": "English",
"language_code": "en",
"series": "Azuki TCG",
"code": "STT-02",
"printed_total": 17,
"release_date": "2026/06/29",
"logo": "https://tcg.azuki.com/azuki_tcg_logo.svg",
"symbol": "https://tcg.azuki.com/azuki_tcg_logo.svg"
},
{
"id": "azk-stt-04",
"name": "Gates Awakened Starter Deck: Zero (Fire)",
"total": 19,
"language": "English",
"language_code": "en",
"series": "Azuki TCG",
"code": "STT-04",
"printed_total": 17,
"release_date": "2026/06/29",
"logo": "https://tcg.azuki.com/azuki_tcg_logo.svg",
"symbol": "https://tcg.azuki.com/azuki_tcg_logo.svg"
}
],
"page": 1,
"page_size": 10,
"total_count": 7,
"language": "en"
}curl -X GET 'https://service.rip.fun/api/v1/azuki/expansions?page_size=10' \ -H 'X-API-Key: rip_…'
| Field | Type | Required | Description |
|---|---|---|---|
q | string | — | Advanced search, e.g. `name:char*`, `(subtypes:mega OR subtypes:vmax)`, `-types:water`, `hp:[150 TO *]`, `expansion.id:sv1`; on One Piece, the gameplay fields too — `colors:Black cost:[1 TO 3] type:Character`. Capped at 512 characters, 20 terms and 5 levels of parentheses — a generated filter reaches those long before a hand-typed one does. Unknown fields return 400 with a suggestion. Full grammar + field list: see the Search & filtering guide. |
language | string | — | Language code, or a comma list. **Defaults to `en`**: every card exists once per printed language, so an unfiltered list interleaves two catalogs. Pass `language=all` for every language, or `language=ja`. The applied value comes back in the envelope. A `language:`, `id:` or `expansion.id:` term in `q` already pins the language, so the default steps aside. |
orderBy | string | — | Comma list; `-` prefix = DESC, e.g. `-release_date`. Max 3 keys. Cards sort on `name`, `number`, `rarity`, `raw_price`/`market_price`, `release_date`, `expansion.id`, `id` (plus `hp` on Pokémon and `cost`, `power`, `counter`, `life` on One Piece). Missing values sort LAST in both directions, and every sort carries a unique `id` tiebreak, so paging a sorted result set can neither skip nor repeat a row. |
page / page_size | number | — | Pagination. `page` ≥ 1 (default 1), `page_size` 1–100 (default 100, `pageSize` also accepted). Out-of-range values are rejected, never clamped. `page × page_size` capped at 10,000, so narrow with `q` to go deeper. Always compare `total_count` against the rows you received — 100 is a cap, not a promise, and a truncated page looks identical to a complete one. Collections you might assume fit in a single call do not: there are more than 100 One Piece expansions, so an unpaginated `/expansions` omits the newest sets and everything you would have walked from them. |
select | string | — | Comma list of top-level fields to keep (`id` always included). Trims response size and does not change the credit cost. |
data)| Field | Description |
|---|---|
data[].id / name / series / code | Expansion identity |
data[].total / printed_total | Card counts (incl. secret rares vs printed) |
data[].language / language_code | Canonicalized language + ISO code |
data[].release_date | Release date, `YYYY/MM/DD` |
data[].logo / symbol | Artwork URLs |
data[].translation | English name under `translation.en.name` for non-English sets |
| Status | Code | When |
|---|---|---|
| 400 | parse_error | malformed `q` syntax: an unclosed quote or parenthesis, a missing term, a stray operator. `details.position` is the 0-based character offset of the offending token. |
| 400 | unknown_field | a `q` term names a field this resource does not register (`subtype:` for `subtypes:`, a card field on `/sealed`), or `orderBy` names a field you cannot sort on. The message carries a did-you-mean suggestion and `details.position` points at it. Unknown fields are rejected, never ignored — an empty page would be the more expensive answer. |
| 400 | invalid_value | the field exists but the value does not fit it: a range on a field that has no ordering, a non-numeric bound, a value outside a closed vocabulary. |
| 400 | query_too_complex | `q` exceeds 512 characters, 20 terms or 5 levels of parenthesis nesting, `orderBy` names more than 3 keys, or a value breaks the wildcard guardrails (a leading `*`, more than 3 per value, fewer than 2 literal characters). Filter builders hit this before people do — count terms as you assemble, and fall back to several narrower calls rather than one wide one. |
| 400 | invalid_pagination | `page`/`page_size` non-numeric, out of range, or `page × page_size` > 10,000 |
| 400 | invalid_language | `language` is not a language code — expected `en`, `ja`, a comma list of codes, or `all` |
| 400 | invalid_distinct | `distinct` is anything other than `code` |
| 400 | invalid_select | `select` names more than 40 fields. Names that do not exist are ignored rather than rejected, so a typo silently drops the field — check the response, not just the status. |
| 400 | invalid_include | `include` carries a value this endpoint does not offer. Cards and sealed accept `prices`; the expansion endpoints accept none at all. |
| 404 | not_found | no such object for this game (a Pokémon id on `/onepiece` is "not found") |
See Errors for the response envelope and the full code list.