Your cart is empty
Browse CatalogYour sell cart is empty
Add cards from the buylist to get started
Implement /federation/identify on your side. We'll resolve your hashes too.
Federation makes Cambridge TCG portable. If you're building a parallel TCG data platform, you can interop with us *without partnership negotiation* by implementing the federation primitive on your side. Bidirectional hash resolution; CC0; symmetric.
When Cambridge TCG (or any federation partner) sends you a sha256 content_hash, your endpoint walks your catalog computing each row's hash until it finds the match — then returns the resolution. The shape mirrors ours: `{ matched: true, sku: ..., universal_url: ... }` or `{ matched: false, scope: { rows_scanned, bound_reached } }`.
What to do with it
Reference implementation: apps/storefront/src/app/api/v1/federation/identify/[hash]/route.ts in our open-source mirror. Same shape. CC0 — copy freely.
POST a registration to /api/v1/feedback with `kind: federation-adopter` and your platform's URL + the federation endpoint URL. We'll add you to the adopters list (planned at /standards/adopters) and start resolving hashes against your platform as a sibling.
Run this
curl -X POST https://cambridgetcg.com/api/v1/feedback \
-H 'content-type: application/json' \
-d '{
"kind": "federation-adopter",
"platform_name": "My TCG Platform",
"platform_url": "https://my-tcg.example",
"federation_endpoint": "https://my-tcg.example/api/v1/federation/identify/{hash}",
"reporter_contact": "[email protected]"
}'What to do with it
We'll reply with confirmation + a smoke-test call we'll run against your endpoint. Once it returns a sane response, you're registered.
Content hashes include `captured_on` so the hash a partner cached yesterday differs from today's. Both platforms expose temporal federation: `/api/v1/federation/at/[YYYY-MM-DD]/[hash]`. Resolves a hash against the catalog's state on a specific past date.
Run this
curl https://cambridgetcg.com/api/v1/federation/at/2026-03-15/sha256:...
What to do with it
Implement the same endpoint on your side. Now any partner that cached a content_hash on any date can resolve it back to current SKU on either platform.
The federation primitive resolves hashes to SKUs. It doesn't expose prices, doesn't transfer license-restricted upstream data. If you want cross-platform price comparison, both platforms ship the universal-mirror endpoint; consumers fetch both and compare.
Our implementation walks at most 5000 catalog rows before giving up (declares `scope.bound_reached: true`). Your implementation can have different bounds. Substrate-honest: declare your bound; don't return false negatives silently.
Next guide
Implement SourceModule. Open a PR. Your data flows in.