Live today
PolicifyAI on REST API
Programmatic policy + consent - versioned & scoped.
Generate, publish and manage policies and pull consent logs from your own backend. Versioned under /api/v1, authenticated with API keys sent as a Bearer token, rate-limited, and paginated. Create and revoke keys in Dashboard → Integrations (agencies: Agency → API & Webhooks). Available on all paid plans.
Set up in 10 minutes
10 minutes- 1Dashboard → Integrations → API keys → Create key. (Agency workspaces: Agency → API & Webhooks.)
- 2Send the key as a Bearer token over HTTPS.
- 3Call /api/v1/policies/generate to create a policy, then /api/v1/policies/{id}/publish to sync connected sites + fire webhooks.
- 4Pull /api/v1/consent/logs for audit exports (privacy-safe - hashed identifiers only).
Generate a policy - cURL
curl https://policifyai.com/api/v1/policies/generate \
-H "Authorization: Bearer $POLICIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "privacy_policy",
"jurisdiction": ["GB", "EU"],
"language": "en",
"tone": "plain",
"custom_clauses": ["We never sell personal data."]
}'Response
{
"id": "pol_abc123",
"type": "privacy_policy",
"version": 1,
"hosted_url": "https://policifyai.com/p/abc123",
"html": "<h1>Privacy Policy</h1> ...",
"markdown": "# Privacy Policy ...",
"created_at": "2026-06-22T09:00:00Z"
}Pull consent logs - Python
import requests
r = requests.get(
"https://policifyai.com/api/v1/consent/logs",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"from": "2026-06-01", "to": "2026-06-22", "limit": 100},
timeout=15,
)
r.raise_for_status()
page = r.json()
# page["data"] -> rows; page["next_cursor"] -> pass back as ?cursor= for next pageMinimal JS client - fetch
const res = await fetch('https://policifyai.com/api/v1/policies', {
headers: { Authorization: `Bearer ${process.env.POLICIFY_API_KEY}` },
})
if (!res.ok) throw new Error(`Policify API ${res.status}`)
const { data, next_cursor } = await res.json()Why PolicifyAI
- Named keys you can revoke instantly from the dashboard, with last-used tracking.
- Cursor pagination + standardized error envelope ({ error: { code, message } }).
- Publish triggers connected-site sync AND webhooks in one call.
Frequently asked
What are the rate limits?+
Policy generation is limited to 20 requests/minute per key; other endpoints have generous per-key limits returned in the response headers. Generations also count against your plan's normal quota.
Is there an OpenAPI spec?+
Yes - the OpenAPI spec is served at /api/v1/openapi, and the full endpoint reference lives at policifyai.com/docs/api.
Also available
Universal HTMLOne script tag shows your policy on any website.WordPressConnect once - policies publish to your site automatically.ShopifyOne-click publish your policies to your store - coming soon.WixPaste one embed on your policy page - done.WebflowDrop an Embed element, paste, publish.Google Tag ManagerConsent Mode v2 tag - arrives with the cookie banner.