openapi: 3.1.2 info: title: Resend version: 1.5.1 description: 'Resend is the email platform for developers.' servers: - url: https://api.resend.com security: - bearerAuth: [] tags: - name: Emails description: Start sending emails through the Resend API. - name: Domains description: Create and manage domains through the Resend API. - name: API Keys description: Create and manage API Keys through the Resend API. - name: Audiences description: 'Deprecated: Use Segments instead. Create and manage Audiences through the Resend API.' - name: Contacts description: Create and manage Contacts through the Resend API. - name: Receiving Emails description: Retrieve and manage received emails and attachments through the Resend API. - name: Webhooks description: Create and manage Webhooks through the Resend API. - name: Webhook Events description: Real-time event notifications delivered to your registered webhook endpoint. Each delivery is signed using Svix headers (`svix-id`, `svix-timestamp`, `svix-signature`); verify them before acting on the payload. - name: Templates description: Create and manage Templates through the Resend API. - name: Broadcasts description: Create and manage Broadcasts through the Resend API. - name: Segments description: Create and manage Segments through the Resend API. - name: Topics description: Create and manage Topics through the Resend API. - name: Contact Properties description: Create and manage Contact Properties through the Resend API. - name: Suppressions description: Create and manage Suppressions through the Resend API. - name: Logs description: Retrieve API request logs through the Resend API. - name: Automations description: Create and manage Automations through the Resend API. - name: Events description: Create and manage Events through the Resend API. - name: OAuth description: List and manage OAuth grants through the Resend API. paths: /emails: post: operationId: emails/send tags: - Emails summary: Send an email parameters: - in: header name: Idempotency-Key required: false schema: type: string maxLength: 256 description: A unique identifier for the request to ensure emails are only sent once. [Learn more](https://resend.com/docs/dashboard/emails/idempotency-keys) requestBody: content: application/json: schema: $ref: '#/components/schemas/SendEmailRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SendEmailResponse' get: operationId: emails/list tags: - Emails summary: Retrieve a list of emails parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListEmailsResponse' /emails/{email_id}: get: operationId: emails/get tags: - Emails summary: Retrieve a single email parameters: - name: email_id in: path required: true schema: type: string description: The ID of the email. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Email' patch: operationId: emails/update tags: - Emails summary: Update a single email parameters: - name: email_id in: path required: true schema: type: string description: The ID of the email. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateEmailOptions' /emails/{email_id}/cancel: post: operationId: emails/cancel tags: - Emails summary: Cancel the schedule of the e-mail. parameters: - name: email_id in: path required: true schema: type: string description: The ID of the email. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Email' /emails/{email_id}/share: post: operationId: emails/share tags: - Emails summary: Create a shareable link for a sent or received email. parameters: - name: email_id in: path required: true schema: type: string description: The ID of the email. requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/ShareEmailOptions' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ShareEmailResponse' /emails/batch: post: operationId: emails/send-batch tags: - Emails summary: Trigger up to 100 batch emails at once. parameters: - in: header name: Idempotency-Key required: false schema: type: string maxLength: 256 description: A unique identifier for the request to ensure emails are only sent once. [Learn more](https://resend.com/docs/dashboard/emails/idempotency-keys) requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/SendEmailRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateBatchEmailsResponse' /emails/{email_id}/attachments: get: operationId: emails/list-attachments tags: - Emails summary: Retrieve a list of attachments for a sent email parameters: - name: email_id in: path required: true schema: type: string format: uuid description: The ID of the email. - name: limit in: query required: false schema: type: integer description: Maximum number of attachments to return. - name: after in: query required: false schema: type: string format: uuid description: Pagination cursor to fetch results after this attachment ID. Cannot be used with 'before'. - name: before in: query required: false schema: type: string format: uuid description: Pagination cursor to fetch results before this attachment ID. Cannot be used with 'after'. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListAttachmentsResponse' /emails/{email_id}/attachments/{attachment_id}: get: operationId: emails/get-attachment tags: - Emails summary: Retrieve a single attachment for a sent email parameters: - name: email_id in: path required: true schema: type: string format: uuid description: The ID of the email. - name: attachment_id in: path required: true schema: type: string format: uuid description: The ID of the attachment. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RetrievedAttachment' /emails/receiving: get: operationId: emails/list-receiving tags: - Receiving Emails summary: Retrieve a list of received emails parameters: - name: limit in: query required: false schema: type: integer description: Maximum number of received emails to return. - name: after in: query required: false schema: type: string format: uuid description: Pagination cursor to fetch results after this email ID. Cannot be used with 'before'. - name: before in: query required: false schema: type: string format: uuid description: Pagination cursor to fetch results before this email ID. Cannot be used with 'after'. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListReceivedEmailsResponse' /emails/receiving/{email_id}: get: operationId: emails/get-receiving tags: - Receiving Emails summary: Retrieve a single received email parameters: - name: email_id in: path required: true schema: type: string format: uuid description: The ID of the received email. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetReceivedEmailResponse' /emails/receiving/{email_id}/attachments: get: operationId: emails/list-receiving-attachments tags: - Receiving Emails summary: Retrieve a list of attachments for a received email parameters: - name: email_id in: path required: true schema: type: string format: uuid description: The ID of the received email. - name: limit in: query required: false schema: type: integer description: Maximum number of attachments to return. - name: after in: query required: false schema: type: string format: uuid description: Pagination cursor to fetch results after this attachment ID. Cannot be used with 'before'. - name: before in: query required: false schema: type: string format: uuid description: Pagination cursor to fetch results before this attachment ID. Cannot be used with 'after'. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListAttachmentsResponse' /emails/receiving/{email_id}/attachments/{attachment_id}: get: operationId: emails/get-receiving-attachment tags: - Receiving Emails summary: Retrieve a single attachment for a received email parameters: - name: email_id in: path required: true schema: type: string format: uuid description: The ID of the received email. - name: attachment_id in: path required: true schema: type: string format: uuid description: The ID of the attachment. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RetrievedAttachment' /emails/metrics: get: operationId: emails/metrics tags: - Emails summary: Retrieve account-level email metrics parameters: - name: start_date in: query schema: type: string description: The start of the date range, as an ISO 8601 date or datetime. Must be on or before `end_date`. Defaults to 6 days before `end_date`. - name: end_date in: query schema: type: string description: The end of the date range, as an ISO 8601 date or datetime. Values in the future are clamped to the current time. Defaults to now. - name: timezone in: query schema: type: string default: 'UTC' description: The IANA timezone (e.g. `America/New_York`) used to bucket periods when `period` is in `dimensions`. - name: granularity in: query schema: type: string enum: - hourly - daily - weekly - monthly default: 'daily' description: The bucket size used when `period` is in `dimensions`. The date range can't produce more than 10,000 periods at the chosen granularity. - name: metrics in: query style: form explode: false schema: type: array items: type: string enum: - received - delivered - complained - suppressed - bounced - bounced_transient - bounced_permanent - bounced_undetermined - opened - clicked - unsubscribed - delivery_delayed - failed - sent - unique_opened - unique_clicked - delivery_rate - open_rate - click_rate - bounce_rate - complaint_rate - unsubscribe_rate description: List of metrics to include in the response. Defaults to all metrics. Accepts a comma-separated value, the parameter repeated, or a mix of both. - name: dimensions in: query style: form explode: false schema: type: array items: type: string enum: - period - domain - email - broadcast description: List of dimensions to break the response down by. `email` cannot be combined with `broadcast`. Defaults to `[]`, returning a single `totals` row for the whole range, with no `data`. Accepts a comma-separated value, the parameter repeated, or a mix of both. - name: domain_id in: query style: form explode: false schema: type: array items: type: string format: uuid description: List of sending domain IDs to restrict the response to, up to 100. Accepts a comma-separated value, the parameter repeated, or a mix of both. - name: email_id in: query style: form explode: false schema: type: array items: type: string format: uuid description: List of email IDs to restrict the response to, up to 100. Cannot be combined with the `broadcast` dimension or `broadcast_id`. Accepts a comma-separated value, the parameter repeated, or a mix of both. - name: broadcast_id in: query style: form explode: false schema: type: array items: type: string format: uuid description: List of broadcast IDs to restrict the response to, up to 100. Cannot be combined with the `email` dimension or `email_id`. Accepts a comma-separated value, the parameter repeated, or a mix of both. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetEmailsMetricsResponse' /domains: post: operationId: domains/create tags: - Domains summary: Create a new domain requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateDomainRequest' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateDomainResponse' get: operationId: domains/list tags: - Domains summary: Retrieve a list of domains parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListDomainsResponse' /domains/{domain_id}: get: operationId: domains/get tags: - Domains summary: Retrieve a single domain parameters: - name: domain_id in: path required: true schema: type: string description: The ID of the domain. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Domain' patch: operationId: domains/update tags: - Domains summary: Update an existing domain requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateDomainOptions' parameters: - name: domain_id in: path required: true schema: type: string description: The ID of the domain. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateDomainResponseSuccess' delete: operationId: domains/remove tags: - Domains summary: Remove an existing domain parameters: - name: domain_id in: path required: true schema: type: string description: The ID of the domain. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteDomainResponse' /domains/{domain_id}/verify: post: operationId: domains/verify tags: - Domains summary: Verify an existing domain description: Triggers verification of the domain's DNS records including DKIM, SPF, and the tracking CNAME (if a tracking subdomain is configured). parameters: - name: domain_id in: path required: true schema: type: string description: The ID of the domain. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/VerifyDomainResponse' /domains/claim: post: operationId: domains/create-claim tags: - Domains summary: Claim a domain description: >- Start a claim for a domain that another Resend account has already verified. The domain is recreated under your account with fresh DKIM keys, so the previous account's DNS records cannot be reused. Returns a TXT record to add to your DNS to prove ownership. Uses the same request body as creating a domain. requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateDomainClaimRequest' responses: '201': description: Claim created. content: application/json: schema: $ref: '#/components/schemas/DomainClaim' '200': description: An identical pending claim already existed and was returned unchanged. content: application/json: schema: $ref: '#/components/schemas/DomainClaim' /domains/{domain_id}/claim: get: operationId: domains/get-claim tags: - Domains summary: Retrieve a domain claim description: Retrieve the latest claim for the placeholder domain created by the claim. parameters: - name: domain_id in: path required: true schema: type: string description: The ID of the placeholder domain created by the claim. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DomainClaim' /domains/{domain_id}/claim/verify: post: operationId: domains/verify-claim tags: - Domains summary: Verify a domain claim description: >- Trigger asynchronous DNS verification and ownership transfer for a domain claim. The claim stays `pending` while verification runs; poll the retrieve endpoint for status. Once `completed`, the transferred domain has new DKIM records that must be added to DNS and verified via the standard domain verify endpoint. parameters: - name: domain_id in: path required: true schema: type: string description: The ID of the placeholder domain created by the claim. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DomainClaim' /api-keys: post: operationId: api-keys/create tags: - API Keys summary: Create a new API key requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateApiKeyRequest' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateApiKeyResponse' get: operationId: api-keys/list tags: - API Keys summary: Retrieve a list of API keys parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListApiKeysResponse' /api-keys/{api_key_id}: patch: operationId: api-keys/update tags: - API Keys summary: Update an existing API key parameters: - name: api_key_id in: path required: true schema: type: string description: The API key ID. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateApiKeyRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateApiKeyResponse' delete: operationId: api-keys/remove tags: - API Keys summary: Remove an existing API key parameters: - name: api_key_id in: path required: true schema: type: string description: The API key ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteApiKeyResponse' /oauth/grants: get: operationId: oauth/list-grants tags: - OAuth summary: Retrieve a list of OAuth grants parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListOAuthGrantsResponse' /oauth/grants/{oauth_grant_id}: delete: operationId: oauth/revoke-grant tags: - OAuth summary: Revoke an OAuth grant parameters: - name: oauth_grant_id in: path required: true schema: type: string description: The OAuth grant ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RevokeOAuthGrantResponse' /templates: post: operationId: templates/create tags: - Templates summary: Create a template requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTemplateRequest' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateTemplateResponseSuccess' get: operationId: templates/list tags: - Templates summary: Retrieve a list of templates parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListTemplatesResponseSuccess' /templates/{id}: get: operationId: templates/get tags: - Templates summary: Retrieve a single template parameters: - name: id in: path required: true schema: type: string description: The Template ID or alias. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Template' patch: operationId: templates/update tags: - Templates summary: Update an existing template parameters: - name: id in: path required: true schema: type: string description: The Template ID or alias. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateTemplateOptions' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateTemplateResponseSuccess' delete: operationId: templates/remove tags: - Templates summary: Remove an existing template parameters: - name: id in: path required: true schema: type: string description: The Template ID or alias. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RemoveTemplateResponseSuccess' /templates/{id}/publish: post: operationId: templates/publish tags: - Templates summary: Publish a template parameters: - name: id in: path required: true schema: type: string description: The Template ID or alias. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PublishTemplateResponseSuccess' /templates/{id}/duplicate: post: operationId: templates/duplicate tags: - Templates summary: Duplicate a template parameters: - name: id in: path required: true schema: type: string description: The Template ID or alias. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DuplicateTemplateResponseSuccess' /audiences: post: operationId: audiences/create tags: - Audiences summary: Create a list of contacts deprecated: true description: 'Deprecated: Use Segments instead. These endpoints still work, but will be removed in the future.' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateAudienceOptions' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateAudienceResponseSuccess' get: operationId: audiences/list tags: - Audiences summary: Retrieve a list of audiences deprecated: true description: 'Deprecated: Use Segments instead. These endpoints still work, but will be removed in the future.' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListAudiencesResponseSuccess' /audiences/{id}: delete: operationId: audiences/remove tags: - Audiences summary: Remove an existing audience deprecated: true description: 'Deprecated: Use Segments instead. These endpoints still work, but will be removed in the future.' parameters: - name: id in: path required: true schema: type: string description: The Audience ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RemoveAudienceResponseSuccess' get: operationId: audiences/get tags: - Audiences summary: Retrieve a single audience deprecated: true description: 'Deprecated: Use Segments instead. These endpoints still work, but will be removed in the future.' parameters: - name: id in: path required: true schema: type: string description: The Audience ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetAudienceResponseSuccess' /contacts: post: operationId: contacts/create tags: - Contacts summary: Create a new contact requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateContactOptions' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateContactResponseSuccess' get: operationId: contacts/list tags: - Contacts summary: Retrieve a list of contacts parameters: - name: segment_id in: query required: false schema: type: string description: Filter contacts by segment ID. - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListContactsResponseSuccess' /contacts/imports: post: operationId: contacts/create-import tags: - Contacts summary: Create a contact import requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/CreateContactImportOptions' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateContactImportResponseSuccess' get: operationId: contacts/list-imports tags: - Contacts summary: Retrieve a list of contact imports parameters: - name: status in: query required: false schema: type: string enum: - queued - in_progress - completed - failed description: Filter contact imports by status. - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListContactImportsResponseSuccess' /contacts/imports/{id}: get: operationId: contacts/get-import tags: - Contacts summary: Retrieve a single contact import parameters: - name: id in: path required: true schema: type: string format: uuid description: The Contact Import ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetContactImportResponseSuccess' /contacts/{id}: get: operationId: contacts/get tags: - Contacts summary: Retrieve a single contact by ID or email parameters: - name: id in: path required: true schema: type: string description: The Contact ID or email address. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetContactResponseSuccess' patch: operationId: contacts/update tags: - Contacts summary: Update a single contact by ID or email parameters: - name: id in: path required: true schema: type: string description: The Contact ID or email address. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateContactOptions' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateContactResponseSuccess' delete: operationId: contacts/remove tags: - Contacts summary: Remove an existing contact by ID or email parameters: - name: id in: path required: true schema: type: string description: The Contact ID or email address. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RemoveContactResponseSuccess' /broadcasts: post: operationId: broadcasts/create tags: - Broadcasts summary: Create a broadcast requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateBroadcastOptions' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateBroadcastResponseSuccess' get: operationId: broadcasts/list tags: - Broadcasts summary: Retrieve a list of broadcasts parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListBroadcastsResponseSuccess' /broadcasts/{id}: delete: operationId: broadcasts/remove tags: - Broadcasts summary: Remove an existing broadcast that is in the draft status parameters: - name: id in: path required: true schema: type: string description: The Broadcast ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RemoveBroadcastResponseSuccess' get: operationId: broadcasts/get tags: - Broadcasts summary: Retrieve a single broadcast parameters: - name: id in: path required: true schema: type: string description: The Broadcast ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetBroadcastResponseSuccess' patch: operationId: broadcasts/update tags: - Broadcasts summary: Update an existing broadcast parameters: - name: id in: path required: true schema: type: string description: The Broadcast ID. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateBroadcastOptions' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateBroadcastResponseSuccess' /broadcasts/{id}/send: post: operationId: broadcasts/send tags: - Broadcasts summary: Send or schedule a broadcast parameters: - name: id in: path required: true schema: type: string description: The Broadcast ID. requestBody: content: application/json: schema: $ref: '#/components/schemas/SendBroadcastOptions' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SendBroadcastResponseSuccess' /broadcasts/{id}/cancel: post: operationId: broadcasts/cancel tags: - Broadcasts summary: Cancel a broadcast description: >- Cancels a broadcast that is queued or scheduled. Canceling a queued broadcast stops it mid-send; emails already sent are not affected, but no further emails will go out. parameters: - name: id in: path required: true schema: type: string format: uuid description: The Broadcast ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CancelBroadcastResponseSuccess' /broadcasts/{id}/duplicate: post: operationId: broadcasts/duplicate tags: - Broadcasts summary: Duplicate a broadcast description: >- Creates a new draft broadcast with the same segment, topic, sender, subject, reply-to, preview text, and content as the source. The copy is named after the source with " (copy)" appended, truncated to 70 characters. parameters: - name: id in: path required: true schema: type: string format: uuid description: The Broadcast ID. responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/DuplicateBroadcastResponseSuccess' /broadcasts/{id}/recipients: get: operationId: broadcasts/recipients tags: - Broadcasts summary: Retrieve broadcast recipients description: >- Retrieve the recipients of a broadcast for a given event type, such as who opened, clicked, or bounced. parameters: - name: id in: path required: true schema: type: string format: uuid description: The Broadcast ID. - name: type in: query required: true schema: type: string enum: - sent - delivered - opened - clicked - bounced - complained - unsubscribed - suppressed description: The recipient event type to filter by. - name: email in: query required: false schema: type: string description: Filter recipients whose email address contains this value. - name: bounce_type in: query required: false schema: type: string enum: - permanent - transient - undetermined description: Filter bounced recipients by bounce type. Only valid when `type` is `bounced`. - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListBroadcastRecipientsResponseSuccess' /broadcasts/{id}/clicked-links: get: operationId: broadcasts/list-clicked-links tags: - Broadcasts summary: Retrieve a broadcast's clicked links parameters: - name: id in: path required: true schema: type: string format: uuid description: The Broadcast ID. - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListBroadcastClickedLinksResponseSuccess' /webhooks: post: operationId: webhooks/create tags: - Webhooks summary: Create a new webhook requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateWebhookRequest' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/CreateWebhookResponse' get: operationId: webhooks/list tags: - Webhooks summary: Retrieve a list of webhooks parameters: - name: limit in: query required: false schema: type: integer description: Maximum number of webhooks to return. - name: after in: query required: false schema: type: string format: uuid description: Pagination cursor to fetch results after this webhook ID. Cannot be used with 'before'. - name: before in: query required: false schema: type: string format: uuid description: Pagination cursor to fetch results before this webhook ID. Cannot be used with 'after'. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListWebhooksResponse' /webhooks/{webhook_id}: get: operationId: webhooks/get tags: - Webhooks summary: Retrieve a single webhook parameters: - name: webhook_id in: path required: true schema: type: string format: uuid description: The Webhook ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetWebhookResponse' patch: operationId: webhooks/update tags: - Webhooks summary: Update an existing webhook parameters: - name: webhook_id in: path required: true schema: type: string format: uuid description: The Webhook ID. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateWebhookRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateWebhookResponse' delete: operationId: webhooks/remove tags: - Webhooks summary: Remove an existing webhook parameters: - name: webhook_id in: path required: true schema: type: string format: uuid description: The Webhook ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteWebhookResponse' /webhooks/{webhook_id}/signing-secret/rotate: post: operationId: webhooks/rotate-signing-secret tags: - Webhooks summary: Rotate a webhook signing secret description: >- Generates a new signing secret for the webhook and returns it. Payloads delivered after the rotation are signed with the new secret. The previous secret keeps verifying payloads for 24 hours, so both secrets are accepted during that window. A webhook that does not exist or was removed returns a 404 not_found. parameters: - name: webhook_id in: path required: true schema: type: string format: uuid description: The Webhook ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RotateWebhookSigningSecretResponse' /webhooks/{webhook_id}/events: get: operationId: webhooks/list-events tags: - Webhooks summary: Retrieve a list of webhook events parameters: - name: webhook_id in: path required: true schema: type: string format: uuid description: The Webhook ID. - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListWebhookEventsResponse' /webhooks/{webhook_id}/events/{event_id}: get: operationId: webhooks/get-event tags: - Webhooks summary: Retrieve a single webhook event parameters: - name: webhook_id in: path required: true schema: type: string format: uuid description: The Webhook ID. - name: event_id in: path required: true schema: type: string description: The Webhook Event ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetWebhookEventResponse' /webhooks/{webhook_id}/events/{event_id}/replay: post: operationId: webhooks/replay-event tags: - Webhooks summary: Replay a webhook event description: >- Queues one more delivery of the event to the webhook. The event must be retrievable through the get event endpoint and the webhook must be enabled; a disabled webhook returns a 422 validation_error. A manual replay does not schedule automatic retries. parameters: - name: webhook_id in: path required: true schema: type: string format: uuid description: The Webhook ID. - name: event_id in: path required: true schema: type: string description: The Webhook Event ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReplayWebhookEventResponse' /webhooks/{webhook_id}/events/{event_id}/attempts: get: operationId: webhooks/list-event-attempts tags: - Webhooks summary: Retrieve a list of webhook event attempts parameters: - name: webhook_id in: path required: true schema: type: string format: uuid description: The Webhook ID. - name: event_id in: path required: true schema: type: string description: The Webhook Event ID. - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListWebhookEventAttemptsResponse' /segments: post: operationId: segments/create tags: - Segments summary: Create a new segment requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateSegmentOptions' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateSegmentResponseSuccess' get: operationId: segments/list tags: - Segments summary: Retrieve a list of segments parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListSegmentsResponseSuccess' /segments/{id}: get: operationId: segments/get tags: - Segments summary: Retrieve a single segment parameters: - name: id in: path required: true schema: type: string description: The Segment ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetSegmentResponseSuccess' patch: operationId: segments/update tags: - Segments summary: Update an existing segment parameters: - name: id in: path required: true schema: type: string description: The Segment ID. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateSegmentOptions' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateSegmentResponseSuccess' delete: operationId: segments/remove tags: - Segments summary: Remove an existing segment parameters: - name: id in: path required: true schema: type: string description: The Segment ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RemoveSegmentResponseSuccess' /topics: post: operationId: topics/create tags: - Topics summary: Create a new topic requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTopicOptions' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateTopicResponseSuccess' get: operationId: topics/list tags: - Topics summary: Retrieve a list of topics parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListTopicsResponseSuccess' /topics/{id}: get: operationId: topics/get tags: - Topics summary: Retrieve a single topic parameters: - name: id in: path required: true schema: type: string description: The Topic ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetTopicResponseSuccess' patch: operationId: topics/update tags: - Topics summary: Update an existing topic parameters: - name: id in: path required: true schema: type: string description: The Topic ID. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateTopicOptions' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateTopicResponseSuccess' delete: operationId: topics/remove tags: - Topics summary: Remove an existing topic parameters: - name: id in: path required: true schema: type: string description: The Topic ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RemoveTopicResponseSuccess' /contact-properties: post: operationId: contact-properties/create tags: - Contact Properties summary: Create a new contact property requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateContactPropertyOptions' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateContactPropertyResponseSuccess' get: operationId: contact-properties/list tags: - Contact Properties summary: Retrieve a list of contact properties parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListContactPropertiesResponseSuccess' /contact-properties/{id}: get: operationId: contact-properties/get tags: - Contact Properties summary: Retrieve a single contact property parameters: - name: id in: path required: true schema: type: string description: The Contact Property ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetContactPropertyResponseSuccess' patch: operationId: contact-properties/update tags: - Contact Properties summary: Update an existing contact property parameters: - name: id in: path required: true schema: type: string description: The Contact Property ID. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateContactPropertyOptions' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateContactPropertyResponseSuccess' delete: operationId: contact-properties/remove tags: - Contact Properties summary: Remove an existing contact property parameters: - name: id in: path required: true schema: type: string description: The Contact Property ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RemoveContactPropertyResponseSuccess' /contacts/{contact_id}/segments: get: operationId: contacts/list-segments tags: - Contacts summary: Retrieve a list of segments for a contact parameters: - name: contact_id in: path required: true schema: type: string description: The Contact ID or email address. - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListContactSegmentsResponseSuccess' /contacts/{contact_id}/segments/{segment_id}: post: operationId: contacts/add-segment tags: - Contacts summary: Add a contact to a segment parameters: - name: contact_id in: path required: true schema: type: string description: The Contact ID or email address. - name: segment_id in: path required: true schema: type: string description: The Segment ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AddContactToSegmentResponseSuccess' delete: operationId: contacts/remove-segment tags: - Contacts summary: Remove a contact from a segment parameters: - name: contact_id in: path required: true schema: type: string description: The Contact ID or email address. - name: segment_id in: path required: true schema: type: string description: The Segment ID. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RemoveContactFromSegmentResponseSuccess' /contacts/{contact_id}/topics: get: operationId: contacts/list-topics tags: - Contacts summary: Retrieve topics for a contact parameters: - name: contact_id in: path required: true schema: type: string description: The Contact ID or email address. - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetContactTopicsResponseSuccess' patch: operationId: contacts/update-topics tags: - Contacts summary: Update topics for a contact parameters: - name: contact_id in: path required: true schema: type: string description: The Contact ID or email address. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateContactTopicsOptions' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateContactTopicsResponseSuccess' /logs: get: operationId: logs/list tags: - Logs summary: Retrieve a list of logs parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListLogsResponse' /logs/{log_id}: get: operationId: logs/get tags: - Logs summary: Retrieve a single log parameters: - name: log_id in: path required: true schema: type: string format: uuid description: The ID of the log. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Log' /automations: post: operationId: automations/create tags: - Automations summary: Create an automation requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateAutomationRequest' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateAutomationResponse' get: operationId: automations/list tags: - Automations summary: Retrieve a list of automations parameters: - name: status in: query required: false schema: type: string enum: - enabled - disabled description: Filter automations by status. - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListAutomationsResponse' /automations/{automation_id}: get: operationId: automations/get tags: - Automations summary: Retrieve a single automation parameters: - name: automation_id in: path required: true schema: type: string format: uuid description: The ID of the automation. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Automation' patch: operationId: automations/update tags: - Automations summary: Update an automation parameters: - name: automation_id in: path required: true schema: type: string format: uuid description: The ID of the automation. requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchAutomationRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PatchAutomationResponse' delete: operationId: automations/remove tags: - Automations summary: Delete an automation parameters: - name: automation_id in: path required: true schema: type: string format: uuid description: The ID of the automation. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteAutomationResponse' /automations/{automation_id}/duplicate: post: operationId: automations/duplicate tags: - Automations summary: Duplicate an automation parameters: - name: automation_id in: path required: true schema: type: string format: uuid description: The ID of the automation. responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/DuplicateAutomationResponse' /automations/{automation_id}/stop: post: operationId: automations/stop tags: - Automations summary: Stop an automation parameters: - name: automation_id in: path required: true schema: type: string format: uuid description: The ID of the automation. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StopAutomationResponse' /automations/{automation_id}/runs: get: operationId: automations/list-runs tags: - Automations summary: Retrieve a list of automation runs parameters: - name: automation_id in: path required: true schema: type: string format: uuid description: The ID of the automation. - name: status in: query required: false schema: type: string description: 'Filter runs by status. Comma-separated list of: running, completed, failed, cancelled.' - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListAutomationRunsResponse' /automations/{automation_id}/runs/{run_id}: get: operationId: automations/get-run tags: - Automations summary: Retrieve a single automation run parameters: - name: automation_id in: path required: true schema: type: string format: uuid description: The ID of the automation. - name: run_id in: path required: true schema: type: string format: uuid description: The ID of the automation run. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AutomationRun' /events: post: operationId: events/create tags: - Events summary: Create an event requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateEventRequest' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateEventResponse' get: operationId: events/list tags: - Events summary: Retrieve a list of events parameters: - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListEventsResponse' /events/send: post: operationId: events/send tags: - Events summary: Send an event requestBody: content: application/json: schema: $ref: '#/components/schemas/SendEventRequest' responses: '202': description: Accepted content: application/json: schema: $ref: '#/components/schemas/SendEventResponse' /events/{identifier}: get: operationId: events/get tags: - Events summary: Retrieve a single event parameters: - name: identifier in: path required: true schema: type: string description: The event ID (UUID) or event name. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Event' patch: operationId: events/update tags: - Events summary: Update an event parameters: - name: identifier in: path required: true schema: type: string description: The event ID (UUID) or event name. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateEventRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateEventResponse' delete: operationId: events/remove tags: - Events summary: Delete an event parameters: - name: identifier in: path required: true schema: type: string description: The event ID (UUID) or event name. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RemoveEventResponse' /suppressions: post: operationId: suppressions/add tags: - Suppressions summary: Create a suppression requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateSuppressionOptions' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateSuppressionResponseSuccess' get: operationId: suppressions/list tags: - Suppressions summary: Retrieve a list of suppressions parameters: - name: origin in: query required: false schema: type: string enum: - bounce - complaint - manual description: Filter suppressions by origin. - $ref: '#/components/parameters/PaginationLimit' - $ref: '#/components/parameters/PaginationAfter' - $ref: '#/components/parameters/PaginationBefore' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListSuppressionsResponseSuccess' /suppressions/batch/add: post: operationId: suppressions/batch-add tags: - Suppressions summary: Add up to 100 suppressions at once requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchAddSuppressionsOptions' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/BatchAddSuppressionsResponseSuccess' /suppressions/batch/remove: post: operationId: suppressions/batch-remove tags: - Suppressions summary: Remove up to 100 suppressions at once requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchRemoveSuppressionsOptions' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BatchRemoveSuppressionsResponseSuccess' /suppressions/{suppression}: get: operationId: suppressions/get tags: - Suppressions summary: Retrieve a single suppression by ID or email parameters: - name: suppression in: path required: true schema: type: string description: The Suppression ID or email address. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetSuppressionResponseSuccess' delete: operationId: suppressions/remove tags: - Suppressions summary: Remove a single suppression by ID or email parameters: - name: suppression in: path required: true schema: type: string description: The Suppression ID or email address. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RemoveSuppressionResponseSuccess' webhooks: email.sent: post: summary: Email sent description: Occurs whenever the API request was successful. Resend will attempt to deliver the message to the recipient's mail server. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailSentEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. email.delivered: post: summary: Email delivered description: Occurs whenever Resend successfully delivered the email to the recipient's mail server. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailDeliveredEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. email.delivery_delayed: post: summary: Email delivery delayed description: Occurs whenever the email couldn't be delivered due to a temporary issue, such as the recipient's inbox being full or the receiving server experiencing a transient issue. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailDeliveryDelayedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. email.bounced: post: summary: Email bounced description: Occurs whenever the recipient's mail server permanently rejected the email. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailBouncedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. email.complained: post: summary: Email complained description: Occurs whenever the email was successfully delivered, but the recipient marked it as spam. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailComplainedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. email.opened: post: summary: Email opened description: Occurs whenever the recipient opened the email. Requires open tracking to be enabled. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailOpenedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. email.clicked: post: summary: Email clicked description: Occurs whenever the recipient clicks on an email link. Requires click tracking to be enabled. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailClickedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. email.failed: post: summary: Email failed description: Occurs whenever the email failed to send due to an error such as invalid recipients, API key problems, domain verification issues, email quota limits, or other sending failures. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailFailedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. email.scheduled: post: summary: Email scheduled description: Occurs whenever the email is scheduled to be sent. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailScheduledEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. email.suppressed: post: summary: Email suppressed description: Occurs whenever the email is suppressed by Resend, such as when the recipient's address is on the account-level suppression list. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailSuppressedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. email.received: post: summary: Email received description: Occurs whenever Resend successfully receives an inbound email on a receiving domain. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailReceivedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. contact.created: post: summary: Contact created description: 'Occurs whenever a contact was successfully created. Note: when importing multiple contacts via CSV, this event is not triggered.' tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContactCreatedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. contact.updated: post: summary: Contact updated description: Occurs whenever a contact was successfully updated. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContactUpdatedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. contact.deleted: post: summary: Contact deleted description: Occurs whenever a contact was successfully deleted. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContactDeletedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. domain.created: post: summary: Domain created description: Occurs when a domain was successfully created. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DomainCreatedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. domain.updated: post: summary: Domain updated description: Occurs when a domain was successfully updated. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DomainUpdatedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. domain.deleted: post: summary: Domain deleted description: Occurs when a domain was successfully deleted. tags: - Webhook Events requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DomainDeletedEvent' responses: '2XX': description: Return any 2xx status code to acknowledge receipt of the event. components: securitySchemes: bearerAuth: type: http scheme: bearer parameters: PaginationLimit: in: query name: limit required: false schema: type: integer minimum: 1 maximum: 100 description: Number of items to return. PaginationAfter: in: query name: after required: false schema: type: string description: Return items after this cursor. PaginationBefore: in: query name: before required: false schema: type: string description: Return items before this cursor. schemas: SendEmailRequest: type: object required: - from - to - subject properties: from: type: string description: Sender email address. To include a friendly name, use the format "Your Name ". to: description: Recipient email address. For multiple addresses, send as an array of strings. Max 50. oneOf: - type: string - type: array items: type: string minItems: 1 maxItems: 50 subject: type: string description: Email subject. bcc: description: Bcc recipient email address. For multiple addresses, send as an array of strings. oneOf: - type: string - type: array items: type: string cc: description: Cc recipient email address. For multiple addresses, send as an array of strings. oneOf: - type: string - type: array items: type: string reply_to: description: Reply-to email address. For multiple addresses, send as an array of strings. oneOf: - type: string - type: array items: type: string html: type: string description: The HTML version of the message. text: type: string description: The plain text version of the message. template: allOf: - $ref: '#/components/schemas/EmailTemplateInput' - description: Use a published template to send the email. If provided, do not include html or text. headers: type: object description: Custom headers to add to the email. scheduled_at: type: string description: Schedule email to be sent later. The date should be in ISO 8601 format. attachments: type: array items: $ref: '#/components/schemas/Attachment' tags: type: array items: $ref: '#/components/schemas/Tag' topic_id: type: string description: The topic ID to scope the email to. If the recipient is a contact and opted-in to the topic, the email is sent. If opted-out, the email is not sent. If the recipient is not a contact, the email is sent if the topic's default subscription is opt_in. Attachment: type: object properties: content: type: string format: binary description: Content of an attached file. filename: type: string description: Name of attached file. path: type: string description: Path where the attachment file is hosted content_type: type: string description: Optional content type for the attachment, if not set it will be derived from the filename property content_id: type: string description: Content ID for embedding inline images using cid references (e.g., cid:image001). Tag: type: object properties: name: type: string description: The name of the email tag. It can only contain ASCII letters (a–z, A–Z), numbers (0–9), underscores (_), or dashes (-). It can contain no more than 256 characters. value: type: string description: The value of the email tag.It can only contain ASCII letters (a–z, A–Z), numbers (0–9), underscores (_), or dashes (-). It can contain no more than 256 characters. EmailTemplateInput: type: object properties: id: type: string description: The id of the published email template. variables: type: object additionalProperties: oneOf: - type: string - type: number description: Template variables object with key/value pairs. example: variableName: 'Sign up now' variableName2: 123 required: - id SendEmailResponse: type: object properties: id: type: string description: The ID of the sent email. UpdateEmailOptions: type: object properties: scheduled_at: type: string description: Schedule email to be sent later. The date should be in ISO 8601 format. ShareEmailOptions: type: object properties: expires_in: type: string description: How long the link stays valid for, as a duration like `10m`, `2 hours`, or `1 day`. Defaults to `48h` and cannot exceed 48 hours. ShareEmailResponse: type: object properties: object: type: string description: The type of object. example: 'email' id: type: string description: The ID of the email. example: '4ef9a417-02e9-4d39-ad75-9611e0fcc33c' url: type: string description: The shareable link, valid until it expires. example: 'https://resend.com/shared?token=eyJhbGciOiJIUzI1NiJ9...' Email: type: object properties: object: type: string description: The type of object. example: 'email' id: type: string description: The ID of the email. example: '4ef9a417-02e9-4d39-ad75-9611e0fcc33c' message_id: type: string description: The Message-ID header value of the email. example: '<202301010000.4ef9a417@email.example.com>' to: type: array items: type: string description: The email addresses of the recipients. example: ['delivered@resend.dev'] from: type: string description: The email address of the sender. example: 'Acme ' created_at: type: string description: The date and time the email was created. example: '2023-04-03 22:13:42.674981+00' subject: type: string description: The subject line of the email. example: 'Hello World' html: type: string description: The HTML body of the email. example: 'Congrats on sending your first email!' text: type: string description: The plain text body of the email. bcc: type: array items: type: string description: The email addresses of the blind carbon copy recipients. cc: type: array items: type: string description: The email addresses of the carbon copy recipients. reply_to: type: array items: type: string description: The email addresses to which replies should be sent. last_event: type: string description: The status of the email. enum: - bounced - canceled - clicked - complained - delivered - delivery_delayed - failed - opened - queued - scheduled - sent - suppressed example: 'delivered' ListEmailsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing email information. items: $ref: '#/components/schemas/Email' GetEmailsMetricsResponse: type: object properties: object: type: string description: Type of the response object. example: 'metrics' start_date: type: string description: The start of the requested date range, as an ISO 8601 datetime. example: '2026-07-01T00:00:00.000Z' end_date: type: string description: The end of the requested date range, as an ISO 8601 datetime. example: '2026-07-08T00:00:00.000Z' metrics: type: array description: The metrics included in the response. items: type: string dimensions: type: array description: The dimensions the response is broken down by. items: type: string enum: - period - domain - email - broadcast granularity: type: string enum: - hourly - daily - weekly - monthly description: The bucket size used when `period` is in `dimensions`. totals: type: object description: The requested metrics, totaled over the whole date range. additionalProperties: type: number data: type: array description: One row per unique combination of the requested `dimensions`. Omitted when `dimensions` is empty. items: $ref: '#/components/schemas/EmailMetricsDataRow' EmailMetricsDataRow: type: object description: A single breakdown row. Which dimension fields are present depends on the requested `dimensions`; which metric fields are present depends on the requested `metrics`. properties: period: type: string description: Present when `period` is in `dimensions`. domain_id: type: string format: uuid description: Present when `domain` is in `dimensions`. domain_name: type: string description: Present when `domain` is in `dimensions`. email_id: type: string format: uuid description: Present when `email` is in `dimensions`. broadcast_id: type: string format: uuid description: Present when `broadcast` is in `dimensions`. broadcast_name: type: string description: Present when `broadcast` is in `dimensions`. additionalProperties: type: number CreateBatchEmailsResponse: type: object properties: data: type: array items: type: object properties: id: type: string description: The ID of the sent email. DomainCapabilities: type: object description: Configure the domain capabilities for sending and receiving emails. At least one capability must be enabled. properties: sending: type: string enum: - enabled - disabled description: Enable or disable sending emails from this domain. receiving: type: string enum: - enabled - disabled description: Enable or disable receiving emails to this domain. CreateDomainRequest: type: object required: - name properties: name: type: string description: The name of the domain you want to create. region: type: string enum: - us-east-1 - eu-west-1 - sa-east-1 - ap-northeast-1 default: us-east-1 description: The region where emails will be sent from. Possible values are us-east-1 | eu-west-1 | sa-east-1 | ap-northeast-1 custom_return_path: type: string description: For advanced use cases, choose a subdomain for the Return-Path address. Defaults to 'send' (i.e., send.yourdomain.tld). open_tracking: type: boolean description: Track the open rate of each email. click_tracking: type: boolean description: Track clicks within the body of each HTML email. tls: type: string enum: - opportunistic - enforced default: opportunistic description: TLS mode. Opportunistic attempts secure connection but falls back to unencrypted. Enforced requires TLS or email won't be sent. capabilities: $ref: '#/components/schemas/DomainCapabilities' tracking_subdomain: type: string description: The subdomain to use for click and open tracking. CreateDomainResponse: type: object properties: id: type: string description: The ID of the domain. name: type: string description: The name of the domain. created_at: type: string description: The date and time the domain was created. example: '2023-10-06 23:47:56.678+00' status: type: string enum: - pending - verified - failed - not_started - partially_verified - partially_failed description: The status of the domain. capabilities: $ref: '#/components/schemas/DomainCapabilities' records: type: array items: $ref: '#/components/schemas/DomainRecord' region: type: string description: The region where the domain is hosted. open_tracking: type: boolean description: Whether open tracking is enabled for this domain. click_tracking: type: boolean description: Whether click tracking is enabled for this domain. tracking_subdomain: type: string description: The subdomain used for click and open tracking. UpdateDomainOptions: type: object properties: open_tracking: type: boolean description: Track the open rate of each email. click_tracking: type: boolean description: Track clicks within the body of each HTML email. tls: type: string description: enforced | opportunistic. default: "opportunistic" capabilities: $ref: '#/components/schemas/DomainCapabilities' tracking_subdomain: type: string description: The subdomain to use for click and open tracking. DomainRecord: type: object properties: record: type: string enum: - SPF - DKIM - Receiving - Tracking - TrackingCAA description: The type of record (SPF for sending, DKIM for sending, Receiving for inbound emails, Tracking & TrackingCAA for click and open tracking). name: type: string description: The name of the DNS record. type: type: string enum: - MX - TXT - CNAME - CAA description: The DNS record type. ttl: type: string description: The time to live for the record. status: type: string enum: - pending - verified - failed - temporary_failure - not_started description: The status of the record. value: type: string description: The value of the record. priority: type: integer description: The priority of the record (only applicable for MX records). Domain: type: object properties: object: type: string description: The type of object. example: 'domain' id: type: string description: The ID of the domain. example: 'd91cd9bd-1176-453e-8fc1-35364d380206' name: type: string description: The name of the domain. example: 'example.com' status: type: string enum: - pending - verified - failed - not_started - partially_verified - partially_failed description: The status of the domain. example: 'not_started' created_at: type: string description: The date and time the domain was created. example: '2023-04-26 20:21:26.347412+00' region: type: string description: The region where the domain is hosted. example: 'us-east-1' open_tracking: type: boolean description: Whether open tracking is enabled for this domain. click_tracking: type: boolean description: Whether click tracking is enabled for this domain. tracking_subdomain: type: string description: The subdomain used for click and open tracking. capabilities: $ref: '#/components/schemas/DomainCapabilities' records: type: array items: $ref: '#/components/schemas/DomainRecord' CreateDomainClaimRequest: type: object required: - name properties: name: type: string description: The name of the domain you want to claim. region: type: string enum: - us-east-1 - eu-west-1 - sa-east-1 - ap-northeast-1 default: us-east-1 description: The region where emails will be sent from. Possible values are us-east-1 | eu-west-1 | sa-east-1 | ap-northeast-1 custom_return_path: type: string default: send description: For advanced use cases, choose a subdomain for the Return-Path address. Defaults to 'send' (i.e., send.yourdomain.tld). open_tracking: type: boolean description: Track the open rate of each email. click_tracking: type: boolean description: Track clicks within the body of each HTML email. tracking_subdomain: type: string description: The subdomain to use for click and open tracking. DomainClaimRecord: type: object description: The TXT record to add to your DNS to prove ownership of the claimed domain. properties: type: type: string enum: - TXT description: The DNS record type. Always TXT for domain claims. example: 'TXT' name: type: string description: The name of the DNS record (the domain being claimed). example: 'example.com' value: type: string description: The value of the TXT record. example: 'resend-domain-verification=abc123' ttl: type: string description: The time to live for the record. example: 'Auto' DomainClaim: type: object properties: object: type: string description: The type of object. example: 'domain_claim' id: type: string description: The ID of the claim. example: 'd91cd9bd-1176-453e-8fc1-35364d380206' name: type: string description: The name of the domain being claimed. example: 'example.com' status: type: string enum: - pending - verified - completed - blocked - expired - superseded - canceled - failed description: The status of the claim. example: 'pending' domain_id: type: [string, "null"] description: The ID of the placeholder domain created for the claim. example: 'a1b2c3d4-1176-453e-8fc1-35364d380206' region: type: [string, "null"] enum: - us-east-1 - eu-west-1 - sa-east-1 - ap-northeast-1 - null description: The region where the claimed domain will send from. example: 'us-east-1' record: $ref: '#/components/schemas/DomainClaimRecord' blocked_reason: type: [string, "null"] enum: - grace_period - recent_owner_activity - pending_scheduled_emails - null description: Why the claim is currently blocked, if applicable. example: null failure_reason: type: [string, "null"] description: Why the claim failed, if applicable. example: null created_at: type: string description: The date and time the claim was created. example: '2023-04-26 20:21:26.347412+00' expires_at: type: string description: The date and time the claim expires if not verified. example: '2023-05-03 20:21:26.347412+00' VerifyDomainResponse: type: object properties: object: type: string description: The type of object. example: 'domain' id: type: string description: The ID of the domain. example: 'd91cd9bd-1176-453e-8fc1-35364d380206' ListDomainsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array items: $ref: '#/components/schemas/ListDomainsItem' ListDomainsItem: type: object properties: id: type: string description: The ID of the domain. example: 'd91cd9bd-1176-453e-8fc1-35364d380206' name: type: string description: The name of the domain. example: 'example.com' status: type: string enum: - pending - verified - failed - not_started - partially_verified - partially_failed description: The status of the domain. example: 'not_started' created_at: type: string description: The date and time the domain was created. example: '2023-04-26 20:21:26.347412+00' region: type: string description: The region where the domain is hosted. example: 'us-east-1' open_tracking: type: boolean description: Whether open tracking is enabled for this domain. click_tracking: type: boolean description: Whether click tracking is enabled for this domain. capabilities: $ref: '#/components/schemas/DomainCapabilities' UpdateDomainResponseSuccess: type: object properties: id: type: string description: The ID of the updated domain. example: 'd91cd9bd-1176-453e-8fc1-35364d380206' object: type: string description: The object type representing the updated domain. example: 'domain' DeleteDomainResponse: type: object properties: object: type: string description: The type of object. example: 'domain' id: type: string description: The ID of the domain. example: 'd91cd9bd-1176-453e-8fc1-35364d380206' deleted: type: boolean description: Indicates whether the domain was deleted successfully. example: true CreateApiKeyRequest: type: object required: - name properties: name: type: string description: The API key name. permission: type: string enum: - full_access - sending_access description: The API key can have full access to Resend’s API or be only restricted to send emails. * full_access - Can create, delete, get, and update any resource. * sending_access - Can only send emails. domain_id: type: string description: Restrict an API key to send emails only from a specific domain. Only used when the permission is sending_access. CreateApiKeyResponse: type: object properties: id: type: string description: The ID of the API key. token: type: string description: The token of the API key. ListApiKeysResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array items: $ref: '#/components/schemas/ApiKey' ApiKey: type: object properties: id: type: string description: The ID of the API key. name: type: string description: The name of the API key. created_at: type: string description: The date and time the API key was created. example: '2023-10-06 23:47:56.678+00' last_used_at: type: [string, "null"] description: The date and time the API key was last used. example: '2023-10-06 23:47:56.678+00' ListOAuthGrantsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array items: $ref: '#/components/schemas/OAuthGrant' OAuthGrant: type: object properties: id: type: string description: The ID of the OAuth grant. client_id: type: string description: The ID of the OAuth client the grant was issued to. scopes: type: array items: type: string description: The scopes granted to the OAuth client. created_at: type: string description: The date and time the OAuth grant was created. example: '2023-10-06 23:47:56.678+00' revoked_at: type: [string, "null"] description: The date and time the OAuth grant was revoked, or null if it is still active. example: '2023-10-06 23:47:56.678+00' revoked_reason: type: [string, "null"] description: The reason the OAuth grant was revoked, or null if it is still active. client: type: object description: The OAuth client the grant was issued to. properties: name: type: string description: The name of the OAuth client. logo_uri: type: [string, "null"] description: The URL of the OAuth client's logo. RevokeOAuthGrantResponse: type: object properties: object: type: string description: The type of object. example: 'oauth_grant' id: type: string description: The ID of the OAuth grant. revoked_at: type: string format: date-time description: The date and time the OAuth grant was revoked. example: '2023-10-06T23:47:56.678Z' revoked_reason: type: string description: The reason the OAuth grant was revoked. DeleteApiKeyResponse: type: object properties: object: type: string description: The type of object. example: 'api_key' id: type: string description: The ID of the API key. deleted: type: boolean description: Indicates whether the API key was successfully deleted. example: true UpdateApiKeyRequest: type: object required: - name properties: name: type: string description: The API key name. UpdateApiKeyResponse: type: object properties: object: type: string description: The type of object. example: 'api_key' id: type: string description: The ID of the API key. CreateAudienceOptions: type: object deprecated: true required: - name properties: name: type: string description: The name of the audience you want to create. CreateAudienceResponseSuccess: type: object deprecated: true properties: id: type: string description: The ID of the audience. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object of the audience. example: audience name: type: string description: The name of the audience. example: Registered Users GetAudienceResponseSuccess: type: object deprecated: true properties: id: type: string description: The ID of the audience. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object of the audience. example: audience name: type: string description: The name of the audience. example: Registered Users created_at: type: string description: The date that the object was created. example: '2023-10-06 22:59:55.977+00' RemoveAudienceResponseSuccess: type: object deprecated: true properties: id: type: string description: The ID of the audience. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object of the audience. example: audience deleted: type: boolean description: The deleted attribute indicates that the corresponding audience has been deleted. example: true ListAudiencesResponseSuccess: type: object deprecated: true properties: object: type: string description: Type of the response object. example: list data: type: array description: Array containing audience information. items: type: object properties: id: type: string description: Unique identifier for the audience. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf name: type: string description: Name of the audience. example: Registered Users created_at: type: string description: Timestamp indicating when the audience was created. example: "2023-10-06 22:59:55.977+00" CreateContactOptions: type: object required: - email properties: email: type: string description: Email address of the contact. example: steve.wozniak@gmail.com first_name: type: string description: First name of the contact. example: Steve last_name: type: string description: Last name of the contact. example: Wozniak unsubscribed: type: boolean description: The Contact's global subscription status. If set to true, the contact will be unsubscribed from all Broadcasts. example: false properties: type: object additionalProperties: true description: A map of custom property keys and values to create. segments: type: array items: type: object properties: id: type: string description: The segment ID description: Array of segment IDs to add the contact to. topics: type: array items: type: object properties: id: type: string description: The topic ID. subscription: type: string enum: - opt_in - opt_out description: The subscription status for this topic. description: Array of topic subscriptions for the contact. audience_id: type: string description: Unique identifier of the audience to which the contact belongs. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf deprecated: true CreateContactResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: contact id: type: string description: Unique identifier for the created contact. example: 479e3145-dd38-476b-932c-529ceb705947 GetContactResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: contact id: type: string description: Unique identifier for the contact. example: e169aa45-1ecf-4183-9955-b1499d5701d3 email: type: string description: Email address of the contact. example: steve.wozniak@gmail.com first_name: type: [string, "null"] description: First name of the contact. example: Steve last_name: type: [string, "null"] description: Last name of the contact. example: Wozniak created_at: type: string description: Timestamp indicating when the contact was created. example: "2023-10-06 23:47:56.678+00" unsubscribed: type: boolean description: Indicates if the contact is unsubscribed. example: false properties: type: object additionalProperties: true description: A map of custom property keys and values. UpdateContactOptions: type: object properties: email: type: string description: Email address of the contact. example: steve.wozniak@gmail.com first_name: type: string description: First name of the contact. example: Steve last_name: type: string description: Last name of the contact. example: Wozniak unsubscribed: type: boolean description: The Contact's global subscription status. If set to true, the contact will be unsubscribed from all Broadcasts. example: false properties: type: object additionalProperties: true description: A map of custom property keys and values to update. UpdateContactResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: contact id: type: string description: Unique identifier for the updated contact. example: 479e3145-dd38-476b-932c-529ceb705947 RemoveContactResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: contact id: type: string description: Unique identifier for the removed contact. example: 520784e2-887d-4c25-b53c-4ad46ad38100 deleted: type: boolean description: Indicates whether the contact was successfully deleted. example: true ListContactsResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list data: type: array description: Array containing contact information. items: type: object properties: id: type: string description: Unique identifier for the contact. example: e169aa45-1ecf-4183-9955-b1499d5701d3 email: type: string description: Email address of the contact. example: steve.wozniak@gmail.com first_name: type: [string, "null"] description: First name of the contact. example: Steve last_name: type: [string, "null"] description: Last name of the contact. example: Wozniak created_at: type: string description: Timestamp indicating when the contact was created. example: "2023-10-06 23:47:56.678+00" unsubscribed: type: boolean description: Indicates if the contact is unsubscribed. example: false CreateContactImportOptions: type: object required: - file properties: file: type: string format: binary description: CSV file to import. Maximum size is 50MB. column_map: type: string description: JSON-encoded object mapping contact fields and custom property keys to CSV column names. Supports `email`, `first_name`, `last_name`, `unsubscribed`, and `properties`. Custom property mappings can include `type` as `string`, `number`, or `boolean`; defaults to `string`. example: '{"email":"Email","first_name":"First Name","last_name":"Last Name","unsubscribed":"Unsubscribed","properties":{"plan":{"column":"Plan","type":"string"}}}' on_conflict: type: string enum: - upsert - skip default: skip description: Strategy to use when an imported contact already exists. example: skip segments: type: string description: JSON-encoded array of segments to add imported contacts to. example: '[{"id":"78261eea-8f8b-4381-83c6-79fa7120f1cf"}]' topics: type: string description: JSON-encoded array of topic subscriptions to apply to imported contacts. Each `subscription` must be `opt_in` or `opt_out`. example: '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_in"}]' CreateContactImportResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: contact_import id: type: string format: uuid description: Unique identifier for the created contact import. example: 479e3145-dd38-476b-932c-529ceb705947 ContactImportCounts: type: object properties: total: type: integer description: Total number of rows processed by the import. example: 100 created: type: integer description: Number of contacts created by the import. example: 80 updated: type: integer description: Number of contacts updated by the import. example: 10 skipped: type: integer description: Number of rows skipped by the import. example: 5 failed: type: integer description: Number of rows that failed during the import. example: 5 ContactImport: type: object properties: object: type: string description: Type of the response object. example: contact_import id: type: string format: uuid description: Unique identifier for the contact import. example: 479e3145-dd38-476b-932c-529ceb705947 status: type: string enum: - queued - in_progress - completed - failed description: Current status of the contact import. example: completed created_at: type: string description: Timestamp indicating when the contact import was created. example: "2023-10-06 23:47:56.678+00" completed_at: type: [string, "null"] description: Timestamp indicating when the contact import completed. example: "2023-10-06 23:50:56.678+00" counts: $ref: '#/components/schemas/ContactImportCounts' GetContactImportResponseSuccess: allOf: - $ref: '#/components/schemas/ContactImport' ListContactImportsResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing contact imports. items: $ref: '#/components/schemas/ContactImport' CreateBroadcastOptions: type: object required: - from - subject - segment_id properties: name: type: string description: Name of the broadcast. segment_id: type: string description: Unique identifier of the segment this broadcast will be sent to. audience_id: type: string description: Use `segment_id` instead. Unique identifier of the segment this broadcast will be sent to. deprecated: true from: type: string description: The email address of the sender. subject: type: string description: The subject line of the email. reply_to: type: array items: type: string description: The email addresses to which replies should be sent. preview_text: type: string description: The preview text of the email. example: 'Here are our announcements' html: type: string description: The HTML version of the message. text: type: string description: The plain text version of the message. topic_id: type: string description: The topic ID that the broadcast will be scoped to. send: type: boolean description: | Whether to send the broadcast immediately or keep it as a draft. scheduled_at: type: string description: | Schedule time to send the broadcast. Can only be used if `send` is true. CreateBroadcastResponseSuccess: type: object properties: id: type: string description: The ID of the broadcast. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type of the response. example: broadcast ListBroadcastsResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing broadcast information. items: type: object properties: id: type: string description: Unique identifier for the broadcast. example: e169aa45-1ecf-4183-9955-b1499d5701d3 name: type: string description: Name of the broadcast. example: November announcements audience_id: type: string description: Deprecated. Use segment_id instead. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf deprecated: true segment_id: type: string description: Unique identifier of the segment this broadcast will be sent to. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf status: type: string description: The status of the broadcast. example: 'draft' created_at: type: string description: Timestamp indicating when the broadcast was created. example: "2023-10-06 22:59:55.977+00" scheduled_at: type: string description: Timestamp indicating when the broadcast is scheduled to be sent. example: "2023-10-06 22:59:55.977+00" sent_at: type: string description: Timestamp indicating when the broadcast was sent. example: "2023-10-06 22:59:55.977+00" topic_id: type: string description: The topic ID that the broadcast is scoped to. example: b6d24b8e-af0b-4c3c-be0c-359bbd97381e GetBroadcastResponseSuccess: type: object properties: id: type: string description: Unique identifier for the broadcast. example: e169aa45-1ecf-4183-9955-b1499d5701d3 name: type: string description: Name of the broadcast. example: November announcements audience_id: type: [string, "null"] description: "Deprecated: use `segment_id` instead. Unique identifier of the segment this broadcast will be sent to." deprecated: true segment_id: type: [string, "null"] description: Unique identifier of the segment this broadcast will be sent to. from: type: string description: The email address of the sender. example: 'Acme ' subject: type: string description: The subject line of the email. example: 'Hello World' reply_to: type: array items: type: string description: The email addresses to which replies should be sent. preview_text: type: string description: The preview text of the email. example: 'Here are our announcements' status: type: string description: The status of the broadcast. example: 'draft' created_at: type: string description: Timestamp indicating when the broadcast was created. example: "2023-10-06 22:59:55.977+00" scheduled_at: type: string description: Timestamp indicating when the broadcast is scheduled to be sent. example: "2023-10-06 22:59:55.977+00" sent_at: type: string description: Timestamp indicating when the broadcast was sent. example: "2023-10-06 22:59:55.977+00" text: type: [string, "null"] description: The plain text version of the broadcast content. example: 'Hello {{{FIRST_NAME|there}}}!' html: type: [string, "null"] description: The HTML version of the broadcast content. example: '

