Serving status
Every campaign, ad set and ad reports whether it can serve and, if not, why.
| Field | Meaning |
|---|---|
status | The status you set with activate, pause and archive: active, paused or archived. A campaign can also be completed: its end_time has passed. |
effective_status | Whether it can serve right now: active, inactive or archived |
serving_issues | Why an inactive object is not serving. Empty when effective_status is active or archived. |
Campaigns, ad sets and ads carry all three fields. Ad accounts carry status
and review_status only; their state shows in the serving issues of the
objects below them.
An object’s effective_status is:
archivedwhen it or anything above it is archived;activewhen it and everything above it, up to your organization, are active, in flight, within budget and approved;inactiveotherwise, with at least one serving issue.
Serving issues
"serving_issues": [
{
"code": "account_pending",
"message": "The ad account is waiting for Adzen's review.",
"source": { "object": "ad_account", "id": "acct_61" }
},
{
"code": "daily_budget_reached",
"message": "The campaign reached its daily budget. It resumes at midnight.",
"source": { "object": "campaign", "id": "cmpn_412" }
}
]| Field | Value |
|---|---|
code | One of the codes below. Branch on it. |
message | Text for people. Do not parse it. |
source.object | The object causing the issue: organization, ad_account, campaign, ad_set or ad |
source.id | That object’s id, like org_12, acct_61, cmpn_412, adset_8271 or ad_2864 |
An object can have several issues at once, one for each code and source.
They are ordered top-down: organization first, then ad account, campaign, ad
set and ad. An ad reports the issues of its ad set, campaign, ad account and
organization as well as its own.
code | Meaning | To clear it |
|---|---|---|
in_review | The ad is waiting for Adzen’s review | Clears when Adzen approves the ad |
rejected | Adzen rejected the ad or the ad account; see its rejection_reasons | Change the ad’s creative, or the ad account’s name or domain. That sends it back to review. |
account_pending | The ad account is waiting for Adzen’s review | Clears when Adzen approves the account |
paused | The source object is paused | Activate the source |
flight_not_started | The campaign’s start_time has not arrived | Clears on its own. The campaign starts serving within about a minute of start_time. |
flight_ended | The campaign’s end_time has passed, and its status is completed | Set a later end_time, then activate the campaign |
daily_budget_reached | The campaign spent its daily budget | Clears at the campaign’s next midnight. See Budgets. |
lifetime_budget_reached | The campaign spent its lifetime budget | Raise or remove the lifetime budget |
account_spend_limit_reached | The ad account spent its monthly cap | Clears at the start of the next calendar month in your organization’s time zone, or when you raise or remove the cap |
org_credit_exhausted | Your organization used its credit limit | Clears when Adzen records a payment against your invoices or raises your credit limit |
Treat a code that is not in this table as a reason the object cannot serve,
and show its message.
How fast a pause takes effect
When you pause or archive an ad account, campaign, ad set or ad, new
placements stop within about a minute. Billing stops at the moment of the
pause. A campaign stops within about a minute of its end_time.
Nothing is billed after the pause, or after end_time. Ads already on screen
may still record views and clicks after that time. They are reported but not
charged.
Keeping in sync
Poll each list with updated_after set to the start time of your last
successful poll minus 60 seconds:
curl 'https://api.adzen.ai/v1/ad-manager/ads?updated_after=1791590340&order=asc&limit=500' \
-H 'Authorization: Bearer YOUR_API_KEY'updated_afteris inclusive: it returns objects withupdated_timeat or after the value.- Lists are ordered by id, not by
updated_time. Keep paging withafterset to the previous page’slast_idwhilehas_moreistrue. - An object’s
updated_timemoves when you change one of its fields. It also moves when itsreview_status,effective_statusorserving_issueschange, including changes caused by a parent object, a review decision, the flight start or end, or a budget, spend cap or credit limit. These changes show up within about a minute.