---
title: "Get upload session status"
method: GET
path: "/api/artifact-uploads/{upload_id}"
tags: ["Uploads"]
---

# Get upload session status

`GET /api/artifact-uploads/{upload_id}`

## Request

- Base URL: `https://courseprofiler.com`
- URL: `https://courseprofiler.com/api/artifact-uploads/{upload_id}`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer
  - none

## Path parameters

- `upload_id` string, required

## Response `200`

Upload session status

- ArtifactUploadSession
  - `upload_id` string, required
  - `status` 'waiting_for_upload' | 'uploaded' | 'completed' | 'failed' | 'expired' | 'cancelled', required
  - `upload` ArtifactUploadTarget
    - `method` 'PUT', required
    - `url` string, uri, required: Private pre-signed direct-upload URL.
    - `headers` object: Headers that must be replayed exactly on the direct PUT upload request. Missing or changed headers can invalidate the pre-signed URL.
    - `expires_at` string, date-time, required
    - `max_size_bytes` integer, required
  - `complete_url` string
  - `artifact_id` string: Present after completion.
  - `created_at` string, date-time
  - `expires_at` string, date-time, required
  - `warnings` ApiProblem[]
    - `code` string, required
    - `message` string, required
    - `severity` 'info' | 'warning' | 'error', required
    - `field` string
    - `details` object

## Other responses

- `404`: Resource not found
- `410`: Upload session expired

---

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