---
title: "Changes to Create Email"
method: POST
path: "/emails"
---

# Changes to Create Email

`POST /emails`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 12 of 43 revisions.

- **2026-10-27** `8fff9c6b1347`: 1 breaking, 1 warning, 1 info
- **2026-10-20** `bc6be78752aa`: 1 info
- **2026-09-22** `f00fce908264`: 1 warning, 1 info
- **2026-08-08** `3a702c095d22`: 1 warning, 1 info
- **2026-07-26** `fc5d382abadb`: 1 warning
- **2026-07-13** `228cc05ba97d`: 3 breaking, 1 warning, 3 info
- **2026-06-07** `13f3bc084194`: 11 breaking, 40 warning, 31 info
- **2026-01-17** `8590daeecaea`: 4 breaking, 3 info
- **2025-10-15** `b366d059d1ae`: 2 breaking, 5 warning, 10 info
- **2025-07-11** `b3fb230c0938`: 4 breaking, 28 info
- **2025-03-24** `b318723a4d8d`: 2 breaking, 10 info
- **2025-02-18** `7b086652e3cf`: 3 breaking, 3 warning, 7 info

## Changes

- **2026-10-27** `8fff9c6b1347`: 1 breaking, 1 warning, 1 info
  - removed the enum value `suppressed` of the request property `status/allOf[subschema #1: Status]/`
  - removed the optional property `suppression_reason` from the response with the `201` status
  - removed the `suppressed` enum value from the `status` response property for the response status `201`
- **2026-10-20** `bc6be78752aa`: 1 info
  - added the optional property `analytics/anyOf[subschema #1: Analytics]/attempts` to the response with the `201` status
- **2026-09-22** `f00fce908264`: 1 warning, 1 info
  - added the new `partially_sent` enum value to the `status` response property for the response status `201`
  - added the new `partially_sent` enum value to the request property `status/allOf[subschema #1: Status]/`
- **2026-08-08** `3a702c095d22`: 1 warning, 1 info
  - added the new `archive_only` enum value to the `archival_mode` response property for the response status `201`
  - added the new `archive_only` enum value to the request property `archival_mode/allOf[subschema #1: ArchivalMode]/`
- **2026-07-26** `fc5d382abadb`: 1 warning
  - added the new `smtp` enum value to the `source` response property for the response status `201`
- **2026-07-13** `228cc05ba97d`: 3 breaking, 1 warning, 3 info
  - added the pattern `^(?:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}|(?:att)_(?:[0-7][0-9abcdefghjkmnpqrstvwxyz]{25}|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$` to the request property `attachments/items/`
  - added the pattern `^(?:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}|(?:em)_(?:[0-7][0-9abcdefghjkmnpqrstvwxyz]{25}|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$` to the request property `related_email_ids/items/`
  - added the pattern `^[a-zA-Z0-9_-]+$` to the request property `slug/anyOf[subschema #1]/`
  - added the new `custom` enum value to the `template/anyOf[subschema #1: EmailTemplate]/` response property for the response status `201`
  - added the new optional request property `template`
  - added the non-success response with the status `422`
  - added the non-success response with the status `429`
