GET /api/v1/preferences
Headers
| Header | Type | Required | Description |
|---|---|---|---|
| Authorization | string | no | Bearer <api_key> (optional; enables scope checks) |
| Parameter | Type | Required | Description |
|---|---|---|---|
| token | string | no | Secure token for contact lookup |
| string | no | Email address to look up |
200success401invalid API key (when provided)403missingpreferences_readscope (when authenticated)404contact not found
POST /api/v1/preferences
Headers
| Header | Type | Required | Description |
|---|---|---|---|
| Content-Type | string | yes | application/json |
| Authorization | string | no | Required when using scopes on an API key |
| Parameter | Type | Required | Description |
|---|---|---|---|
| token | string | no | Secure token issued for the contact |
| string | no | Email address to update | |
| subscriptions | array of objects | yes | { categoryKey: string, subscribed: boolean } pairs |
preferences_manage when using a key:
200success401invalid API key (when provided)403missingpreferences_managescope (when authenticated)404contact not found400/500invalid payload/server error
preferences_read, preferences_manage