---
title: "Read an upload request"
method: GET
path: "/file/upload-request/{id}"
tags: ["Files"]
---

# Read an upload request

`GET /file/upload-request/{id}`

## Request

- Base URL: `https://api.elaichi.ai`
- URL: `https://api.elaichi.ai/file/upload-request/{id}`
- Auth: HTTP bearer

Returns one upload request. It reports the request’s status, limits, deadline and files, to the person who made it. `404` for anyone else and for an id that does not exist, the same answer, so the page can say “this isn’t for this account” without confirming that a request exists.

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string

## Response `200`

OK

- object
  - `request_id` string: Request id (`fupr_…`).
  - `status` 'open' | 'confirmed' | 'expired': `open`: waiting for the person (files may be added, removed, confirmed). `confirmed`: they approved; the staged files are now theirs. `expired`: the deadline passed unconfirmed with nothing still uploading. A request whose upload STARTED before the deadline stays open until that upload finishes, and each finished file keeps it open for at least five more minutes, so someone mid-upload is never told it expired.
  - `purpose` string: What the files are for, as the asker said it.
  - `requester` string: Who is asking: the connected app’s name, or “Elaichi assistant”.
  - `limits` object
    - `max_files` integer: Files at most. 10.
    - `max_file_bytes` integer: The most one file may be. 95 MiB, or the request’s lower setting.
    - `max_total_bytes` integer: The most the whole request may hold. 250 MiB.
    - `accept` string[], nullable: Allowed media types (`image/*`, `application/pdf`) and extensions (`.csv`); null means anything.
  - `created_at` string, date-time
  - `add_files_until` string, date-time: Ten minutes after creation, fixed. No new file can be reserved after it; the person can still send the files they added.
  - `expires_at` string, date-time: The last moment the person can confirm (Send). Starts at `add_files_until`; it moves out when an upload finishes or an upload that was running ends without landing, never past 35 minutes after creation.
  - `upload_page_url` string: The Elaichi app page where the person confirms. Carries no secret: only the signed-in person who made the request can use it.
  - `files` object[]: At most `limits.max_files`.
    - `file_id` string
    - `filename` string
    - `size_bytes` integer, nullable
    - `mime` string, nullable
    - `state` 'uploading' | 'staged' | 'ready' | 'stalled'

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `429`: Rate limited

---

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