Consent link history
GET
/api/v1/external/public/consent-link/historyUse this endpoint to retrieve a full list of consent link requests your organization has created, ordered from most recent to oldest. Each entry includes the current state of the request — whether consent has been completed, the link has been regenerated, and how many regenerations have occurred. Phone numbers are masked in all responses to minimize personal data exposure.
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 |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_id | string | Yes | Filter history to this asset ID |
collection_point_id | string | No | Filter by collection point UUID or display_id |
event_id | string | No | Filter to a specific event ID |
dp_id | string | No | Filter by data principal ID |
from | string | No | ISO 8601 start timestamp. Must be in the past. |
to | string | No | ISO 8601 end timestamp. Defaults to current UTC time. |
limit | integer | No | Number of records to return. Between 1 and 200. Default: 50. |
offset | integer | No | Number of records to skip for pagination. Default: 0. |
Response
200 OK
| Field | Type | Description |
|---|---|---|
data | array | Array of consent link request objects |
count | integer | Total number of records matching the filters |
summary | object | Aggregate counts across the filtered result set |
collectionPointSummary | object | Per-collection-point breakdown of counts, keyed by collection point ID |
filters | object | Echo of the filters applied to this request |
data[] fields:
| Field | Type | Description |
|---|---|---|
request_id | string | Stable identifier for this consent request |
event_id | string | Identifier of the most recently issued link instance |
collection_point_id | string | UUID of the associated collection point |
asset_id | string | UUID of the associated asset |
phone | string | Masked phone number — only last 3–4 digits visible |
status | string | active, complete, or expired |
created_at | string | ISO 8601 timestamp of when the request was created |
expires_at | string | ISO 8601 timestamp of when the link expires |
completed_at | string | ISO 8601 timestamp of consent submission. null if not yet completed. |
consent_action | string | The action chosen by the data principal, or null |
regeneration_count | integer | Number of times this request has been duplicated |
summary fields:
| Field | Type | Description |
|---|---|---|
total_links | integer | Total links created |
active | integer | Links currently active |
completed | integer | Links where consent was submitted |
expired | integer | Links that expired without consent |
Errors
| Status | Description |
|---|---|
400 | X-Org-Id could not be resolved, asset_id is missing, or timestamp format is invalid |
401 | X-API-Key is invalid or missing |
403 | API key lacks the admin scope |
500 | Internal server error |
Example
curl --request GET \ --url 'https://truapi-dev.truconsent.io/api/v1/external/public/consent-link/history?asset_id=ast_xxxxxxxxxxxx&limit=50&offset=0' \ --header 'X-Org-Id: acme' \ --header 'X-API-Key: tck_live_xxxxxxxxxxxx'{ "data": [ { "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "event_id": "11223344-5566-7788-99aa-bbccddeeff00", "collection_point_id": "a0b1c2d3-1111-2222-3333-444455556666", "asset_id": "ast_xxxxxxxxxxxx", "phone": "+*******4311", "status": "expired", "created_at": "2026-04-21T08:30:00+00:00", "expires_at": "2026-04-22T08:30:00+00:00", "completed_at": null, "consent_action": null, "regeneration_count": 1 }, { "request_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "event_id": "aabbccdd-eeff-0011-2233-445566778899", "collection_point_id": "b7c8d9e0-aaaa-bbbb-cccc-111122223333", "asset_id": "ast_xxxxxxxxxxxx", "phone": "+*******7890", "status": "complete", "created_at": "2026-04-19T15:00:00+00:00", "expires_at": "2026-04-20T15:00:00+00:00", "completed_at": "2026-04-19T16:22:10+00:00", "consent_action": "approved", "regeneration_count": 0 } ], "count": 2, "summary": { "total_links": 2, "active": 0, "completed": 1, "expired": 1 }, "collectionPointSummary": { "a0b1c2d3-1111-2222-3333-444455556666": { "total": 1, "active": 0, "completed": 0, "expired": 1 }, "b7c8d9e0-aaaa-bbbb-cccc-111122223333": { "total": 1, "active": 0, "completed": 1, "expired": 0 } }, "filters": { "assetId": "ast_xxxxxxxxxxxx", "collectionPointId": null, "eventId": null, "dpId": null, "from": null, "to": "2026-04-22T10:00:00+00:00", "limit": 50, "offset": 0 }}