> ## Documentation Index
> Fetch the complete documentation index at: https://docs.makelocalads.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Creatives

> List every finished image and video across all workflows, or retrieve one creative in any status.

Every image and video LocalAds generates is a creative. `GET /creatives` lists
the finished ones across every workflow: campaign ads, photoshoot photos,
videos, ChatGPT ads and listing images, newest first, filterable by product,
campaign or type. It is the one endpoint for "everything this organization has
made".

**Permission:** `products:read`

## List creatives

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl "https://makelocalads.com/api/v1/creatives?product_id=a1516a75-9be5-461a-93af-c1896a0a3127&limit=50" \
  --header "Authorization: Bearer $LOCALADS_API_KEY"
```

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "data": [
    {
      "id": "4f52bad2-2da3-4b36-93ac-03788f35daca",
      "type": "campaign",
      "status": "completed",
      "brand_id": "1423f915-beca-4c53-a5e4-7c8c99537be9",
      "product_id": "a1516a75-9be5-461a-93af-c1896a0a3127",
      "campaign_id": "84b92447-425f-4d2a-9ba1-7d67bf802332",
      "photoshoot_id": null,
      "image_url": "https://cdn.example.com/generated-ad-1.png",
      "video_url": null,
      "width": 1024,
      "height": 1024,
      "caption": null,
      "created_at": "2026-07-24T15:00:04.000Z"
    }
  ],
  "next_cursor": null
}
```

### Filters

| Parameter | Meaning |
| - | - |
| `product_id` | Only creatives for this product |
| `campaign_id` | Only creatives from this campaign |
| `type` | `campaign`, `photoshoot`, `video`, `chatgpt_ad`, or `amazon_listing` |
| `limit` | Page size, 1 to 100. Defaults to `20` |
| `cursor` | The opaque cursor from the previous page |

The list returns only completed, customer-facing creatives. Use
`next_cursor` unchanged to get the next page.

## Retrieve one creative

`GET /creatives/{creative_id}` returns one creative **in any status**, so it
also works as a per-item progress check. Its URLs are present only once it is
completed:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl https://makelocalads.com/api/v1/creatives/4f52bad2-2da3-4b36-93ac-03788f35daca \
  --header "Authorization: Bearer $LOCALADS_API_KEY"
```

A `type` of `other` can appear on a single creative's retrieval: it covers
types the list endpoint does not filter by. Nothing you start returns it.

The same shapes power the workflow-specific lists: a product's photoshoot
photos (`GET /products/{product_id}/creatives`) and a campaign's creatives
appear here too, with their source ids (`campaign_id`, `photoshoot_id`) set.
