1. Create an API key
In the dashboard, open your team and go to Integrations → API Keys. Select Create API Key and enable Import audiences (write:audiences)
and Read audiences (read:audiences). Copy the key when it is shown;
the full key is displayed only once.
Creating team API keys requires a team admin account and enterprise access.
If you cannot access this page, ask your team admin to set up the key.
See Authentication & Permissions for other key types.
Your numeric team ID is the number after /team/ in the dashboard URL.
The team in an API request must be within the key’s team, enterprise, or
portfolio scope.
2. Send your contacts
POST /api/v1/teams/{teamId}/audiences
These endpoints use https://api.prod.avoca.ai. In the example below,
replace YOUR_TEAM_ID, YOUR_API_KEY, and the sample contact with your values.
Include each contact’s actual ZIP if your team has service areas configured.
Use a new Idempotency-Key for each new list. To retry the same import, keep
the key and body unchanged. Keys can contain
letters, numbers, dots, underscores, colons, and hyphens, up to 200 characters.
3. Check the result
Success — HTTP 201:excluded_count reports unique contacts removed by that filter;
member_count is the number saved. A fully excluded list has zero members.
4. Use the audience in a campaign
When the import succeeds, open outbound campaign creation in the dashboard. Choose Existing Audience and select the audience by the name you submitted. Review the saved contacts, current exclusions, and outreach settings, then launch through the dashboard when ready. The API import itself does not send messages or make calls.Contact fields
Optional contact fields may be omitted, empty, or null. Unknown fields are rejected.
Each contact takes one phone number. If a phone appears more than once, the
first contact wins and the remaining rows count toward
duplicates_skipped.
Any invalid row rejects the entire request; no partial audience is created.
Retry behavior
Retry a timeout or server error with the same key and request body. Within 24 hours, successful retries return the original audience and setX-Idempotency-Replayed: true. Reusing the key with a different body returns
409. Keys are scoped to the team, so rotating an API key does not duplicate a
completed import. After 24 hours, a retry can create a new audience.
Each new import creates a separate audience. This API does not update an
existing list or change recipients of an existing campaign. Lists over 1,000
contacts should use the existing spreadsheet import flow.
Retrieve an audience
GET /api/v1/teams/{teamId}/audiences/{audienceId}
Use the returned audience_id to retrieve the name, current member count, and
archive status. This also works for spreadsheet audiences. The key needs
read:audiences.