import { PhosraClient } from "@phosra/sdk";
const phosra = new PhosraClient({
baseUrl: "https://phosra-api-sandbox-production.up.railway.app/api/v1",
accessToken: process.env.PHOSRA_API_KEY,
});
const result = await phosra.standards.forChild("a11ce0fa-0000-4000-8000-0000000000a1");
console.log(result);curl -sS "https://phosra-api-sandbox-production.up.railway.app/api/v1/children/a11ce0fa-0000-4000-8000-0000000000a1/standards" \
-H "Authorization: Bearer $PHOSRA_API_KEY"
import os, requests
BASE = "https://phosra-api-sandbox-production.up.railway.app/api/v1"
res = requests.get(
f"{BASE}/children/a11ce0fa-0000-4000-8000-0000000000a1/standards",
headers={"Authorization": f"Bearer {os.environ['PHOSRA_API_KEY']}"},
)
print(res.status_code, res.json())
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
base := "https://phosra-api-sandbox-production.up.railway.app/api/v1"
req, _ := http.NewRequest("GET", base+"/children/a11ce0fa-0000-4000-8000-0000000000a1/standards", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("PHOSRA_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(resp.Status, string(out))
}
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://phosra-api-sandbox-production.up.railway.app/api/v1/children/{childID}/standards",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.get("https://phosra-api-sandbox-production.up.railway.app/api/v1/children/{childID}/standards")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://phosra-api-sandbox-production.up.railway.app/api/v1/children/{childID}/standards")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": "f0b3d7e2-6a94-4c81-b52f-9d0e1a3c6b48",
"slug": "four-norms",
"name": "Four Norms Baseline",
"organization": "Center for Humane Technology",
"description": "A community baseline of the four core child-safety protections.",
"long_description": "A community baseline covering the four core protections: age-appropriate content ratings, screen-time limits, purchase approval, and private-message restrictions.",
"icon_url": "https://cdn.phosra.com/platforms/nextdns.svg",
"version": "1.2.0",
"published": true,
"min_age": 13,
"max_age": 0,
"adoption_count": 0,
"rules": [
{
"id": "f0b3d7e2-6a94-4c81-b52f-9d0e1a3c6b48",
"standard_id": "f0b3d7e2-6a94-4c81-b52f-9d0e1a3c6b48",
"category": "rating_age_gate",
"label": "Enforce age-based content rating",
"enabled": true,
"config": {},
"sort_order": 0
}
],
"created_at": "2026-06-18T14:32:07Z",
"updated_at": "2026-06-30T09:15:44Z"
}
]{
"error": "Bad Request",
"message": "child_name is required",
"code": 400
}{
"error": "Unauthorized",
"message": "missing or invalid Authorization header",
"code": 401
}{
"error": "Forbidden",
"message": "not a member of this family",
"code": 403
}{
"error": "Not Found",
"message": "policy not found",
"code": 404
}{
"error": "Too Many Requests",
"message": "rate limit exceeded",
"code": 429
}{
"error": "Internal Server Error",
"message": "internal error",
"code": 500
}List a child's standards
List standards adopted by a child
import { PhosraClient } from "@phosra/sdk";
const phosra = new PhosraClient({
baseUrl: "https://phosra-api-sandbox-production.up.railway.app/api/v1",
accessToken: process.env.PHOSRA_API_KEY,
});
const result = await phosra.standards.forChild("a11ce0fa-0000-4000-8000-0000000000a1");
console.log(result);curl -sS "https://phosra-api-sandbox-production.up.railway.app/api/v1/children/a11ce0fa-0000-4000-8000-0000000000a1/standards" \
-H "Authorization: Bearer $PHOSRA_API_KEY"
import os, requests
BASE = "https://phosra-api-sandbox-production.up.railway.app/api/v1"
res = requests.get(
f"{BASE}/children/a11ce0fa-0000-4000-8000-0000000000a1/standards",
headers={"Authorization": f"Bearer {os.environ['PHOSRA_API_KEY']}"},
)
print(res.status_code, res.json())
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
base := "https://phosra-api-sandbox-production.up.railway.app/api/v1"
req, _ := http.NewRequest("GET", base+"/children/a11ce0fa-0000-4000-8000-0000000000a1/standards", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("PHOSRA_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(resp.Status, string(out))
}
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://phosra-api-sandbox-production.up.railway.app/api/v1/children/{childID}/standards",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.get("https://phosra-api-sandbox-production.up.railway.app/api/v1/children/{childID}/standards")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://phosra-api-sandbox-production.up.railway.app/api/v1/children/{childID}/standards")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": "f0b3d7e2-6a94-4c81-b52f-9d0e1a3c6b48",
"slug": "four-norms",
"name": "Four Norms Baseline",
"organization": "Center for Humane Technology",
"description": "A community baseline of the four core child-safety protections.",
"long_description": "A community baseline covering the four core protections: age-appropriate content ratings, screen-time limits, purchase approval, and private-message restrictions.",
"icon_url": "https://cdn.phosra.com/platforms/nextdns.svg",
"version": "1.2.0",
"published": true,
"min_age": 13,
"max_age": 0,
"adoption_count": 0,
"rules": [
{
"id": "f0b3d7e2-6a94-4c81-b52f-9d0e1a3c6b48",
"standard_id": "f0b3d7e2-6a94-4c81-b52f-9d0e1a3c6b48",
"category": "rating_age_gate",
"label": "Enforce age-based content rating",
"enabled": true,
"config": {},
"sort_order": 0
}
],
"created_at": "2026-06-18T14:32:07Z",
"updated_at": "2026-06-30T09:15:44Z"
}
]{
"error": "Bad Request",
"message": "child_name is required",
"code": 400
}{
"error": "Unauthorized",
"message": "missing or invalid Authorization header",
"code": 401
}{
"error": "Forbidden",
"message": "not a member of this family",
"code": 403
}{
"error": "Not Found",
"message": "policy not found",
"code": 404
}{
"error": "Too Many Requests",
"message": "rate limit exceeded",
"code": 429
}{
"error": "Internal Server Error",
"message": "internal error",
"code": 500
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Adopted standards list
Unique identifier for this resource.
URL-safe stable identifier.
Human-readable display name.
Name of the organization that publishes this standard.
Human-readable description.
Extended multi-paragraph description shown on the standard detail page.
URL of the platform or resource icon.
Monotonically increasing version, bumped on every change.
Whether this standard is published and adoptable by families.
Minimum age (in years) this tier is appropriate for.
Upper age bound (in years) this standard is intended for; null if open-ended.
Number of families that have adopted this standard.
List of rules.
Show child attributes
Show child attributes
RFC 3339 timestamp of when the resource was created.
RFC 3339 timestamp of the resource's most recent update.