{"openapi":"3.0.0","info":{"description":"Modern email API for developers — send transactional, batch, and broadcast emails with templates, domains, contacts, and webhooks","version":[{"name":"v1","value":"v1"}]},"servers":[{"description":"Modern email API for developers — send transactional, batch, and broadcast emails with templates, domains, contacts, and webhooks","url":"https://api.apirails.com/resend"}],"paths":{"/emails":{"post":{"tags":["Emails"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/emails/send-email","api_endpoint":"https://api.resend.com/emails"},"summary":"Send Email","description":"Send an email through Resend. Supports HTML, plain text, React (Node.js SDK only), templates, attachments (max 40MB), scheduling, tags, custom headers, and idempotency keys.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"from":{"type":"string","description":"Sender email address. Use format 'Name <email@domain.com>' for friendly names.","required":true},"to":{"type":"array","description":"Recipient email address. Max 50 recipients. Pass as array for multiple addresses.","required":true,"items":{"type":"string"}},"subject":{"type":"string","description":"Email subject line","required":true},"bcc":{"type":"array","description":"BCC recipient(s). Array of email addresses.","items":{"type":"string"}},"cc":{"type":"array","description":"CC recipient(s). Array of email addresses.","items":{"type":"string"}},"reply_to":{"type":"array","description":"Reply-to address(es). Array of email addresses.","items":{"type":"string"}},"html":{"type":"string","description":"HTML version of the email body"},"text":{"type":"string","description":"Plain text version of the email body. Auto-converted from HTML if omitted. Set empty string to opt out."},"react":{"type":"string","description":"React component for the message body. Only available in Node.js SDK."},"scheduled_at":{"type":"string","description":"Schedule email for later delivery. Natural language ('in 1 min') or ISO 8601 format."},"headers":{"type":"object","description":"Custom headers to add to the email. Supports Idempotency-Key (max 256 chars, unique per request, expires in 24h).","properties":{}},"attachments":{"type":"array","description":"File attachments (max 40MB total after Base64 encoding)","items":{"type":"object","properties":{"filename":{"type":"string","description":"Name of attached file","required":true},"content":{"type":"string","description":"Content as Base64 string or buffer","required":true},"path":{"type":"string","description":"URL path where attachment file is hosted"},"content_type":{"type":"string","description":"MIME type of the attachment. Auto-derived from filename if omitted."},"content_id":{"type":"string","description":"Content ID for inline images. Reference in HTML with src='cid:...'"}}}},"tags":{"type":"array","description":"Custom key/value tag pairs for tracking and organization","items":{"type":"object","properties":{"name":{"type":"string","description":"Tag name. ASCII letters, numbers, underscores, dashes only. Max 256 chars.","required":true},"value":{"type":"string","description":"Tag value. ASCII letters, numbers, underscores, dashes only. Max 256 chars.","required":true}}}},"topic_id":{"type":"string","description":"Topic ID for subscription management. Recipients must be opted-in to receive emails."},"template":{"type":"object","description":"Send using a published template with optional variables. Cannot combine with html/text/react.","properties":{"id":{"type":"string","description":"ID or alias of the published template","required":true},"variables":{"type":"object","description":"Template variables as key/value pairs. Reserved: FIRST_NAME, LAST_NAME, EMAIL, UNSUBSCRIBE_URL."}}}}},"example":{"from":["Acme <onboarding@yourdomain.com>","noreply@yourdomain.com"],"to":[["user@example.com"],["user1@example.com","user2@example.com"]],"subject":["Welcome to our platform!","Your order confirmation #12345"],"bcc":[["manager@company.com"]],"cc":[["team@company.com"]],"reply_to":[["support@company.com"]],"html":["<p>It works!</p>","<h1>Hello {{name}}</h1><p>Welcome aboard.</p>"],"text":["Hello from our team!",""],"react":["<WelcomeEmail name='User' />"],"scheduled_at":["in 1 min","2026-08-05T11:52:01.858Z"],"headers":{},"attachments":[{"filename":"invoice.pdf","content":"base64datahere"}],"tags":[{"name":"campaign","value":"welcome"}],"topic_id":["topic_abc123"],"template":{}}}}}}},"/emails/batch":{"post":{"tags":["Emails"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/emails/send-batch-emails","api_endpoint":"https://api.resend.com/emails/batch"},"summary":"Send Batch Emails","description":"Send up to 100 batch emails in a single API call. Each entry is a complete send request. Attachments and scheduled_at are not supported in batch mode.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"from":{"type":"string","description":"Sender email address. Use format 'Name <email@domain.com>' for friendly names.","required":true},"to":{"type":"array","description":"Recipient email address. Max 50 recipients per email. Array for multiple addresses.","required":true,"items":{"type":"string"}},"subject":{"type":"string","description":"Email subject line","required":true},"bcc":{"type":"array","description":"BCC recipient(s). Array of email addresses.","items":{"type":"string"}},"cc":{"type":"array","description":"CC recipient(s). Array of email addresses.","items":{"type":"string"}},"reply_to":{"type":"array","description":"Reply-to address(es). Array of email addresses.","items":{"type":"string"}},"html":{"type":"string","description":"HTML version of the email body"},"text":{"type":"string","description":"Plain text version of the email body. Auto-generated from HTML if omitted."},"headers":{"type":"object","description":"Custom headers to add to each email. Supports Idempotency-Key.","properties":{}},"tags":{"type":"array","description":"Custom key/value tag pairs for each email in the batch","items":{"type":"object","properties":{"name":{"type":"string","description":"Tag name. ASCII letters, numbers, underscores, dashes only. Max 256 chars.","required":true},"value":{"type":"string","description":"Tag value. ASCII letters, numbers, underscores, dashes only. Max 256 chars.","required":true}}}},"topic_id":{"type":"string","description":"Topic ID for subscription management"},"template":{"type":"object","description":"Send using a published template with optional variables. Cannot combine with html/text/react.","properties":{"id":{"type":"string","description":"ID or alias of the published template","required":true},"variables":{"type":"object","description":"Template variables as key/value pairs. Reserved: FIRST_NAME, LAST_NAME, EMAIL, UNSUBSCRIBE_URL."}}}}},"example":{"from":["Acme <onboarding@yourdomain.com>"],"to":[["user@example.com"]],"subject":["Your weekly digest"],"bcc":[["manager@company.com"]],"cc":[["team@company.com"]],"reply_to":[["support@company.com"]],"html":["<h1>Your weekly update</h1>"],"text":["Your weekly update is ready."],"headers":{},"tags":[{"name":"batch_id","value":"batch_001"}],"topic_id":["topic_def456"],"template":{}}}}}}},"/emails/{id}":{"get":{"tags":["Emails"],"parameters":[{"name":"id","in":"path","description":"The Email ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/emails/retrieve-email","api_endpoint":"https://api.resend.com/emails/{id}"},"summary":"Retrieve Sent Email","description":"Retrieve a single sent email by ID. Returns full details including subject, recipients, HTML/text content, last event, and tags.","security":[{"bearerAuth":[]}]},"patch":{"tags":["Emails"],"parameters":[{"name":"id","in":"path","description":"The Email ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/emails/update-email","api_endpoint":"https://api.resend.com/emails/{id}"},"summary":"Update Email","description":"Update a scheduled email. Only the scheduled_at field can be changed.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"scheduled_at":{"type":"string","description":"New scheduled time in ISO 8601 format to reschedule the email"}}},"example":{"scheduled_at":["2026-08-05T11:52:01.858Z"]}}}}}},"/emails/list":{"get":{"tags":["Emails"],"parameters":[{"name":"limit","in":"query","description":"Number of emails to retrieve. Default: 20, Max: 100, Min: 1.","required":true,"schema":{"type":"number","example":""}},{"name":"after","in":"query","description":"The ID after which to retrieve more emails (pagination). Cannot be used with 'before'.","required":false,"schema":{"type":"string","example":""}},{"name":"before","in":"query","description":"The ID before which to retrieve more emails (pagination). Cannot be used with 'after'.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/emails/list-emails","api_endpoint":"https://api.resend.com/emails"},"summary":"List Sent Emails","description":"Retrieve a list of emails sent by your team. Uses cursor-based pagination with after/before parameters.","security":[{"bearerAuth":[]}]}},"/emails/{id}/cancel":{"post":{"tags":["Emails"],"parameters":[{"name":"id","in":"path","description":"The Email ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/emails/cancel-email","api_endpoint":"https://api.resend.com/emails/{id}/cancel"},"summary":"Cancel Email","description":"Cancel a scheduled email that has not been sent yet.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/emails/{id}/attachments":{"get":{"tags":["Emails"],"parameters":[{"name":"id","in":"path","description":"The Email ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/emails/list-email-attachments","api_endpoint":"https://api.resend.com/emails/{id}/attachments"},"summary":"List Email Attachments","description":"Retrieve a list of attachments from a sent email.","security":[{"bearerAuth":[]}]}},"/emails/{email_id}/attachments/{attachment_id}":{"get":{"tags":["Emails"],"parameters":[{"name":"email_id","in":"path","description":"The Email ID","required":true,"schema":{"type":"string","example":""}},{"name":"attachment_id","in":"path","description":"The Attachment ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/emails/retrieve-email-attachment","api_endpoint":"https://api.resend.com/emails/{email_id}/attachments/{attachment_id}"},"summary":"Retrieve Email Attachment","description":"Retrieve a single attachment from a sent email by attachment ID.","security":[{"bearerAuth":[]}]}},"/domains":{"post":{"tags":["Domains"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/domains/create-domain","api_endpoint":"https://api.resend.com/domains"},"summary":"Create Domain","description":"Create a domain through the Resend API. Returns DNS records that need to be configured for verification.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"The domain name to add (e.g., 'example.com')","required":true},"region":{"type":"string","description":"The region where emails will be sent from","enum":["us-east-1","eu-west-1","sa-east-1","ap-northeast-1"]},"custom_return_path":{"type":"string","description":"Subdomain for the Return-Path address. Defaults to 'send' (e.g., send.yourdomain.tld). Used for SPF auth, DMARC, and bounce handling."},"open_tracking":{"type":"boolean","description":"Track the open rate of each email. Only applied if tracking_subdomain is configured.","enum":[true,false]},"click_tracking":{"type":"boolean","description":"Track clicks within the body of each HTML email. Only applied if tracking_subdomain is configured.","enum":[true,false]},"tracking_subdomain":{"type":"string","description":"Custom subdomain for click and open tracking (e.g., 'links' produces links.example.com). Cannot be removed after set."},"tls":{"type":"string","description":"TLS policy for email delivery","enum":["opportunistic","enforced"]},"capabilities":{"type":"object","description":"Domain capabilities for sending and receiving emails. At least one must be enabled.","properties":{"sending":{"type":"string","description":"Enable or disable sending emails from this domain","enum":["enabled","disabled"]},"receiving":{"type":"string","description":"Enable or disable receiving emails to this domain","enum":["enabled","disabled"]}}}}},"example":{"name":["example.com","mail.yourdomain.com"],"region":["us-east-1"],"custom_return_path":["send","bounce"],"open_tracking":[true],"click_tracking":[true],"tracking_subdomain":["links"],"tls":["opportunistic"],"capabilities":{}}}}}}},"/domains/{domain_id}":{"get":{"tags":["Domains"],"parameters":[{"name":"domain_id","in":"path","description":"The Domain ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/domains/get-domain","api_endpoint":"https://api.resend.com/domains/{domain_id}"},"summary":"Retrieve Domain","description":"Retrieve a single domain including DNS records, verification status, and configuration.","security":[{"bearerAuth":[]}]},"patch":{"tags":["Domains"],"parameters":[{"name":"domain_id","in":"path","description":"The Domain ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/domains/update-domain","api_endpoint":"https://api.resend.com/domains/{domain_id}"},"summary":"Update Domain","description":"Update domain settings including tracking, TLS, and custom subdomain configuration.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"click_tracking":{"type":"boolean","description":"Track clicks within the body of each HTML email. Only applied if tracking_subdomain is configured.","enum":[true,false]},"open_tracking":{"type":"boolean","description":"Track the open rate of each email. Only applied if tracking_subdomain is configured.","enum":[true,false]},"tracking_subdomain":{"type":"string","description":"Custom subdomain for click and open tracking. Can only be changed after set, never removed."},"tls":{"type":"string","description":"TLS policy for email delivery","enum":["opportunistic","enforced"]}}},"example":{"click_tracking":[true],"open_tracking":[true],"tracking_subdomain":["links"],"tls":["opportunistic"]}}}}},"delete":{"tags":["Domains"],"parameters":[{"name":"domain_id","in":"path","description":"The Domain ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/domains/delete-domain","api_endpoint":"https://api.resend.com/domains/{domain_id}"},"summary":"Delete Domain","description":"Remove an existing domain. Warning: removing a domain with a tracking subdomain will break existing email links.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/domains/list":{"get":{"tags":["Domains"],"parameters":[{"name":"limit","in":"query","description":"Number of domains to retrieve. Max: 100, Min: 1.","required":false,"schema":{"type":"number","example":""}},{"name":"after","in":"query","description":"The ID after which to retrieve more domains (pagination). Cannot be used with 'before'.","required":false,"schema":{"type":"string","example":""}},{"name":"before","in":"query","description":"The ID before which to retrieve more domains (pagination). Cannot be used with 'after'.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/domains/list-domains","api_endpoint":"https://api.resend.com/domains"},"summary":"List Domains","description":"Retrieve a list of domains with cursor-based pagination.","security":[{"bearerAuth":[]}]}},"/domains/{domain_id}/verify":{"post":{"tags":["Domains"],"parameters":[{"name":"domain_id","in":"path","description":"The Domain ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/domains/verify-domain","api_endpoint":"https://api.resend.com/domains/{domain_id}/verify"},"summary":"Verify Domain","description":"Trigger asynchronous DNS verification for a domain. The domain is temporarily marked as 'pending' during verification.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/domains/{domain_id}/claim":{"post":{"tags":["Domains"],"parameters":[{"name":"domain_id","in":"path","description":"The Domain ID to claim","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/domains/claim-domain","api_endpoint":"https://api.resend.com/domains/{domain_id}/claim"},"summary":"Claim Domain","description":"Claim a domain that is already verified by another team. Initiates a transfer process.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}},"get":{"tags":["Domains"],"parameters":[{"name":"domain_id","in":"path","description":"The Domain ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/domains/get-domain-claim","api_endpoint":"https://api.resend.com/domains/{domain_id}/claim"},"summary":"Get Domain Claim","description":"Retrieve the latest claim for a domain.","security":[{"bearerAuth":[]}]}},"/domains/{domain_id}/claim/verify":{"post":{"tags":["Domains"],"parameters":[{"name":"domain_id","in":"path","description":"The Domain ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/domains/verify-domain-claim","api_endpoint":"https://api.resend.com/domains/{domain_id}/claim/verify"},"summary":"Verify Domain Claim","description":"Trigger DNS verification for a domain claim.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/templates":{"post":{"tags":["Templates"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/templates/create-template","api_endpoint":"https://api.resend.com/templates"},"summary":"Create Template","description":"Create a new template with optional variables. Templates start as drafts and must be published before use.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"The name of the template","required":true},"html":{"type":"string","description":"The HTML version of the template","required":true},"alias":{"type":"string","description":"The alias of the template (used as identifier when sending)"},"from":{"type":"string","description":"Default sender email address. Can be overridden when sending."},"subject":{"type":"string","description":"Default email subject. Can be overridden when sending."},"reply_to":{"type":"array","description":"Default Reply-to email address. Can be overridden when sending.","items":{"type":"string"}},"text":{"type":"string","description":"Plain text version. Auto-generated from HTML if omitted."},"variables":{"type":"array","description":"Array of template variables (max 50). Reserved: FIRST_NAME, LAST_NAME, EMAIL, RESEND_UNSUBSCRIBE_URL, contact, this.","items":{"type":"object","properties":{"key":{"type":"string","description":"Variable key (recommended uppercase, e.g., PRODUCT_NAME)","required":true},"required":{"type":"boolean","description":"Whether this variable is required","enum":[true,false]},"name":{"type":"string","description":"Variable name for internal reference"},"display_name":{"type":"string","description":"Display name for the variable"}}}}}},"example":{"name":["Welcome Email","Order Confirmation"],"html":["<h1>Hello {{name}}</h1><p>Welcome!</p>"],"alias":["welcome_template"],"from":["Acme <onboarding@yourdomain.com>"],"subject":["Welcome, {{name}}!"],"reply_to":[["support@company.com"]],"text":["Welcome!"],"variables":[{"key":"PRODUCT_NAME","required":true,"name":"Product Name","display_name":"Product Name"}]}}}}}},"/templates/{template_id}":{"get":{"tags":["Templates"],"parameters":[{"name":"template_id","in":"path","description":"The Template ID or alias","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/templates/get-template","api_endpoint":"https://api.resend.com/templates/{template_id}"},"summary":"Get Template","description":"Get a template by ID or alias.","security":[{"bearerAuth":[]}]},"patch":{"tags":["Templates"],"parameters":[{"name":"template_id","in":"path","description":"The Template ID or alias","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/templates/update-template","api_endpoint":"https://api.resend.com/templates/{template_id}"},"summary":"Update Template","description":"Update a template. After updating, the template becomes a draft and must be re-published.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"The name of the template"},"html":{"type":"string","description":"The HTML version of the template"},"subject":{"type":"string","description":"Default email subject"},"text":{"type":"string","description":"Plain text version"},"from":{"type":"string","description":"Default sender email address"},"reply_to":{"type":"array","description":"Default Reply-to email address","items":{"type":"string"}},"variables":{"type":"array","description":"Array of template variables (max 50). Omit to keep existing variables.","items":{"type":"object","properties":{"key":{"type":"string","description":"Variable key","required":true},"required":{"type":"boolean","description":"Whether this variable is required","enum":[true,false]},"name":{"type":"string","description":"Variable name"},"display_name":{"type":"string","description":"Display name for the variable"}}}}}},"example":{"name":["Updated Template Name"],"html":["<h1>Updated {{name}}</h1>"],"subject":["Updated Subject"],"text":["Updated text"],"from":["Acme <updated@domain.com>"],"reply_to":[["support@company.com"]],"variables":[{"key":"PRODUCT_NAME","required":true}]}}}}}},"/templates/list":{"get":{"tags":["Templates"],"parameters":[{"name":"limit","in":"query","description":"Number of templates to retrieve. Max: 100, Min: 1.","required":false,"schema":{"type":"number","example":""}},{"name":"after","in":"query","description":"The ID after which to retrieve more templates (pagination).","required":false,"schema":{"type":"string","example":""}},{"name":"before","in":"query","description":"The ID before which to retrieve more templates (pagination).","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/templates/list-templates","api_endpoint":"https://api.resend.com/templates"},"summary":"List Templates","description":"List all templates with cursor-based pagination.","security":[{"bearerAuth":[]}]}},"/templates/{template_id}/delete":{"delete":{"tags":["Templates"],"parameters":[{"name":"template_id","in":"path","description":"The Template ID or alias","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/templates/delete-template","api_endpoint":"https://api.resend.com/templates/{template_id}"},"summary":"Delete Template","description":"Delete a template by ID or alias.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/templates/{template_id}/duplicate":{"post":{"tags":["Templates"],"parameters":[{"name":"template_id","in":"path","description":"The Template ID to duplicate","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/templates/duplicate-template","api_endpoint":"https://api.resend.com/templates/{template_id}/duplicate"},"summary":"Duplicate Template","description":"Duplicate a template. Creates a new draft template with the same content.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/templates/{template_id}/publish":{"post":{"tags":["Templates"],"parameters":[{"name":"template_id","in":"path","description":"The Template ID to publish","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/templates/publish-template","api_endpoint":"https://api.resend.com/templates/{template_id}/publish"},"summary":"Publish Template","description":"Publish a template so it can be used when sending emails.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/audiences/{audience_id}/contacts":{"post":{"tags":["Contacts"],"parameters":[{"name":"audience_id","in":"path","description":"The Audience ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/contacts/create-contact","api_endpoint":"https://api.resend.com/audiences/{audience_id}/contacts"},"summary":"Create Contact","description":"Create a new contact in an audience (contact list).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"email":{"type":"string","description":"The contact's email address","required":true},"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 is unsubscribed","enum":[true,false]}}},"example":{"email":["user@example.com"],"first_name":["John"],"last_name":["Doe"],"unsubscribed":[false]}}}}}},"/audiences/{audience_id}/contacts/{contact_id}":{"get":{"tags":["Contacts"],"parameters":[{"name":"audience_id","in":"path","description":"The Audience ID","required":true,"schema":{"type":"string","example":""}},{"name":"contact_id","in":"path","description":"The Contact ID or email address","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/contacts/get-contact","api_endpoint":"https://api.resend.com/audiences/{audience_id}/contacts/{contact_id}"},"summary":"Get Contact","description":"Retrieve a single contact by ID or email address.","security":[{"bearerAuth":[]}]},"patch":{"tags":["Contacts"],"parameters":[{"name":"audience_id","in":"path","description":"The Audience ID","required":true,"schema":{"type":"string","example":""}},{"name":"contact_id","in":"path","description":"The Contact ID or email address","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/contacts/update-contact","api_endpoint":"https://api.resend.com/audiences/{audience_id}/contacts/{contact_id}"},"summary":"Update Contact","description":"Update an existing contact's information.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"email":{"type":"string","description":"The contact's new 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 is unsubscribed","enum":[true,false]}}},"example":{"email":["newemail@example.com"],"first_name":["Jane"],"last_name":["Smith"],"unsubscribed":[false]}}}}}},"/audiences/{audience_id}/contacts/list":{"get":{"tags":["Contacts"],"parameters":[{"name":"audience_id","in":"path","description":"The Audience ID","required":true,"schema":{"type":"string","example":""}},{"name":"limit","in":"query","description":"Number of contacts to retrieve. Max: 100, Min: 1.","required":false,"schema":{"type":"number","example":""}},{"name":"after","in":"query","description":"The ID after which to retrieve more contacts (pagination).","required":false,"schema":{"type":"string","example":""}},{"name":"before","in":"query","description":"The ID before which to retrieve more contacts (pagination).","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/contacts/list-contacts","api_endpoint":"https://api.resend.com/audiences/{audience_id}/contacts"},"summary":"List Contacts","description":"List all contacts in an audience with cursor-based pagination.","security":[{"bearerAuth":[]}]}},"/audiences/{audience_id}/contacts/{contact_id}/delete":{"delete":{"tags":["Contacts"],"parameters":[{"name":"audience_id","in":"path","description":"The Audience ID","required":true,"schema":{"type":"string","example":""}},{"name":"contact_id","in":"path","description":"The Contact ID or email address","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/contacts/delete-contact","api_endpoint":"https://api.resend.com/audiences/{audience_id}/contacts/{contact_id}"},"summary":"Delete Contact","description":"Remove an existing contact from an audience.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/audiences/{audience_id}/contacts/{contact_id}/topics":{"get":{"tags":["Contacts"],"parameters":[{"name":"audience_id","in":"path","description":"The Audience ID","required":true,"schema":{"type":"string","example":""}},{"name":"contact_id","in":"path","description":"The Contact ID or email address","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/contacts/get-contact-topics","api_endpoint":"https://api.resend.com/audiences/{audience_id}/contacts/{contact_id}/topics"},"summary":"Get Contact Topics","description":"Retrieve topic subscriptions for a contact.","security":[{"bearerAuth":[]}]},"patch":{"tags":["Contacts"],"parameters":[{"name":"audience_id","in":"path","description":"The Audience ID","required":true,"schema":{"type":"string","example":""}},{"name":"contact_id","in":"path","description":"The Contact ID or email address","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/contacts/update-contact-topics","api_endpoint":"https://api.resend.com/audiences/{audience_id}/contacts/{contact_id}/topics"},"summary":"Update Contact Topics","description":"Update topic subscriptions for a contact.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"topics":{"type":"array","description":"Array of topic subscription updates","items":{"type":"object","properties":{"topic_id":{"type":"string","description":"The Topic ID","required":true},"subscribed":{"type":"boolean","description":"Whether the contact is subscribed to this topic","required":true,"enum":[true,false]}}}}}},"example":{"topics":[{"topic_id":"topic_abc","subscribed":true}]}}}}}},"/broadcasts/{broadcast_id}/send":{"post":{"tags":["Broadcasts"],"parameters":[{"name":"broadcast_id","in":"path","description":"The Broadcast ID. Only broadcasts created via API can be sent.","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/broadcasts/send-broadcast","api_endpoint":"https://api.resend.com/broadcasts/{broadcast_id}/send"},"summary":"Send Broadcast","description":"Trigger sending of a previously created broadcast to its audience. Supports optional scheduling.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"scheduled_at":{"type":"string","description":"Schedule broadcast for later delivery. Natural language ('in 1 min') or ISO 8601 format."}}},"example":{"scheduled_at":["in 5 min","2026-06-01T09:00:00Z"]}}}}}},"/api-keys":{"post":{"tags":["API Keys"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/api-keys/create-api-key","api_endpoint":"https://api.resend.com/api-keys"},"summary":"Create API Key","description":"Create a new API key. The key is returned only once upon creation.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"The name of the API key","required":true},"domain":{"type":"string","description":"The domain to associate with this API key (restricts sending to this domain)"},"permission":{"type":"string","description":"The permission level for the API key","enum":["full_access","sending_access","view_only"]}}},"example":{"name":["Production Key","Development Key"],"domain":["example.com"],"permission":["full_access"]}}}}}},"/api-keys/list":{"get":{"tags":["API Keys"],"parameters":[{"name":"limit","in":"query","description":"Number of API keys to retrieve. Max: 100, Min: 1.","required":false,"schema":{"type":"number","example":""}},{"name":"after","in":"query","description":"The ID after which to retrieve more API keys (pagination).","required":false,"schema":{"type":"string","example":""}},{"name":"before","in":"query","description":"The ID before which to retrieve more API keys (pagination).","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/api-keys/list-api-keys","api_endpoint":"https://api.resend.com/api-keys"},"summary":"List API Keys","description":"Retrieve a list of API keys for the authenticated user.","security":[{"bearerAuth":[]}]}},"/api-keys/{api_key_id}":{"delete":{"tags":["API Keys"],"parameters":[{"name":"api_key_id","in":"path","description":"The API Key ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/api-keys/delete-api-key","api_endpoint":"https://api.resend.com/api-keys/{api_key_id}"},"summary":"Delete API Key","description":"Delete an existing API key. This action cannot be undone.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/webhooks":{"post":{"tags":["Webhooks"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/webhooks/create-webhook","api_endpoint":"https://api.resend.com/webhooks"},"summary":"Create Webhook","description":"Create a webhook to receive real-time notifications about email events.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"url":{"type":"string","description":"The URL to receive webhook events","required":true},"name":{"type":"string","description":"The name of the webhook"},"events":{"type":"array","description":"List of event types to listen to","enum":["email.sent","email.delivered","email.delivery_delayed","email.complained","email.bounced","email.opened","email.clicked","email.rejected","email.spam_complaint"],"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Whether the webhook is active","enum":[true,false]},"secret":{"type":"string","description":"Custom signing secret for webhook payload verification"}}},"example":{"url":["https://example.com/webhook"],"name":["Production Webhook"],"events":[["email.sent","email.delivered","email.bounced"]],"enabled":[true],"secret":["my-custom-secret"]}}}}}},"/webhooks/{webhook_id}":{"get":{"tags":["Webhooks"],"parameters":[{"name":"webhook_id","in":"path","description":"The Webhook ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/webhooks/get-webhook","api_endpoint":"https://api.resend.com/webhooks/{webhook_id}"},"summary":"Get Webhook","description":"Retrieve a single webhook by ID.","security":[{"bearerAuth":[]}]},"patch":{"tags":["Webhooks"],"parameters":[{"name":"webhook_id","in":"path","description":"The Webhook ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/webhooks/update-webhook","api_endpoint":"https://api.resend.com/webhooks/{webhook_id}"},"summary":"Update Webhook","description":"Update a webhook configuration.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"url":{"type":"string","description":"The URL to receive webhook events"},"name":{"type":"string","description":"The name of the webhook"},"events":{"type":"array","description":"List of event types to listen to","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Whether the webhook is active","enum":[true,false]}}},"example":{"url":["https://example.com/webhook-updated"],"name":["Updated Webhook"],"events":[["email.sent","email.delivered"]],"enabled":[true]}}}}}},"/webhooks/list":{"get":{"tags":["Webhooks"],"parameters":[{"name":"limit","in":"query","description":"Number of webhooks to retrieve. Max: 100, Min: 1.","required":false,"schema":{"type":"number","example":""}},{"name":"after","in":"query","description":"The ID after which to retrieve more webhooks (pagination).","required":false,"schema":{"type":"string","example":""}},{"name":"before","in":"query","description":"The ID before which to retrieve more webhooks (pagination).","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/webhooks/list-webhooks","api_endpoint":"https://api.resend.com/webhooks"},"summary":"List Webhooks","description":"Retrieve a list of webhooks for the authenticated user.","security":[{"bearerAuth":[]}]}},"/webhooks/{webhook_id}/delete":{"delete":{"tags":["Webhooks"],"parameters":[{"name":"webhook_id","in":"path","description":"The Webhook ID","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://resend.com/docs/api-reference/webhooks/delete-webhook","api_endpoint":"https://api.resend.com/webhooks/{webhook_id}"},"summary":"Delete Webhook","description":"Remove an existing webhook.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"security":[{"bearerAuth":[]}]}