# POST /api/v1/updates

Auth: Bearer

HTML: https://cooperemail.com/docs/reference/updates

## Summary

Send a progress, done, needs_input, or error note to every verified owner. Send a short title (5-8 plain words) plus text as one short detail sentence; the concise email shows the title alone, or the first sentence of text when there is no title. Do not include deploy ids, commit shas, or internal ids. Progress email to a verified owner is exempt from send allow and block lists. Same task_id stays in one thread (Message-ID / In-Reply-To / References). A follow-up keeps that thread and uses its own kind in the subject, for example Re: [Needs input] Invoice import. links must be https. Daily digest owners are queued until POST /api/v1/digests/flush or the 13:00 UTC Vercel Cron on GET /api/v1/internal/digests/flush. List-Unsubscribe and one-click List-Unsubscribe-Post are set. Default rate limit is 20 immediate emails per owner per hour and 100 per day.

## Request

```json
{
  "inbox_id": "inb_…",
  "kind": "needs_input",
  "title": "Invoice import",
  "status": "blocked",
  "task_id": "import-1",
  "text": "Which currency should I use?",
  "links": [
    {
      "label": "Draft",
      "url": "https://example.com/draft"
    }
  ],
  "client_id": "upd-1"
}
```

## Response

The OpenAPI document does not declare a JSON response schema for this call. The summary is the contract.

## Errors

The summary and the OpenAPI operation do not name an error code.

## Idempotency

This route does not document Idempotency-Key or client_id.
