# Create a Meta Ads campaign

Create a PAUSED Meta campaign with either ad set budgets (omit campaign budget), a daily campaign budget, or a lifetime campaign budget. Works on your own Meta Ads account, connected through Get MCP Ads. The preview is free; the change costs $0.05 when you confirm it. Needs ad account id, name and objective.

Create a PAUSED Meta campaign with either ad set budgets (omit campaign budget), a daily campaign budget, or a lifetime campaign budget. Supports native validate_only. Local preview by default. No automatic retry. Account ownership is checked before Meta validation or mutation. Agentik price: free to preview; $0.05 when the change is applied (confirm: true without validateOnly).

- Tool ID: `meta-ads/create-campaign`
- Name in the catalog: Meta: Create campaign
- Provider: [Meta Ads](/providers/meta-ads.md)
- Capability: [Meta Ads campaign management](/tools/meta-ads/campaign-management.md)
- Price: free preview, $0.05 per applied change
- Workspace access is automatic. Connect a platform using the link and notice returned to your AI assistant; an owner or admin completes platform consent and returns to the conversation; see the [guide](/docs/getmcpads.md).
- Authentication: an authorised Agentik workspace is required for execution, including zero-price tools.

## Pricing contract

The provider’s price, with no markup. Billed for measured usage.


```json
{
  "model": "per_call",
  "amountUsd": 0,
  "multipliers": [
    {
      "all": [
        {
          "field": "confirm",
          "equals": true
        },
        {
          "field": "validateOnly",
          "truthy": false
        }
      ],
      "setUsd": 0.05
    }
  ]
}
```

## Complete input schema


```json
{
  "type": "object",
  "properties": {
    "adAccountId": {
      "type": "string",
      "pattern": "^(act_)?\\d+$",
      "description": "Selected owning ad account ID, with or without act_. Every referenced ad object must belong to it."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 400,
      "description": "Exact business name to give this object. Do not derive it from an uploaded filename."
    },
    "objective": {
      "type": "string",
      "enum": [
        "OUTCOME_TRAFFIC",
        "OUTCOME_SALES",
        "OUTCOME_LEADS",
        "OUTCOME_AWARENESS",
        "OUTCOME_ENGAGEMENT",
        "OUTCOME_APP_PROMOTION"
      ],
      "description": "objective"
    },
    "specialAdCategories": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "NONE",
          "HOUSING",
          "EMPLOYMENT",
          "CREDIT",
          "ISSUES_ELECTIONS_POLITICS"
        ]
      },
      "description": "Required special categories; omit for none."
    },
    "adsetBudgetSharing": {
      "type": "boolean",
      "default": false,
      "description": "Explicit ad set budget sharing choice; only with ad set budgets."
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "description": "Required with any monetary amount. Must match the actual account currency; never assume EUR."
    },
    "dailyBudget": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000,
      "description": "Daily budget in major account-currency units. Mutually exclusive with lifetimeBudget."
    },
    "lifetimeBudget": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000,
      "description": "Total lifetime budget in major account-currency units. Requires bounded ad set schedules; mutually exclusive with dailyBudget."
    },
    "bidStrategy": {
      "type": "string",
      "enum": [
        "LOWEST_COST_WITHOUT_CAP",
        "LOWEST_COST_WITH_BID_CAP",
        "COST_CAP",
        "LOWEST_COST_WITH_MIN_ROAS"
      ],
      "description": "bidStrategy"
    },
    "startTime": {
      "type": "string",
      "format": "date-time",
      "description": "Optional new start time as ISO 8601 with explicit UTC offset."
    },
    "endTime": {
      "type": "string",
      "format": "date-time",
      "description": "Optional new end time as ISO 8601 with explicit UTC offset, after the start."
    },
    "confirm": {
      "type": "boolean",
      "description": "Apply only when true. Default is a local preview with no API mutation."
    },
    "validateOnly": {
      "type": "boolean",
      "description": "Ask Meta to validate, without creating or changing an object. Mutually exclusive with confirm."
    },
    "workspace_id": {
      "type": "string",
      "description": "Authorized workspace ID from list_accounts/list_workspaces. Use the user's chosen workspace; never guess between clients. Optional when a unique account identifies it."
    },
    "reason": {
      "type": "string",
      "maxLength": 500,
      "description": "Why, in the person's words or from the evidence (e.g. CPA twice the target for 7 days). Saved with the change in the shared client journal."
    }
  },
  "required": [
    "adAccountId",
    "name",
    "objective"
  ]
}
```

## Published example

No example input is published for this tool. Ask for the inputs required by its schema.

## Execute and retrieve

Inspect again before execution, explain the price and obtain the required authority. Use MCP run_tool or POST /v1/run with this tool ID, valid input and an idempotency key. Save the returned run ID and follow the actual state. If Agentik answers that the tool is temporarily unavailable, do not retry it blindly; use discovery to propose an alternative.

A partial or uncertain result can still have consumed provider resources. Consult [billing](/docs/billing.md), [idempotency](/docs/idempotency.md) and [asynchronous results](/docs/async.md).

[REST inspection](https://api.agentik.cc/v1/tools/meta-ads/create-campaign) · [OpenAPI](/openapi.json) · [Connection guide](/connect.md)

---

[HTML page](/providers/meta-ads/create-campaign) · [Agent index](/llms.txt)