- **2026-06-07** `13f3bc084194`: 11 breaking, 40 warning, 31 info
  - added `#/components/schemas/EmailFilterGroup` to the `filters` request property `allOf` list
  - the response property `code` became optional for the status `400`
  - response property `attachments` list-of-types was widened by adding types `null` to media type `application/json` of response `201`
  - response property `publish_date` list-of-types was widened by adding types `null` to media type `application/json` of response `201`
  - response property `secondary_id` list-of-types was widened by adding types `null` to media type `application/json` of response `201`
  - response property `slug` list-of-types was widened by adding types `null` to media type `application/json` of response `201`
  - the `analytics` response's property type changed from `object` to no type for status `201`
  - the `code` response's property type changed from no type to `string` for status `403`
  - the `code` response's property type changed from `string` to no type for status `400`
  - the `source` response's property type changed from no type to `string` for status `201`
  - the `status` response's property type changed from no type to `string` for status `201`
  - removed `#/components/schemas/FilterGroup` from the `filters` request property `allOf` list
  - the `canonical_url` request property's maxLength was set to `2000`
  - removed the optional property `analytics/clicks` from the response with the `201` status
  - removed the optional property `analytics/comments` from the response with the `201` status
  - removed the optional property `analytics/complaints` from the response with the `201` status
  - removed the optional property `analytics/deliveries` from the response with the `201` status
  - removed the optional property `analytics/opens` from the response with the `201` status
  - removed the optional property `analytics/page_views_30` from the response with the `201` status
  - removed the optional property `analytics/page_views_7` from the response with the `201` status
  - removed the optional property `analytics/page_views_lifetime` from the response with the `201` status
  - removed the optional property `analytics/paid_subscriptions` from the response with the `201` status
  - removed the optional property `analytics/permanent_failure_breakdown` from the response with the `201` status
  - removed the optional property `analytics/permanent_failures` from the response with the `201` status
  - removed the optional property `analytics/recipients` from the response with the `201` status
  - removed the optional property `analytics/replies` from the response with the `201` status
  - removed the optional property `analytics/social_mentions` from the response with the `201` status
  - removed the optional property `analytics/subscriptions` from the response with the `201` status
  - removed the optional property `analytics/survey_responses` from the response with the `201` status
  - removed the optional property `analytics/temporary_failure_breakdown` from the response with the `201` status
  - removed the optional property `analytics/temporary_failures` from the response with the `201` status
  - removed the optional property `analytics/unsubscriptions` from the response with the `201` status
  - removed the optional property `analytics/webmentions` from the response with the `201` status
  - added the new `about_to_send` enum value to the `status` response property for the response status `201`
  - added the new `api` enum value to the `source` response property for the response status `201`
  - added the new `app` enum value to the `source` response property for the response status `201`
  - added the new `deleted` enum value to the `status` response property for the response status `201`
  - added the new `draft` enum value to the `status` response property for the response status `201`
  - added the new `errored` enum value to the `status` response property for the response status `201`
  - added the new `external_feed` enum value to the `source` response property for the response status `201`
  - …42 more
- **2026-01-17** `8590daeecaea`: 4 breaking, 3 info
  - removed `subschema #1, subschema #2` from the `attachments/items/` request property `anyOf` list
  - the `attachments/items/` request property type changed from no type to `string`
  - the `attachments/items/` response's property type changed from no type to `string` for status `201`
  - the `id` response's property format changed from `uuid` to no format for status `201`
  - added the optional property `analytics/permanent_failure_breakdown` to the response with the `201` status
  - added the optional property `analytics/temporary_failure_breakdown` to the response with the `201` status
  - removed `subschema #1, subschema #2` from the `attachments/items/` response property `anyOf` list for the response status `201`
- **2025-10-15** `b366d059d1ae`: 2 breaking, 5 warning, 10 info
  - the `attachments/items/` request property type changed from `string` to no type, and format from `uuid` to no format
  - the `attachments/items/` response's property type changed from `string` to no type, and format from `uuid` to no format for status `201`
  - the `subject` request property's maxLength was set to `2000`
  - removed the optional property `analytics/page_views__30` from the response with the `201` status
  - removed the optional property `analytics/page_views__7` from the response with the `201` status
  - removed the optional property `analytics/page_views__lifetime` from the response with the `201` status
  - added the new `suppressed` enum value to the `status/allOf[subschema #1: Status]/` response property for the response status `201`
  - added the new optional request property `should_trigger_pay_per_email_billing`
  - added `subschema #1, subschema #2` to the `attachments/items/` request property `anyOf` list
  - added the new `suppressed` enum value to the request property `status/allOf[subschema #1: Status]/`
  - added the optional property `analytics/page_views_30` to the response with the `201` status
  - added the optional property `analytics/page_views_7` to the response with the `201` status
  - added the optional property `analytics/page_views_lifetime` to the response with the `201` status
  - added the optional property `suppression_reason` to the response with the `201` status
  - added `subschema #1, subschema #2` to the `attachments/items/` response property `anyOf` list for the response status `201`
  - removed the `airy` enum value from the `template/allOf[subschema #1: EmailTemplate]/` response property for the response status `201`
  - added the required property `should_trigger_pay_per_email_billing` to the response with the `201` status
