---
title: "Explain one send"
method: GET
path: "/api/v1/ingest/{ingestionId}/explain"
tags: ["debugging"]
---

# Explain one send

`GET /api/v1/ingest/{ingestionId}/explain`

## Request

- Base URL: `https://api.past.dev`
- URL: `https://api.past.dev/api/v1/ingest/{ingestionId}/explain`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Where one send got to and what to do next: its phase, why it stopped when it did, what it did with each data point, and one sentence naming the step to take.

## Path parameters

- `ingestionId` string, uuid, required

## Response `200`

The diagnosis of the send.

- IngestionDiagnosis
  - `ingestionId` string, uuid, nullable: Null for a call refused before a send existed.
  - `requestId` string, nullable
  - `status` integer, nullable: The status the call answered, while the log holds it.
  - `errorCode` string, nullable
  - `acceptedAt` string, date-time, nullable
  - `settledAt` string, date-time, nullable
  - `phase` 'queued' | 'processing' | 'captured' | 'indexed' | 'failed' | 'nothing-changed' | 'null', nullable
  - `failure` IngestionStop
    - `code` 'model-unavailable' | 'model-response-unreadable' | 'index-unavailable' | 'content-rejected' | 'internal', required
    - `message` string, required
    - `retryable` boolean, required: False only for content-rejected: the content has to change first.
  - `items` IngestionDiagnosisItem[]: The first 100 data points the send carried.
    - `dataPointId` string, required
    - `revision` integer, required
    - `status` 'created' | 'updated' | 'unchanged', required
    - `searchable` boolean, required: Whether the text you sent can be recalled yet.
    - `memories` integer, required: The memories drawn from this revision that are current and searchable.
    - `sourceId` string, uuid, nullable, required: The id the lineage read takes as a root.
  - `itemsOmitted` integer
  - `credits` number
  - `next` string, required: One sentence naming the step to take.

## Other responses

- `400`: The request is malformed or violates a field constraint. Match behavior on the response code field.
- `401`: missing-api-key: no bearer. malformed-api-key: the header or the key has the wrong shape, or an agent token was sent to a route that accepts keys only. unauthorized: the key is unknown, expired, revoked, or of the kind this route refuses, or the agent token is invalid or expired.
- `403`: project-archived: the project of the key, or the project an agent token names, is archived. Unarchive it in the console to resume. insufficient-scope: the agent token does not carry the scope of the route.
- `404`: No matching ingestion exists in the selected project.
- `default`: Any other failure uses the same JSON error envelope.

---

[API](https://skmtc.dev/past/apis/past-dev-memory-api.md) · [All operations](https://skmtc.dev/past/apis/past-dev-memory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/past/apis/past-dev-memory-api/revisions/3ddccc19f0eb?raw)
