---
title: "Pause or resume a single ad"
method: PUT
path: "/v1/ads/{adId}/status"
tags: ["Ad Campaigns"]
---

# Pause or resume a single ad

`PUT /v1/ads/{adId}/status`

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.

## Path parameters

- `adId` string, required

## Request body

- object
  - `status` 'active' | 'paused', required

## Response `200`

Ad status updated (or skipped when no change was needed)

- object
  - `updated` integer — 1 when the status changed, 0 when skipped
  - `skipped` integer — 1 when skipped (terminal status or already in target state), else 0
  - `message` string — Human-readable summary (present only when skipped)

## Other responses

- `400` — Invalid input
- `401` — Unauthorized
- `404` — Ad not found

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/versions/51932b099b2f/schema)
