PolicifyAI
Dashboard

API reference

Policy Endpoints

All endpoints are relative to https://policifyai.com/api/v1. All requests require a valid Bearer token. See Authentication.

Generate a policy

POST/policies/generate

Generates a new policy using AI and returns it immediately - this call is synchronous (it can take up to 120 seconds; keep your client timeout above that). Generation counts against your normal quota (agency pooled cap or per-user quota) and delivers a policy.created webhook.

Request body

FieldTypeRequiredDescription
policy_typestringSlug of the policy type, e.g. privacy-policy
jurisdictionstringISO 3166-1 country code (or US state code), e.g. GB, US-CA, EU
languagestringISO 639-1 language code, e.g. en, de, fr (default: en)
business_namestringName of the business
domainstringWebsite URL, e.g. https://example.com
industrystringBusiness sector, e.g. ecommerce, saas, healthcare
business_typestringLegal structure, e.g. limited-company, sole-trader

Example request

curl -X POST https://policifyai.com/api/v1/policies/generate \
  -H "Authorization: Bearer pak_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "policy_type": "privacy-policy",
    "jurisdiction": "GB",
    "business_name": "Acme Ltd",
    "domain": "https://acme.com",
    "language": "en"
  }'

Response

{
  "id": "3f4a9b12-...",
  "policy_type": "privacy-policy",
  "jurisdiction": "GB",
  "language": "en",
  "content": "## Privacy Policy\n\nThis Privacy Policy...",
  "created_at": "2026-05-26T14:30:00.000Z",
  "policies_remaining": 42
}

Bulk generate

POST/policies/bulk

Generates up to 20 policies in a single request, passed as an items array - each item takes the same fields as /policies/generate. Items beyond your remaining quota are returned with status skipped rather than failing the whole batch. Limited to 5 requests/minute and 20 batches/day per key.

{
  "batch_id": "batch_xyz",
  "total": 3,
  "created": 3,
  "failed": 0,
  "results": [
    { "id": "pol_...", "policy_type": "privacy-policy", "status": "created" }
  ]
}

List policies

GET/policies

Returns every published policy on your account, with a ready-to-use public URL for each. There is no pagination or filtering - the endpoint returns your full list in one response.

{
  "count": 2,
  "policies": [
    {
      "id": "3f4a9b12-...",
      "policy_type": "privacy-policy",
      "title": "Privacy Policy",
      "jurisdiction": "GB",
      "language": "en",
      "updated_at": "2026-05-26T14:30:00.000Z",
      "url": "https://policifyai.com/policy/privacy-policy/3f4a9b12-...?token=..."
    }
  ]
}

Publish a policy

POST/policies/{id}/publish

Publishes a single policy you own, generating (or reusing) its public hosted URL, and fires a policy.published webhook to every subscribed endpoint.

{
  "id": "3f4a9b12-...",
  "hosted_url": "https://policifyai.com/policy/privacy-policy/3f4a9b12-...?token=...",
  "published_at": "2026-05-26T14:31:00.000Z",
  "webhook_deliveries_queued": 1
}
GET/consent/logs

Returns recorded cookie/consent decisions for a consent banner - for audit trails and DSAR responses.

Query parameters

banner_id

The consent banner to fetch logs for

from / to

ISO date range to filter by

limit

Results per page, 1–200

cursor

Pagination cursor from a previous response

OpenAPI spec

GET/openapi

Returns the full OpenAPI 3.1 specification for this API - import it into Postman, Insomnia, or a codegen tool.

Policy type slugs

Common slugs for the policy_type field:

privacy-policycookie-policyterms-of-serviceterms-and-conditionsgdpr-complianceccpa-noticedata-processing-agreementhipaa-policyrefund-policyreturn-policyshipping-policydisclaimeracceptable-use-policyeulandasla

For the full list of 120+ slugs see Policy types.