---
title: "Get upload status"
method: GET
path: "/uploads/{id}"
tags: ["File Uploads"]
---

# Get upload status

`GET /uploads/{id}`

Returns the current status and metadata of an upload. Poll this endpoint until status is 'ready', then use the returned assetId when creating posts.

## Path parameters

- `id` string, uuid, required

## Response `200`

Upload status and metadata. Response shape depends on status.

- union
  - UploadAwaitingUpload — Upload job is waiting for the file to be POSTed to the signed uploadUrl returned by POST /uploads/prepare.
    - `id` string, uuid
    - `status` 'awaiting_upload'
    - `createdAt` string, date-time
  - UploadPending — Upload is queued and waiting to be processed
    - `id` string, uuid
    - `status` 'pending'
    - `createdAt` string, date-time
  - UploadProcessing — Upload is being downloaded and processed
    - `id` string, uuid
    - `status` 'processing'
    - `createdAt` string, date-time
  - UploadReady — Upload is complete and ready to use. Use the assetId when creating posts.
    - `id` string, uuid
    - `status` 'ready'
    - `assetId` string, uuid — Asset ID to use when creating posts with attachments
    - `filename` string — Original filename of the uploaded file
    - `mimetype` string — MIME type of the file (e.g., image/jpeg, video/mp4)
    - `size` integer — File size in bytes
    - `width` integer, nullable — Width in pixels for images and videos
    - `height` integer, nullable — Height in pixels for images and videos
    - `duration` number, nullable — Duration in seconds for videos
    - `expiresAt` string, date-time — When the upload will expire if not used
    - `createdAt` string, date-time
    - `readyAt` string, date-time — When the upload finished processing
  - UploadFailed — Upload failed to process
    - `id` string, uuid
    - `status` 'failed'
    - `error` string — Error message describing why the upload failed
    - `createdAt` string, date-time
  - UploadExpired — Upload has expired and can no longer be used
    - `id` string, uuid
    - `status` 'expired'
    - `expiredAt` string, date-time — When the upload expired
    - `createdAt` string, date-time

## Other responses

- `401` — Unauthorized - Missing or invalid API key
- `404` — Not Found - Resource does not exist

---

[API](https://skmtc.net/tryordinal/apis/ordinal-api.md) · [All operations](https://skmtc.net/tryordinal/apis/ordinal-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tryordinal/ordinal-api/revisions/1d0792ff454f/schema)
