---
title: "Save Intake Progress (Public)"
method: POST
path: "/api/public/intake/save-progress"
tags: ["Public Intake Requests"]
---

# Save Intake Progress (Public)

`POST /api/public/intake/save-progress`

## Request

- Base URL: `https://api.signalshq.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.signalshq.io/api/public/intake/save-progress`
- Auth: none declared. Required headers: `X-Intake-Token`

Save progress without completing. Updates last-saved timestamp. Notifies all tenant CPAs only when there are new uploads since last save and debounce has passed. No uploads -> no notification. Call after upload(s) complete (e.g. Save and Exit) so CPAs are notified. Uses X-Intake-Token header. No authentication required.

## Headers

- `X-Intake-Token` string, required: Secure intake token for document upload request

## Response `200`

Successful Response

- SaveProgressResponse: Schema for save-progress response (client saves without completing)
  - `success` boolean: Whether the save was successful
  - `message` string: Short message confirming save
  - `saved_at` string, date-time, required: When the progress was saved (server time)
  - `new_uploads_count` integer, required: Number of new uploads since last save (used for CPA notification decision)
  - `cpas_notified` boolean, required: Whether CPAs were notified this time (only when new uploads and debounce passed)

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/signalshq/apis/signals-api.md) - [All operations](https://skmtc.dev/signalshq/apis/signals-api/llms.txt) - [OpenAPI document](https://skmtc.dev/signalshq/apis/signals-api/revisions/2c22af3b5576?raw)
