Permission changes
Resolve the current consent state for one subject and consume a replay-safe feed of changes recorded through Keepable.
Consent plans produce participant-specific permission records. These endpoints are for synchronising Keepable-recorded decisions and later withdrawals into a controller system; they do not decide whether another lawful basis applies or whether data must be deleted.
Both operations use correspondence.read.
Resolve one permission
Use your own participant ref and the correspondence id:
GET https://api.keepable.co/sender/v2/permission-records/status?subject_ref=CUST-100400&correspondence_id=cor_01J8ZQ4T
Authorization: Bearer {{KEEPABLE_TOKEN}}The record reports the decision (pending, granted, or declined), its
current effect, use mode, relevant timestamps, and version. as_of says when
the projection was evaluated.
Consume the change feed
GET https://api.keepable.co/sender/v2/permission-records/changes?limit=100
Authorization: Bearer {{KEEPABLE_TOKEN}}Apply the page in order, then persist next_cursor as your high-water mark:
GET https://api.keepable.co/sender/v2/permission-records/changes?limit=100&cursor=eyJ2ZXJzaW9uIjo0Mn0
Authorization: Bearer {{KEEPABLE_TOKEN}}Persist the cursor only after the entire page has been committed to your own
system. Replaying a page is safe because each record has a stable
permission_id and monotonic version. An invalid cursor returns
invalid_cursor; it does not silently restart from the beginning.
The feed is a current-state projection, not a webhook-delivery log. Poll at the
cadence your consent integration requires and make updates idempotent by
permission_id plus version.