---
title: "Save a whole message in the archive"
method: POST
path: "/api/v1/rest/email/messages/{id}/archive"
tags: ["Email & PEC"]
---

# Save a whole message in the archive

`POST /api/v1/rest/email/messages/{id}/archive`

## Request

- Base URL: `https://api.custodo.ai`
- URL: `https://api.custodo.ai/api/v1/rest/email/messages/{id}/archive`
- Auth: HTTP bearer

Files one whole message — its `id` from email_search or email_get — as a document in the archive (Archivio), where it can be preserved (conservazione a norma). Needed only for a mailbox whose «Salva tutti i messaggi in Archivio» is off (`messages_to_documents: false` in email_list_accounts): there email_get reports `archive_state: "skipped"`. Every other message is filed automatically, and calling this for it returns that document with `created: false`. For a sent PEC its ricevute (accettazione, consegna) are filed beside it unless `include_receipts` is false. Nothing is downloaded or re-uploaded. ⚠ A message in the archive is a record: after 24 hours it can no longer be removed, so file only what the user asked for. A caller who is not an admin needs the mailbox among their Archivio-visible mailboxes, or it fails with PERMISSION_DENIED and `details.sourcePartition` — do not retry; an administrator assigns the mailbox.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Tenant-Id` string, uuid

## Request body

- object
  - `include_receipts` boolean: For a certified message, file its ricevute too. Default true.

## Response `200`

Done. `data` is the tool’s own answer.

- RestResult
  - `ok` true, required
  - `data` unknown, required

## Other responses

- `400`: The arguments did not validate: `error.message` names the field, what it expects and what arrived.
- `401`: No API key, or one that is malformed, unknown, revoked or expired.
- `403`: The call never ran: the module is off for this organisation, the credential lacks the permission or the module, the tier does not cover it, or the tool is destructive and the key was not minted for that.
- `404`: Nothing with that id in this organisation.
- `409`: The record is in a state that does not allow it — under legal hold, already sent, already closed. `error.code` says which.
- `422`: The tool ran and refused, in a sentence of its own (`TOOL_REFUSED`): the message says what to change. Retrying the same call will not help.
- `429`: The API key has spent its minute, or its day. Every request a key makes counts. See `Retry-After`.

---

[API](https://skmtc.dev/custodo/apis/custodo-integrazioni.md) · [All operations](https://skmtc.dev/custodo/apis/custodo-integrazioni/llms.txt) · [OpenAPI document](https://skmtc.dev/custodo/apis/custodo-integrazioni/revisions/16d336d3ec2a?raw)
