---
title: "Ingest Sql"
method: POST
path: "/v1/ingest/sql"
tags: ["ingest"]
---

# Ingest Sql

`POST /v1/ingest/sql`

## 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/sql`
- Auth: none declared

## Headers

- `X-Canvas` string, nullable
- `X-API-Key` string, nullable
- `Authorization` string, nullable

## Request body

- SqlIngestIn
  - `connection_id` string, nullable
  - `driver` string, nullable
  - `database` string, nullable
  - `host` string, nullable
  - `port` integer, nullable
  - `user` string, nullable
  - `password` string, nullable
  - `query` object, nullable
  - `tables` string[], nullable
  - `table_types` object, nullable
  - `classify` string, nullable
  - `max_rows_per_table` integer
  - `source_app` string

## Response `200`

Successful Response

- SqlIngestOut
  - `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[]
  - `nodes_written` integer, required
  - `edges_written` integer, required
  - `tables` string[], required
  - `source_app` string, required

## 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)
