# Changelog

> Changes to the Reggio Digital API that an integration would notice, newest first.

Source: https://reggiodigital.com/developers/changelog

Changes an integration would notice, newest first. Additions within `v1` never break existing code; see [versioning](https://reggiodigital.com/developers/conventions#versioning).

## 2026-09-14

- Published these developer docs.
- A `429` from the rate limit now uses the standard error shape, with the type `rate_limited`, instead of a bare message.

## 2026-09-11

- Connect several applications to one account, each with its own key, abilities and optional sending-domain limits.
- Replace a key with an overlap of up to a week, so the old one keeps working while you deploy the new one.
- New `newsletter:read` ability, for a key that can look subscribers up but not change them.

## 2026-09-10

- Webhooks: signed notifications for email delivery events, newsletter subscribers, preference changes and received mail.
- Every response carries `X-Reggio-Request-Id`, and every error repeats it as `error.request_id`.
- `PATCH /api/v1/emails/{id}` moves a scheduled message to a new time.

## 2026-09-09

- The newsletter subscriber API: lists, fields, add or update, look up and unsubscribe, with the `newsletter:manage` ability.

## 2026-09-08

- Send a published email template with `template_id` and `variables`.
- Validation failures use the standard error shape, with `error.fields`.
- `suppressed` is returned on every kind of send, including scheduled sends and each message in a batch.

## 2026-09-01

- Scheduled sends with `scheduled_at`, cancelled with `DELETE /api/v1/emails/{id}`.
- `POST /api/v1/emails/batch` for up to 100 messages at once.
- `tags`, custom `headers` and the `Idempotency-Key` header.
- Attachments, by content or by link, and inline images.
- `GET /api/v1/emails/{id}` to see what happened to a message.

## 2026-08-24

- The transactional email API: `POST /api/v1/emails`.
- SMTP credentials for any verified sending domain.
