---
title: "Sign preview URLs for a page of assets"
method: POST
path: "/api/v1/assets/preview-urls"
tags: ["Asset Management"]
---

# Sign preview URLs for a page of assets

`POST /api/v1/assets/preview-urls`

## Request

- Base URL: `https://api.imagestep.dev`
- URL: `https://api.imagestep.dev/api/v1/assets/preview-urls`
- Auth: API key in header `Authorization`

Signs URLs for the `preview` renditions (WebPs at most 400 px wide) of up to 100 of your assets in one
call, each valid for 15 minutes (`ttlSeconds`), and reports each asset's ingest status
alongside. IDs that are not yours are left out rather than reported. A read that is a POST only
because a page of ids does not fit a query string, so it takes no Idempotency-Key — a replay would
hand back stale signatures.

USE THIS WHEN:
- Painting thumbnails for a listing page (one call per page, not one per image)

DO NOT USE WHEN:
- Waiting for assets to finish ingest → POST /api/v1/assets/status (nothing signed)
- You want the full-size bytes → GET /api/v1/assets/{id}/content
- You want a stable public URL → publish the asset and use `publicUrl`

## Request body

- PreviewUrlsRequest: Request object for signing preview URLs
  - `ids` string[], required: Asset IDs to sign: at least one, at most 100; a repeated id is answered once

## Response `200`

OK

## Other responses

- `400`: `invalid_param` on `ids` — empty, or more than 100 ids
- `429`: Rate limited — `error.code` is `rate_limited` and `retryable` is true. `Retry-After` says how many seconds to wait.

---

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