Colophon Record

An instrument of the
Objects of Affection Collection

The Trust API

Build on the record. Become the trust layer downstream.

Colophon measures an object, verifies its material record against public government ledgers, and holds that record in a tamper-evident, publicly anchored chain. The Trust API packages that accountability, verification, and Material Integrity Index as endpoints your platform can call. Resolve an object once and the evidence travels with the piece wherever it changes hands.

Evidence infrastructure, not certification. Colophon supplies the verifiable record; you own whatever claim you build on it.


01 · Quickstart

Zero to a first call.

The read layer is public and CORS open, so your very first call needs no key and no account. Get a result now, then mint a key when you want a higher rate limit.

  1. Call a public endpoint. No key, straight from a terminal or a browser. This returns the live Material Integrity Index.
    curl BASE/index
  2. Sign in for a key. A key belongs to a Colophon account. Sign in with your email to get a session (a magic link), which you carry as a bearer token.
    curl -X POST BASE/auth/request \
         -H "Content-Type: application/json" \
         -d '{"email": "you@studio.com"}'
  3. Mint a key. Call POST /developer/keys with your session. The full secret is returned exactly once.
    curl -X POST BASE/developer/keys \
         -H "Authorization: Bearer YOUR_SESSION" \
         -H "Content-Type: application/json" \
         -d '{"label": "acme-prod"}'
  4. Send the key. Add X-API-Key to any read call to lift your per-minute limit. The response is identical; only your rate limit changes.
    curl BASE/index -H "X-API-Key: colophon_live_YOUR_KEY"

The base URL. Every example on this page is filled in with the live base for wherever you are reading it. Served under the institutional site the base is /colophon/api; served standalone the engine is the origin. Override it explicitly by setting window.COLOPHON_API_BASE before this page's script runs.


02 · Live console

Try it, right here.

Pick a public read endpoint, give it an id or hash where one is needed, and send. The call runs against the live base and prints the status and the JSON it returns.

These are the CORS-open GET endpoints, so the console calls them straight from your browser. The POST analysis endpoints below are server-side and are not called from here. If the engine is not reachable from where this page is served, the console says so plainly instead of faking a result.


03 · Endpoint reference

Every endpoint, one page.

Each endpoint carries its method, path, auth, parameters, a runnable curl and JavaScript example, and a real (abbreviated) response. Anchors are stable, so any endpoint is linkable by its #id.

Public read layer · no key required

Analysis endpoints · server-side POST

Not CORS-open. These endpoints run a fetch, an estimate, or a corpus reading server-side, so call them from your own backend, not from a browser. The curl and Node fetch examples show the exact request bodies.

Key management · bearer session required


04 · Error reference

Every status, and what to do about it.

Errors return JSON with an error code and a human message. The status line tells you what happened and what to change.

StatusMeaningWhat to do
200OKThe call succeeded. Some read failures on the POST endpoints also return 200 with parsed: false and a message asking you to describe the item, rather than an error.
400Bad inputThe body is malformed or out of bounds (for example a surveillance batch over 25 sources, or an invalid authenticity ref). Read message and fix the request body.
401Auth requiredNo valid session. Sign in with your email for a bearer token and send it as Authorization: Bearer …. The first anonymous verdict is the one call that returns 401 once its single free use is spent.
402Quota exceededA free account has used its three full verdicts. Upgrade to Custodian for unlimited. The gate object reports used and limit.
404Not foundNo object, record, or key with that id. Public read 404s still carry the disclaimer block. Check the id, and note only registered objects have a passport or evidence package.
429Rate limitedOver the per-minute limit. Slow down, honour Retry-After, or present a valid X-API-Key for your own higher bucket. Anonymous callers share the public per-IP default.
503Not configuredA feature is not stood up on this instance (for example no issuer signing key, so no signed credential). Identity and ledger proof still resolve; retry later or use a fully configured deployment.

Rate-limit headers. A 429 carries Retry-After in seconds and a body with scope (public_default or per_api_key) and a hint. Back off, then retry.


05 · Auth & keys

Two credentials, one purpose.

A bearer session proves who you are (to mint keys and to unlock full verdicts). An API key raises your rate limit on the public read layer. The public reads work with neither; a key never changes what an endpoint returns.

  1. Sign in. An API key belongs to a Colophon account. Post your email to /auth/request and follow the magic link; the link hands your browser a session it stores locally.
  2. Mint a key. Call POST /developer/keys with a label. The full secret is returned exactly once. Store it then, because it cannot be retrieved again.
  3. Send it. Add X-API-Key: your_key to your read requests. List your keys with GET /developer/keys and revoke one with DELETE /developer/keys/{id}.

Mint one now

If you are signed in on this device, name a key and mint it here. The secret appears once, below.

Your new key (shown once)

Copy it now. Colophon stores only a hash of this key and can never show it again.

The embeddable widget

Drop one line on a product page and the badge renders the object's record inline, reading the public Badge endpoint. No build step, no framework.

<script src="https://colophon.objectsofaffectioncollection.com/badge.js"
        data-object="OBJECT_ID" async></script>

Colophon is evidence infrastructure, not a certification of compliance, authenticity, or sustainability. The record you receive is verifiable and dated; the claim you make on it is yours. A key authenticates your platform and sets your rate limit; it does not license Colophon to speak for you, and it never changes what an endpoint returns.


06 · Versioning & changelog

Additive and stable.

The API is additive: we add endpoints and fields, we do not remove or rename what is already shipped, so a response your code reads today keeps working. Read the running version from GET /version.

Back to Colophon