Parents together. Safer childhoods.

For platforms

Do Not Connect API

Authenticated endpoint platforms call at signup to check whether a phone number belongs to a minor on the Safegen Do Not Connect register. Self-serve test keys are available immediately; production register access requires an authorised production key.

Create integration test account

Privacy-first

Numbers are hashed with a secret pepper server-side and matched against the register. Raw numbers are never stored.

Auth required

Every lookup needs a Bearer API key. Test keys are limited to synthetic fixtures and hourly rate limits.

Production path

Request production credentials with your test key via POST /api/integrations/request-production after org review.

POST/api/check

Request

curl -X POST https://child-social-media-check.vercel.app/api/check \
  -H "Authorization: Bearer sg_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "fixture:match"
  }'

Response

{
  "listed": true,
  "blockRequested": true,
  "action": "reject",
  "checkedAt": "2026-07-02T04:15:00.000Z"
}
  • listed — whether the number is on the active register (null for fixture:unknown).
  • blockRequested — whether the parent requested platforms block this number.
  • action — reject when listed with a block request, otherwise allow (or unknown for inconclusive fixtures).

Integrate at signup

// At signup, before creating the account
const res = await fetch("https://child-social-media-check.vercel.app/api/check", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": `Bearer ${process.env.SAFEGEN_API_KEY}`,
  },
  body: JSON.stringify({ countryCode: "+61", phone: signupPhone }),
})
const { action } = await res.json()

if (action === "reject") {
  return denySignup("This number is registered as belonging to a minor.")
}
Try it with your test key

Unauthenticated calls return 401. Create a key at /developers/sign-up.

Test keys accept only fixture:* values. Production keys perform register lookups.