---
title: "Release held mail to the agent"
method: POST
path: "/api/v1/holds/{id}/release"
tags: ["Agent inboxes"]
---

# Release held mail to the agent

`POST /api/v1/holds/{id}/release`

## Request

- Base URL: `https://supermailos.com`
- URL: `https://supermailos.com/api/v1/holds/{id}/release`
- Auth: HTTP bearer

The agent can read the conversation from now on, and `message.inbound` fires for it. A hold shows the worst reason among its messages; send the `reason` you reviewed, and if a worse email has arrived since, nothing is released (409).

## Path parameters

- `id` string, required

## Request body

- object
  - `reason` 'auth_failed' | 'blocked_sender' | 'not_allowlisted' | 'unverified_sender': The hold's reason as you reviewed it.

## Response `200`

Released.

- object
  - `hold` AgentHold, required
    - `id` string, required
    - `inboxId` string, required
    - `threadId` string, required: Hidden from the agent's key while held or dismissed.
    - `emailId` string, nullable
    - `sender` string, email, required
    - `reason` 'auth_failed' | 'blocked_sender' | 'not_allowlisted' | 'unverified_sender', required
    - `reasonText` string, required
    - `verdict` 'verified' | 'unverified' | 'failed', required
    - `auth` object
      - `spf` string
      - `dkim` string
      - `dmarc` string
    - `status` 'held' | 'released' | 'dismissed', required
    - `createdAt` string, date-time, required
    - `decidedAt` string, date-time

## Other responses

- `400`: The request is malformed.
- `401`: Missing, invalid or revoked API key.
- `403`: The key lacks the scope (`missing_scope`) or the access (`forbidden`).
- `404`: Not found — or not reachable with this key.
- `409`: A request with this Idempotency-Key is still in progress.
- `429`: Too many requests.

---

[API](https://skmtc.dev/supermailos/apis/supermailos-api.md) · [All operations](https://skmtc.dev/supermailos/apis/supermailos-api/llms.txt) · [OpenAPI document](https://skmtc.dev/supermailos/apis/supermailos-api/revisions/5bd0ce2ee269?raw)
