---
title: "Ingest Content Asynchronously"
method: POST
path: "/v1/artifacts/ingest/async"
tags: ["Artifacts", "Artifacts"]
---

# Ingest Content Asynchronously

`POST /v1/artifacts/ingest/async`

Initiate asynchronous ingestion of content from multiple sources

## Request body

- IngestAsyncBody — Request body for asynchronous URI ingestion.
  - `callback` Callback — Callback configuration for asynchronous task notifications.
    - `amqp` AMQP, required — AMQP configuration for message queue notifications.
      - `exchange` string, required — AMQP exchange name where task notifications will be published
      - `routing_key_done` string, nullable — Routing key used when publishing task completion notifications
      - `routing_key_progress` string, nullable — Routing key used when publishing task progress update notifications
      - `routing_key_error` string, nullable — Routing key used when publishing task error notifications
    - `properties` object, nullable — Additional properties and metadata to include with callback notifications
  - `ingest_body` IngestBody, required — Request body for ingesting content into the system for AI context.
    - `artifact` string, required — Unique identifier for the text being ingested within the collection
    - `collection` string — Collection name to group related documents for better organization and filtering
    - `input` union, required — Raw input data to be processed and ingested into the system. Can be a file (base64), URI, or plain text
      - FileArtifact — Input for base64 encoded files.
        - `type` 'file' — Input type discriminator
        - `value` string, required — Base64 encoded file content
      - UriArtifact — Input for remote URIs.
        - `type` 'uri' — Input type discriminator
        - `value` string, required — URI to download from
      - TextArtifact — Input for plain text content.
        - `type` 'text' — Input type discriminator
        - `value` string, required — Plain text content
    - `metadata` object, nullable — Optional metadata dictionary containing additional document information. If provided, must include 'file_name' with a valid file extension
  - `nodes` BaseNode[], nullable — Parsed nodes produced by parse_task, consumed by store_vectors_task.
    - `id_` string — Unique ID of the node.
    - `embedding` number[], nullable — Embedding of the node.
    - `extra_info` object — A flat dictionary of metadata fields
    - `excluded_embed_metadata_keys` string[] — Metadata keys that are excluded from text for the embed model.
    - `excluded_llm_metadata_keys` string[] — Metadata keys that are excluded from text for the LLM.
    - `relationships` object — A mapping of relationships to other node information.
    - `metadata_template` string — Template for how metadata is formatted, with {key} and {value} placeholders.
    - `metadata_seperator` string — Separator between metadata fields when converting to string.
    - `class_name` string — class name field.

## Response `200`

Successfully initiated ingestion task

- Task — Represents an asynchronous task that has been queued.
  - `task_id` string, required — Unique identifier for the asynchronous task, used to track progress and retrieve results

## Other responses

- `401` — Unauthorized
- `404` — Resource not accessible (for URI inputs)
- `422` — Invalid input format or request parameters

## Changes

- **2026-08-27** `4e828cf153c4` — 1 info
  - added the new optional request property `nodes`
- **2026-06-03** `7914e6f947be` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zylon-ai/apis/private-gpt-api/changes/v1/artifacts/ingest/async/post.md)

---

[API](https://skmtc.dev/zylon-ai/apis/private-gpt-api.md) · [All operations](https://skmtc.dev/zylon-ai/apis/private-gpt-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/zylon-ai/private-gpt-api/revisions/4e828cf153c4/schema)
