Sandbox-first. These requests run against
https://phosra-api-sandbox-production.up.railway.app — open, seeded, and safe. In production,
change the base URL to https://prodapi.phosra.com and authenticate as the signed-in parent with
a WorkOS session JWT — these are consumer routes, so a phosra_ developer key does not work
here. The request shapes are identical. See Authentication.Before you start
1
Create a family, a child, and an active policy — in one call
POST /setup/quick is the fastest path to a working policy. Give it a child’s name, birth
date, and a strictness level (recommended, strict, or relaxed). Phosra derives the age
group from the birth date and returns a family, a child, an active policy, and a full set
of age-appropriate rules — with no follow-up calls.age_group: "preteen" from the 2016 birth date and mapped it to concrete rating
ceilings across five rating systems. Store family.id, child.id, and policy.id.Fields & errors — POST /setup/quick
Fields & errors — POST /setup/quick
Request body (
application/json)Response fields (200)
Errors
2
Inspect the rules that were generated
The full response includes a Every category comes from the canonical rule reference. You can override
any of them later with the policy rules API.
rules array — one entry per enabled rule category, each with its
own config. For example, the addictive_design_control rule comes back pre-tuned:Fields — the rule object
Fields — the rule object
Each element of the
rules array:3
Enforce the policy across connected platforms
Push the active policy to every platform the family has connected. Enforcement is asynchronous —
you get a job back immediately (Real response (202):
202 Accepted):Fields & errors — POST /children/{childID}/enforce
Fields & errors — POST /children/{childID}/enforce
Path parameter
Response fields (202)
Errors
4
Confirm the job completed
Poll the job by id until Real response (200):That is the full loop: create → enforce → confirm. For results per platform, read
status is completed. Enforcement does not fire a webhook on
completion — poll the job, don’t wait for a callback.GET /enforcement/jobs/{id}/results — a non-empty manual_steps array means that platform is
parent-guided rather than programmatically applied.Fields & errors — GET /enforcement/jobs/{jobID}
Fields & errors — GET /enforcement/jobs/{jobID}
Path parameter
Response fields (200)
Notes & errors
Adding more children
CallPOST /setup/quick once per child (each returns its own child in the same family when you
pass the same family context in production), or use the granular endpoints — POST /families,
POST /families/{familyID}/children, POST /policies/{policyID}/generate-from-age — when you
need finer control. See the Families and
Children reference.
Next steps
Connect a platform
Link a family to a platform so enforcement has somewhere to land.
Test in the sandbox
Understand the open sandbox, the signed Trust List, and self-registration.