Appearance
campaigns
7 endpoints.
GET /api/v1/campaigns
List Campaigns
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
account_id | query | no |
200 — Successful Response
json
{}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}GET /api/v1/campaigns/{campaign_id}/ads
List Campaign Ads
Ads directly under one campaign (skips the ad-set hop — the Ad model already carries its owning campaign_id, same field the Ads grid filters on). Feeds the Deals page's "Import campaign leads" ad picker. Each ad reports its own lead count so the picker can show which ads are worth importing before the user commits.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
campaign_id | path | yes | string |
200 — Successful Response
json
{}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}GET /api/v1/campaigns/{campaign_id}/adsets
List Adsets
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
campaign_id | path | yes | string |
200 — Successful Response
json
{}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}GET /api/v1/campaigns/{campaign_id}/adsets/{adset_id}/ads
List Ads
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
campaign_id | path | yes | string | |
adset_id | path | yes | string |
200 — Successful Response
json
{}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}PUT /api/v1/campaigns/bulk/status
Bulk Update Status
Bulk update campaign statuses on Meta.
Request body
json
{
"properties": {
"campaign_ids": {
"items": {
"type": "string"
},
"type": "array",
"title": "Campaign Ids"
},
"status": {
"type": "string",
"title": "Status"
}
},
"type": "object",
"required": [
"campaign_ids",
"status"
],
"title": "BulkStatusUpdate"
}200 — Successful Response
json
{}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}PUT /api/v1/campaigns/{campaign_id}/status
Update Campaign Status
Update a campaign's status on Meta (ACTIVE, PAUSED, DELETED).
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
campaign_id | path | yes | string |
Request body
json
{
"properties": {
"status": {
"type": "string",
"title": "Status"
}
},
"type": "object",
"required": [
"status"
],
"title": "CampaignStatusUpdate"
}200 — Successful Response
json
{}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/campaigns/{campaign_id}/publish-live
Publish Campaign Live
Activate an entire campaign tree on Meta — the campaign, its ad sets and its ads all set to ACTIVE in one call.
Backs the "Make live" action in the Create-Campaign success menu: a campaign created PAUSED won't deliver until every level is ACTIVE, so flipping just the campaign isn't enough. campaign_id is the Meta campaign id (what the launch flow has on hand), so we match on the campaign_id column. Per-entity errors are collected rather than aborting, so one bad ad can't block the rest going live.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
campaign_id | path | yes | string |
200 — Successful Response
json
{}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}