{"info":{"title":"OpenRift Developer API","version":"1.0.0","description":"Free, public Riftbound card data. No key or sign-in needed.\nSend a `User-Agent` with your project's name and a way to reach you.\n\nEvery error is `{ defined, code, status, message, data }`. A rejected\ninput is a `400` whose `data.issues` lists each field as `{ path, message }`.\n\nGuide, caching and terms: `/developers` on this site."},"openapi":"3.1.0","components":{"schemas":{"Card":{"type":"object","properties":{"id":{"type":"string","examples":["019cfc3b-0389-744b-837c-792fd586300e"]},"slug":{"type":"string","examples":["jinx-rebel"]},"name":{"type":"string","examples":["Jinx, Rebel"]},"type":{"type":"string","description":"Always `types[0]`. Read `types`; a card can have more than one type.","examples":["Unit"],"deprecated":true},"types":{"type":"array","minItems":1,"items":{"type":"string","examples":["Unit"]},"examples":[["Unit"]]},"superTypes":{"type":"array","items":{"type":"string","examples":["Champion"]},"examples":[["Champion"]]},"domains":{"type":"array","items":{"type":"string","examples":["Chaos"]},"examples":[["Chaos"]]},"tokenCardIds":{"type":"array","items":{"type":"string"},"examples":[["019cfc3b-0389-744b-837c-792fd586300f"]]},"might":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[5]},"energy":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[5]},"power":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[null]},"keywords":{"type":"array","items":{"type":"string"},"examples":[[]]},"tags":{"type":"array","items":{"type":"string"},"examples":[[]]},"mightBonus":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[null]},"maxCopiesOverride":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[null]},"additionalLegendCount":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[null]},"errata":{"anyOf":[{"type":"object","properties":{"correctedRulesText":{"anyOf":[{"type":"string"},{"type":"null"}]},"correctedEffectText":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"effectiveDate":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["correctedRulesText","correctedEffectText","source","sourceUrl","effectiveDate"]},{"type":"null"}],"examples":[null]},"bans":{"type":"array","items":{"type":"object","properties":{"formatId":{"type":"string","examples":["019cfc3b-0369-7000-8000-000000000002"]},"formatName":{"type":"string","examples":["Constructed"]},"bannedAt":{"type":"string","examples":["2026-01-15"]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["Power level"]}},"required":["formatId","formatName","bannedAt","reason"]},"examples":[[]]}},"required":["id","slug","name","type","types","superTypes","domains","tokenCardIds","might","energy","power","keywords","tags","mightBonus","maxCopiesOverride","additionalLegendCount","errata","bans"]},"CatalogCard":{"type":"object","properties":{"slug":{"type":"string","examples":["jinx-rebel"]},"name":{"type":"string","examples":["Jinx, Rebel"]},"type":{"type":"string","description":"Always `types[0]`. Read `types`; a card can have more than one type.","examples":["Unit"],"deprecated":true},"types":{"type":"array","minItems":1,"items":{"type":"string","examples":["Unit"]},"examples":[["Unit"]]},"superTypes":{"type":"array","items":{"type":"string","examples":["Champion"]},"examples":[["Champion"]]},"domains":{"type":"array","items":{"type":"string","examples":["Chaos"]},"examples":[["Chaos"]]},"tokenCardIds":{"type":"array","items":{"type":"string"},"examples":[["019cfc3b-0389-744b-837c-792fd586300f"]]},"might":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[5]},"energy":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[5]},"power":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[null]},"keywords":{"type":"array","items":{"type":"string"},"examples":[[]]},"tags":{"type":"array","items":{"type":"string"},"examples":[[]]},"mightBonus":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[null]},"maxCopiesOverride":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[null]},"additionalLegendCount":{"anyOf":[{"type":"number"},{"type":"null"}],"examples":[null]},"errata":{"anyOf":[{"type":"object","properties":{"correctedRulesText":{"anyOf":[{"type":"string"},{"type":"null"}]},"correctedEffectText":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"effectiveDate":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["correctedRulesText","correctedEffectText","source","sourceUrl","effectiveDate"]},{"type":"null"}],"examples":[null]},"bans":{"type":"array","items":{"type":"object","properties":{"formatId":{"type":"string","examples":["019cfc3b-0369-7000-8000-000000000002"]},"formatName":{"type":"string","examples":["Constructed"]},"bannedAt":{"type":"string","examples":["2026-01-15"]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["Power level"]}},"required":["formatId","formatName","bannedAt","reason"]},"examples":[[]]}},"required":["slug","name","type","types","superTypes","domains","tokenCardIds","might","energy","power","keywords","tags","mightBonus","maxCopiesOverride","additionalLegendCount","errata","bans"]},"Printing":{"type":"object","properties":{"faceId":{"type":"string","description":"Omitted when it equals the printing id."},"shortCode":{"type":"string","examples":["OGN-202"]},"setId":{"type":"string","examples":["019cfc3b-0369-7890-a450-7859471cc3f6"]},"rarity":{"type":"string","examples":["Epic"]},"artVariant":{"type":"string","examples":["normal"]},"isSigned":{"type":"boolean","examples":[false]},"isOvernumbered":{"type":"boolean","examples":[false]},"markers":{"type":"array","items":{"type":"string"},"description":"Marker slugs; the definitions are in the response's `markers`.","examples":[["promo"]]},"finish":{"type":"string","examples":["foil"]},"images":{"type":"array","items":{"type":"object","properties":{"imageId":{"type":"string","examples":["019d02f1-d14f-769f-9295-9852db692dbe"]},"credit":{"type":"string","examples":["gamesnight"]}},"required":["imageId"]}},"artist":{"type":"string","examples":["Kudos Productions"]},"publicCode":{"type":"string","examples":["OGN-202/298"]},"printedRulesText":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"printedEffectText":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"flavorText":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"printedName":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"printedYear":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"examples":[2025]},"language":{"type":"string","examples":["EN"]},"canonicalRank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sort key. On `/catalog` it orders every face in the catalog; on `/cards/{cardSlug}` it orders that card's faces and is only comparable among them.","examples":[1]},"fallbackArtMode":{"enum":["pinned","none"],"type":"string","examples":["pinned"]},"fallbackImageId":{"type":"string","examples":["019cfc3b-03d3-7dac-86c9-27900cd43727"]},"cardId":{"type":"string","examples":["019cfc3b-0389-744b-837c-792fd586300e"]},"slug":{"type":"string","description":"The printing's URL segment. Only on `/cards/{cardSlug}`.","examples":["en-ogn-202-foil-promo-standard"]},"size":{"type":"string","examples":["standard"]},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"distributionChannels":{"type":"array","items":{"type":"object","properties":{"channel":{"type":"string","description":"A distribution channel slug; the definitions are in the response's `distributionChannels`.","examples":["nexus-night"]},"note":{"type":"string","examples":["Top 8"]}},"required":["channel"]},"description":"Where the printing was distributed, as channel slugs with an optional note; the definitions are in the response's `distributionChannels`.","examples":[[]]},"citations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","examples":["019d02f1-d14f-769f-9295-9852db692dbe"]},"label":{"type":"string","examples":["Launch party unboxing (RiftboundDaily)"]},"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://www.youtube.com/watch?v=abc123"]}},"required":["id","label","sourceUrl"]},"description":"Omitted when empty.","examples":[[]]},"hasFoilTwin":{"const":true,"description":"Present, and `true`, when a foil printing with the same faces exists.","examples":[true]},"side2":{"$ref":"#/components/schemas/PrintingSide","description":"The second face of a double-sided printing. Absent on single-sided printings."}},"required":["shortCode","setId","rarity","artVariant","isSigned","isOvernumbered","markers","finish","images","artist","publicCode","printedRulesText","printedEffectText","flavorText","printedName","printedYear","language","canonicalRank","cardId","size","comment","distributionChannels"],"description":"One physical printing. The top-level face fields describe side 1, the face whose `shortCode` sorts first (a face is a side in field names); a double-sided printing adds the other face as `side2`. Either face may show the card you asked for, so match on `cardId`. The value is identical on `/catalog` and `/cards/{cardSlug}`, except for `slug` and `canonicalRank`."},"PrintingSide":{"type":"object","properties":{"faceId":{"type":"string","examples":["019cfc3b-03d3-7dac-86c9-27900cd43727"]},"shortCode":{"type":"string","examples":["OGN-202"]},"setId":{"type":"string","examples":["019cfc3b-0369-7890-a450-7859471cc3f6"]},"rarity":{"type":"string","examples":["Epic"]},"artVariant":{"type":"string","examples":["normal"]},"isSigned":{"type":"boolean","examples":[false]},"isOvernumbered":{"type":"boolean","examples":[false]},"markers":{"type":"array","items":{"type":"string"},"description":"Marker slugs; the definitions are in the response's `markers`.","examples":[["promo"]]},"finish":{"type":"string","examples":["foil"]},"images":{"type":"array","items":{"type":"object","properties":{"imageId":{"type":"string","examples":["019d02f1-d14f-769f-9295-9852db692dbe"]},"credit":{"type":"string","examples":["gamesnight"]}},"required":["imageId"]}},"artist":{"type":"string","examples":["Kudos Productions"]},"publicCode":{"type":"string","examples":["OGN-202/298"]},"printedRulesText":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"printedEffectText":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"flavorText":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"printedName":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"printedYear":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"examples":[2025]},"language":{"type":"string","examples":["EN"]},"canonicalRank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sort key. On `/catalog` it orders every face in the catalog; on `/cards/{cardSlug}` it orders that card's faces and is only comparable among them.","examples":[1]},"fallbackArtMode":{"enum":["pinned","none"],"type":"string","examples":["pinned"]},"fallbackImageId":{"type":"string","examples":["019cfc3b-03d3-7dac-86c9-27900cd43727"]},"cardId":{"type":"string","examples":["019cfc3b-0389-744b-837c-792fd586300e"]}},"required":["faceId","shortCode","setId","rarity","artVariant","isSigned","isOvernumbered","markers","finish","images","artist","publicCode","printedRulesText","printedEffectText","flavorText","printedName","printedYear","language","canonicalRank","cardId"],"description":"One face of a printing: everything printed on that side of the card."},"Set":{"type":"object","properties":{"id":{"type":"string","examples":["019cfc3b-0369-7890-a450-7859471cc3f6"]},"slug":{"type":"string","examples":["OGN"]},"name":{"type":"string","examples":["Origins"]},"releases":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"releasedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["2025-10-31"]},"precision":{"anyOf":[{"enum":["day","month","quarter","year"],"type":"string"},{"type":"null"}],"examples":["day"]}},"required":["releasedAt","precision"]},"examples":[{"EN":{"releasedAt":"2025-10-31","precision":"day"},"FR":{"releasedAt":"2026-04-01","precision":"quarter"}}]},"setType":{"enum":["main","supplemental"],"type":"string","examples":["main"]}},"required":["id","slug","name","releases","setType"]},"Marker":{"type":"object","properties":{"id":{"type":"string","examples":["019cfc3b-0369-7000-8000-000000000001"]},"slug":{"type":"string","examples":["promo"]},"label":{"type":"string","examples":["Promo"]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]}},"required":["id","slug","label","description"]},"DistributionChannel":{"type":"object","properties":{"id":{"type":"string","examples":["019cfc3b-0369-7000-8000-000000000002"]},"slug":{"type":"string","examples":["nexus-night"]},"label":{"type":"string","examples":["Nexus Night"]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"kind":{"enum":["event","product"],"type":"string","examples":["event"]},"parentId":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]},"childrenLabel":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":[null]}},"required":["id","slug","label","description","kind","parentId","childrenLabel"]},"MarketplaceLink":{"type":"object","properties":{"available":{"type":"boolean","examples":[true]},"productId":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The marketplace's own product id","examples":[582391]},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Product page link, with OpenRift's referral code where the marketplace has one","examples":["https://partner.tcgplayer.com/openrift?u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F582391"]}},"required":["available","productId","url"]},"Rule":{"type":"object","properties":{"id":{"type":"string","examples":["019cfc3b-0369-7000-8000-000000000100"]},"kind":{"enum":["core","tournament"],"type":"string"},"language":{"enum":["en","fr","ko","zh-Hans"],"type":"string"},"version":{"type":"string","examples":["1.2.0"]},"ruleNumber":{"type":"string","examples":["3.4.1"]},"sortOrder":{"type":"number","examples":[120]},"depth":{"type":"number","examples":[2]},"ruleType":{"enum":["title","subtitle","text"],"type":"string"},"content":{"type":"string","examples":["A player loses the game if they would draw a card from an empty deck."]},"changeType":{"enum":["added","modified","removed","unchanged"],"type":"string"}},"required":["id","kind","language","version","ruleNumber","sortOrder","depth","ruleType","content","changeType"]},"RuleVersion":{"type":"object","properties":{"kind":{"enum":["core","tournament"],"type":"string"},"language":{"enum":["en","fr","ko","zh-Hans"],"type":"string"},"version":{"type":"string","examples":["1.2.0"]},"comments":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["First public release."]},"commentsHtml":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["<p>First public release.</p>"]},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["Vendetta"]},"documentVersion":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["1.4"]},"importedAt":{"type":"string","examples":["2026-02-16T08:30:00Z"]},"languages":{"type":"array","items":{"enum":["en","fr","ko","zh-Hans"],"type":"string"},"examples":[["en","fr","ko"]]}},"required":["kind","language","version","comments","commentsHtml","label","documentVersion","importedAt","languages"]},"Error":{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}},"securitySchemes":{}},"paths":{"/api/v1/cards/{cardSlug}":{"get":{"operationId":"getCard","summary":"One card by slug","description":"The card, every printing of it, the sets and products those printings come in, and the markers and distribution channels they name. Printings use the same shape as `/catalog`, so one type covers both. Prices are separate; see `/prices`.","tags":["Cards"],"parameters":[{"name":"cardSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"The card's slug, as in its OpenRift URL.","examples":["jinx-rebel"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"card":{"$ref":"#/components/schemas/Card"},"cards":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/CatalogCard"},"description":"The other cards these printings show (the other face of a double-sided printing), keyed by card id. The requested card is `card` and never in here.","examples":[{}]},"printings":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/Printing"},"description":"Every printing of the card, keyed by printing id. The card may be either face of a double-sided printing: match on `cardId`."},"sets":{"type":"array","items":{"$ref":"#/components/schemas/Set"}},"markers":{"type":"array","items":{"$ref":"#/components/schemas/Marker"},"description":"The markers these printings name, in display order."},"distributionChannels":{"type":"array","items":{"$ref":"#/components/schemas/DistributionChannel"},"description":"The distribution channels these printings name, with their parents."},"products":{"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string","examples":["019cfc3b-03d3-7dac-86c9-27900cd43727"]},"slug":{"type":"string","examples":["sfd-prerift-ezreal"]},"name":{"type":"string","examples":["SFD Pre-Rift Kit - Ezreal"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"examples":[2]}},"required":["printingId","slug","name","quantity"]},"examples":[[]]}},"required":["card","cards","printings","sets","markers","distributionChannels","products"]}}}},"400":{"description":"Invalid input. `data.issues` lists each rejected field as `{ path, message }`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Card not found"},"data":{}},"required":["defined","code","status","message"]},{"$ref":"#/components/schemas/Error"}]}}}}},"security":[]}},"/api/v1/catalog":{"get":{"operationId":"getCatalog","summary":"The whole card catalog","description":"Every set, card and printing in one response, with the markers, distribution channels, keywords and enum labels they name. Cards and printings are keyed by id. A card is the game object; a printing is one physical version of it. Fetch it once, keep it for an hour, then revalidate with `If-None-Match`.","tags":["Catalog"],"parameters":[{"name":"v","in":"query","schema":{"type":"string","description":"The ETag of the catalog you last saw. When it still matches, the response is marked immutable so caches keep it for a year. Optional."},"allowEmptyValue":true,"allowReserved":true},{"name":"langs","in":"query","schema":{"type":"string","minLength":1,"maxLength":200,"description":"Comma-separated language codes (see `enums.languages`). Only printings in these languages are returned; unknown codes match nothing. Omit it for every language.","examples":["EN,FR"]},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"sets":{"type":"array","items":{"$ref":"#/components/schemas/Set"}},"cards":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/CatalogCard"}},"printings":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/Printing"}},"markers":{"type":"array","items":{"$ref":"#/components/schemas/Marker"}},"distributionChannels":{"type":"array","items":{"$ref":"#/components/schemas/DistributionChannel"}},"enums":{"type":"object","properties":{"cardTypes":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","examples":["Unit"]},"label":{"type":"string","examples":["Unit"]},"sortOrder":{"type":"number","examples":[1]}},"required":["slug","label","sortOrder"]}},"superTypes":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","examples":["Unit"]},"label":{"type":"string","examples":["Unit"]},"sortOrder":{"type":"number","examples":[1]}},"required":["slug","label","sortOrder"]}},"domains":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","examples":["Unit"]},"label":{"type":"string","examples":["Unit"]},"sortOrder":{"type":"number","examples":[1]}},"required":["slug","label","sortOrder"]}},"rarities":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","examples":["Unit"]},"label":{"type":"string","examples":["Unit"]},"sortOrder":{"type":"number","examples":[1]}},"required":["slug","label","sortOrder"]}},"finishes":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","examples":["Unit"]},"label":{"type":"string","examples":["Unit"]},"sortOrder":{"type":"number","examples":[1]}},"required":["slug","label","sortOrder"]}},"artVariants":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","examples":["Unit"]},"label":{"type":"string","examples":["Unit"]},"sortOrder":{"type":"number","examples":[1]}},"required":["slug","label","sortOrder"]}},"cardSizes":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","examples":["Unit"]},"label":{"type":"string","examples":["Unit"]},"sortOrder":{"type":"number","examples":[1]}},"required":["slug","label","sortOrder"]}},"languages":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","examples":["Unit"]},"label":{"type":"string","examples":["Unit"]},"sortOrder":{"type":"number","examples":[1]}},"required":["slug","label","sortOrder"]}}},"required":["cardTypes","superTypes","domains","rarities","finishes","artVariants","cardSizes","languages"]},"keywords":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"costKeyword":{"type":"boolean","examples":[false]},"cardModifier":{"type":"boolean","examples":[false]},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"examples":[{"de":"Beschleunigen"}]}},"required":["costKeyword","cardModifier"]}},"tagCategories":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","examples":["Unit"]},"label":{"type":"string","examples":["Unit"]},"sortOrder":{"type":"number","examples":[1]}},"required":["slug","label","sortOrder"]}},"tagCategoryMap":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["sets","cards","printings","markers","distributionChannels","enums","keywords","tagCategories","tagCategoryMap"]}}}},"400":{"description":"Invalid input. `data.issues` lists each rejected field as `{ path, message }`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/v1/prices":{"get":{"operationId":"listPrices","summary":"Today's price of every printing","description":"One price per marketplace per printing, in integer cents of that marketplace's currency (see `currencies`). TCGplayer's market price, the lowest listing on Cardmarket and CardNexus, and the lowest CardTrader Zero listing on CardTrader. Updated once a day.","tags":["Prices"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"prices":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"tcgplayer":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Integer cents (USD)","examples":[452]},"cardmarket":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Integer cents (EUR)","examples":[380]},"cardtrader":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Integer cents (EUR)","examples":[390]},"cardnexus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Integer cents (EUR)","examples":[370]}}},"description":"Keyed by printing id. A marketplace is absent when it has no price.","examples":[{"019cfc3b-03d3-7dac-86c9-27900cd43727":{"tcgplayer":452,"cardmarket":380,"cardtrader":390,"cardnexus":370}}]},"currencies":{"type":"object","properties":{"tcgplayer":{"enum":["EUR","USD"],"type":"string"},"cardmarket":{"enum":["EUR","USD"],"type":"string"},"cardtrader":{"enum":["EUR","USD"],"type":"string"},"cardnexus":{"enum":["EUR","USD"],"type":"string"}},"required":["tcgplayer","cardmarket","cardtrader","cardnexus"],"examples":[{"tcgplayer":"USD","cardmarket":"EUR","cardtrader":"EUR","cardnexus":"EUR"}]}},"required":["prices","currencies"]}}}}},"security":[]}},"/api/v1/prices/links":{"get":{"operationId":"listMarketplaceLinks","summary":"Store links per printing","description":"Each marketplace's product id and a ready-made product page link for the given printings, or for every printing when `printings` is omitted. Links to TCGplayer, CardTrader and CardNexus carry OpenRift's referral code.","tags":["Prices"],"parameters":[{"name":"printings","in":"query","schema":{"type":"string","description":"Comma-separated printing ids, at most 200. Omit it for every printing that has a marketplace product.","examples":["019cfc3b-03d3-7dac-86c9-27900cd43727"]},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"links":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"tcgplayer":{"$ref":"#/components/schemas/MarketplaceLink"},"cardmarket":{"$ref":"#/components/schemas/MarketplaceLink"},"cardtrader":{"$ref":"#/components/schemas/MarketplaceLink"},"cardnexus":{"$ref":"#/components/schemas/MarketplaceLink"}},"required":["tcgplayer","cardmarket","cardtrader","cardnexus"]},"description":"Keyed by printing id.","examples":[{"019cfc3b-03d3-7dac-86c9-27900cd43727":{"tcgplayer":{"available":true,"productId":582391,"url":"https://partner.tcgplayer.com/openrift?u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F582391"},"cardmarket":{"available":true,"productId":748215,"url":"https://www.cardmarket.com/en/Riftbound/Products?idProduct=748215&language=1"},"cardtrader":{"available":false,"productId":null,"url":null},"cardnexus":{"available":true,"productId":151160,"url":"https://af.cardnexus.link/7018965/cn/151160"}}}]}},"required":["links"]}}}},"400":{"description":"Invalid input. `data.issues` lists each rejected field as `{ path, message }`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/v1/prices/{printingId}":{"get":{"operationId":"getPrintingPrices","summary":"One printing's prices, links and history","description":"Today's price, the store link and the daily price history of one printing on every marketplace. A marketplace the printing is not sold on comes back as `available: false` with empty snapshots.","tags":["Prices"],"parameters":[{"name":"printingId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"A printing id from `/catalog`.","examples":["019cfc3b-03d3-7dac-86c9-27900cd43727"]}},{"name":"range","in":"query","schema":{"enum":["7d","30d","90d","all"],"type":"string","default":"30d","description":"How far back `snapshots` reach."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tcgplayer":{"type":"object","properties":{"available":{"type":"boolean","examples":[true]},"productId":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The marketplace's own product id","examples":[582391]},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Product page link, with OpenRift's referral code where the marketplace has one","examples":["https://partner.tcgplayer.com/openrift?u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F582391"]},"currency":{"enum":["EUR","USD"],"type":"string"},"price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Today's price in integer cents, null when unpriced","examples":[452]},"snapshots":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Date-only (YYYY-MM-DD), USD","examples":["2026-04-01"]},"market":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Integer cents (USD)","examples":[452]},"low":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Integer cents (USD)","examples":[325]}},"required":["date","market","low"]}}},"required":["available","productId","url","currency","price","snapshots"]},"cardmarket":{"type":"object","properties":{"available":{"type":"boolean","examples":[true]},"productId":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The marketplace's own product id","examples":[582391]},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Product page link, with OpenRift's referral code where the marketplace has one","examples":["https://partner.tcgplayer.com/openrift?u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F582391"]},"currency":{"enum":["EUR","USD"],"type":"string"},"price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Today's price in integer cents, null when unpriced","examples":[452]},"snapshots":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Date-only (YYYY-MM-DD), EUR","examples":["2026-04-01"]},"market":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Integer cents (EUR)","examples":[380]},"low":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Integer cents (EUR)","examples":[250]}},"required":["date","market","low"]}}},"required":["available","productId","url","currency","price","snapshots"]},"cardtrader":{"type":"object","properties":{"available":{"type":"boolean","examples":[true]},"productId":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The marketplace's own product id","examples":[582391]},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Product page link, with OpenRift's referral code where the marketplace has one","examples":["https://partner.tcgplayer.com/openrift?u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F582391"]},"currency":{"enum":["EUR","USD"],"type":"string"},"price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Today's price in integer cents, null when unpriced","examples":[452]},"snapshots":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Date-only (YYYY-MM-DD), EUR","examples":["2026-04-01"]},"zeroLow":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Integer cents (EUR)","examples":[420]},"low":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Integer cents (EUR)","examples":[390]}},"required":["date","zeroLow","low"]}}},"required":["available","productId","url","currency","price","snapshots"]},"cardnexus":{"type":"object","properties":{"available":{"type":"boolean","examples":[true]},"productId":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The marketplace's own product id","examples":[582391]},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Product page link, with OpenRift's referral code where the marketplace has one","examples":["https://partner.tcgplayer.com/openrift?u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F582391"]},"currency":{"enum":["EUR","USD"],"type":"string"},"price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Today's price in integer cents, null when unpriced","examples":[452]},"snapshots":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Date-only (YYYY-MM-DD), EUR","examples":["2026-04-01"]},"low":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Integer cents (EUR)","examples":[370]}},"required":["date","low"]}}},"required":["available","productId","url","currency","price","snapshots"]}},"required":["tcgplayer","cardmarket","cardtrader","cardnexus"]}}}},"400":{"description":"Invalid input. `data.issues` lists each rejected field as `{ path, message }`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Printing not found"},"data":{}},"required":["defined","code","status","message"]},{"$ref":"#/components/schemas/Error"}]}}}}},"security":[]}},"/api/v1/rules":{"get":{"operationId":"listRules","summary":"The rules of one version","description":"Every rule of the core or tournament rules, in document order, for one version and language. The latest version unless `version` is given; an older version also lists what changed in it.","tags":["Rules"],"parameters":[{"name":"kind","in":"query","required":true,"schema":{"enum":["core","tournament"],"type":"string","description":"Which rulebook."},"allowEmptyValue":true,"allowReserved":true},{"name":"version","in":"query","required":false,"schema":{"type":"string","description":"A version from `/rules/versions`. Defaults to the latest."},"allowEmptyValue":true,"allowReserved":true},{"name":"language","in":"query","required":false,"schema":{"enum":["en","fr","ko","zh-Hans"],"type":"string","default":"en","description":"Defaults to English."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"enum":["core","tournament"],"type":"string"},"language":{"enum":["en","fr","ko","zh-Hans"],"type":"string"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/Rule"}},"version":{"type":"string"},"changes":{"type":"object","properties":{"added":{"type":"array","items":{"type":"string"}},"modifiedPrev":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"removed":{"type":"array","items":{"$ref":"#/components/schemas/Rule"}}},"required":["added","modifiedPrev","removed"]}},"required":["kind","language","rules","version"]}}}},"400":{"description":"Invalid input. `data.issues` lists each rejected field as `{ path, message }`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/v1/rules/versions":{"get":{"operationId":"listRuleVersions","summary":"Every rules version","description":"Every version of the core and tournament rules, oldest first, with the languages each one is available in.","tags":["Rules"],"parameters":[{"name":"kind","in":"query","schema":{"enum":["core","tournament"],"type":"string","description":"Omit it for both rulebooks."},"allowEmptyValue":true,"allowReserved":true},{"name":"language","in":"query","schema":{"enum":["en","fr","ko","zh-Hans"],"type":"string","default":"en","description":"Defaults to English."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"versions":{"type":"array","items":{"$ref":"#/components/schemas/RuleVersion"}},"languages":{"type":"array","items":{"enum":["en","fr","ko","zh-Hans"],"type":"string"}}},"required":["versions","languages"]}}}},"400":{"description":"Invalid input. `data.issues` lists each rejected field as `{ path, message }`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/v1/sets":{"get":{"operationId":"listSets","summary":"Every set","description":"Every set with its release dates per language, its card and printing counts, and a cover image id.","tags":["Sets"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"sets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","examples":["019cfc3b-0369-7890-a450-7859471cc3f6"]},"slug":{"type":"string","examples":["OGN"]},"name":{"type":"string","examples":["Origins"]},"releases":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"releasedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["2025-10-31"]},"precision":{"anyOf":[{"enum":["day","month","quarter","year"],"type":"string"},{"type":"null"}],"examples":["day"]}},"required":["releasedAt","precision"]},"examples":[{"EN":{"releasedAt":"2025-10-31","precision":"day"},"FR":{"releasedAt":"2026-04-01","precision":"quarter"}}]},"setType":{"enum":["main","supplemental"],"type":"string","examples":["main"]},"printedTotal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"examples":[298]},"cardCount":{"type":"number","examples":[312]},"printingCount":{"type":"number","examples":[468]},"coverImageId":{"anyOf":[{"type":"string","examples":["019d02f1-d14f-769f-9295-9852db692dbe"]},{"type":"null"}]}},"required":["id","slug","name","releases","setType","printedTotal","cardCount","printingCount","coverImageId"]}}},"required":["sets"]}}}}},"security":[]}}},"security":[],"servers":[{"url":"https://openrift.app"}]}