---
title: "Upload File"
method: POST
path: "/files"
tags: ["files"]
---

# Upload File

`POST /files`

## Request

- Base URL: `https://api.presentations.ai/api/v1`
- URL: `https://api.presentations.ai/api/v1/files`
- Auth: HTTP bearer

Upload a file and enqueue extraction.

## Response `201`

Successful Response

- ExternalFileResponse: External upload response keyed only by file ID.
  - `file_id` string, uuid, required
  - `filename` string, required
  - `status` 'CREATED' | 'RUNNING' | 'COMPLETED' | 'FAILED', required: Lifecycle state of an async task.
  - `created_at` string, date-time, required

## Other responses

- `401`: Missing, malformed, expired, or revoked Bearer API key.
- `403`: The API key, workspace role, project scope, or plan lacks permission.
- `422`: A path, query, header, or request-body field failed validation.
- `429`: The caller exceeded the API rate limit.
- `500`: Unexpected server failure. Retry only idempotent operations and retain trace_id.

---

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