Skip to content
Sign in Waitlist

Get media

GET /v1/media/:id scope read

One media item (with publicUrl once it is ready; videos also include durationMs, width and height when the file header provides them; images include width and height).

HeadersAuthorization: Bearer praeko_… and X-Praeko-Contract: en. Always send both.

Legacy Portuguese alias (still answered, marked as deprecated): /v1/midia/:id.

Parameters

Name In Description
id path Media item id.

Example

curl "https://praeko.app/v1/media/01KA3VQ7M2T9XE4HB8N5RZ6C0D" \
  -H "Authorization: Bearer $PRAEKO_KEY" \
  -H "X-Praeko-Contract: en"

Response

Success status When
200 Success.
Response 200
{
  "id": "01KA3VQ7M2T9XE4HB8N5RZ6C0D",
  "type": "video",
  "name": "video.mp4",
  "mime": "video/mp4",
  "size": 18874368,
  "state": "ready",
  "createdAt": "2026-11-07T14:02:11.482Z",
  "publicUrl": "https://praeko.app/v1/m/01KA3VQ7M2T9XE4HB8N5RZ6C0D/k7Qm2vXz9Rt4Lp8Wc3Nd6Hy1Bs5Fa0J/video.mp4",
  "durationMs": 58240,
  "width": 1080,
  "height": 1920
}

While state is uploading, the response includes parts ([{ n, size }], the parts received so far). Once it is ready, publicUrl is included; videos also include durationMs, width and height when the container provides them.

Errors

Status code When
404 media_not_found The media item does not exist.

Errors on any route

Status code When
401 unauthorized The Authorization: Bearer … header is missing.
401 invalid_api_key The key does not exist.
401 revoked_api_key The key has been revoked.
401 expired_api_key The key has expired.
403 forbidden The key's scope is not enough for this route (see the scope badge).
429 rate_limited The per-minute request limit was exceeded.

The body of every error is { "error": { "code", "message", "details"? } }. See all error codes.

Try it

Try it

The live test uses your key and your account. It stays off when you are not signed in.

Sign in to try it
Question or mistake on this page? contato@praeko.appView .md

Type to search pages, routes and error codes.