POST /v1/contacts
Body
The contact’s email address. Unique within the project.
Given name.
Family name.
Whether the contact is opted in. Defaults to
true. When false, unsubscribedAt is stamped on create.Free-form key/value pairs stored alongside the contact.
Subscription is not suppression. The
subscribed flag is an app-level marketing signal. It does not block delivery — that’s the job of suppressions. A complaint still drops a message even if subscribed is true.Request
Response
Returns201 Created with the contact. If a contact with the same email already exists in this project, the call returns 409 conflict (contact_email_taken).
201 Created
