Console API
Ads campaigns
13 endpoints.
/api/v1/admin/businesses/{business_id}/ads/campaignsList campaigns
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
status | query | string | null | |
platform | query | string | null | |
q | query | string | null | |
cursor | query | string | null | |
limit | query | integer | default 20 |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_list_CampaignData__| Field | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
success | true | default true | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
datarequired | CampaignData[] | CampaignData[] fields
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
metadata | ResponseMetadata | null | ResponseMetadata fields
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
meta | ResponseMeta | null | ResponseMeta fields
|
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaignsCreate a draft campaign
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
authorization | header | string | null |
Request bodyrequired
application/jsonCampaignCreateBody| Field | Type | Description |
|---|---|---|
namerequired | string | |
platform | "meta" | default "meta" |
objective | enum | one of "OUTCOME_LEADS", "OUTCOME_TRAFFIC", "OUTCOME_SALES" · default "OUTCOME_LEADS" |
adsAccountId | string (uuid) | null | |
leadFollowUpEnabled | boolean | default true |
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignData_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | CampaignData | CampaignData fieldsCampaignData, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/{campaign_id}Get a campaign with embedded ad-sets and units
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
campaign_idrequired | path | string (uuid) | |
refreshFromMeta | query | boolean | When true (default), pull this campaign's latest state from Meta and reconcile SOR before returning — the SAME full sync as the per-campaign Sync button, but due-gated (``ads_campaign_sync_min_interval_seconds``) so opening the page repeatedly doesn't hammer Meta. Set ``refreshFromMeta=false`` to read SOR only. default true |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignData_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | CampaignData | CampaignData fieldsCampaignData, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/{campaign_id}Patch campaign name (status changes use dedicated verbs)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
campaign_idrequired | path | string (uuid) | |
authorization | header | string | null |
Request bodyrequired
application/jsonCampaignPatchBody| Field | Type | Description |
|---|---|---|
name | string | null | |
leadFollowUpEnabled | boolean | null | |
isManaged | boolean | null | |
objective | enum | null | |
budgetLevel | enum | null | |
dailyBudgetMinor | integer | null | |
bidStrategy | enum | null | |
bidAmountMinor | integer | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignData_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | CampaignData | CampaignData fieldsCampaignData, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/{campaign_id}/archiveArchive locally + cascade soft-delete children
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
campaign_idrequired | path | string (uuid) | |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignData_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | CampaignData | CampaignData fieldsCampaignData, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/{campaign_id}/duplicateDeep-copy campaign + sets + units as a new draft
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
campaign_idrequired | path | string (uuid) | |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignData_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | CampaignData | CampaignData fieldsCampaignData, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/{campaign_id}/launchValidate + push to provider + set Active
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
campaign_idrequired | path | string (uuid) | |
Idempotency-Keyrequired | header | string | |
authorization | header | string | null |
Request bodyrequired
application/jsonCampaignLaunchBody| Field | Type | Description |
|---|
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignData_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | CampaignData | CampaignData fieldsCampaignData, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/{campaign_id}/pausePause on provider + locally
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
campaign_idrequired | path | string (uuid) | |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignData_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | CampaignData | CampaignData fieldsCampaignData, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/{campaign_id}/resumeResume on provider + locally
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
campaign_idrequired | path | string (uuid) | |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignData_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | CampaignData | CampaignData fieldsCampaignData, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/{campaign_id}/syncPull this one campaign's latest state from Meta and return it
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
campaign_idrequired | path | string (uuid) | |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignData_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | CampaignData | CampaignData fieldsCampaignData, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/agentTrigger the campaign-creation agent (workflow engine)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
Idempotency-Key | header | string | null | |
authorization | header | string | null |
Request bodyrequired
application/jsonCampaignAgentTriggerBody| Field | Type | Description |
|---|---|---|
promptrequired | string | min length 1 |
adsAccountId | string (uuid) | null | |
campaignId | string (uuid) | null | |
adSetId | string (uuid) | null | |
unitId | string (uuid) | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignAgentTriggerData_| Field | Type | Description | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | ||||||||||||||||
success | true | default true | |||||||||||||||
datarequired | CampaignAgentTriggerData | CampaignAgentTriggerData fields
| |||||||||||||||
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. | |||||||||||||||
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/agent/messagesList campaign-agent chat transcript
Return the persisted chat transcript for a thread.
The POST relay (``/agent/messages``) only returns the latest assistant reply per turn, so user-typed messages disappear from the FE on refresh. This GET reads the workflow-engine's ``thread_events`` (via control-plane ``/threads/{id}/detail``) and reduces them to the chat-message subset so the FE can render the full transcript and survive page reloads.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
threadIdrequired | query | string | |
limit | query | integer | default 200 |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_ChatTranscriptData_| Field | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | ||||||||||
success | true | default true | |||||||||
datarequired | ChatTranscriptData | ChatTranscriptData fields
| |||||||||
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. | |||||||||
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/ads/campaigns/agent/messagesSend a follow-up turn on an existing agent thread
Multi-turn relay so the FE doesn't need to talk to the router directly. The initial ``POST /campaigns/agent`` may return an empty ``workflowRunId``; keep POSTing here with the same ``threadId`` until a workflow run is started and a proposal widget appears.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
authorization | header | string | null |
Request bodyrequired
application/jsonCampaignAgentMessageBody| Field | Type | Description |
|---|---|---|
threadIdrequired | string | min length 1 |
messagerequired | string | min length 1 |
campaignId | string (uuid) | null | |
adSetId | string (uuid) | null | |
unitId | string (uuid) | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_CampaignAgentTriggerData_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | CampaignAgentTriggerData | CampaignAgentTriggerData fieldsCampaignAgentTriggerData, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.