Skip to content
Connect an agent

Media

List files

Newest first.

GET/v1/media

TL;DR

QuestionAnswer
What does it do?List files.
What does it need?An API key or an OAuth access token.
What does it take?limit, startingAfter in the query string.
What does it return?Status 200 with a body of type MediaList.
In the SDK?flung.media.list()
What can go wrong?401 Missing, unknown, revoked or expired API key; 422 The request failed validation; 429 Too many requests for this credential; wait for retry-after seconds. Every failure has the same error shape.

What it does

Newest first. Pass the last id of a page as startingAfter to get the next one.

Example

bash
curl -X GET 'https://api.flung.dev/v1/media' \  --header "Authorization: Bearer $FLUNG_API_KEY"

A successful answer looks like this:

json
{  "data": [    {      "id": "med_aaaaaaaaaaaaaaaaaaaaaaaa",      "contentType": "image/jpeg",      "filename": "string",      "bytes": 1,      "status": "pending",      "preview": {},      "createdAt": "2026-11-01T09:00:00.000Z"    }  ],  "hasMore": true}

Query parameters

FieldTypeRequiredDescription
limitintegerno
startingAfterstringnoThe id of the last file of the previous page.

Responses

StatusMeaningBody
200A page of files.MediaList
401Missing, unknown, revoked or expired API key.Error
422The request failed validation.Error
429Too many requests for this credential; wait for retry-after seconds.Error

Response body

A 200 answer has the type MediaList.

FieldTypeRequiredDescription
dataMedia[]yes
data[].idstringyes
data[].contentTypeMediaTypeyesWhat the file really is, read from its first bytes once uploaded.
data[].filenamestring | nullyes
data[].bytesinteger | nullyes
data[].status"pending" | "processing" | "ready" | "failed"yespending until its bytes arrive; ready once a post can use it.
data[].previewobject | nullyesVideos only, where previews are set up: a thumbnail. Read the file again while processing.
data[].preview.status"processing" | "ready" | "failed" | "skipped"yesskipped when the video is over 100 MB or this month's thumbnail allowance is used up. Posts never wait for a preview; they use the file as uploaded.
data[].preview.thumbnailUrlstring | nullyesA JPEG frame one second in, 640 pixels wide, at an address that does not expire.
data[].preview.hlsUrlstring | nullyesAlways null for now: streaming versions are not made.
data[].preview.dashUrlstring | nullyesAlways null for now.
data[].preview.durationSecondsnumber | nullyesAlways null for now.
data[].createdAtstringyes
hasMorebooleanyes

See also

DocWhy
API referenceEvery endpoint
SchemasEvery request and response type
ErrorsEvery error code and what to do about it