Hello {{{FIRST_NAME|there}}}!

' topic_id: type: [string, "null"] description: The topic ID that the broadcast is scoped to. example: b6d24b8e-af0b-4c3c-be0c-359bbd97381e UpdateBroadcastOptions: type: object properties: name: type: string description: Name of the broadcast. audience_id: type: string description: Use `segment_id` instead. Unique identifier of the audience this broadcast will be sent to. deprecated: true segment_id: type: string description: Unique identifier of the segment this broadcast will be sent to. from: type: string description: The email address of the sender. subject: type: string description: The subject line of the email. reply_to: type: array items: type: string description: The email addresses to which replies should be sent. preview_text: type: string description: The preview text of the email. html: type: string description: The HTML version of the message. text: type: string description: The plain text version of the message. topic_id: type: string description: The topic ID that the broadcast will be scoped to. UpdateBroadcastResponseSuccess: type: object properties: id: type: string description: The ID of the broadcast. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type of the response. example: broadcast RemoveBroadcastResponseSuccess: type: object properties: id: type: string description: The ID of the broadcast. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: Type of the response object. example: broadcast deleted: type: boolean description: The deleted attribute indicates that the corresponding broadcast has been deleted. example: true SendBroadcastOptions: type: object properties: scheduled_at: type: string description: Schedule email to be sent later. The date should be in ISO 8601 format. SendBroadcastResponseSuccess: type: object properties: id: type: string description: The ID of the broadcast. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf CancelBroadcastResponseSuccess: type: object properties: id: type: string description: The ID of the broadcast. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type of the response. example: broadcast DuplicateBroadcastResponseSuccess: type: object properties: id: type: string description: The ID of the duplicated broadcast. example: 1f85ae38-f5b9-4c1f-8766-667a53970fea object: type: string description: The object type of the response. example: broadcast ListBroadcastRecipientsResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing broadcast recipients. items: type: object properties: id: type: string description: Opaque cursor identifying this row, used for pagination. example: b2Zmc2V0OjA contact_id: type: [string, "null"] description: The ID of the contact associated with this recipient, if one exists. example: e169aa45-1ecf-4183-9955-b1499d5701d3 email: type: string description: The recipient's email address. example: steve.wozniak@gmail.com count: type: integer description: The number of times this recipient triggered the event. Only present when `type` is `opened` or `clicked`. example: 3 bounce_type: type: string enum: - permanent - transient - undetermined description: The type of bounce. Only present when `type` is `bounced`. clicked_links: type: array description: The links this recipient clicked. Only present when `type` is `clicked`. items: type: object properties: url: type: string description: The clicked URL. example: https://resend.com/pricing clicks: type: integer description: The number of times this recipient clicked this URL. example: 2 ListBroadcastClickedLinksResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing the broadcast's clicked links. items: type: object properties: id: type: string description: An opaque cursor for this row, used only for pagination. It does not identify any entity in Resend. example: b2Zmc2V0OjA url: type: string description: The URL that was clicked. example: https://resend.com/pricing clicks: type: integer description: Total number of clicks on this URL. example: 42 unique_clicks: type: integer description: Number of unique clicks on this URL. example: 30 RetrievedAttachment: type: object properties: object: type: string description: The type of object. example: 'attachment' id: type: string format: uuid description: The ID of the attachment. example: '660e8400-e29b-41d4-a716-446655440000' filename: type: string nullable: true description: The filename of the attachment. example: 'document.pdf' content_type: type: string description: The MIME type of the attachment. example: 'application/pdf' content_id: type: string description: The content ID for inline attachments. example: 'img001' content_disposition: type: string nullable: true enum: - inline - attachment description: How the attachment should be displayed. example: 'attachment' download_url: type: string description: Signed URL to download the attachment content. example: 'https://cloudfront.example.com/path?Signature=...' expires_at: type: string format: date-time description: Timestamp when the download URL expires. example: '2024-10-27T18:30:00.000Z' size: type: integer description: Size of the attachment in bytes. example: 2048 ListAttachmentsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing attachment information. items: type: object properties: id: type: string format: uuid description: The ID of the attachment. example: '660e8400-e29b-41d4-a716-446655440000' filename: type: string nullable: true description: The filename of the attachment. example: 'document.pdf' content_type: type: string description: The MIME type of the attachment. example: 'application/pdf' content_id: type: string description: The content ID for inline attachments. example: 'img001' content_disposition: type: string nullable: true enum: - inline - attachment description: How the attachment should be displayed. example: 'attachment' download_url: type: string description: Signed URL to download the attachment content. example: 'https://cloudfront.example.com/path?Signature=...' expires_at: type: string format: date-time description: Timestamp when the download URL expires. example: '2024-10-27T18:30:00.000Z' size: type: integer description: Size of the attachment in bytes. example: 2048 GetReceivedEmailResponse: type: object properties: object: type: string description: The type of object. example: 'email' id: type: string format: uuid description: The ID of the received email. example: '550e8400-e29b-41d4-a716-446655440000' to: type: array items: type: string description: The recipient email addresses. example: ['delivered@resend.dev'] from: type: string description: The sender email address. example: 'sender@example.com' subject: type: string description: The email subject. example: 'Hello World' message_id: type: string description: The unique message ID from the email headers. example: '' bcc: type: [array, "null"] items: type: string description: The BCC recipients. example: [] cc: type: [array, "null"] items: type: string description: The CC recipients. example: [] reply_to: type: [array, "null"] items: type: string description: The reply-to addresses. example: [] received_for: type: array items: type: string description: The recipient addresses the email was forwarded for, taken from the `for` clause of the message's `Received` headers. example: ['forwarded@example.com'] html: type: [string, "null"] description: The HTML content of the email. example: '

