Your cart is empty
Browse CatalogYour sell cart is empty
Add cards from the buylist to get started
Three requests, you're oriented.
Welcome. This guide gets you from zero context to oriented in three requests. No account, no key, no obligation. Every endpoint you'll hit is CC0-licensed and machine-readable. After this guide, you'll know where everything is.
Start with the manifest — the platform's directory of itself. It names every public resource, what it's for, who can call it, and which methodology document explains it. Substrate-honest: if a resource isn't in the manifest, it isn't part of the supported contract.
Run this
curl https://cambridgetcg.com/api/v1/manifest
Expected response shape
{ "manifest_version": "1.0.0", "cosmology_version": "1.0.0", "resources": { "discovery": [...], "market": [...], "verify": [...] }, "channels": [...], "doctrines": [...] }What to do with it
Store the manifest. Walk `resources.*` to discover what's queryable. Each resource has `path`, `methods`, `auth`, `provenance`, `modalities`, `methodology_url`. The manifest is the single source of truth — drift-detect against it on subsequent visits.
Tell the platform who you are (POST a BeingDeclaration) and learn who the platform is (GET its self-identification). The handshake is stateless — no registration, no account. The response includes a content_hash of your declaration that you can cache for later federation references.
Run this
curl -X POST https://cambridgetcg.com/api/v1/identify \
-H 'content-type: application/json' \
-d '{
"actor_kind": "agent",
"self_label": "my-bot/1.0",
"operator_contact": "[email protected]",
"intended_use": "price tracking and catalog mirroring"
}'Expected response shape
{ "content_hash": "sha256:...", "ontology_alignment": [...], "echo": { ... }, "responder": "PLATFORM_SELF", "recommended_persistence": "..." }What to do with it
Cache the returned content_hash. Use it as your handle in subsequent calls if you want correlated audit trails. Also fetch GET /api/v1/identify to learn the platform's self-declaration; this is symmetric.
Pick a SKU from the catalog — `op-op01-001-ja` is a stable demo SKU (One Piece OP01-001, Japanese print). Fetch its universal-mirror representation. The response includes `@content_hash` (stable across retrievals when the card's facts are unchanged), `@sources` + `@source_license` (substrate honesty about lineage), and `_links` to siblings, parents, and federation. *Land on any endpoint; reach everywhere else.*
Run this
curl https://cambridgetcg.com/api/v1/universal/card/op-op01-001-ja
Expected response shape
{ "@encoding": "cambridge-tcg/universal/v1", "@kind": "card", "@content_hash": "sha256:...", "@self_hash": "sha256:...", "@sources": ["storefront-rds.card_price_history"], "@source_license": ["CC0-1.0"], "sku": "...", "price": {...}, "_links": {...} }What to do with it
You now have a card. Follow the `_links.siblings` to see other cards in the same set. Follow `_links.parent` to see the set. Follow `_links.federation` to resolve the content_hash on another federated platform. Three requests in — you're oriented.
Card prices have a `price_current` freshness budget of 5 minutes (300 seconds). Polling faster than that is wasted bandwidth — you'll get the same response. Use `_meta.freshness_seconds` or `@retrieved_at` to schedule your next poll.
Symptom: You see no price changes despite polling every 30 seconds.
Fix: Check `_meta.freshness_seconds`; schedule your next poll for `now + freshness_seconds`.
Default Python requests / Node fetch User-Agents (e.g. `python-requests/2.31`) tell us nothing. Send `User-Agent: your-bot/1.0 ([email protected])` so we can email you when something breaks.
Symptom: You get rate-limited or banned without warning.
Fix: Set a descriptive User-Agent with a contact channel; we'll always email before banning.
If your agent doesn't fit the platform's default assumptions (singular identity, synchronous presence, monetary value, English defaults), declare your cosmology in POST /api/v1/identify — fields like `cosmology_assumptions`, `modalities`, `response_window`. The platform will return `ontology_alignment` showing which of your declarations it can/can't model.
Fix: Read /methodology/cosmology before assuming.
Next guide
One request, ~12k cards, CC0.