> ## 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.

# Get the photos

> Poll a photoshoot until it is done, and list every finished photo for a product.

[← Photoshoots](/photoshoots/overview)

**Endpoint:** `GET https://makelocalads.com/api/v1/photoshoots/{photoshoot_id}`
**Permission:** `photoshoots:read`

Every photoshoot answers with its current progress and its completed shot
outputs. Poll it until it is done, or list every finished photo for a product
without tracking individual photoshoot IDs.

## Poll the photoshoot

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl https://makelocalads.com/api/v1/photoshoots/e8766ffd-66f7-47c9-86bc-0d93e6868d06 \
  --header "Authorization: Bearer $LOCALADS_API_KEY"
```

Finished images appear on their outputs while the rest continue:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "e8766ffd-66f7-47c9-86bc-0d93e6868d06",
  "brand_id": "1423f915-beca-4c53-a5e4-7c8c99537be9",
  "product_id": "a1516a75-9be5-461a-93af-c1896a0a3127",
  "template_id": null,
  "credits_charged": 5,
  "status": "in_progress",
  "outputs": [
    {
      "id": "19025a65-5395-41c9-af90-d7cca7fb6421",
      "position": 1,
      "status": "completed",
      "image_url": "https://cdn.example.com/generated-card-1.png",
      "width": 1200,
      "height": 1800,
      "caption": "The mill ran two shifts and the tea went out by the crate. Somebody's mother packed the first one. You can still taste that care in the cup."
    },
    {
      "id": "4f52bad2-2da3-4b36-93ac-03788f35daca",
      "position": 2,
      "status": "in_progress",
      "image_url": null,
      "width": null,
      "height": null,
      "caption": null
    }
  ],
  "created_at": "2026-07-24T15:00:00.000Z",
  "updated_at": "2026-07-24T15:00:04.000Z"
}
```

Stop polling when `status` is `completed`, `failed`, or `canceled`. Use
backoff between requests rather than polling continuously; see
[Polling](/concepts/polling). Reads have their own rate budget, so polling
never uses up the budget for starting new shoots; see
[Rate limits](/concepts/rate-limits).

Individual outputs can fail while the rest of the shoot succeeds, so check
each output's own `status`.

`caption` is the line printed in italics under the artwork. The `retro` look
writes a different one for every output, tied to what that specific card
shows; every other look returns `null`. If a caption is present it is part of
the card, so take it with the image.

## List a product's photoshoot creatives

Every completed photo for a product stays retrievable without tracking
individual photoshoot IDs. This returns only completed, customer-facing
photoshoot outputs; it does not return templates, moodboards, failed attempts,
or intermediate assets:

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

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "data": [
    {
      "id": "19025a65-5395-41c9-af90-d7cca7fb6421",
      "type": "photoshoot",
      "photoshoot_id": "e8766ffd-66f7-47c9-86bc-0d93e6868d06",
      "image_url": "https://cdn.example.com/generated-shot-1.png",
      "width": 1024,
      "height": 1024,
      "caption": null,
      "created_at": "2026-07-25T15:00:04.000Z"
    }
  ],
  "next_cursor": null
}
```

`type` defaults to `photoshoot` and is the only workflow supported today. Use
`next_cursor` unchanged to retrieve the next page. The same list is available
across every creative type with `GET /creatives`; see
[Creatives](/concepts/creatives).

## List photoshoots

`GET /photoshoots` lists photoshoot summaries newest first, filterable by
`product_id`, with the same cursor pagination. A summary shows progress
(`output_count`, `completed_output_count`); retrieve a photoshoot for its
outputs.
