Skip to main content
PUT
AhaSend Go SDK
The AhaSend API changes one contact. Access requires contacts:write. {id_or_email} is the contact ID or its email address. Percent-encode an email address exactly once. See Name a contact in the path. Fields:
  • A field that you leave out or send as null does not change.
  • email changes the email address of the contact. An address that another contact of the account has is refused with 409.
  • attributes is merged into the stored attributes. A null value removes that key. Other values must match the types that you defined in the dashboard. See Attributes.
Unsubscribe:
  • unsubscribed: true stops campaigns to the contact on all lists. It does not change the contact’s memberships, and the contact no longer counts toward the contact_count of any list. There is no operation that removes a contact from all lists.
  • To unsubscribe the contact from one list only, use Add or Update a List Contact with subscription_status: "unsubscribed".
  • A change to unsubscribed does not add or remove a suppression.

Authorizations

Authorization
string
header
required

API key for authentication. Non-empty Security Requirement values are AhaSend API-key roles. Roles listed within one requirement object are jointly required; separate requirement objects are alternatives.

Path Parameters

account_id
string<uuid>
required

Account ID

id_or_email
string
required

Contact UUID or email address. Percent-encode an email exactly once as a path segment; SDK callers pass the raw email value.

Body

application/json

A partial contact update. Omitted or null scalar fields and a null attributes object leave stored values unchanged. A present attributes object is merged; a null member removes that attribute key.

email
string<email> | null
first_name
string | null
last_name
string | null
status
enum<string> | null
Available options:
enabled,
disabled,
blocked,
null
status_reason
string | null
unsubscribed
boolean | null
attributes
object | null

Response

Updated contact

Public contact projection. Attribute reads are legacy-safe: values can contain null, booleans, numbers, strings, arrays, or nested objects even though new writes accept only canonical dashboard-defined values.

object
enum<string>
required

Object type identifier

Available options:
contact
id
string<uuid>
required

Unique identifier for the contact

created_at
string<date-time>
required

When the contact was created

updated_at
string<date-time>
required

When the contact was last updated

email
string<email>
required

Normalized contact email address

first_name
string
required
last_name
string
required
status
enum<string>
required
Available options:
enabled,
disabled,
blocked
status_reason
string
required
unsubscribed
boolean
required
unsubscribed_at
string<date-time> | null
required
attributes
object
required
validation_status
enum<string>
required
Available options:
unvalidated,
valid,
invalid,
risky,
unknown
last_validated_at
string<date-time> | null
required