---
title: "Bulk Upload Media"
method: POST
path: "/api/v1/entities/bulk-media"
tags: ["Entities"]
---

# Bulk Upload Media

`POST /api/v1/entities/bulk-media`

## Request

- Base URL: `https://app.aimrank.io` (the document declares no server; this is the origin it was published from)
- URL: `https://app.aimrank.io/api/v1/entities/bulk-media`
- Auth: API key in header `X-API-Key`

Bulk-create entities + their media in one upload.

Designed for the AI-lab use case: a creator drops 50 generated videos
that all share `{model: 'Veo3', prompt: '...'}` and just wants random
IDs assigned. Replaces the alternative of 50 round-trips of
POST /entities + POST /entities/{id}/media.

Limits:
- Up to 50 files per call (sync). Larger batches should chunk client-side.
- Total batch ≤ 1 GB (declared via Content-Length).
- All files must match the ranking's media_type. Mixed batches rejected.
- Per-file size still bounded by MEDIA_LIMITS (2 MB image, 10 MB audio, 200 MB video).

On per-file processing failure, the entity for that file is rolled back
and the error is returned in the response so the client can retry just
the failed ones — partial success is normal and expected for big batches.

## Response `201`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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