Pause or resume a single ad
Ad-scoped pause/resume — touches ONLY this ad, never its parent ad set or
campaign (so sibling ads keep running). Thin wrapper over the status
field of PUT /v1/ads/{adId}, for callers that want a URL symmetric to
/v1/ads/campaigns/{campaignId}/status and /v1/ads/ad-sets/{adSetId}/status.
{adId} accepts the same identifier dialects as GET/PUT /v1/ads/{adId}
(Zernio hex _id, Meta numeric platformAdId, or the creative's
effective story/media IDs). platform is inferred from the ad, so it's
not required in the body. Ads in terminal statuses (rejected, completed,
cancelled) and no-op flips (already in the target state) are skipped.
API key authentication - use your Zernio API key as a Bearer token
In: header
Path Parameters
Zernio _id (hex), Meta platformAdId (numeric), or one of the creative's effective story/media IDs.
"active" | "paused"Response Body
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.ads.updateAdStatus({ path: { adId: 'ad_abc123', }, body: { status: 'active', },});console.log(data);{
"updated": 0,
"skipped": 0,
"message": "string"
}{
"error": "Unauthorized"
}Get aggregated event stats GET
Returns aggregated event counts for the pixel (`GET /{pixel_id}/stats`). Rows are passed through from Meta as-is — their shape depends on the `aggregation` requested. Meta only (platform `metaads`); other platforms return 405.
List active Instagram stories GET
Returns the IG Business/Creator account's currently-active stories. Meta keeps stories live for 24h; expired stories are not returned. Limitations propagated from Meta (these are NOT bugs): - 24h window only - Live videos excluded - Reshared stories not returned - `mediaUrl` may be null if Meta flagged the story for copyright - `caption`, `likeCount`, `commentsCount` do not apply to story media