---
title: "Poll the ingest status of up to 100 assets"
method: POST
path: "/api/v1/assets/status"
tags: ["Asset Management"]
---

# Poll the ingest status of up to 100 assets

`POST /api/v1/assets/status`

## Request

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

Where a batch of your assets is in ingest, in one call — the poll after an upload or a URL
ingest, instead of GET /api/v1/assets/{id} per asset per tick. PROCESSING is still running;
DONE and FAILED are final. `width` and `height` appear once ingest has measured them; a FAILED
asset carries `error` — `retryable: false` means the file itself cannot be read.

Nothing is signed and nothing is written to the audit log: the answer is your own assets'
progress, and IDs that are not yours are absent rather than reported. A POST only because a
batch of ids does not fit a query string, so it takes no Idempotency-Key — a replay would
answer a stale status.

USE THIS WHEN:
- Waiting for uploaded or URL-ingested assets to finish (poll every one or two seconds)

DO NOT USE WHEN:
- You need the whole asset → GET /api/v1/assets/{id} once it is DONE
- You want the bytes → GET /api/v1/assets/{id}/content

## Request body

- AssetStatusRequest: Asset IDs to poll, at most 100
  - `ids` string[], required: Asset IDs to poll: 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)
