Get one contact by email
Returns one contact by email address, including its custom attributes
and explicit per-topic preferences. Returns 404 not_found when the
address is not a contact in this org (the same response is returned
when no contact list is synced, so the endpoint never leaks which
case applies). Match is case-insensitive. Percent-encode @ as
%40 (e.g. user%40example.com).
Path parameters
email string<email> required Recipient address. Percent-encode @ as %40. Matched case-insensitively.
Responses
Errors follow the RFC 7807 problem format — see the error reference.
email string<email> required unsubscribe_all boolean required Master opt-out — when true the contact receives no topic email.
attributes object required Custom attribute map as stored in SES. Always an object, never null.
topic_preferences array<object> required The contact's explicit per-topic choices. Topics the contact has
never set are absent — for those, the topic's
default_subscription_status applies, and SendOps enforces it at
send time. So an absent topic does not mean "will be mailed": on a
topic defaulting to OPT_OUT, a contact with no entry here has not
consented and will not be sent that topic's mail.
Each entry in topic_preferences:
topic_name string required The topic's name (see /v1/topics).
subscription_status string enum required One of: OPT_IN, OPT_OUT
created_at string<date-time> required updated_at string<date-time> required ses_sync object optional Present ONLY while the contact has not reached the customer's SES account yet; absent means synced. A 2xx on a contact write means SendOps has accepted and durably stored the change, not that SES has it — writes are mirrored afterwards, paced against the AWS account-wide budget of one contact request per second. Everything user-visible (segments, consent filtering, exports, sends) reads SendOps' own copy, so a pending mirror holds nothing back.
code is internal_error. The
request_id field can be quoted to SendOps support to investigate.
application/problem+json