---
title: "List photos and videos in an album"
method: GET
path: "/events/{id}/photos"
tags: ["Photos"]
---

# List photos and videos in an album

`GET /events/{id}/photos`

## Request

- Base URL: `https://findme.photo/api/v1`
- URL: `https://findme.photo/api/v1/events/{id}/photos`
- Auth: HTTP bearer

Lists an album's photos and videos, newest first, cursor-paginated like `listEvents`. Without `status`, the list hides failed uploads and unfinished upload slots older than 15 minutes, but keeps recent `pending` slots, so it shows what is already in the album (use it to skip files before uploading). Pass `status=pending` or `status=error` to see the hidden rows.

## Query parameters

- `limit` integer
- `cursor` string
- `status` 'pending' | 'completed' | 'error'
- `media_type` 'photo' | 'video'

## Response `200`

A page of photos.

- object
  - `data` Photo[], required
    - `id` string, uuid, required
    - `event_id` string, uuid, required
    - `filename` string, nullable, required: Original filename.
    - `media_type` 'photo' | 'video', required
    - `size_bytes` integer, nullable, required: Stored size in bytes (declared size until confirmed).
    - `status` string, required: Processing status. Through this API: `pending` (slot reserved, not confirmed), `indexing` (photo confirmed, face indexing running), `completed`, `error`. Other upload paths may write other values.
    - `width` integer, nullable, required
    - `height` integer, nullable, required
    - `taken_at` string, date-time, nullable, required
    - `thumbnail_url` string, uri, nullable, required: Public poster image for a video (the same file the guest gallery shows). Null for photos.
    - `created_at` string, date-time, required
  - `meta` ListMeta, required
    - `request_id` string, required
    - `has_more` boolean, required: True when another page exists.
    - `next_cursor` string: Present only when `has_more` is true. Pass as `cursor` to get the next page.

## Other responses

- `400`: `invalid_request`: invalid id, query parameter, cursor or body. Validation failures list `details.issues`.
- `401`: `missing_or_invalid_token` (no or malformed `Authorization: Bearer fm_live_...` header) or `invalid_token` (unknown or revoked key).
- `403`: `tier_not_eligible`: the plan does not include API access (includes `upgrade_url`), or does not include the feature this endpoint needs.
- `404`: `not_found`: no such resource, or it is not yours, or (for albums) it is deleted.
- `429`: `rate_limited` (per-minute limit; `retry_after_seconds`) or `quota_exceeded` (monthly quota; `retry_after_seconds`, `resets_at`).
- `500`: `internal_error`: something failed on our side. Safe to retry reads; include `request_id` when reporting.

---

[API](https://skmtc.dev/findme/apis/findme-photo-api.md) · [All operations](https://skmtc.dev/findme/apis/findme-photo-api/llms.txt) · [OpenAPI document](https://skmtc.dev/findme/apis/findme-photo-api/revisions/b68670b742a9?raw)
