> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.coperniq.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.coperniq.io/_mcp/server.

## File uploads: streaming support, reliability fixes, and limits

### What’s new?

* Streamed multipart uploads for files:
  * POST `/projects/{projectId}/files/upload`
  * POST `/requests/{requestId}/files/upload`
* You can provide `phaseInstanceId` either as a form field or as a `?phaseInstanceId=` query parameter; the API will include it once in the forwarded payload.

### Fixes and improvements

* Robust parsing: files are fully consumed when building the outgoing `multipart/form-data`.
* Getting a project returns the project manager data.
* Allow files to be added in a certain project or request phase.

### Usage notes

* Send `multipart/form-data` with a `file` part; optional fields may include `phaseInstanceId`.
* For non‑multipart uploads, send the raw bytes as the request body and pass filename/content type via:
  * Headers `X-File-Name` and `X-File-Content-Type` (case‑insensitive), or
  * Query params `name` and `content_type`.

### Platform limits

* The API enforces a 10 MB request limit. With base64 encoding and multipart overhead, practical max payload is \~6–7 MB.
* For larger uploads, use an out‑of‑band approach (e.g., presigned upload) and then create the file record by URL.

### Compatibility

* No response shape changes. Successful uploads return: `id`, `name`, `downloadUrl`, `type`, `updatedAt`, `createdAt`, `companyId`, `metaData`, `source`, `createdByUser`, `isArchived`.