---
search:
  tags:
    - Custom audiences
    - POST
seo:
  description: >-
    Available on: Meta. Reference for the POST
    /mutations/{advertiserId}/custom-audiences endpoint in the AdCrunch API.
sidebar:
  label: Create a Custom Audience
  badge: POST
title: Create a Custom Audience
type: openapi-operation
---
**Available on:** [![Meta](/providers/meta.svg)](https://docs.adcrunch.dev/connect/providers)

Creates a Custom Audience. The body holds the fields of the new Custom Audience.

It starts a Mutation of the kind `meta_create_custom_audience`, the same change that `POST /mutations` starts with that kind. The MCP tool of the same name makes the same change.

Create a Meta Custom Audience. `source` selects what makes the audience: `website` (the visitors of a Pixel), `customer_list` (the emails and the phone numbers of your customers, sent to Meta as hashes) or `lookalike` (the people most like another audience, in one country). A Custom Audience has no status and starts no spend. An ad set uses it with customAudiences or excludedCustomAudiences. Meta can take some hours to populate a new audience, and a lookalike stays unusable until then.

The change does **not** happen during this request. The answer is `202`, and `Location` names the Mutation. Poll `GET /mutations/{id}` until it reports `complete` or `errored`. A Mutation is durable, so the id stays valid across retries and restarts.

A refused request starts nothing. AdCrunch refuses a body that does not match, an advertiser that is not yours, an advertiser with no usable connection, and an advertiser connected without write access before a Mutation exists. So a failed call leaves no row in the history.

**This operation checks the credential first and the body second.** A missing or unusable credential answers `401` even when the body is wrong as well.

`POST /mutations/{advertiserId}/custom-audiences`
