/api/v1/cards/unique-id/:unique_id tenant key Fetches a single card by unique_id with the card and set context attached — the same fields as a List cards row. Scoped to your account: a unique_id that exists but belongs to someone else is a 404, not a 403. Raw cards and graded slabs share one unique_id namespace and both resolve here — you know a card by its CARD-RIP… id and never have to know which kind it is before you ask.
Read sports.record_status before you trust a sports row: "provisional" means it was machine-extracted from the warehouse scan and never catalog-verified, so its player name, parallel and print run can change. See List cards for the full lifecycle.
GET /api/v1/cards/unique-id/CARD-EXAMPLE-1 These inputs are shared across all docs pages, so an id entered here carries over.
Not run yet. Press Run to make a live call against https://service.rip.fun (through this demo's server-side proxy; the API key never reaches the browser).
curl -X GET 'https://service.rip.fun/api/v1/cards/unique-id/CARD-EXAMPLE-1' \ -H 'X-API-Key: rip_…'
data)| Field | Description |
|---|---|
unique_id / card_id | Identifiers. card_id is null on sports cards — they are not in the TCG catalog |
type / graded | type is "RAW" | "GRADED". graded carries company, grade, grade_numeric (tenths — 100 is a 10), cert_number, cert_url and verification_status, and is present only on a GRADED row — see List cards for the full shape. On a slab, scan_image_url is a photograph of the holder and declared_value, not insured_price, is the figure that reflects the grade |
category / game | The discriminator. category is "tcg" | "sports"; game is pokemon | onepiece | basketball | baseball | football | soccer | hockey | other. Both are null when the row resolves to neither catalog — treat that as unknown, not as TCG |
sub_account | Which of your sub-accounts the card is filed under: { slug, name }, or null when it is in your own inventory — see List cards. There is no ?sub_account= filter here: a single card is already scoped to you, and its label is on the row |
name / card_number / set_name | Catalog identity, filled from whichever catalog owns the row. On a sports card, name is the player name and card_number / set_name come from the sports catalog row |
release_date / year | Set release date (ISO 8601, always null for sports cards — a sports row carries a season, not a release date) + release year (sports cards use the season start year) |
image_url / scan_image_url | Catalog image + your scanned image. image_url is null on sports cards: we hold no licensed product art for them, so scan_image_url is the only image you get |
insured_price | Catalog market price (decimal string) — see List cards. Null when our catalog has no price for the card |
declared_value | The value this copy is carried and insured at — see List cards for the shape |
sports | Sports-catalog identity, present only when category is "sports" (the key is absent otherwise): id, sport, player_name, team, manufacturer, set_name, year, card_number, parallel_name, print_run, is_autograph, is_relic, is_rookie, record_status — see List cards |
(not yet identified) | A card we hold but have not finished identifying returns 404 here, the same as a card we do not hold, and is counted in pending_identity on List cards. It becomes readable once identified |
(removed duplicate) | A card we added by mistake and took back out (the same physical card scanned in twice) returns 404 here from then on. If you had fetched it, a card.removed event in GET /inventory/events tells you which unique_id to delete and which copy we kept |
created_at / updated_at | Timestamps |
| Status | Code | When |
|---|---|---|
| 400 | unique_id required | missing unique_id |
| 404 | not found | card not part of your account, not yet identified, or removed as a duplicate |
See Errors for the response envelope and the full code list.