---
title: "Upload file for retrieval"
method: POST
path: "/v1/projects/{project_id}/retrieval/file"
tags: ["retrieval"]
---

# Upload file for retrieval

`POST /v1/projects/{project_id}/retrieval/file`

## Request

- Base URL: `https://api.connic.co`
- URL: `https://api.connic.co/v1/projects/{project_id}/retrieval/file`
- Auth: HTTP bearer

Uploads a file of up to 25 MB as multipart form data for managed semantic retrieval. Supported formats are PDF, PNG, JPG/JPEG, GIF, WebP, TXT, Markdown, CSV, JSON, JSONL, YAML, and LOG. The file is processed, chunked, and embedded asynchronously; the entry appears in `GET /retrieval/entries` once indexing finishes.

Required permission: `retrieval.manage`.

## Path parameters

- `project_id` string, uuid, required

## Query parameters

- `environment_id` string, uuid, required: Environment ID from `GET /environments`.
- `namespace` string, nullable: Dot-separated namespace such as `docs.api`, up to 10 levels. Omit for the default namespace.
- `entry_id` string, nullable: Entry identifier. Uploading again with the same ID and namespace replaces the entry. Defaults to the file name.

## Response `202`

Successful Response

- PublicRetrievalIngestionResponse
  - `job_id` string, required: ID of the ingestion job that chunks and indexes the content.
  - `status` string, required: Job status at submission, `pending`.
  - `entry_id` string, required: Entry the content is stored under. Generated when not supplied.

## Other responses

- `401`: Missing or invalid API key.
- `403`: The API key lacks the required permission or access to the environment.
- `422`: Validation Error
- `429`: Rate limit exceeded.

---

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