Quickstart · ECZ-ID API Passport™
API quickstart
Give an API surface you operate a free ECZ-ID API Passport, declare it in your OpenAPI description, and let callers check it before they send consequential requests.
The free API Passport journey, the public record and the relying-party check are live. Commands were measured read-only on 2026-10-10. Availability is read live in TrustOps.
This quickstart gets the machine its identity. To carry it through the whole Accountability Chain (authority, Intent, decision, Receipt and re-verify), follow the API guided flow.
01Know what one Passport covers
You operate an API that agents and applications call. One Passport is one authorised API surface operated by the Parent.
Law: one logical API -> one Passport; versions, environments, regional aliases and gateways are bindings; a second distinct API surface is a second Passport.
Never a new Passport: version, environment, regional_alias, gateway.
02Get the free Passport
Open the API door in TrustOps and sign in once. If your organisation has no Business Passport, a free DECLARED one is created. No payment is taken. Have one of these identifiers ready:
api_base_url: the API base URL; a trailing /vN version segment is a binding, not the subjectopenapi_url: the URL of the OpenAPI documentrepository: host/owner/repo of the source repository
03Declare it where your ecosystem looks
The families contract names the place: OpenAPI info: x-ecz-id + x-ecz-resolver-backlink. A declaration is a pointer, not proof.
openapi: 3.1.0
info:
title: Example Payments API
version: "2.3.0"
x-ecz-id:
operator_ecz_id: ECZ-GB-EXAMPL
api_passport_id: ECZ-GB-EXAMPL::API_PASSPORT-AB12CD
api_origin: https://api.example.com
spec_hash: sha256:<hash-of-canonical-spec>
resolver_url: https://resolver.ecocitizenz.org/p/ECZ-GB-EXAMPL::API_PASSPORT-AB12CD04Prove a binding
A binding attaches the Passport to a native identity you control. The binding classes this family defines are: API_ORIGIN, OPENAPI_SPEC, WEBHOOK_ENDPOINT, DOMAIN_DNS_TXT, jwks_uri.
Proof is established through TrustOps and ECZ-ID Core, never on this site. Until a binding is proven, the public record reads binding.state: NO_PUBLIC_PROOF, which is the normal state of a new record. A class being defined is not a claim of a live integration with that provider.
05Let relying parties check it
Anyone can check before relying, with no account. This exact command was run on 2026-10-10:
npx -y @ecocitizenz/ecz-id-mcp-verifier check --target https://api.ecocitizenz.com --target-type api_urlECZ-ID’s own public API has not been issued an API Passport. Versions, environments and gateways of one API are bindings of one Passport; a second distinct API is a second Passport.
06Next: Intent, decision, Receipt
- Live · signed inModel what this machine is authorised to do as an ECZ-ID Intent. Carry Intent
- Release-gatedAsk IntentControl for a decision before consequential actions. Request a decision
- No public retrievalPlan for Receipts in your records. Verify a Receipt
A free Passport gives a machine a persistent identity. It never means verified, assured, safe, secure, compliant, approved, certified or endorsed. Family facts come from the TrustOps families contract; current state is only ever the live Resolver record.
