openapi: 3.1.2 info: title: Resend version: 1.5.0 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: 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: 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: 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: 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: 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/batch: post: 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: 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: 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: 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: 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: 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: 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' /domains: post: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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}: delete: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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' /webhooks: post: 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: 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: 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: 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: 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' /segments: post: 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: 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: 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' delete: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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}/stop: post: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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. 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' 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' 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 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: string 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 description: First name of the contact. example: Steve last_name: type: string 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 description: First name of the contact. example: Steve last_name: type: string 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 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: [] 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' 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 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' 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 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. 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 description: Contact's first name. last_name: type: string 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"