---
title: "Errors"
description: "A JSON body with code, status, debugMessage and data. Match on the code."
canonical: https://past.dev/docs/memory-api/errors
last-updated: 2026-08-26
---
# Errors

> A JSON body with code, status, debugMessage and data. Match on the code.

Product: past.dev Memory API. Source: https://past.dev/docs/memory-api/errors

```400badrequest
{
  "code": "content-required",
  "status": 400,
  "debugMessage": "Content is required",
  "data": null
}
```

| Response | When |
| --- | --- |
| **401** (unauthorized) | Missing, malformed, or expired API key. Keys start with `past_sk_`. |
| **400** (content-required) | `POST /api/v1/ingest` with empty or whitespace-only content. |
| **400** (query-required) | `POST /api/v1/recall` or `/answer` with an empty query. |
| **400** (group-too-long) | The group key exceeds 200 characters. |
| **400** (no-project) | The organization has no project. This should not happen on a provisioned key; tell us if it does. |
| **400** (unknown-project) | The passed `projectId` is not a project of the key's organization. |
| **400** (ambiguous-project) | The organization has several projects and no `projectId` was passed. |
| **400** (agent-mode-unavailable) | `mode: "agent"` on `/answer`. Only `pipeline` is available today. |
| **400** (schema-with-agent-mode) | `responseSchema` sent together with `mode: "agent"`. |
| **400** (invalid-response-schema) | `responseSchema` is not a valid JSON Schema. |
| **404** (not-found) | Unknown `ingestionId` on `GET` or `DELETE /api/v1/ingest/{ingestionId}`. |
| **503** (organization-not-ready) | The organization's workspace is still being prepared. Retry shortly. |
| **503** (pipeline-disabled) | Ingestion's background pipeline is disabled on the server. Not expected in production; tell us if you see it. |

`code` is a stable identifier: match on it and the status. `debugMessage` is human wording and may improve without notice. `data` carries structured detail when an error has any, else null.