---
title: "save checkpoint"
method: POST
path: "/api/v1/run-memory/save_checkpoint"
tags: ["run-memory"]
---

# save checkpoint

`POST /api/v1/run-memory/save_checkpoint`

## Request

- Base URL: `https://cloudforbots.com`
- URL: `https://cloudforbots.com/api/v1/run-memory/save_checkpoint`
- Auth: HTTP bearer

Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last 20 per run, kept 30 days). Free watch-only saves nothing and returns would_save: exactly what would have been stored. Never put passwords or API keys in state.

## Headers

- `Idempotency-Key` string
- `X-Request-Id` string

## Request body

- object
  - `run_id` string, required: A stable id for this job that survives a crash, e.g. "invoice-import-oct". Use the same id when you restart.
  - `step` string, required: The step you just finished, e.g. "imported page 3 of 10".
  - `state` object, required: JSON state needed to resume.
  - `done` string[]: Optional list of completed item ids, so a resume skips them.

## Response `200`

Tool result (always includes request_id).

- object

## Other responses

- `400`: Bad JSON
- `401`: Missing or bad key
- `403`: Key limits (scopes) do not allow this tool or action
- `409`: Same Idempotency-Key still running
- `422`: Idempotency-Key reused on another route
- `429`: Over 20 requests/second for this key, or free daily limit
- `504`: Tool did not answer in time; retry with the same Idempotency-Key

---

[API](https://skmtc.dev/cloudforbots/apis/cloud-for-bots-api.md) · [All operations](https://skmtc.dev/cloudforbots/apis/cloud-for-bots-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cloudforbots/apis/cloud-for-bots-api/revisions/1afdb5648693?raw)