Email content

' text: type: [string, "null"] description: The plain text content of the email. example: 'Email content' headers: type: [object, "null"] description: The email headers. example: {'X-Custom-Header': 'value'} created_at: type: string format: date-time description: Timestamp when the email was received. example: '2023-10-06T23:47:56.678Z' attachments: type: array description: Array of attachments. items: type: object properties: id: type: string format: uuid description: The ID of the attachment. filename: type: string nullable: true description: The filename of the attachment. content_type: type: string description: The MIME type of the attachment. content_id: type: string description: The content ID for inline attachments. content_disposition: type: string nullable: true enum: - inline - attachment description: How the attachment should be displayed. size: type: integer description: Size of the attachment in bytes. ListReceivedEmailsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing received email information. items: type: object properties: id: type: string format: uuid description: The ID of the received email. example: '550e8400-e29b-41d4-a716-446655440000' to: type: array items: type: string description: The recipient email addresses. example: ['delivered@resend.dev'] from: type: string description: The sender email address. example: 'sender@example.com' subject: type: [string, "null"] description: The email subject. example: 'Hello World' message_id: type: string description: The unique message ID from the email headers. example: '' bcc: type: [array, "null"] items: type: string description: The BCC recipients. cc: type: [array, "null"] items: type: string description: The CC recipients. reply_to: type: [array, "null"] items: type: string description: The reply-to addresses. created_at: type: string format: date-time description: Timestamp when the email was received. example: '2023-10-06T23:47:56.678Z' attachments: type: array description: Array of attachments for this email. items: type: object properties: id: type: string format: uuid description: The ID of the attachment. filename: type: string nullable: true description: The filename of the attachment. content_type: type: string description: The MIME type of the attachment. content_id: type: string description: The content ID for inline attachments. content_disposition: type: string nullable: true enum: - inline - attachment description: How the attachment should be displayed. size: type: integer description: Size of the attachment in bytes. CreateWebhookRequest: type: object required: - endpoint - events properties: endpoint: type: string description: The URL where webhook events will be sent. example: 'https://webhook.example.com/handler' events: type: array items: type: string minItems: 1 description: Array of event types to subscribe to. example: ['email.sent', 'email.delivered', 'email.bounced', 'email.suppressed'] CreateWebhookResponse: type: object properties: object: type: string description: The type of object. example: 'webhook' id: type: string format: uuid description: The ID of the webhook. example: '479e3145-dd38-476b-932c-529ceb705947' signing_secret: type: string description: The secret key used to verify webhook payloads. example: 'whsec_...' GetWebhookResponse: type: object properties: object: type: string description: The type of object. example: 'webhook' id: type: string format: uuid description: The ID of the webhook. example: '479e3145-dd38-476b-932c-529ceb705947' endpoint: type: string description: The URL where webhook events are sent. example: 'https://webhook.example.com/handler' events: type: [array, "null"] items: type: string description: Array of event types subscribed to. example: ['email.sent', 'email.delivered'] status: type: string description: The status of the webhook. example: 'enabled' created_at: type: string description: Timestamp indicating when the webhook was created. example: '2023-10-06 23:47:56.678+00' signing_secret: type: string description: The secret key used to verify webhook payloads. example: 'whsec_...' ListWebhooksResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing webhook information. items: type: object properties: id: type: string format: uuid description: The ID of the webhook. example: '479e3145-dd38-476b-932c-529ceb705947' endpoint: type: string description: The URL where webhook events are sent. example: 'https://webhook.example.com/handler' events: type: [array, "null"] items: type: string description: Array of event types subscribed to. example: ['email.sent'] status: type: string description: The status of the webhook. example: 'enabled' created_at: type: string description: Timestamp indicating when the webhook was created. example: '2023-10-06 23:47:56.678+00' UpdateWebhookRequest: type: object properties: endpoint: type: string description: The URL where webhook events will be sent. example: 'https://webhook.example.com/new-handler' events: type: array items: type: string minItems: 1 description: Array of event types to subscribe to. example: ['email.sent', 'email.delivered'] status: type: string enum: - enabled - disabled description: The status of the webhook. example: 'enabled' UpdateWebhookResponse: type: object properties: object: type: string description: The type of object. example: 'webhook' id: type: string format: uuid description: The ID of the updated webhook. example: '479e3145-dd38-476b-932c-529ceb705947' RotateWebhookSigningSecretResponse: type: object properties: object: type: string description: The type of object. example: 'webhook' id: type: string format: uuid description: The ID of the webhook. example: '479e3145-dd38-476b-932c-529ceb705947' signing_secret: type: string description: The new secret key used to verify webhook payloads. example: 'whsec_...' DeleteWebhookResponse: type: object properties: object: type: string description: The type of object. example: 'webhook' id: type: string format: uuid description: The ID of the deleted webhook. example: '479e3145-dd38-476b-932c-529ceb705947' deleted: type: boolean description: Indicates whether the webhook was successfully deleted. example: true ListWebhookEventsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing webhook event information. items: type: object properties: id: type: string description: The ID of the webhook event. example: 'msg_1srOrx2ZWZBpBUvZwXKQmoEYga2' type: type: string description: The type of the event. example: 'email.sent' created_at: type: string format: date-time description: Timestamp indicating when the event was created. example: '2026-08-22T15:28:00.000Z' status: type: string enum: - pending - attempting - success - failed description: The delivery status of the event for this webhook. example: 'success' GetWebhookEventResponse: type: object properties: object: type: string description: The type of object. example: 'webhook_event' id: type: string description: The ID of the webhook event. example: 'msg_1srOrx2ZWZBpBUvZwXKQmoEYga2' type: type: string description: The type of the event. example: 'email.sent' created_at: type: string format: date-time description: Timestamp indicating when the event was created. example: '2026-08-22T15:28:00.000Z' status: type: string enum: - pending - attempting - success - failed description: The delivery status of the event for this webhook. example: 'attempting' next_attempt_at: type: [string, "null"] format: date-time description: Timestamp of the next scheduled delivery attempt, or null when none is scheduled. Always null once the event has succeeded or permanently failed. example: '2026-08-22T15:33:00.000Z' payload: type: object description: The event payload sent to the webhook endpoint. example: type: 'email.sent' created_at: '2026-08-22T15:28:00.000Z' data: email_id: '571f1f42-1c2d-4b1f-8f8e-8b3b5b3b5b3b' from: 'onboarding@resend.dev' to: ['delivered@resend.dev'] subject: 'Welcome' created_at: '2026-08-22T15:27:59.000Z' ListWebhookEventAttemptsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing webhook event attempt information. items: type: object properties: id: type: string description: The ID of the webhook event attempt. example: 'atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2' http_status_code: type: integer description: The HTTP status code returned by the webhook endpoint. example: 200 response: type: string description: The response body returned by the webhook endpoint. example: '{"ok":true}' sent_at: type: string format: date-time description: Timestamp indicating when the attempt was sent. example: '2026-08-22T15:33:12.000Z' ReplayWebhookEventResponse: type: object properties: object: type: string description: The type of object. example: 'webhook_event' id: type: string description: The ID of the replayed webhook event. example: 'msg_1srOrx2ZWZBpBUvZwXKQmoEYga2' TemplateVariable: type: object properties: id: type: string description: The ID of the template variable. key: type: string description: The key of the variable. type: type: string description: The type of the variable. enum: [string, number, boolean, object, list] fallback_value: description: The fallback value of the variable. oneOf: - type: string - type: number - type: boolean - type: object - type: array items: {} created_at: type: string description: Timestamp indicating when the variable was created. example: '2023-10-06 23:47:56.678+00' updated_at: type: string description: Timestamp indicating when the variable was last updated. example: '2023-10-06 23:47:56.678+00' required: - key - type TemplateVariableInput: type: object properties: key: type: string description: The key of the variable. type: type: string description: The type of the variable. enum: [string, number, boolean, object, list] fallback_value: description: The fallback value of the variable. oneOf: - type: string - type: number - type: boolean - type: object - type: array items: {} required: - key - type Template: type: object properties: object: type: string description: The type of object. example: template id: type: string description: The ID of the template. current_version_id: type: string description: The ID of the current version of the template. name: type: string description: The name of the template. alias: type: string description: The alias of the template. from: type: string description: Sender email address. To include a friendly name, use the format "Your Name ". subject: type: string description: Email subject. reply_to: type: [array, "null"] items: type: string description: Reply-to email addresses. html: type: string description: The HTML version of the template. text: type: string description: The plain text version of the template. variables: type: array items: $ref: '#/components/schemas/TemplateVariable' created_at: type: string description: Timestamp indicating when the template was created. example: '2023-10-06 23:47:56.678+00' updated_at: type: string description: Timestamp indicating when the template was last updated. example: '2023-10-06 23:47:56.678+00' status: type: string description: The publication status of the template. enum: [draft, published] published_at: type: [string, "null"] description: Timestamp indicating when the template was published. example: '2023-10-06 23:47:56.678+00' has_unpublished_versions: type: boolean description: Indicates whether the template has unpublished versions. TemplateListItem: type: object properties: id: type: string description: The ID of the template. name: type: string description: The name of the template. status: type: string description: The publication status of the template. enum: [draft, published] published_at: type: [string, "null"] description: Timestamp indicating when the template was published. example: '2023-10-06 23:47:56.678+00' created_at: type: string description: Timestamp indicating when the template was created. example: '2023-10-06 23:47:56.678+00' updated_at: type: string description: Timestamp indicating when the template was last updated. example: '2023-10-06 23:47:56.678+00' alias: type: string description: The alias of the template. CreateTemplateRequest: type: object required: - name - html properties: name: type: string description: The name of the template. alias: type: string description: The alias of the template. from: type: string description: Sender email address. To include a friendly name, use the format "Your Name ". subject: type: string description: Email subject. reply_to: type: array items: type: string description: Reply-to email addresses. html: type: string description: The HTML version of the template. text: type: string description: The plain text version of the template. variables: type: array items: $ref: '#/components/schemas/TemplateVariableInput' CreateTemplateResponseSuccess: type: object properties: id: type: string description: The ID of the template. object: type: string description: The object type of the response. example: template ListTemplatesResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list data: type: array description: Array containing templates information. items: $ref: '#/components/schemas/TemplateListItem' has_more: type: boolean description: Indicates if there are more templates to retrieve. UpdateTemplateOptions: type: object properties: name: type: string description: The name of the template. alias: type: string description: The alias of the template. from: type: string description: Sender email address. To include a friendly name, use the format "Your Name ". subject: type: string description: Email subject. reply_to: type: array items: type: string description: Reply-to email addresses. html: type: string description: The HTML version of the template. text: type: string description: The plain text version of the template. variables: type: array items: $ref: '#/components/schemas/TemplateVariableInput' UpdateTemplateResponseSuccess: type: object properties: id: type: string description: The ID of the template. object: type: string description: The object type of the response. example: template RemoveTemplateResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: template id: type: string description: The ID of the template. deleted: type: boolean description: Indicates whether the template was successfully deleted. example: true PublishTemplateResponseSuccess: type: object properties: id: type: string description: The ID of the template. object: type: string description: The object type of the response. example: template DuplicateTemplateResponseSuccess: type: object properties: id: type: string description: The ID of the duplicated template. object: type: string description: The object type of the response. example: template CreateSegmentOptions: type: object required: - name properties: name: type: string description: The name of the segment. audience_id: type: string description: The ID of the audience this segment belongs to. deprecated: true filter: type: object description: Filter conditions for the segment. CreateSegmentResponseSuccess: type: object properties: id: type: string description: The ID of the segment. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type of the response. example: segment GetSegmentResponseSuccess: type: object properties: id: type: string description: The ID of the segment. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type. example: segment name: type: string description: The name of the segment. example: Active Users audience_id: type: string description: The ID of the audience this segment belongs to. deprecated: true filter: type: object description: Filter conditions for the segment. created_at: type: string description: Timestamp indicating when the segment was created. example: '2023-10-06 23:47:56.678+00' UpdateSegmentOptions: type: object required: - name properties: name: type: string description: The name of the segment. UpdateSegmentResponseSuccess: type: object properties: id: type: string description: The ID of the segment. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type. example: segment ListSegmentsResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list has_more: type: boolean description: Indicates if there are more results available. data: type: array description: Array containing segment information. items: type: object properties: id: type: string description: Unique identifier for the segment. name: type: string description: Name of the segment. audience_id: type: string description: The ID of the audience this segment belongs to. deprecated: true created_at: type: string description: Timestamp indicating when the segment was created. example: '2023-10-06 23:47:56.678+00' RemoveSegmentResponseSuccess: type: object properties: id: type: string description: The ID of the segment. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type. example: segment deleted: type: boolean description: Indicates whether the segment was successfully deleted. example: true CreateTopicOptions: type: object required: - name - default_subscription properties: name: type: string description: The name of the topic. Max 50 characters. maxLength: 50 default_subscription: type: string enum: - opt_in - opt_out description: The default subscription status for the topic. Cannot be changed after creation. description: type: string description: A description of the topic. Max 200 characters. maxLength: 200 visibility: type: string enum: - public - private default: private description: The visibility of the topic. Public topics are visible to all contacts on the unsubscribe page. Private topics are only visible to opted-in contacts. CreateTopicResponseSuccess: type: object properties: id: type: string description: The ID of the topic. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type of the response. example: topic GetTopicResponseSuccess: type: object properties: id: type: string description: The ID of the topic. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type. example: topic name: type: string description: The name of the topic. example: Newsletter description: type: string description: A description of the topic. default_subscription: type: string enum: - opt_in - opt_out description: The default subscription status for the topic. visibility: type: string enum: - public - private description: The visibility of the topic. created_at: type: string description: Timestamp indicating when the topic was created. example: '2023-10-06 23:47:56.678+00' ListTopicsResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list has_more: type: boolean description: Indicates if there are more results available. data: type: array description: Array containing topic information. items: type: object properties: id: type: string description: Unique identifier for the topic. name: type: string description: Name of the topic. description: type: string description: A description of the topic. default_subscription: type: string enum: - opt_in - opt_out description: The default subscription status for the topic. visibility: type: string enum: - public - private description: The visibility of the topic. created_at: type: string description: Timestamp indicating when the topic was created. example: '2023-10-06 23:47:56.678+00' UpdateTopicOptions: type: object properties: name: type: string description: The name of the topic. Max 50 characters. maxLength: 50 description: type: string description: A description of the topic. Max 200 characters. maxLength: 200 visibility: type: string enum: - public - private description: The visibility of the topic. UpdateTopicResponseSuccess: type: object properties: id: type: string description: The ID of the topic. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type. example: topic RemoveTopicResponseSuccess: type: object properties: id: type: string description: The ID of the topic. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type. example: topic deleted: type: boolean description: Indicates whether the topic was successfully deleted. example: true CreateContactPropertyOptions: type: object required: - key - type properties: key: type: string description: The property key. Max length is 50 characters. Only alphanumeric characters and underscores are allowed. type: type: string enum: - string - number description: The property type. fallback_value: oneOf: - type: string - type: number description: The default value to use when the property is not set for a contact. Must match the type specified in the type field. CreateContactPropertyResponseSuccess: type: object properties: id: type: string description: The ID of the contact property. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type of the response. example: contact_property GetContactPropertyResponseSuccess: type: object properties: object: type: string description: The object type. example: contact_property id: type: string description: The ID of the contact property. example: b6d24b8e-af0b-4c3c-be0c-359bbd97381e key: type: string description: The property key. example: company_name type: type: string description: The property type. example: string fallback_value: oneOf: - type: string - type: number description: The default value when the property is not set for a contact. example: Acme Corp created_at: type: string description: Timestamp indicating when the contact property was created. example: '2023-10-06 23:47:56.678+00' ListContactPropertiesResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list has_more: type: boolean description: Indicates if there are more results available. data: type: array description: Array containing contact property information. items: type: object properties: id: type: string description: Unique identifier for the contact property. key: type: string description: The property key. type: type: string description: The property type. fallback_value: oneOf: - type: string - type: number description: The default value when the property is not set for a contact. created_at: type: string description: Timestamp indicating when the contact property was created. example: '2023-10-06 23:47:56.678+00' UpdateContactPropertyOptions: type: object properties: fallback_value: oneOf: - type: string - type: number description: The default value to use when the property is not set for a contact. Must match the type of the property. UpdateContactPropertyResponseSuccess: type: object properties: id: type: string description: The ID of the contact property. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type. example: contact_property RemoveContactPropertyResponseSuccess: type: object properties: id: type: string description: The ID of the contact property. example: 78261eea-8f8b-4381-83c6-79fa7120f1cf object: type: string description: The object type. example: contact_property deleted: type: boolean description: Indicates whether the contact property was successfully deleted. example: true AddContactToSegmentResponseSuccess: type: object properties: object: type: string description: The object type. example: contact_segment contact_id: type: string description: The ID of the contact. segment_id: type: string description: The ID of the segment. ListContactSegmentsResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list has_more: type: boolean description: Indicates if there are more results available. data: type: array description: Array containing segment information for this contact. items: type: object properties: id: type: string description: Unique identifier for the segment. name: type: string description: Name of the segment. created_at: type: string description: Timestamp indicating when the contact was added to the segment. example: '2023-10-06 23:47:56.678+00' RemoveContactFromSegmentResponseSuccess: type: object properties: object: type: string description: The object type. example: contact_segment contact_id: type: string description: The ID of the contact. segment_id: type: string description: The ID of the segment. deleted: type: boolean description: Indicates whether the contact was successfully removed from the segment. example: true GetContactTopicsResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list has_more: type: boolean description: Indicates if there are more results available. data: type: array description: Array containing topic subscriptions for this contact. items: type: object properties: id: type: string description: Unique identifier for the topic. name: type: string description: Name of the topic. description: type: string description: Description of the topic. subscription: type: string enum: - opt_in - opt_out description: The subscription status for this topic. UpdateContactTopicsOptions: type: object required: - topics properties: topics: type: array items: type: object properties: id: type: string description: The ID of the topic. subscription: type: string enum: - opt_in - opt_out description: The subscription status (opt_in or opt_out). UpdateContactTopicsResponseSuccess: type: object properties: object: type: string description: The object type. example: contact_topics contact_id: type: string description: The ID of the contact. topics: type: array description: Array of updated topic subscriptions. items: type: object properties: id: type: string description: The ID of the topic. subscription: type: string enum: - opt_in - opt_out description: The subscription status. LogSummary: type: object properties: id: type: string format: uuid description: The log ID. created_at: type: string description: The date the log was created. example: '2023-10-06 23:47:56.678+00' endpoint: type: string description: The API endpoint that was called. method: type: string enum: - GET - POST - PUT - DELETE - PATCH - OPTIONS description: The HTTP method used. response_status: type: integer description: The HTTP status code of the response. user_agent: type: [string, "null"] description: The user agent of the request. Log: type: object properties: object: type: string description: Type of the response object. example: 'log' id: type: string format: uuid description: The log ID. created_at: type: string description: The date the log was created. example: '2023-10-06 23:47:56.678+00' endpoint: type: string description: The API endpoint that was called. method: type: string enum: - GET - POST - PUT - DELETE - PATCH - OPTIONS description: The HTTP method used. response_status: type: integer description: The HTTP status code of the response. user_agent: type: [string, "null"] description: The user agent of the request. request_body: type: [object, "null"] description: The request body sent to the API. response_body: type: [object, "null"] description: The response body returned by the API. ListLogsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing log information. items: $ref: '#/components/schemas/LogSummary' AutomationStep: type: object description: A step in an automation workflow. The `config` object varies based on the step `type`. required: - key - type - config properties: key: type: string description: A unique key for this step within the automation graph. type: type: string enum: - trigger - send_email - delay - wait_for_event - condition - contact_update - contact_delete - add_to_segment description: The type of automation step. config: type: object description: > Configuration for the step. Shape depends on `type`: - **trigger**: `{ event_name: string }` - **send_email**: `{ template: { id: string, variables?: object }, subject?: string, from?: string, reply_to?: string }` - **delay**: `{ duration: string }` — a human-readable duration (e.g. `"30 minutes"`) - **wait_for_event**: `{ event_name: string, timeout?: string, filter_rule?: object }` — `timeout` is a human-readable duration (e.g. `"1 hour"`) - **condition**: A rule tree with `type` (`rule`, `and`, `or`), `field`, `operator`, and `value` - **contact_update**: `{ first_name?: string|object, last_name?: string|object, unsubscribed?: boolean|object, properties?: object }` - **contact_delete**: `{}` - **add_to_segment**: `{ segment_id: string }` AutomationStepResponse: type: object description: A step as returned when retrieving an automation. properties: key: type: string description: The unique key of this step within the automation graph. type: type: string enum: - trigger - send_email - delay - wait_for_event - condition - contact_update - contact_delete - add_to_segment description: The type of automation step. config: type: object description: > Configuration for the step. Shape depends on `type`. For `delay` steps, config contains `{ duration: string }` with a human-readable duration (e.g. `"30 minutes"`). For `wait_for_event` steps, config contains `{ event_name: string, timeout?: string, filter_rule?: object }` where `timeout` is a human-readable duration. AutomationConnection: type: object description: A connection between two steps in the automation graph. required: - from - to properties: from: type: string description: The `key` of the source step. to: type: string description: The `key` of the target step. type: type: string enum: - default - condition_met - condition_not_met - timeout - event_received default: default description: The type of connection. Defaults to `default`. CreateAutomationRequest: type: object required: - name - steps - connections properties: name: type: string minLength: 1 description: The name of the automation. status: type: string enum: - enabled - disabled default: disabled description: The initial status of the automation. Defaults to `disabled`. steps: type: array minItems: 1 maxItems: 150 description: The steps that compose the automation workflow. Must include at least one `trigger` step. items: $ref: '#/components/schemas/AutomationStep' connections: type: array description: The connections between steps in the automation graph. items: $ref: '#/components/schemas/AutomationConnection' CreateAutomationResponse: type: object properties: object: type: string description: Type of the response object. example: automation id: type: string description: The ID of the created automation. Automation: type: object properties: object: type: string description: Type of the response object. example: automation id: type: string description: The ID of the automation. name: type: string description: The name of the automation. status: type: string enum: - enabled - disabled description: The current status of the automation. created_at: type: string description: The date and time the automation was created. example: '2023-10-06 23:47:56.678+00' updated_at: type: string description: The date and time the automation was last updated. example: '2023-10-06 23:47:56.678+00' steps: type: array description: The steps in the active version of the automation. items: $ref: '#/components/schemas/AutomationStepResponse' connections: type: array description: The connections between steps in the active version of the automation. items: $ref: '#/components/schemas/AutomationConnection' AutomationListItem: type: object properties: id: type: string description: The ID of the automation. name: type: string description: The name of the automation. status: type: string enum: - enabled - disabled description: The current status of the automation. created_at: type: string description: The date and time the automation was created. example: '2023-10-06 23:47:56.678+00' updated_at: type: string description: The date and time the automation was last updated. example: '2023-10-06 23:47:56.678+00' ListAutomationsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. data: type: array description: Array of automations. items: $ref: '#/components/schemas/AutomationListItem' PatchAutomationRequest: type: object description: > At least one of `name`, `status`, or `steps` and `connections` must be provided. When updating the workflow graph, both `steps` and `connections` must be provided together. properties: name: type: string minLength: 1 description: The name of the automation. status: type: string enum: - enabled - disabled description: The status of the automation. steps: type: array minItems: 1 maxItems: 150 description: The steps that compose the automation workflow. Must be provided together with `connections`. items: $ref: '#/components/schemas/AutomationStep' connections: type: array description: The connections between steps in the automation graph. Must be provided together with `steps`. items: $ref: '#/components/schemas/AutomationConnection' PatchAutomationResponse: type: object properties: object: type: string description: Type of the response object. example: automation id: type: string description: The ID of the updated automation. DeleteAutomationResponse: type: object properties: object: type: string description: Type of the response object. example: automation id: type: string description: The ID of the deleted automation. deleted: type: boolean description: Indicates whether the automation was successfully deleted. example: true DuplicateAutomationResponse: type: object properties: object: type: string description: Type of the response object. example: automation id: type: string description: The ID of the duplicated automation. StopAutomationResponse: type: object properties: object: type: string description: Type of the response object. example: automation id: type: string description: The ID of the stopped automation. status: type: string description: The status of the automation after stopping. example: disabled AutomationRunStep: type: object description: A step execution within an automation run. properties: key: type: string description: The key of the automation step. type: type: string enum: - trigger - send_email - delay - wait_for_event - condition - contact_update - contact_delete - add_to_segment description: The type of automation step. status: type: string description: The execution status of this step. started_at: type: [string, "null"] description: The date and time the step started executing. example: '2023-10-06 23:47:56.678+00' completed_at: type: [string, "null"] description: The date and time the step completed executing. example: '2023-10-06 23:47:56.678+00' output: type: [object, "null"] description: The output produced by the step, if any. error: type: [object, "null"] description: The error produced by the step, if any. created_at: type: string description: The date and time the step record was created. example: '2023-10-06 23:47:56.678+00' AutomationRun: type: object properties: object: type: string description: Type of the response object. example: automation_run id: type: string description: The ID of the automation run. status: type: string enum: - running - completed - failed - cancelled description: The current status of the automation run. started_at: type: [string, "null"] description: The date and time the run started. example: '2023-10-06 23:47:56.678+00' completed_at: type: [string, "null"] description: The date and time the run completed. example: '2023-10-06 23:47:56.678+00' created_at: type: string description: The date and time the run was created. example: '2023-10-06 23:47:56.678+00' steps: type: array description: The steps executed in this run, sorted in graph order. items: $ref: '#/components/schemas/AutomationRunStep' AutomationRunListItem: type: object properties: id: type: string description: The ID of the automation run. status: type: string enum: - running - completed - failed - cancelled description: The current status of the automation run. started_at: type: [string, "null"] description: The date and time the run started. example: '2023-10-06 23:47:56.678+00' completed_at: type: [string, "null"] description: The date and time the run completed. example: '2023-10-06 23:47:56.678+00' created_at: type: string description: The date and time the run was created. example: '2023-10-06 23:47:56.678+00' ListAutomationRunsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. data: type: array description: Array of automation runs. items: $ref: '#/components/schemas/AutomationRunListItem' Event: type: object properties: object: type: string description: Type of the response object. example: 'event' id: type: string format: uuid description: The event ID. name: type: string description: The event name. schema: type: [object, "null"] description: A flat key/type map defining the event payload schema. Supported types are `string`, `number`, `boolean`, and `date`. created_at: type: string description: The date and time the event was created. example: '2023-10-06 23:47:56.678+00' updated_at: type: [string, "null"] description: The date and time the event was last updated. example: '2023-10-06 23:47:56.678+00' EventSummary: type: object properties: id: type: string format: uuid description: The event ID. name: type: string description: The event name. schema: type: [object, "null"] description: A flat key/type map defining the event payload schema. Supported types are `string`, `number`, `boolean`, and `date`. created_at: type: string description: The date and time the event was created. example: '2023-10-06 23:47:56.678+00' updated_at: type: [string, "null"] description: The date and time the event was last updated. example: '2023-10-06 23:47:56.678+00' CreateEventRequest: type: object required: - name properties: name: type: string description: The name of the event. Cannot start with the reserved `resend:` prefix. schema: type: [object, "null"] description: An optional flat key/type map defining the event payload schema. Supported types are `string`, `number`, `boolean`, and `date`. CreateEventResponse: type: object properties: object: type: string description: Type of the response object. example: 'event' id: type: string format: uuid description: The ID of the created event. ListEventsResponse: type: object properties: object: type: string description: Type of the response object. example: 'list' has_more: type: boolean description: Indicates if there are more results available. example: false data: type: array description: Array containing event information. items: $ref: '#/components/schemas/EventSummary' UpdateEventRequest: type: object required: - schema properties: schema: type: [object, "null"] description: A flat key/type map defining the event payload schema. Set to `null` to clear the schema. Supported types are `string`, `number`, `boolean`, and `date`. UpdateEventResponse: type: object properties: object: type: string description: Type of the response object. example: 'event' id: type: string format: uuid description: The ID of the updated event. RemoveEventResponse: type: object properties: object: type: string description: Type of the response object. example: 'event' id: type: string format: uuid description: The ID of the deleted event. deleted: type: boolean description: Indicates whether the event was deleted. example: true SendEventRequest: type: object required: - event properties: event: type: string description: The name of the event to send. contact_id: type: string format: uuid description: The ID of the contact to associate with this event. Exactly one of `contact_id` or `email` must be provided. email: type: string format: email description: The email address to associate with this event. Exactly one of `contact_id` or `email` must be provided. payload: type: object additionalProperties: true description: An optional payload of key/value pairs to include with the event. SendEventResponse: type: object properties: object: type: string description: Type of the response object. example: 'event' event: type: string description: The name of the event that was sent. WebhookEventBounce: type: object required: - diagnosticCode - message - subType - type properties: diagnosticCode: type: array items: type: string description: Array of SMTP diagnostic responses from the receiving server, one entry per recipient (e.g., `smtp; 550 5.1.1 user unknown`). message: type: string description: Detailed bounce message describing why the email bounced. subType: type: string enum: - Undetermined - General - NoEmail - MailboxFull - MessageTooLarge - ContentRejected - AttachmentRejected description: Bounce sub-type. type: type: string enum: - Undetermined - Transient - Permanent description: Bounce type. WebhookEventClick: type: object required: - ipAddress - link - timestamp - userAgent properties: ipAddress: type: string description: IP address of the user who clicked the link. link: type: string description: The URL that was clicked. timestamp: type: string format: date-time description: Timestamp when the click occurred. example: '2023-10-06T23:47:56.678Z' userAgent: type: string description: User agent string of the browser that clicked the link. WebhookEventFailed: type: object required: - reason properties: reason: type: string description: Reason for the email failure (e.g., `reached_daily_quota`). WebhookEventSuppressed: type: object required: - diagnosticCode - message - reason - type properties: diagnosticCode: type: array items: type: string description: Array of SMTP diagnostic responses from the receiving server, one entry per recipient. message: type: string description: Detailed suppression message describing why the email was suppressed. reason: type: string enum: - previous_bounce - previous_complaint description: Reason the address is suppressed. type: type: string enum: - Suppressed - OnAccountSuppressionList description: Suppression type. WebhookEventAttachment: type: object required: - id properties: id: type: string description: Unique identifier for the attachment. filename: type: string description: The filename of the attachment. content_type: type: string description: The MIME type of the attachment. content_disposition: type: string description: The content disposition (e.g., `inline` or `attachment`). content_id: type: string description: Content-ID header used for referencing inline images. WebhookDomainRecord: type: object required: - record - name - value - type - ttl - status properties: record: type: string enum: - SPF - DKIM - Receiving MX - Tracking - TrackingCAA description: The purpose of the DNS record (SPF and DKIM for sending; Receiving MX for inbound emails; Tracking and TrackingCAA for click and open tracking). name: type: string description: DNS record name or subdomain. value: type: string description: DNS record value to be set. type: type: string enum: - MX - TXT - CNAME - CAA description: DNS record type. ttl: type: string description: Time to live for the DNS record (e.g., `Auto`, `60`). status: type: string enum: - pending - verified - failed - temporary_failure - not_started description: Verification status of this specific record. priority: type: integer description: Priority value (only applicable for MX records). OutboundEmailEventData: type: object required: - email_id - created_at - from - to - subject properties: email_id: type: string description: Unique identifier for the email. created_at: type: string format: date-time description: Timestamp when the email was created. example: '2023-10-06T23:47:56.678Z' from: type: string description: Sender email address and name in the format `Name `. to: type: array items: type: string description: Array of impacted recipient email addresses. subject: type: string description: Email subject line. broadcast_id: type: string description: Unique identifier for the broadcast campaign, if applicable. template_id: type: string description: Unique identifier for the template used, if applicable. tags: type: object additionalProperties: type: string description: Tag key-value pairs associated with the email. headers: type: array items: type: object required: - name - value properties: name: type: string value: type: string description: Custom headers included with the email (omitted when no custom headers are set). EmailBouncedEventData: allOf: - $ref: '#/components/schemas/OutboundEmailEventData' - type: object required: - bounce properties: bounce: $ref: '#/components/schemas/WebhookEventBounce' EmailClickedEventData: allOf: - $ref: '#/components/schemas/OutboundEmailEventData' - type: object required: - click properties: click: $ref: '#/components/schemas/WebhookEventClick' EmailFailedEventData: allOf: - $ref: '#/components/schemas/OutboundEmailEventData' - type: object required: - failed properties: failed: $ref: '#/components/schemas/WebhookEventFailed' EmailSuppressedEventData: allOf: - $ref: '#/components/schemas/OutboundEmailEventData' - type: object required: - suppressed properties: suppressed: $ref: '#/components/schemas/WebhookEventSuppressed' EmailReceivedEventData: type: object required: - email_id - created_at - from - to - subject - message_id - bcc - cc - attachments properties: email_id: type: string description: Unique identifier for the email. created_at: type: string format: date-time description: Timestamp when the email was received. example: '2023-10-06T23:47:56.678Z' from: type: string description: Sender email address. to: type: array items: type: string description: Array of recipient email addresses. subject: type: string description: Email subject line. message_id: type: string description: The unique message ID from the email headers. bcc: type: array items: type: string description: BCC recipients. cc: type: array items: type: string description: CC recipients. received_for: type: array items: type: string description: The recipient addresses the email was forwarded for, taken from the `for` clause of the message's `Received` headers. example: ['forwarded@example.com'] attachments: type: array items: $ref: '#/components/schemas/WebhookEventAttachment' description: Array of attachment metadata. ContactEventData: type: object required: - id - created_at - updated_at - email - unsubscribed properties: id: type: string description: Unique identifier for the contact. audience_id: type: string description: Unique identifier for the audience this contact belongs to. segment_ids: type: array items: type: string description: Array of segment IDs the contact belongs to. created_at: type: string format: date-time description: Timestamp when the contact was created. example: '2023-10-06T23:47:56.678Z' updated_at: type: string format: date-time description: Timestamp when the contact was last updated. example: '2023-10-06T23:47:56.678Z' email: type: string description: Contact's email address. first_name: type: [string, "null"] description: Contact's first name. last_name: type: [string, "null"] description: Contact's last name. unsubscribed: type: boolean description: Whether the contact has unsubscribed from all emails sent from your team. DomainEventData: type: object required: - id - name - status - created_at - region - records properties: id: type: string description: Unique identifier for the domain. name: type: string description: The domain name (e.g., `example.com`). status: type: string enum: - verified - partially_verified - partially_failed - failed - pending - not_started description: Aggregated verification status of the domain. created_at: type: string format: date-time description: Timestamp when the domain was created. example: '2023-10-06T23:47:56.678Z' region: type: string enum: - us-east-1 - eu-west-1 - sa-east-1 - ap-northeast-1 description: AWS region where the domain is configured. records: type: array items: $ref: '#/components/schemas/WebhookDomainRecord' description: DNS records required for domain verification. EmailSentEvent: type: object required: - type - created_at - data properties: type: type: string const: email.sent description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/OutboundEmailEventData' EmailDeliveredEvent: type: object required: - type - created_at - data properties: type: type: string const: email.delivered description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/OutboundEmailEventData' EmailDeliveryDelayedEvent: type: object required: - type - created_at - data properties: type: type: string const: email.delivery_delayed description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/OutboundEmailEventData' EmailBouncedEvent: type: object required: - type - created_at - data properties: type: type: string const: email.bounced description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/EmailBouncedEventData' EmailComplainedEvent: type: object required: - type - created_at - data properties: type: type: string const: email.complained description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/OutboundEmailEventData' EmailOpenedEvent: type: object required: - type - created_at - data properties: type: type: string const: email.opened description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/OutboundEmailEventData' EmailClickedEvent: type: object required: - type - created_at - data properties: type: type: string const: email.clicked description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/EmailClickedEventData' EmailFailedEvent: type: object required: - type - created_at - data properties: type: type: string const: email.failed description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/EmailFailedEventData' EmailScheduledEvent: type: object required: - type - created_at - data properties: type: type: string const: email.scheduled description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/OutboundEmailEventData' EmailSuppressedEvent: type: object required: - type - created_at - data properties: type: type: string const: email.suppressed description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/EmailSuppressedEventData' EmailReceivedEvent: type: object required: - type - created_at - data properties: type: type: string const: email.received description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/EmailReceivedEventData' ContactCreatedEvent: type: object required: - type - created_at - data properties: type: type: string const: contact.created description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/ContactEventData' ContactUpdatedEvent: type: object required: - type - created_at - data properties: type: type: string const: contact.updated description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/ContactEventData' ContactDeletedEvent: type: object required: - type - created_at - data properties: type: type: string const: contact.deleted description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/ContactEventData' DomainCreatedEvent: type: object required: - type - created_at - data properties: type: type: string const: domain.created description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/DomainEventData' DomainUpdatedEvent: type: object required: - type - created_at - data properties: type: type: string const: domain.updated description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/DomainEventData' DomainDeletedEvent: type: object required: - type - created_at - data properties: type: type: string const: domain.deleted description: The event type. created_at: type: string format: date-time description: Timestamp when the event was emitted. example: '2023-10-06T23:47:56.678Z' data: $ref: '#/components/schemas/DomainEventData' CreateSuppressionOptions: type: object required: - email properties: email: type: string description: Email address to suppress. example: steve.wozniak@gmail.com CreateSuppressionResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: suppression id: type: string description: Unique identifier for the created suppression. example: e169aa45-1ecf-4183-9955-b1499d5701d3 BatchAddSuppressionsOptions: type: object required: - emails properties: emails: type: array minItems: 1 maxItems: 100 items: type: string description: Email addresses to suppress. example: - steve.wozniak@gmail.com BatchAddSuppressionsResponseSuccess: type: object properties: data: type: array description: Array containing the created suppressions. items: type: object properties: object: type: string description: Type of the object. example: suppression id: type: string description: Unique identifier for the suppression. example: e169aa45-1ecf-4183-9955-b1499d5701d3 BatchRemoveSuppressionsOptions: type: object description: Provide either `emails` or `ids`, but not both. properties: emails: type: array minItems: 1 maxItems: 100 items: type: string description: Email addresses to remove from the suppression list. example: - steve.wozniak@gmail.com ids: type: array minItems: 1 maxItems: 100 items: type: string description: Suppression IDs to remove from the suppression list. example: - e169aa45-1ecf-4183-9955-b1499d5701d3 BatchRemoveSuppressionsResponseSuccess: type: object properties: data: type: array description: Array containing the removed suppressions. items: type: object properties: object: type: string description: Type of the object. example: suppression id: type: string description: Unique identifier for the suppression. example: e169aa45-1ecf-4183-9955-b1499d5701d3 deleted: type: boolean description: Indicates whether the suppression was successfully deleted. example: true RemoveSuppressionResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: suppression id: type: string description: Unique identifier for the removed suppression. example: e169aa45-1ecf-4183-9955-b1499d5701d3 deleted: type: boolean description: Indicates whether the suppression was successfully deleted. example: true GetSuppressionResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: suppression id: type: string description: Unique identifier for the suppression. example: e169aa45-1ecf-4183-9955-b1499d5701d3 email: type: string description: Email address that is suppressed. example: steve.wozniak@gmail.com origin: type: string enum: - bounce - complaint - manual description: Origin of the suppression. example: manual source_id: type: string nullable: true description: Identifier of the event that caused the suppression, such as the email that bounced or complained. example: 479e3145-dd38-476b-932c-529ceb705947 created_at: type: string description: Timestamp indicating when the suppression was created. example: "2023-10-06 23:47:56.678+00" ListSuppressionsResponseSuccess: type: object properties: object: type: string description: Type of the response object. example: list has_more: type: boolean description: Indicates if there are more results available. data: type: array description: Array containing suppression information. items: type: object properties: id: type: string description: Unique identifier for the suppression. example: e169aa45-1ecf-4183-9955-b1499d5701d3 email: type: string description: Email address that is suppressed. example: steve.wozniak@gmail.com origin: type: string enum: - bounce - complaint - manual description: Origin of the suppression. example: manual source_id: type: string nullable: true description: Identifier of the event that caused the suppression, such as the email that bounced or complained. example: 479e3145-dd38-476b-932c-529ceb705947 created_at: type: string description: Timestamp indicating when the suppression was created. example: "2023-10-06 23:47:56.678+00"