Consent link status
GET
/api/v1/external/public/consent-link/status/{request_id}Use this endpoint to poll the current state of a consent link request. This is useful for systems that need to know whether a data principal has completed the consent flow, is still pending, or allowed the link to expire. When consent has been completed, the response includes the action the user chose.
Authentication
Both headers are required.
| Header | Type | Required | Description |
|---|---|---|---|
X-Org-Id | string | Yes | Your organization slug |
X-API-Key | string | Yes | Your tenant API key |
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
request_id | string | Yes | The request_id returned when the link was created |
Response
200 OK
| Field | Type | Description |
|---|---|---|
request_id | string | The identifier for this consent request |
status | string | Current state of the request: active, complete, or expired |
collection_point | object | Snapshot of the collection point associated with this request |
completed_at | string | ISO 8601 timestamp of when consent was submitted. null if not yet completed. |
consent_action | string | The action the data principal chose (for example, approved or declined). null if not yet completed. |
consent_logs | array | Consent log entries recorded for this request |
collection_point fields:
| Field | Type | Description |
|---|---|---|
id | string | UUID of the collection point, or null |
name | string | Display name of the collection point, or null |
display_id | string | Human-readable ID of the collection point, or null |
consent_logs[] fields:
| Field | Type | Description |
|---|---|---|
id | string | UUID of the log entry |
action | string | Consent action recorded |
timestamp | string | ISO 8601 timestamp of the log entry |
source | string | Source of the consent event |
request_id | string | Request ID associated with this log entry |
purpose_consents | array | Per-purpose consent breakdown |
Errors
| Status | Description |
|---|---|
400 | X-Org-Id could not be resolved, or request_id is invalid |
401 | X-API-Key is invalid or missing |
403 | API key lacks the admin scope |
404 | No consent request found for the given request_id |
500 | Internal server error |
Examples
curl --request GET \ --url 'https://truapi-dev.truconsent.io/api/v1/external/public/consent-link/status/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \ --header 'X-Org-Id: acme' \ --header 'X-API-Key: tck_live_xxxxxxxxxxxx'Active — the link has been sent but consent has not been submitted yet.
{ "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "active", "collection_point": { "id": "a0b1c2d3-1111-2222-3333-444455556666", "name": "Onboarding Consent v2", "display_id": "cp_onboarding_v2" }, "completed_at": null, "consent_action": null, "consent_logs": []}Complete — the data principal submitted their consent decision.
{ "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "complete", "collection_point": { "id": "a0b1c2d3-1111-2222-3333-444455556666", "name": "Onboarding Consent v2", "display_id": "cp_onboarding_v2" }, "completed_at": "2026-04-21T09:47:32+00:00", "consent_action": "approved", "consent_logs": [ { "id": "c1d2e3f4-aaaa-bbbb-cccc-ddddeeeeeeee", "action": "approved", "timestamp": "2026-04-21T09:47:32+00:00", "source": "consent_link", "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "purpose_consents": [] } ]}