Developer API
Use this if you want to create, list or update data requests from your own backend — syncing from a support ticketing system, building a custom intake form, or driving your own internal tooling — instead of only the hosted intake page and the dashboard.
Authentication
Generate a key from Settings → Developer API in your dashboard (Pro and Premium only). Send it as a Bearer token on every request:
Authorization: Bearer dsar_live_xxxxxxxxxxxxxxxxxxxxxxxx
Base URL
https://dsar.klairlabs.com/api/v1/dsar
Create a request against your first property, or a specific one via slug
(from the Properties tab).
curl -X POST https://dsar.klairlabs.com/api/v1/dsar/requests \
-H "Authorization: Bearer dsar_live_..." \
-H "Content-Type: application/json" \
-d '{
"requesterEmail": "customer@example.com",
"type": "access",
"jurisdiction": "gdpr",
"details": "Synced from our support system, ticket #4821"
}'
| Field | Required | Notes |
|---|---|---|
| requesterEmail | Yes | Must be a valid email |
| type | No | access, deletion, correction, optout, donotshare, or appeal — defaults to access |
| jurisdiction | No | gdpr, ccpa, dpdp, or other — defaults to other |
| details | No | Free text, up to 2000 characters |
| slug | No | Which property — defaults to your first |
| customFields | Conditional | Required if that property has custom intake fields configured — object of key→value |
Returns 201 with {ok, requestId, reference, deadlineMs}. Free-plan
monthly limits apply the same as the hosted intake form.
List your requests, most recent first (up to 200). Optional query params:
?status=received, ?slug=<property>.
curl https://dsar.klairlabs.com/api/v1/dsar/requests?status=received \ -H "Authorization: Bearer dsar_live_..."
Fetch a single request by its requestId.
Update status and/or an internal note.
curl -X PATCH https://dsar.klairlabs.com/api/v1/dsar/requests/req_abc123 \
-H "Authorization: Bearer dsar_live_..." \
-H "Content-Type: application/json" \
-d '{"status": "in_progress", "note": "Verified via support ticket"}'
Valid status values: received, verifying,
in_progress, completed, denied.
Errors
Every response is JSON with an ok boolean. On failure, ok:false and
an error string explaining what went wrong. HTTP status codes: 401
(missing/invalid key), 400 (bad input), 404 (not found),
200/201 (success).
Rate limits
The API sits behind the same gateway as the rest of DSAR Desk (50 requests/second burst, 25/second sustained, shared across the account). This is not currently split per-key — if you need a higher limit for a real integration, email hello@klairtech.com.