# POST /v1/streams/{id}/archive

Archive a stream

The stream takes no new messages from now on; what it already holds is still delivered, and its log and suppression list stay readable. An archived inbound stream refuses mail to its address, and the server may create another. Archiving an archived stream changes nothing. The default stream cannot be archived.

Takes a server key (`sk_…`, or `sk_test_…` on a test server) as a bearer token. TypeScript: `sendora.streams.archive(streamId)`. Python: `sendora.streams.archive(stream_id)`.

## Parameters

- `id` (path, required, string (uuid)): The stream id.

## Responses

### 200 A stream of this server.

- `streamId` (string (uuid), required): What a send names as streamId.
- `kind` ("transactional" | "broadcast" | "inbound", required): transactional for mail the recipient expects; broadcast for mail to many; inbound for mail the server receives.
- `name` (string (at least 1, at most 100 characters), required): The name given at creation, unique within the server.
- `isDefault` (boolean, required): The stream a send without a streamId goes on; one per server, transactional.
- `createdAt` (string (date-time), required)
- `archivedAt` (string (date-time) or null, required): Set once archived; the stream then takes no new messages.
- `pausedAt` (string (date-time) or null, required): Set while Sendora has paused the stream after complaints; it takes no messages until support has resumed it.
- `inboundAddress` (string or null, required): The address of an inbound stream, its id on inbound.sendora.se; mail sent there is received on the stream. Null on every other kind.
- `contentRetentionDays` (integer (1 to 30) or null, required): How many days an inbound stream keeps received content, 1 to 30; null means the default of 30. Null on every other kind.

Example:

```json
{
  "streamId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "kind": "transactional",
  "name": "Notices",
  "isDefault": false,
  "createdAt": "2026-09-16T12:00:00.000Z",
  "archivedAt": "2026-09-16T13:00:00.000Z",
  "pausedAt": null,
  "inboundAddress": null,
  "contentRetentionDays": null
}
```

## Errors

Every error answers `error`, the code, and `message`, a sentence for a person. A code that adds fields is shown in full below the table.

| Code | Status | Meaning |
| --- | --- | --- |
| `unauthorized` | 401 | The key is missing, malformed or revoked. |
| `wrong_token_kind` | 403 | The key is of the other kind: a server key (sk_) where an account key (ak_) is needed, or the reverse. The message names the kind the operation takes. |
| `not_found` | 404 | No such stream of this server. |
| `default_stream` | 409 | The default stream of a server cannot be archived. |
