Skip to Content
API referenceAds APIServing status

Serving status

Every campaign, ad set and ad reports whether it can serve and, if not, why.

FieldMeaning
statusThe status you set with activate, pause and archive: active, paused or archived. A campaign can also be completed: its end_time has passed.
effective_statusWhether it can serve right now: active, inactive or archived
serving_issuesWhy 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:

  • archived when it or anything above it is archived;
  • active when it and everything above it, up to your organization, are active, in flight, within budget and approved;
  • inactive otherwise, 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" } } ]
FieldValue
codeOne of the codes below. Branch on it.
messageText for people. Do not parse it.
source.objectThe object causing the issue: organization, ad_account, campaign, ad_set or ad
source.idThat 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.

codeMeaningTo clear it
in_reviewThe ad is waiting for Adzen’s reviewClears when Adzen approves the ad
rejectedAdzen rejected the ad or the ad account; see its rejection_reasonsChange the ad’s creative, or the ad account’s name or domain. That sends it back to review.
account_pendingThe ad account is waiting for Adzen’s reviewClears when Adzen approves the account
pausedThe source object is pausedActivate the source
flight_not_startedThe campaign’s start_time has not arrivedClears on its own. The campaign starts serving within about a minute of start_time.
flight_endedThe campaign’s end_time has passed, and its status is completedSet a later end_time, then activate the campaign
daily_budget_reachedThe campaign spent its daily budgetClears at the campaign’s next midnight. See Budgets.
lifetime_budget_reachedThe campaign spent its lifetime budgetRaise or remove the lifetime budget
account_spend_limit_reachedThe ad account spent its monthly capClears at the start of the next calendar month in your organization’s time zone, or when you raise or remove the cap
org_credit_exhaustedYour organization used its credit limitClears 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_after is inclusive: it returns objects with updated_time at or after the value.
  • Lists are ordered by id, not by updated_time. Keep paging with after set to the previous page’s last_id while has_more is true.
  • An object’s updated_time moves when you change one of its fields. It also moves when its review_status, effective_status or serving_issues change, 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.
Last updated on