Build child-safety enforcement in minutes
Phosra is the accredited developer platform for the Open Child Safety Specification (OCSS). Sign up, mint aphosra_ test key, and make your first authenticated call before your coffee
gets cold — no sales call, no gated waitlist.
Get your API keys — 5 min
Sign up → your dev org auto-provisions → copy a
phosra_test_ key. Self-serve, no email to anyone.Quickstart — first call in 5 min
Zero to an enforced policy against the live sandbox — no key, copy-paste in curl / JS / Python / Go.
Not sure which surface you need? Choose your integration path
One screen mapping your goal → the right path across all five surfaces (
@phosra/link,
@phosra/gatekeeper, direct REST, the MCP server, and the OCSS protocol SDK) — each with
its effort and a “start here” link.New here? Read the architecture overview first — 5 min
How the pieces fit: the Phosra control plane vs the enforcement data plane vs
the open OCSS protocol — one diagram, one mental model, before you write any code.
Prefer to start from a sample? Example apps & starters
A runnable end-to-end starter (no key) plus every real, clonable example repo and published package — the catalog.
Start where you are
I'm a Platform
An app, OS, router, or school network that enforces age-appropriate rules. Fetch a signed
profile and enforce locally.
I'm a Provider
A parental-control or safety vendor that issues rules and consent on a family’s behalf.
I just want the protocol
Signed receipts, sealed envelopes, the Trust List — the vendor-neutral OCSS surface, no Phosra account.
Your first API call
The control plane is live right now. Neither call needs a key: the first proves the host is up, and the second proves the org endpoint is real —401, not 404, is the correct answer without your
session bearer.
How Phosra relates to OCSS
Phosra is an accredited provider on the Open Child Safety Specification (OCSS) — the open standard for age-appropriate access control. Phosra implements OCSS; it does not own it. The relationship is the same as Yubico shipping a FIDO2-conformant authentication key: Yubico implements FIDO2; the FIDO Alliance owns the standard. Phosra implements OCSS; the OCSS stewardship body owns the standard. The consequence for every API call, receipt, and SDK import in this documentation: the protocol signing and verification primitives are not Phosra code — they are the open OCSS library,@openchildsafety/ocss, re-exported without modification.
Reading these docs programmatically? Fetch/llms.txtfor the index,/llms-full.txtfor the full corpus, or append.mdto any page URL (e.g./integration/overview.md) for raw markdown — the rendered HTML pages are a JS app and do not return content to non-browser fetchers. See AI tools & agent ingestion for the full list of machine-readable endpoints.
Two halves
Every surface in this documentation belongs to one of two clearly-separated halves.The Phosra control plane
Management operations over the Phosra platform: create developer orgs, provision and revokephosra_-prefixed API keys, register and consult advisor agents, declare OCSS payload keys for federation, mint and revoke MCP tokens, and pull hourly usage rollups. All management operations use standard HTTP Bearer authentication. This is the Phosra-specific surface.
Platform overview →
The OCSS protocol
The open protocol surface: signed write receipts, sealed envelopes, the Trust List, the succession record, and the 123-category rule vocabulary — all sourced from@openchildsafety/ocss, the vendor-neutral OCSS reference library. Phosra adds zero cryptographic logic here. Install public @openchildsafety/ocss directly. If you later integrate a different OCSS-conformant provider, this surface is identical across implementations.
OCSS overview →
What is live today
Live now — no account required:
- The OCSS Trust List, served at
/.well-known/ocss/trust-list— validly signed against the production root keyroot-prod-bootstrap-2026-07, public X824vsCATBxyUiA-znpGx01N48NNs_3gPE3M7f7vIEaI. Pin the public X, not the key id. Production carries real accreditation entries added through OCSS governance, and the count grows — assert on the root signature and each entry’s tier, never on the total. No test or sandbox keys are present in production. An older root id,root-prod-2026-06, belonged to a census that has since been retired — verifying against it fails closed on every current document, and a validly signed empty list under that id means you are talking to the dead host. - The Ed25519-signed succession record, served at
/.well-known/ocss/succession— the steward-of-record and anti-capture covenant in machine-checkable form.
- The self-serve developer funnel: sign up → your developer org is auto-provisioned → mint your first
phosra_key from the developer dashboard or one API call. No pre-existing key, no handshake, no email to anyone. See Create your account & get keys. - The Phosra control-plane management API at
https://prodapi.phosra.com/api/v1. Org and key management authenticates with your WorkOS session bearer (from signup/login); the/developer/*data-plane routes take thephosra_API key you mint. Covers orgs, API keys, usage, advisor agents, and MCP tokens.
- The golden SDKs are published and public:
@phosra/link,@phosra/gatekeeper, and@openchildsafety/ocss. Install them unpinned —npm install @phosra/link @phosra/gatekeeper— so you get the current generation. Pinning an older minor will not export the APIs these docs teach. @phosra/gatekeeper@0.8.68addsGET /api/phosra/status, which names the exact outstanding precondition behind an opaque503 PHOSRA_NOT_READYinstead of leaving you to guess. If your deployment declares^0.6.0, npm will not resolve it — a caret on a0.xversion pins the minor. See the readiness contract.- Also published:
@phosra/sdk@0.1.0,@phosra/mcp@0.4.0,@phosra/cli@0.2.0,@openchildsafety/bundle@0.1.0,@phosra/connect@0.2.0.
- The production signed environment manifest, trust material, and client-directory lookup are live and public on
https://prodapi.phosra.com. Environment-bound credential issuance is still a restricted operator workflow, not public self-service — see what you cannot self-serve yet below before you start building, and Getting a Link credential for the exact fields to send and where.
- The unified
@phosra/sdk-devwrapper (which will re-export the individual packages above) is not yet published — install them individually today.
What you cannot self-serve yet
Read this before you start building, so you know where the road currently ends. The answer depends on which census you are talking to. That is the single most important thing on this page, and older versions of it did not say so. Signing up, provisioning a developer org, and minting aphosra_ API key are instant and self-serve everywhere. Past
that point the gates differ per environment:
Two clarifications, one of them in the developer’s favour:
- A self-serve credential lane exists, and the real gate is accreditation, not an operator.
Where it is deployed,
POST /developers/orgs/{orgId}/link/credentialsrefuses with “the Link authority will not issue for tierprovisional: a credential requires an accredited Trust List entry”. So the thing to pursue is accreditation, not a request for someone to hand you a credential. Link client registration is likewise not inherently operator-only — a self-serve lane exists that derives the subject DID from your org’s verified claim, so no super-admin is involved. - The census’s own
POST /api/v1/accreditation/applicationsis not a self-serve submit lane. Verified 2026-07-27: onprodapi.phosra.comit answers401 {"message":"invalid or missing X-Onboard-Key"}, andX-Onboard-Keyis an operator secret. On the partner sandbox the path does not exist (404). An earlier version of this table said the endpoint was live and self-serve to submit; it is not. Apply through Production Accreditation instead.
provisional DID can already write Open-band rules; Gated and Restricted categories need a
higher tier. A production rule write still needs accreditation. What you cannot do yet is mint your
own PHOSRA_CREDENTIAL — that request goes to
developers@phosra.com with the fields listed under
Getting a Link credential. Treat this section as
the honest boundary of self-service.
We are actively removing these gates. This section will shrink as each one lands; if it is still
here, the gate is still there.
There is no hosted decision endpoint — by design
Enforcement decisions are made locally.@phosra/gatekeeper fetches the signed enforcement
profile from the census once (or on a polling interval) via the §9.3(b) read
(GET /api/v1/enforcement-profiles/{endpoint_id}), verifies the router’s Ed25519 signature to
root in-process, and then isAllowed({ category, signal }) evaluates every subsequent
enforcement call against the cached, signed profile — zero network calls, zero latency,
fail-closed when the profile is absent. isAllowed() IS the decision call. There is no
POST /v1/check endpoint and none is planned: a hosted decision call would add per-decision
latency, put a network dependency on the enforcement hot path, and break the fail-closed
guarantee when the census is unreachable.
Base URL
https://phosra-api-sandbox-production.up.railway.app/api/v1.
That base URL is for the REST/product API. @phosra/link and @phosra/gatekeeper take no base URL at all — they read the census, the trust root, and the environment out of your PHOSRA_CREDENTIAL.
For the full table of every environment × base URL, which census serves which Link lane, phosra_test_ vs phosra_live_ semantics, how test data is isolated, and how to point each SDK at an environment, see Environments & base URLs.
The standard lives at openchildsafety.org
The OCSS specification, 123-category rule registry, and conformance suite are published at openchildsafety.org — not here. (openchildsafety.com now 308-redirects there. A browser follows it; a curl -X POST without -L does not, so use the .org name in scripts.) Phosra does not host, own, or gatekeep the standard. That separation is the asset: a standard you cannot capture is one you can build on.