The Canonical
Intelligence Exchange
One contract. Many observations. Persistent intelligence.
Fetch lets systems contribute observations, retrieve qualified signals, consume interpretations, and participate in a shared continuity network. It is not an API wrapped around a database — it is the exchange through which behavioural truth becomes accountable intelligence.
Click any object to inspect it. Every node in Fetch descends to the raw partner observation that produced it.
The model before the interface
Fetch is built on a small set of objects that compose into intelligence. Master these eleven concepts and every endpoint, contract, and webhook becomes self-evident. Each carries provenance, so nothing in the exchange is unaccountable.
{{ activeConcept.name }}
{{ activeConcept.kind }}{{ activeConcept.oneLiner }}
{{ activeConcept.definition }}
{{ activeConcept.why }}
{{ activeConcept.example }}
The exchange, end to end
Observations enter from partner systems and leave as interpretations consumed by external platforms. Select any stage to see its purpose, inputs, outputs, and dependencies.
{{ activeArch.purpose }}
Your first signal in fifteen minutes
Six steps from credential to qualified signal. Every request runs against the sandbox with synthetic Companion data — no partner systems required.
{{ qsCur.title }}
{{ qsCur.why }}
{{ qsCur.response }}
Endpoints, organised by capability
Fetch is not a CRUD surface. Endpoints are grouped by the role they play in the exchange — contribute, qualify, interpret, deliver, trace, replay. Each one reinforces a canonical object, and every example object can be traced to its raw partner source.
{{ epCur.purpose }}
The Fetch authentication model
Authentication in Fetch is not a token — it is a contract boundary. A key does not merely identify you; it scopes exactly which observations you may contribute, which intelligence you may consume, and which environment you operate in. Trust is enforced at the credential, not the request.
A credential carries its environment, its scope, and its contract. Nothing in the exchange acts outside what its key permits.
Sandbox and live keys are cryptographically distinct and never interchangeable. A sandbox key cannot read production continuity; a live key cannot be issued until your contract is certified.
Limits are enforced per key and returned on every response via X-Fetch-RateLimit-Remaining. Exceeding a limit returns 429 rate_limited with a Retry-After header — never a dropped observation.
An event system, not a callback
Production systems do not poll Fetch — they subscribe. When the exchange qualifies a signal or constructs an interpretation, it emits an event to every consumer whose contract admits it. Each event carries a fully traceable object, signed and delivered with explicit guarantees.
{{ whCur.purpose }}
All systems operational
Fetch is infrastructure. Reliability is a contract term, not a marketing claim. Figures below are sandbox-representative of the production exchange over a trailing 90-day window.
How a partner gets to live
A Fetch Contract is a canonical object, not a business process bolted on. It governs which observations a partner may contribute, which signals it may consume, and the certification it must pass before a live key is issued. This is the path from first conversation to first signal.
Aggregate of the five stages below, for a typical partner with structured telemetry. Each stage states its own duration, owner, and gate.
{{ ctCur.name }}
{{ ctCur.desc }}
Run the exchange yourself
This is the exchange, live, on synthetic data. Contribute an observation, watch it qualify, retrieve the signal it produces, read the interpretation, and trace the whole chain to source. The qualification logic the docs describe runs in front of you — change the input and the outcome changes with it.
Install, pin, and stay current
Official SDKs wrap the exchange in idiomatic clients. The API is versioned and stable — you pin a version, and breaking changes are announced with a fixed notice period and a long support window.
Go and Java clients are on the roadmap. Until then, the API is plain REST + JSON — any HTTP client works, and every endpoint in the catalogue shows a cURL example.
The version is set per request via the Fetch-Version header, or pinned once in the SDK constructor. Unversioned requests resolve to your account's default. Canonical object shapes never change within a major version — fields are only ever added, never removed or repurposed.
What changed, and when
Every documented capability of the exchange, in reverse order. Additive changes ship continuously; breaking changes are versioned and announced with notice.
{{ lifeView.title }}
{{ lifeView.lead }}
{{ lifeCur.desc }}
{{ lifeCur.state }}
