---
title: "Upload"
method: POST
path: "/api/v1.0/public/file_uploads/"
tags: ["/file_uploads"]
---

# Upload

`POST /api/v1.0/public/file_uploads/`

Upload financial documents (PDF, PNG, JPEG, XLSX) with a statement_type and optional portfolio_id.

Supported file formats: `.pdf`, `.xlsx`, `.png`, `.jpg`, `.jpeg`

You can optionally specify `source_firm_id` to indicate the originating firm (by ID or name).

If the file fails validation (e.g. password-protected, corrupt, empty), a `422` response is returned with a specific `error_code`. See the 422 response schema for all possible codes.

## Response `201`

File uploaded successfully

- object
  - `id` integer, required — File upload ID
  - `status` string, required — Initial upload status
  - `portfolio_id` integer — Portfolio ID

## Other responses

- `400` — Bad request — invalid parameters or upload failure
- `403` — Forbidden — no access to the specified portfolio
- `422` — Unprocessable Entity — file failed validation
- `500` — Internal server error

---

[API](https://skmtc.dev/powderfi/apis/powder.md) · [All operations](https://skmtc.dev/powderfi/apis/powder/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/powderfi/powder/revisions/e0fbc27bde61/schema)
