---
title: "Add Placement"
method: POST
path: "/v2/campaigns/{id}/placements"
tags: ["Campaigns V2"]
---

# Add Placement

`POST /v2/campaigns/{id}/placements`

Adds a new placement to a campaign. Requires campaigns:write scope.

## Path parameters

- `id` string, required — Campaign ID

## Request body

- object
  - `event_name` string, required — Event name that triggers this placement
  - `enabled` boolean — Whether this placement is enabled. Defaults to true
  - `remove_from_other_campaigns` boolean — If true and this event name exists in another campaign, move it to this campaign. If false and event exists elsewhere, returns a conflict error

## Response `200`

Success

- object
  - `id` string, required — Unique identifier for the placement
  - `object` 'placement', required — Object type, always `placement`
  - `event_name` string, required — Event name that triggers this placement
  - `enabled` boolean, required — Whether this placement is enabled

## Other responses

- `400` — The request did not match the expected schema
- `401` — No API key was provided in the request
- `403` — The API key does not have permission to perform this action
- `404` — The requested resource was not found
- `409` — A placement with this event name already exists in another campaign. Use remove_from_other_campaigns=true to move it.
- `422` — @superwall/api-schema/v2/errors/CampaignArchivedError
- `429` — Too many requests have been made in a short period
- `500` — A required post-operation side effect failed

---

[API](https://skmtc.dev/superwall/apis/superwall-api-v2.md) · [All operations](https://skmtc.dev/superwall/apis/superwall-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/superwall/superwall-api-v2/revisions/e04f76c478af/schema)
