# Close creator campaign

Closes a creator campaign.

```http
POST https://api.pozy.ai/v1/creator-campaigns/{campaignId}/close
```

- Area: Creators / Creator Campaigns
- Auth: Authorization: Bearer pz_live_...

## Path parameters

- `campaignId` (string, required)

## Example request

```bash
curl -X POST "https://api.pozy.ai/v1/creator-campaigns/65a3737dd8b11ea61f199e6e/close" \
  -H "Authorization: Bearer $POZY_API_KEY"
```

```ts
const res = await fetch("https://api.pozy.ai/v1/creator-campaigns/65a3737dd8b11ea61f199e6e/close", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.POZY_API_KEY}` },
});
const data = await res.json();
if (!res.ok) throw new Error(data?.error ?? `Request failed with status ${res.status}`);
console.log(data);
```

```python
import os
import requests

resp = requests.post(
    "https://api.pozy.ai/v1/creator-campaigns/65a3737dd8b11ea61f199e6e/close",
    headers={"Authorization": f"Bearer {os.environ['POZY_API_KEY']}"},
    timeout=30,
)
resp.raise_for_status()
print(resp.json())
```

## Response 200

- `campaign`, object, required
  - `id`, string, required
  - `userId`, string, required
  - `profileId`, string, required
  - `kind`, string, required
  - `name`, string, required
  - `brandName`, string, required
  - `status`, string, required: One of `draft`, `active`, `paused`, `closed`
  - `type`, string, required: One of `cpm`, `per_post`, `pool`
  - `currency`, string, required
  - `platforms`, array of string, required: Each item: one of `tiktok`, `instagram`, `youtube`, `threads`, `pinterest`, `facebook`, `twitter`
  - `contentRules`, string, required: Can be null
  - `startsAt`, string (date-time), required: Can be null
  - `endsAt`, string (date-time), required: Can be null
  - `trackingDays`, integer, required
  - `holdDays`, integer, required
  - `maxPostAgeMinutes`, integer, required: Can be null
  - `activatedAt`, string (date-time), required: Can be null
  - `settlement`, string, required: One of `none`, `external`, `treasury`
  - `economics`, object, required
    - one of: Creator Campaign Economics Cpm
      - `type`, string, required: One of `cpm`
      - `ratePer1kCents`, integer, required: At least 1
      - `minViewsToEarn`, integer, required: At least 0
      - `maxPayoutPerClipCents`, integer: At least 1
      - `budgetCents`, integer, required: At least 0
    - one of: Creator Campaign Economics Per Post
      - `type`, string, required: One of `per_post`
      - `perApprovedPostCents`, integer, required: At least 1
      - `maxPostsPerParticipant`, integer: At least 1
      - `budgetCents`, integer, required: At least 0
    - one of: Creator Campaign Economics Pool
      - `type`, string, required: One of `pool`
      - `budgetCents`, integer, required: At least 0
      - `minViewsToQualify`, integer, required: At least 0
  - `caps`, object, required
    - `maxParticipants`, integer: At least 1
    - `maxSubmissionsPerParticipantPerDay`, integer: At least 1
    - `maxAccountsPerParticipant`, integer: At least 1
    - `maxXReadSpendCents`, integer: At least 1
    - `authenticityThreshold`, number, required: 0 to 100
  - `branding`, object, required
    - one of: Creator Campaign Branding
      - `brandName`, string
      - `primaryColor`, string
      - `logoUrl`, string
      - `theme`, object
  - `budgetExhaustedAt`, string (date-time), required: Can be null
  - `closedAt`, string (date-time), required: Can be null
  - `payableScannedAt`, string (date-time), required: Can be null
  - `createdAt`, string (date-time), required
  - `updatedAt`, string (date-time), required
  - `hasOpenInvite`, boolean, required
  - `consumedCents`, integer, required
  - `participantCount`, integer, required
  - `submissionCounts`, object, required
    - `received`, integer, required
    - `tracking`, integer, required
    - `pending_review`, integer, required
    - `approved`, integer, required
    - `rejected`, integer, required
    - `expired`, integer, required
    - `withdrawn`, integer, required
  - `payableCents`, integer, required

```json
{
  "campaign": {
    "id": "6bfebd43ddc270f6d2c56fc5",
    "userId": "6da95b9455a22c1e061837af",
    "profileId": "6a0b6573846efc28aaa9a3ff",
    "kind": "string",
    "name": "Acme",
    "brandName": "Acme",
    "status": "draft",
    "type": "cpm",
    "currency": "USD",
    "platforms": [
      "tiktok"
    ],
    "contentRules": "Hello from Pozy",
    "startsAt": "2026-10-02T09:00:00.000Z",
    "endsAt": "2026-10-02T09:00:00.000Z",
    "trackingDays": 1,
    "holdDays": 1,
    "maxPostAgeMinutes": 1,
    "activatedAt": "2026-10-02T09:00:00.000Z",
    "settlement": "none",
    "economics": {
      "type": "cpm",
      "ratePer1kCents": 1,
      "minViewsToEarn": 1,
      "maxPayoutPerClipCents": 1,
      "budgetCents": 1
    },
    "caps": {
      "maxParticipants": 1,
      "maxSubmissionsPerParticipantPerDay": 1,
      "maxAccountsPerParticipant": 42,
      "maxXReadSpendCents": 1,
      "authenticityThreshold": 12.5
    },
    "branding": {
      "brandName": "Acme",
      "primaryColor": "string",
      "logoUrl": "https://pozy.ai/media/example-1.jpg",
      "theme": {}
    },
    "budgetExhaustedAt": "2026-10-02T09:00:00.000Z",
    "closedAt": "2026-10-02T09:00:00.000Z",
    "payableScannedAt": "2026-10-02T09:00:00.000Z",
    "createdAt": "2026-10-02T09:00:00.000Z",
    "updatedAt": "2026-10-02T09:00:00.000Z",
    "hasOpenInvite": true,
    "consumedCents": 1,
    "participantCount": 42,
    "submissionCounts": {
      "received": 1,
      "tracking": 1,
      "pending_review": 1,
      "approved": 1,
      "rejected": 1,
      "expired": 1,
      "withdrawn": 1
    },
    "payableCents": 1
  }
}
```
