https://phosra-api-sandbox-production.up.railway.app. No API key, nothing to install.
Sandbox-first. These calls run against the open sandbox with no credential. The shapes are
identical in production: swap the base URL for
https://prodapi.phosra.com and add a
phosra_live_… key.Prerequisites
This recipe starts from a child with an active policy and at least one connected platform. If you ran Onboard a multi-child household you already have the child and policy — the two calls below add a connected console (Xbox) so there is something to enforce against. Set the base URL and IDs once:Don’t have a family yet? Run Onboard a multi-child household
first (three calls), or the End-to-end walkthrough for the full
platform-link ceremony. Then come back with your own
CHILD_ID.1
Find the child's active policy
GET /children/{childID}/policies lists a child’s
policies. Grab the active one — that is the policy enforcement reads from.2
Locate the rule to change
GET /policies/{policyID}/rules lists every rule on the
policy. Find the time_daily_limit rule — it is currently 180 minutes — and keep its id.3
Tighten the limit
PUT /rules/{ruleID} updates a single rule in place. Drop the
daily limit from 180 to 120 minutes.4
Enforce the policy
POST /children/{childID}/enforce pushes the
child’s current active policy to every platform the family has connected. It returns an
enforcement job that runs asynchronously.5
Poll the job to completion
GET /enforcement/jobs/{jobID} returns the job’s
status. In the sandbox it finishes in well under a second; poll until status is completed.6
Read the per-platform report
GET /enforcement/jobs/{jobID}/results
returns one result per connected platform. This is where you learn exactly what landed: Xbox
applied 5 rules, guided several more, and flagged the categories a console can’t enforce.time_daily_limit.limit_minutes — your rule change
made it to the platform. Read the three statuses this way:Why 'guided' and not 'applied'?
Why 'guided' and not 'applied'?
A game console owns its own screen-time and content-rating controls. Phosra sets them and records a
signed attestation (
enforcement_mode: manual_attested) rather than pretending it flipped a switch
it doesn’t own. A DNS filter or MDM profile, by contrast, returns applied for the categories it
enforces directly. The result report never conflates the two — you always know who is holding the
line.The whole flow at a glance
Next steps
Onboard a multi-child household
Where the child and policy in this recipe came from — two kids, two age-tuned policies.
Enforcement, explained
What
applied, guided, and unenforceable mean per platform, and how attestation works.Policies & rules
The full rule catalog and config shapes behind
time_daily_limit and friends.Retry a failed job
When a platform is offline mid-enforce, re-run just the failed results.