Add contacts

Add contacts to a list from your CRM, signup form or backend, for your marketing campaigns.

POSThttps://api.cresca.xyz/api/v1/contacts

Requires a full-access key. Adds up to 1,000 contacts per request to a contact list, creating the list if it does not exist. Existing contacts get their name updated and are added to the list; nobody is duplicated. Imports are limited to 120 requests per 15 minutes, on top of the general rate limit.

Body parameters

list_namestringrequired

Name of the contact list. Created if it does not exist.

contacts(string | object)[]required

1 to 1,000 entries. Each is an email address, or an object with email and optional first_name and last_name.

Example

Request
curl -X POST 'https://api.cresca.xyz/api/v1/contacts' \
  -H 'Authorization: Bearer cr_live_xxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
  "list_name": "Newsletter signups",
  "contacts": [
    {
      "email": "ana@example.com",
      "first_name": "Ana"
    },
    "ben@example.com"
  ]
}'
Response 200
{
  "object": "contact_import",
  "list": {
    "id": "6713b2a8c2a94e0012ab3511",
    "name": "Newsletter signups",
    "created": false
  },
  "summary": {
    "received": 2,
    "created": 1,
    "updated": 0,
    "already_present": 1,
    "rejected": 0,
    "added_to_list": 1,
    "limit_reached": false
  },
  "errors": []
}

Rejected contacts

Contacts are for marketing campaigns, so each address is checked more strictly than API email recipients. Invalid, disposable, no-reply or system (such as noreply@ or postmaster@), suppressed and duplicate addresses are rejected and listed in errors with their index in your request; the rest are still added. When your plan's contact limit is reached, limit_reached is true and the remaining new contacts are rejected.

If your plan is not active, the request fails with 403 plan_inactive.