Skip to content

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.

HeaderTypeRequiredDescription
X-Org-IdstringYesYour organization slug
X-API-KeystringYesYour tenant API key

Path parameters

ParameterTypeRequiredDescription
request_idstringYesThe request_id returned when the link was created

Response

200 OK

FieldTypeDescription
request_idstringThe identifier for this consent request
statusstringCurrent state of the request: active, complete, or expired
collection_pointobjectSnapshot of the collection point associated with this request
completed_atstringISO 8601 timestamp of when consent was submitted. null if not yet completed.
consent_actionstringThe action the data principal chose (for example, approved or declined). null if not yet completed.
consent_logsarrayConsent log entries recorded for this request

collection_point fields:

FieldTypeDescription
idstringUUID of the collection point, or null
namestringDisplay name of the collection point, or null
display_idstringHuman-readable ID of the collection point, or null

consent_logs[] fields:

FieldTypeDescription
idstringUUID of the log entry
actionstringConsent action recorded
timestampstringISO 8601 timestamp of the log entry
sourcestringSource of the consent event
request_idstringRequest ID associated with this log entry
purpose_consentsarrayPer-purpose consent breakdown

Errors

StatusDescription
400X-Org-Id could not be resolved, or request_id is invalid
401X-API-Key is invalid or missing
403API key lacks the admin scope
404No consent request found for the given request_id
500Internal server error

Examples

Terminal window
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": []
}
]
}