For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Contact usJoin the Discord
ManualAPI GuideAPI Reference
  • Core API
    • Messages
    • Async messages
    • Embeddings
  • Tools & Skills
    • Built-in Tools
    • Skills
  • Documents
    • Ingestion
    • Async ingestion
LogoLogo
Contact usJoin the Discord
On this page
  • Lifecycle
  • Async ingest
  • Poll for status
  • Async delete
  • Worker setup
Documents

Async ingestion

Was this page helpful?
Previous
Built with

For large files or batches, use the async endpoints to avoid holding the HTTP connection open. Jobs are processed by a background worker (Celery) and can be polled for status.

Async jobs require a Celery worker running alongside the API server. Start one with make celery.

This feature requires to have the worker extra enabled in your application. If you are adding storage to an existing application, make sure to run the sync command after enabling the module:

$uv sync --inexact worker

Lifecycle

POST /v1/artifacts/ingest/async → task_id (pending)
│
▼
GET /v1/artifacts/ingest/async/{task_id} ←─ poll until done

Async ingest

$curl -X POST http://localhost:8080/v1/artifacts/ingest/async \
> -H "Content-Type: application/json" \
> -d '{
> "ingest_body": {
> "file_path": "/path/to/large-document.pdf",
> "collection": "my-collection"
> }
> }'

Response:

1{"task_id": "task_01abc..."}

Poll for status

$curl http://localhost:8080/v1/artifacts/ingest/async/task_01abc...

Response:

1{
2 "task_id": "task_01abc...",
3 "task_status": "SUCCESS",
4 "task_result": {...}
5}

Status values: PENDING · SUCCESS · FAILURE · REVOKED

Poll until task_status is SUCCESS or FAILURE.


Async delete

$curl -X POST http://localhost:8080/v1/artifacts/delete/async \
> -H "Content-Type: application/json" \
> -d '{"delete_body":{"collection":"my-collection","artifact":"<artifact-id>"}}'
$# → {"task_id": "task_01xyz..."}
$
$curl http://localhost:8080/v1/artifacts/delete/async/task_01xyz...

Worker setup

$# Start a worker
$make celery
$
$# Monitor workers (optional Flower UI at http://localhost:5555)
$make flower

The broker is configured in settings.yaml under celery.broker_mode. Supported options: redis, rabbitmq, local.