---
title: "Ingest Sources"
method: POST
path: "/api/v1/sources"
tags: ["sources"]
---

# Ingest Sources

`POST /api/v1/sources`

Enqueue a batch of sources for asynchronous ingestion. Fire-and-forget: returns 202 with a job_id you can poll via GET /jobs/{job_id}.

## Request body

- IngestSourcesRequest
  - `space_id` string, uuid, required
  - `sources` SourcePayload[], required
    - `content` string, required
    - `content_type` 'text' | 'markdown' | 'conversation' | 'html' | 'json' | 'pdf' | 'image' | 'audio' | 'video' — Today only `text` and `markdown` are processable.
    - `role` string
    - `visibility` 'private' | 'org'
    - `meta` object, nullable

## Response `202`

Accepted — job enqueued

- IngestAcceptedResponse
  - `job_id` string, uuid, required
  - `status` 'pending', required
  - `source_ids` string[], required
  - `jobs` object[], required — One entry per job the request was split into.
    - `job_id` string, uuid, required
    - `source_ids` string[], required

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `404` — Not found
- `429` — Rate limited / quota / pending cap
- `503` — Queue full

## Changes

- **2026-08-25** `55772030ddd3` — 2 breaking, 15 warning, 1 info
  - the response's body type/format changed from `object`/`` to ``/`` for status `429`
  - removed the required property `detail` from the response with the `429` status
  - removed the optional property `code` from the response with the `400` status
  - removed the optional property `code` from the response with the `401` status
  - …14 more
- **2026-08-19** `b38f8e603649` — 1 breaking, 17 info
  - the response's body type/format changed from ``/`` to `object`/`` for status `429`
  - removed `#/components/schemas/RateLimitedBody, #/components/schemas/QuotaExceededBody, #/components/schemas/SourceErrorBody` from the response body `anyOf` list for the response status `429`
  - added the optional property `code` to the response with the `400` status
  - added the optional property `code` to the response with the `401` status
  - …14 more

[Change history](https://skmtc.dev/crosmos/apis/crosmos-api/changes/api/v1/sources/post.md)

---

[API](https://skmtc.dev/crosmos/apis/crosmos-api.md) · [All operations](https://skmtc.dev/crosmos/apis/crosmos-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/crosmos/crosmos-api/revisions/55772030ddd3/schema)
