---
title: "Alias of POST /contacts."
method: POST
path: "/audiences/{audienceId}/contacts"
tags: ["contacts"]
---

# Alias of POST /contacts.

`POST /audiences/{audienceId}/contacts`

## Request

- Base URL: `https://api.agentisend.com`
- URL: `https://api.agentisend.com/audiences/{audienceId}/contacts`
- Auth: HTTP bearer

This account has one contact list, so the audience id does not select another.

## Path parameters

- `audienceId` string, required

## Headers

- `Idempotency-Key` string
- `Resend-Idempotency-Key` string

## Request body

- PostContactsBody
  - `email` string, email, required: The contact address. An existing address is updated.
  - `first_name` string, nullable: Given name. Null clears it.
  - `last_name` string, nullable: Family name. Null clears it.
  - `unsubscribed` boolean: true stops marketing mail to this address.
  - `status` 'active' | 'unsubscribed': active, or unsubscribed to stop marketing mail.
  - `properties` object: Named values stored on the contact. A new name is created.
  - `consent` object: Optional consent provenance for this address. Stored, shown and exported; never a reason to refuse.
    - `source` string, required: Where and how the person agreed — for example "signup form" or "imported list, existing customer".
    - `at` string, date-time: When they agreed, as UTC. Defaults to now.
    - `ip` string: The IP address the agreement was captured from, if known.
    - `text` string: The exact wording they agreed to, if it is on file.
    - `double_opt_in_confirmed_at` string, date-time: When a confirmation email or click completed double opt-in.
  - `segments` object[]: Segments to add the contact to. Each must be a segment on this account.
    - `id` string, required: The segment id.
  - `topics` object[]: Topic subscriptions to record for the contact. Each must be a topic on this account.
    - `id` string, required: The topic id.
    - `subscription` 'opt_in' | 'opt_out', required: opt_in subscribes the contact. opt_out unsubscribes them.
  - `audience_id` string: Accepted for Resend callers. This account has one contact list, so it does not select another.

## Response `201`

Success

- PostContactsReply
  - `object` 'contact', required
  - `id` string, uuid, required
  - `email` string, required
  - `status` string, required
  - `first_name` string, nullable, required
  - `last_name` string, nullable, required
  - `unsubscribed` boolean, required
  - `properties` object, required
  - `property_types` object, required
  - `consent` object, required
    - `source` string, nullable, required
    - `at` string, date-time, nullable, required
    - `ip` string, nullable, required
    - `text` string, nullable, required
    - `double_opt_in_confirmed_at` string, date-time, nullable, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `400`: The request is malformed or a field failed validation. Codes: validation_error, invalid_idempotency_key, invalid_cursor, plan_not_purchasable, stripe_signature_invalid, support_upload_rejected, sign_in_check_required.
- `409`: The request conflicts with the current state. Codes: domain_already_exists, template_name_taken, template_alias_taken, template_in_use, segment_in_use, contact_resubscribe_required, email_still_scheduled, domain_verified_elsewhere, domain_not_claimable, return_path_subdomain_in_use, overage_not_on_plan, term_not_on_sale, subscription_active, portal_change_unavailable, already_in_account, idempotency_in_flight, idempotency_payload_mismatch, approval_expired, support_closed, support_reopen_expired, support_merge_conflict, support_reply_too_soon.
- `413`: The request body is larger than this operation accepts. Codes: payload_too_large, support_upload_too_large.
- `415`: The request body is not JSON. Codes: unsupported_media_type.
- `429`: A rate, quota or ramp ceiling was reached. Codes: onboarding_daily_cap_reached, trust_throttled, invite_limit_reached, rate_ceiling_exceeded, daily_quota_exceeded, monthly_quota_exceeded, rate_limit_exceeded, support_rate_limited.
- `500`: Something failed on our side. Codes: internal_server_error.

---

[API](https://skmtc.dev/agentisend/apis/agentisend-api.md) · [All operations](https://skmtc.dev/agentisend/apis/agentisend-api/llms.txt) · [OpenAPI document](https://skmtc.dev/agentisend/apis/agentisend-api/revisions/3066dda62a56?raw)
