---
title: "Ad video library"
method: GET
path: "/v1/ads/videos"
tags: ["Ad Creatives"]
---

# Ad video library

`GET /v1/ads/videos`

Lists the ad account's video library (Meta's `/act_X/advideos`), rows returned verbatim.
The default projection covers id, title, status, poster frames and length; `fields` is a
raw-passthrough override. Any `id` here is reusable as `video.id` on the create
endpoints, so N ads that differ only in copy share one upload.

This is the only way to reach a video uploaded OUTSIDE Zernio (Ads Manager, another
tool); videos we uploaded also come back as `creative.videoId` on GET /v1/ads.

Meta transcodes asynchronously, so a row is only usable once `status.video_status`
reads `ready`. There is no upload operation here: upload by URL inline via `video.url`
on POST /v1/ads/create.

## Query parameters

- `accountId` string, required
- `adAccountId` string, required
- `fields` string
- `limit` integer
- `after` string

## Response `200`

Ad videos (raw Meta shape)

- object
  - `adAccountId` string
  - `data` object[]
  - `paging` object
    - `after` string, nullable — Cursor for the next page; null when exhausted.

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `501` — Only supported on Meta (facebook/instagram)

---

[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/revisions/19fd2b70854e/schema)
