---
title: "Create an empty Meta campaign draft"
method: POST
path: "/v1/workspaces/{workspaceId}/ads/meta/{accountId}/drafts"
tags: ["Ads"]
---

# Create an empty Meta campaign draft

`POST /v1/workspaces/{workspaceId}/ads/meta/{accountId}/drafts`

## Request

- Base URL: `https://api.maevesocial.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.maevesocial.com/v1/workspaces/{workspaceId}/ads/meta/{accountId}/drafts`
- Auth: HTTP bearer

Create an empty Meta campaign draft in Maeve for one ad account, with one empty ad set. It creates nothing on Meta and spends nothing. Fill it in with ads.meta.drafts.save, or in the Maeve composer where a client has no save tool. The composer lists the 50 most recent drafts. Each call creates another draft, so read ads.meta.drafts.list before repeating one whose result you did not see.

## Path parameters

- `accountId` string, required
- `workspaceId` string, uuid, required

## Request body

- object
  - `name` string: Campaign name. It can be set later.

## Response `200`

Create an empty Meta campaign draft

- object
  - `data` object, required
    - `account` object, required
      - `id` string, required
      - `platform` 'meta' | 'tiktok' | 'linkedin' | 'google' | 'pinterest', required
      - `providerAccountId` string, required: The account ID the platform uses.
      - `name` string, nullable, required
      - `currency` string, nullable, required
      - `timezone` string, nullable, required: IANA timezone the platform reports this account in.
      - `isEnabled` boolean, required
      - `credentialStatus` 'active' | 'revoked', required
    - `money` object, required
      - `unit` 'micros', required
      - `microsPerCurrencyUnit` 1000000, required
      - `currency` string, nullable, required: ISO currency of the ad account.
    - `draft` object, required
      - `id` string, required
      - `name` string, required
      - `status` 'draft' | 'publishing' | 'published', required: Only a draft can be saved or published.
      - `currentStep` integer, required
      - `schemaVersion` integer, required
      - `revision` integer, required
      - `specification` object, required: The whole specification, upgraded to the current schema version. It has the shape ads.meta.drafts.save takes; edit it and save it back whole.
      - `publishedAt` string, nullable, required
      - `createdAt` string, required
      - `updatedAt` string, required
  - `meta` unknown, required

---

[API](https://skmtc.dev/maevesocial/apis/maeve-social-api.md) · [All operations](https://skmtc.dev/maevesocial/apis/maeve-social-api/llms.txt) · [OpenAPI document](https://skmtc.dev/maevesocial/apis/maeve-social-api/revisions/1b00fd7e4b15?raw)
