---
title: "GET /api/v1/{context_id}/documents/{id}"
method: GET
path: "/api/v1/{context_id}/documents/{id}"
---

# GET /api/v1/{context_id}/documents/{id}

`GET /api/v1/{context_id}/documents/{id}`

Gets a Layer 0 knowledge document by id

## Path parameters

- `context_id` string, required
- `id` string, required

## Response `200`

Document

- DocumentJson
  - `contentHash` string, required
  - `createdAt` string, date-time, required
  - `error` string, nullable
  - `id` string, required
  - `mimeType` string, required
  - `processingCompletedAt` string, date-time, nullable
  - `processingStartedAt` string, date-time, nullable
  - `sizeBytes` integer, required
  - `source` string, required
  - `status` 'queued' | 'extracting' | 'chunking' | 'embedding' | 'keywording' | 'extracting_nodes' | 'ready' | 'failed', required — Lifecycle state of a [`Document`] in the ingestion pipeline. Matches the SurrealQL `ASSERT $value IN [...]` on `document.status` in `V1__schema.surql`. The `Keywording` state is reserved for Phase C; in Phase A the pipeline transitions straight from `Embedding` to `Ready`.
  - `title` string, required
  - `updatedAt` string, date-time, required
  - `version` integer, required

## Other responses

- `401` — Unauthorized
- `404` — Document not found
- `422` — Invalid context id
- `500` — Unexpected error

---

[API](https://skmtc.net/surrealdb/apis/spectron.md) · [All operations](https://skmtc.net/surrealdb/apis/spectron/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/surrealdb/spectron/versions/52b41ab517b6/schema)
