Skip to main content
POST
Upsert a contact

Authorizations

Authorization
string
header
required

API key from your SendKit dashboard. Pass it as a Bearer token in the Authorization header.

Body

application/json
email
string<email>
required

The contact's email address. If a contact with this email already exists, it will be updated.

Maximum string length: 255
Example:

"john@example.com"

first_name
string | null

The contact's first name.

Maximum string length: 255
Example:

"John"

last_name
string | null

The contact's last name.

Maximum string length: 255
Example:

"Doe"

user_id
string | null

An external user identifier from your application.

Maximum string length: 255
Example:

"ext_123"

unsubscribed
boolean
default:false

Whether the contact should be marked as unsubscribed.

Example:

false

list_ids
string<uuid>[]

List IDs to attach the contact to. Replaces existing list memberships.

Example:
properties
object

Property values to set on the contact. Keys must match existing property keys.

Example:

Response

Existing contact updated (upsert)

id
string<uuid>

Unique identifier.

Example:

"550e8400-e29b-41d4-a716-446655440000"

email
string<email>

The contact's email address.

Example:

"john@example.com"

first_name
string | null

The contact's first name.

Example:

"John"

last_name
string | null

The contact's last name.

Example:

"Doe"

user_id
string | null

An external user identifier from your application.

Example:

"ext_123"

unsubscribed
boolean

Whether the contact has unsubscribed.

Example:

false

properties
object

Custom property values. Keys are uppercased property names.

Example:
lists
object[]

Lists this contact belongs to.

created_at
string<date-time>

When the contact was created.

Example:

"2026-03-03 10:00:00"

updated_at
string<date-time>

When the contact was last updated.

Example:

"2026-03-03 10:00:00"