---
title: "Upload File"
method: POST
path: "/api/products/{product_id}/files"
tags: ["products"]
---

# Upload File

`POST /api/products/{product_id}/files`

## Request

- Base URL: `https://api.usecrow.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.usecrow.ai/api/products/{product_id}/files`
- Auth: none declared. Required headers: `authorization`
- TypeScript: <https://skmtc.dev/usecrow/apis/crow-backend-multi-tenant-saas/docs/api/products/:product_id/files/post.ts> (a function with typed inputs; its response is checked against the schema)

Upload a document to product's knowledge base (direct upload for small files < 4.5MB)

Returns job_id for polling upload status.
For files > 4.5MB, use GET /upload-url and POST /files/from-s3 instead.

## Path parameters

- `product_id` string, required

## Headers

- `authorization` string, required

## Request body `multipart/form-data`

- BodyUploadFileApiProductsProductIdFilesPost
  - `file` string, binary, required
  - `enable_multimodal` boolean

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/usecrow/apis/crow-backend-multi-tenant-saas.md) - [All operations](https://skmtc.dev/usecrow/apis/crow-backend-multi-tenant-saas/llms.txt) - [OpenAPI document](https://skmtc.dev/usecrow/apis/crow-backend-multi-tenant-saas/revisions/b2950af46532?raw)
