# Get contact email preferences by ID Retrieves the email preference state for a customer contact by their Featurebase ID. Important: This endpoint only supports customer contacts. Leads do not have a customer email preference surface in the public API. ### Path Parameters - id - The Featurebase contact ID (24-character ObjectId) ### Response Format Returns a contact email preferences object with: - object - Always "contact_email_preferences" - contactId - Featurebase contact ID - userId - External user ID, if available - email - Contact email address, if available - preferences - Current email preference state ### Preference Semantics Each preference includes: - status - The stored preference state for that category - effectiveStatus - The final state after applying the global all preference override ### Example Response json { "object": "contact_email_preferences", "contactId": "676f0f6765bdaa7d7d760f88", "userId": "usr_12345", "email": "john@example.com", "preferences": { "all": { "status": "unsubscribed", "effectiveStatus": "unsubscribed" }, "postUpdates": { "status": "subscribed", "effectiveStatus": "unsubscribed" }, "postComments": { "status": "subscribed", "effectiveStatus": "unsubscribed" }, "commentReplies": { "status": "subscribed", "effectiveStatus": "unsubscribed" }, "changelog": { "status": "subscribed", "effectiveStatus": "unsubscribed" } } } Endpoint: GET /v2/contacts/{id}/email-preferences Version: 2026-01-01.nova Security: bearerAuth ## Header parameters: - `Featurebase-Version` (string) API version for this request. Defaults to your organization's configured API version if not specified. Example: "2026-01-01.nova" ## Path parameters: - `id` (string, required) Featurebase contact ID Example: "507f1f77bcf86cd799439011" ## Response 200 fields (application/json): - `object` (string, required) Object type identifier Enum: "contact_email_preferences" - `contactId` (string, required) Featurebase contact ID Example: "676f0f6765bdaa7d7d760f88" - `userId` (string,null) External user ID from your system, if available Example: "usr_12345" - `email` (string,null) Contact email address, if available Example: "john@example.com" - `preferences` (object, required) Email preference state for this contact, including both stored status and final effective status. - `preferences.all` (object, required) Global email preference state for all email notifications. - `preferences.all.status` (string, required) Stored preference status for this category Enum: "subscribed", "unsubscribed" - `preferences.all.effectiveStatus` (string, required) Final effective status after applying global preference overrides Enum: "subscribed", "unsubscribed" - `preferences.postUpdates` (object, required) Global email preference state for all email notifications. Example: {"status":"subscribed","effectiveStatus":"unsubscribed"} - `preferences.postComments` (object, required) Global email preference state for all email notifications. Example: {"status":"subscribed","effectiveStatus":"subscribed"} - `preferences.commentReplies` (object, required) Global email preference state for all email notifications. Example: {"status":"subscribed","effectiveStatus":"subscribed"} - `preferences.changelog` (object, required) Global email preference state for all email notifications. Example: {"status":"subscribed","effectiveStatus":"subscribed"} ## Response 400 fields (application/json): - `error` (object, required) - `error.type` (string, required) The type of error returned Enum: "invalid_request_error" - `error.code` (string, required) Machine-readable error code Enum: "invalid_id", "invalid_request" - `error.message` (string, required) Human-readable error message Example: "An error occurred" - `error.param` (string) The parameter that caused the error (if applicable) Example: "id" - `error.status` (number, required) HTTP status code Enum: 400 ## Response 404 fields (application/json): - `error` (object, required) - `error.type` (string, required) The type of error returned Enum: "invalid_request_error" - `error.code` (string, required) Machine-readable error code Enum: "contact_not_found" - `error.message` (string, required) Human-readable error message Example: "An error occurred" - `error.param` (string) The parameter that caused the error (if applicable) Example: "id" - `error.status` (number, required) HTTP status code Enum: 404