---
title: "Ingest Text"
method: POST
path: "/v1/ingest/text"
tags: ["ingest"]
---

# Ingest Text

`POST /v1/ingest/text`

## Request

- Base URL: `https://api.june.januraine.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.june.januraine.ai/v1/ingest/text`
- Auth: none declared

## Headers

- `X-LLM-Key` string, nullable
- `X-LLM-Url` string, nullable
- `X-LLM-Model` string, nullable
- `X-Canvas` string, nullable
- `X-API-Key` string, nullable
- `Authorization` string, nullable

## Request body

- IngestTextIn
  - `text` string, required
  - `format` string
  - `source_app` string
  - `supersedes` string[]

## Response `200`

Successful Response

- IngestTextOut
  - `nodes_written` integer, required
  - `edges_written` integer, required
  - `format` string, required
  - `source_app` string, required
  - `engine` string
  - `hosted_degraded` boolean
  - `hosted_calls_total` integer
  - `hosted_calls_failed` integer
  - `hosted_auth_retries` integer
  - `hosted_auth_retries_recovered` integer
  - `hosted_last_error` string
  - `created` IngestReceipt: CH-2a mutation receipt — what THIS call did to the graph, by id. The created/updated split is the undo contract: a write can be reversed by tombstoning ``node_ids`` (its own creations) and never touches ``updated_node_ids`` (pre-existing knowledge it merely merged into). Canonical home (2026-08-08) — ``ingest_route`` re-exports it, so the file/sql routes' existing imports keep working.
    - `node_ids` string[]
    - `updated_node_ids` string[]
    - `edge_ids` string[]
  - `superseded` string[]
  - `supersedes_from` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/januraine/apis/june-ai.md) · [All operations](https://skmtc.dev/januraine/apis/june-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/januraine/apis/june-ai/revisions/097b95b163c7?raw)