- **2025-07-11** `b3fb230c0938`: 4 breaking, 28 info
  - removed the enum value `hidden` of the request property `email_type/allOf[subschema #1: Type]/`
  - the `source` response's property type changed from `string` to no type for status `201`
  - the `status` response's property type changed from `string` to no type for status `201`
  - the `template` response's property type changed from `string` to no type for status `201`
  - added the new optional request property `featured`
  - added the new `resending` enum value to the request property `status/allOf[subschema #1: Status]/`
  - added the new `throttled` enum value to the request property `status/allOf[subschema #1: Status]/`
  - added the new `transactional` enum value to the request property `status/allOf[subschema #1: Status]/`
  - added `#/components/schemas/EmailSource` to the `source` response property `allOf` list for the response status `201`
  - added `#/components/schemas/EmailStatus` to the `status` response property `allOf` list for the response status `201`
  - added `#/components/schemas/NewsletterEmailTemplate` to the `template` response property `allOf` list for the response status `201`
  - removed the `about_to_send` enum value from the `status` response property for the response status `201`
  - removed the `airy` enum value from the `template` response property for the response status `201`
  - removed the `api` enum value from the `source` response property for the response status `201`
  - removed the `app` enum value from the `source` response property for the response status `201`
  - removed the `classic` enum value from the `template` response property for the response status `201`
  - removed the `deleted` enum value from the `status` response property for the response status `201`
  - removed the `draft` enum value from the `status` response property for the response status `201`
  - removed the `errored` enum value from the `status` response property for the response status `201`
  - removed the `external_feed` enum value from the `source` response property for the response status `201`
  - removed the `hidden` enum value from the `email_type/allOf[subschema #1: Type]/` response property for the response status `201`
  - removed the `import` enum value from the `source` response property for the response status `201`
  - removed the `imported` enum value from the `status` response property for the response status `201`
  - removed the `in_flight` enum value from the `status` response property for the response status `201`
  - removed the `managed_by_rss` enum value from the `status` response property for the response status `201`
  - removed the `modern` enum value from the `template` response property for the response status `201`
  - removed the `naked` enum value from the `template` response property for the response status `201`
  - removed the `paused` enum value from the `status` response property for the response status `201`
  - removed the `plaintext` enum value from the `template` response property for the response status `201`
  - removed the `scheduled` enum value from the `status` response property for the response status `201`
  - removed the `sent` enum value from the `status` response property for the response status `201`
  - added the required property `featured` to the response with the `201` status
- **2025-03-24** `b318723a4d8d`: 2 breaking, 10 info
  - the response property `email_type` became optional for the status `201`
  - the `email_type` response's property type changed from `string` to no type for status `201`
  - added `#/components/schemas/EmailType` to the `email_type` response property `allOf` list for the response status `201`
  - the `email_type` response's property default value `public` was added for the status `201`
  - removed the `archival` enum value from the `email_type` response property for the response status `201`
  - removed the `churned` enum value from the `email_type` response property for the response status `201`
  - removed the `free` enum value from the `email_type` response property for the response status `201`
  - removed the `hidden` enum value from the `email_type` response property for the response status `201`
  - removed the `modern-german` enum value from the `template` response property for the response status `201`
  - removed the `premium` enum value from the `email_type` response property for the response status `201`
  - removed the `private` enum value from the `email_type` response property for the response status `201`
  - removed the `public` enum value from the `email_type` response property for the response status `201`
- **2025-02-18** `7b086652e3cf`: 3 breaking, 3 warning, 7 info
  - removed the required property `custom_teaser` from the response with the `201` status
  - removed the required property `is_comments_disabled` from the response with the `201` status
  - removed the required property `should_send_teaser` from the response with the `201` status
  - removed the request property `custom_teaser`
  - removed the request property `is_comments_disabled`
  - removed the request property `should_send_teaser`
  - the endpoint scheme security `PermissionAuthenticationRequirement` was added to the API
  - the endpoint scheme security `AuthenticationRequirement` was removed from the API
  - added the new optional request property `commenting_mode`
  - added the new optional request property `related_email_ids`
  - added the optional property `analytics/social_mentions` to the response with the `201` status
  - added the required property `commenting_mode` to the response with the `201` status
  - added the required property `related_email_ids` to the response with the `201` status

---

[Operation](https://skmtc.dev/buttondown/apis/buttondown-api/docs/emails/post.md) - [API](https://skmtc.dev/buttondown/apis/buttondown-api.md) - [Page](https://skmtc.dev/buttondown/apis/buttondown-api/changes/emails/post)
