GET /v1/contacts/{id}
Parameters
Bearer <api_key>The contact ID (e.g.
c_a1b2c3d4).Request
curl "https://api.arowana.app/v1/contacts/c_a1b2c3d4" \
-H "Authorization: Bearer $API_KEY"
Response
- 200 OK
- 404 Not Found
{
"id": "c_a1b2c3d4",
"external_id": "usr_9901",
"email": "jana@example.com",
"phone": "+4917612345678",
"first_name": "Jana",
"last_name": "Müller",
"status": "ACTIVE",
"source": "API",
"tags": ["vip", "germany"],
"custom_fields": { "loyalty_tier": "gold" },
"consent_records": [
{
"id": "cr_a1b2c3",
"channel_type": "EMAIL",
"message_type": "NEWSLETTER",
"status": "GRANTED",
"source": "landing_page",
"proof_text": "Opted in via signup form at shop.example.com/subscribe",
"enforced_doi": true,
"doi_status": "DOI_ACCEPTED",
"doi_channel": "EMAIL",
"granted_at": "2026-01-10T08:05:00Z",
"revoked_at": null,
"created_at": "2026-01-10T08:00:00Z"
},
{
"id": "cr_b2c3d4",
"channel_type": "EMAIL",
"message_type": "MESSAGE",
"status": "GRANTED",
"source": "checkout",
"proof_text": "Checkout completion — implicit consent for order confirmations",
"enforced_doi": false,
"doi_status": null,
"doi_channel": null,
"granted_at": "2026-01-10T08:00:00Z",
"revoked_at": null,
"created_at": "2026-01-10T08:00:00Z"
},
{
"id": "cr_c3d4e5",
"channel_type": "RCS",
"message_type": "NEWSLETTER",
"status": "REVOKED",
"source": "api",
"proof_text": null,
"enforced_doi": false,
"doi_status": null,
"doi_channel": null,
"granted_at": "2026-01-10T08:00:00Z",
"revoked_at": "2026-03-15T14:00:00Z",
"created_at": "2026-01-10T08:00:00Z"
}
],
"created_at": "2026-01-10T08:00:00Z",
"updated_at": "2026-03-28T09:00:00Z"
}
All consent records for this contact. Each entry represents a specific
channel_type + message_type combination and its current opt-in state.Show consent_records fields
Show consent_records fields
The channel:
EMAIL, RCS, or SMS.The send type:
MESSAGE (action-based) or NEWSLETTER (subscription).GRANTED — sends permitted. REVOKED — sends blocked. PENDING — double opt-in awaiting confirmation.Where the consent signal was collected (e.g.
landing_page, api, checkout).Human-readable description of the consent event, stored for GDPR audit.
null if not provided.Whether Double Opt-In confirmation was required for this consent record.
DOI state:
DOI_SEND (confirmation sent) or DOI_ACCEPTED (confirmed). null when enforced_doi is false.Channel used to send the DOI confirmation:
EMAIL, RCS, or SMS. null when enforced_doi is false.ISO 8601 timestamp when consent was granted. For DOI flows, this stamps when
DOI_ACCEPTED is reached. null while PENDING.ISO 8601 timestamp when consent was revoked.
null if still active.{ "error": "not_found", "message": "Contact not found." }
To add or revoke consent for a specific channel and message type, use the Consent API.