{ "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.\n" }, "scheduled_at": { "type": "string", "description": "Schedule time to send the broadcast. Can only be used if `send` is true.\n" } } }, "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 }`\n" } } }, "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.\n" } } }, "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.\n", "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" } } } } } } } } }