{"openapi":"3.0.0","info":{"description":"SMTPfast transactional email API built on AWS SES - send single or batch emails with scheduling, receive inbound mail, manage verified domains, contacts, segments, suppressions, signup forms, one-to-many broadcasts, webhooks with delivery logs and retries, per-scope API keys, and delivery analytics. Resend-compatible surface. Free tier 3,000 emails/month.","version":["v1"]},"servers":[{"description":"SMTPfast transactional email API built on AWS SES - send single or batch emails with scheduling, receive inbound mail, manage verified domains, contacts, segments, suppressions, signup forms, one-to-many broadcasts, webhooks with delivery logs and retries, per-scope API keys, and delivery analytics. Resend-compatible surface. Free tier 3,000 emails/month.","url":"https://api.apirails.com/smtpfast"}],"paths":{"/v1/logs":{"get":{"tags":["Logs"],"parameters":[{"name":"type","in":"query","description":"Type","required":false,"schema":{"type":"string","example":""}},{"name":"after","in":"query","description":"After","required":false,"schema":{"type":"string","example":""}},{"name":"before","in":"query","description":"Before","required":false,"schema":{"type":"string","example":""}},{"name":"domain","in":"query","description":"Domain","required":false,"schema":{"type":"string","example":""}},{"name":"domain_id","in":"query","description":"Domain id","required":false,"schema":{"type":"string","example":""}},{"name":"email_id","in":"query","description":"Email id","required":false,"schema":{"type":"string","example":""}},{"name":"limit","in":"query","description":"Default: 20.","required":false,"schema":{"type":"number","example":""}},{"name":"recipient","in":"query","description":"Recipient","required":false,"schema":{"type":"string","example":""}},{"name":"since","in":"query","description":"Since","required":false,"schema":{"type":"string","example":""}},{"name":"tag","in":"query","description":"Tag","required":false,"schema":{"type":"string","example":""}},{"name":"until","in":"query","description":"Until","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/logs","api_endpoint":"https://smtpfa.st/api/v1/logs"},"summary":"List email events","description":"The event log behind the dashboard Logs page: every lifecycle event of every sent email, newest first, with keyset pagination (after walks older, before walks newer, exclusive). Filter by event type, time window, recipient, domain, tag or email. Received mail is not in this log; use GET /v1/emails/receiving. Requires the logs:read scope. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/emails":{"post":{"tags":["Emails"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/emails","api_endpoint":"https://smtpfa.st/api/v1/emails"},"summary":"Send an email","description":"Queue a single email for delivery. The email is validated, queued, and sent asynchronously via the configured sending provider. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"text":{"type":"string","description":"Plain text fallback body. Supports the same `{{unsubscribe_url}}` placeholder as the HTML body."},"attachments":{"type":"array","description":"Up to 10 files, base64 encoded, 25 MB per message in total. A content_id makes the part inline: reference it from the HTML as cid:<content_id>.","items":{"type":"object","properties":{"content":{"type":"string","description":"Base64-encoded file content","required":true},"content_id":{"type":"string","description":"Letters, digits, . _ - with an optional @domain; sent inline as multipart/related"},"content_type":{"type":"string","description":"Content type"},"filename":{"type":"string","description":"Filename","required":true},"inline":{"type":"boolean","description":"Send inline even without a content_id (a Content-ID is derived from the filename)"}}}},"from":{"type":"string","description":"Sender email address (must belong to a verified domain)","required":true},"html":{"type":"string","description":"HTML body of the email. Include `{{unsubscribe_url}}` (or the Resend-compatible `{{{RESEND_UNSUBSCRIBE_URL}}}`) anywhere in the body and SMTPfast substitutes the per-recipient unsubscribe link at send time. The same URL is set on the RFC 8058 `List-Unsubscribe` header automatically."},"subject":{"type":"string","description":"Email subject line","required":true},"to":{"type":"array","description":"List of recipient email addresses","required":true,"items":{"type":"string"}}}},"example":{"text":"Hello! (plain text fallback)","attachments":[],"from":"hello@yourapp.com","html":"<h1>Hello!</h1><p><a href=\"{{unsubscribe_url}}\">Unsubscribe</a></p>","subject":"Welcome!","to":"[\"user@example.com\"]"}}}}}},"/v1/emails/batch":{"post":{"tags":["Emails"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/emails","api_endpoint":"https://smtpfa.st/api/v1/emails/batch"},"summary":"Send a batch of emails","description":"Queue up to 100 emails in a single request. The body is a JSON array of email objects, each using the same shape as the single-send endpoint. Validation runs on every item before any are queued — a malformed item rejects the whole batch with 400. Suppressed recipients (to, cc and bcc) are dropped per row; a row left with no deliverable To recipient is recorded with status \"failed\". (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"payload":{"type":"array","description":"JSON array of email objects (1–100). Each item accepts the same fields as POST /v1/emails.","required":true,"items":{"type":"object","properties":{"text":{"type":"string","description":"Plain text fallback body. Supports the same `{{unsubscribe_url}}` placeholder as the HTML body."},"attachments":{"type":"array","description":"Up to 10 files, base64 encoded, 25 MB per message in total. A content_id makes the part inline: reference it from the HTML as cid:<content_id>."},"from":{"type":"string","description":"Sender email address (must belong to a verified domain)","required":true},"html":{"type":"string","description":"HTML body of the email. Include `{{unsubscribe_url}}` (or the Resend-compatible `{{{RESEND_UNSUBSCRIBE_URL}}}`) anywhere in the body and SMTPfast substitutes the per-recipient unsubscribe link at send time. The same URL is set on the RFC 8058 `List-Unsubscribe` header automatically."},"subject":{"type":"string","description":"Email subject line","required":true},"to":{"type":"array","description":"List of recipient email addresses","required":true}}}}}},"example":{"payload":"[{\"from\": \"hello@yourapp.com\", \"to\": \"user1@example.com\", \"subject\": \"Welcome!\", \"html\": \"<h1>Hello User 1!</h1>\"}, {\"from\": \"hello@yourapp.com\", \"to\": [\"user2@example.com\", \"user3@example.com\"], \"subject\": \"Weekly digest\", \"html\": \"<h1>Your week</h1>\", \"scheduled_at\": \"2026-04-10T14:00:00Z\"}]"}}}}}},"/v1/emails/{id}":{"get":{"tags":["Emails"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/emails","api_endpoint":"https://smtpfa.st/api/v1/emails/{id}"},"summary":"Get email details","description":"Retrieve the current status and delivery events for a specific email by its ID. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/emails/{id}/share":{"post":{"tags":["Emails"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/emails","api_endpoint":"https://smtpfa.st/api/v1/emails/{id}/share"},"summary":"Create a share link for a sent email","description":"Mint a public, expiring link to the rendered view of one sent email (the stored HTML or text body, in a sandboxed frame). Nothing is stored; the link stops working when it expires. Default lifetime 7 days, maximum 30. Requires the email:read scope. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"expires_in":{"type":"number","description":"Lifetime in seconds (60 to 2592000) Default: 604800."}}},"example":{"expires_in":604800}}}}}},"/v1/emails/receiving":{"get":{"tags":["Inbound"],"parameters":[{"name":"after","in":"query","description":"After","required":false,"schema":{"type":"string","example":""}},{"name":"before","in":"query","description":"Before","required":false,"schema":{"type":"string","example":""}},{"name":"limit","in":"query","description":"Default: 20.","required":false,"schema":{"type":"number","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/inbound","api_endpoint":"https://smtpfa.st/api/v1/emails/receiving"},"summary":"List received emails","description":"Received emails for the team, newest first, with keyset pagination (after walks older, before walks newer, exclusive). List items carry metadata only; fetch one email for the body. Requires the inbound:read scope. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/emails/receiving/{id}":{"get":{"tags":["Inbound"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/inbound","api_endpoint":"https://smtpfa.st/api/v1/emails/receiving/{id}"},"summary":"Get a received email","description":"One received email with text and HTML bodies, headers, attachment metadata and a 15-minute link to the raw .eml. A quarantined message (virus verdict not PASS) has no body, raw link or attachments. (SMTPfast API).","security":[{"bearerAuth":[]}]},"delete":{"tags":["Inbound"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/inbound","api_endpoint":"https://smtpfa.st/api/v1/emails/receiving/{id}"},"summary":"Delete a received email","description":"Remove the team's copy of a received email and its attachments. Requires the inbound:delete scope. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/emails/receiving/{id}/reply":{"post":{"tags":["Inbound"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/inbound","api_endpoint":"https://smtpfa.st/api/v1/emails/receiving/{id}/reply"},"summary":"Reply to a received email","description":"Send a reply to a received message through the normal send pipeline (credits, suppression, safety checks, webhooks). The reply is threaded with In-Reply-To and References and linked to the received message. From defaults to the receiving address when its domain is verified for sending, otherwise to the same local part on the nearest verified parent domain with Reply-To set to the receiving address; pass from to pick another verified reply address. To defaults to the sender's Reply-To, then From. Requires the inbound:read and email:send scopes. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"text":{"type":"string","description":"Text"},"cc":{"type":"string","description":"Cc"},"from":{"type":"string","description":"One of the team's reply addresses for this message; see the dashboard detail's reply_from"},"html":{"type":"string","description":"Html"},"subject":{"type":"string","description":"Defaults to Re: plus the original subject"},"to":{"type":"string","description":"To"}}},"example":{"text":"","cc":"","from":"","html":"","subject":"","to":""}}}}}},"/v1/emails/receiving/{id}/attachments":{"get":{"tags":["Inbound"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/inbound","api_endpoint":"https://smtpfa.st/api/v1/emails/receiving/{id}/attachments"},"summary":"List attachments of a received email","description":"Attachment metadata with a fresh 15-minute download link for each file. Requires the inbound:read scope. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/emails/receiving/{id}/attachments/{attachment_id}":{"get":{"tags":["Inbound"],"parameters":[{"name":"attachment_id","in":"path","description":"Attachment id","required":true,"schema":{"type":"string","example":""}},{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/inbound","api_endpoint":"https://smtpfa.st/api/v1/emails/receiving/{id}/attachments/{attachment_id}"},"summary":"Get one attachment of a received email","description":"Metadata and a fresh 15-minute download link for one attachment. Requires the inbound:read scope. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/contacts":{"post":{"tags":["Contacts"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/contacts"},"summary":"Create a contact","description":"Create a global contact for the current account. Supports firstName/lastName and first_name/last_name aliases for Resend compatibility. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"email":{"type":"string","description":"The contact email address","required":true},"firstName":{"type":"string","description":"Firstname"},"first_name":{"type":"string","description":"First name"},"lastName":{"type":"string","description":"Lastname"},"last_name":{"type":"string","description":"Last name"},"properties":{"type":"object","description":"Properties"},"segment_ids":{"type":"array","description":"Manual segment IDs to assign this contact to","items":{"type":"string"}},"unsubscribed":{"type":"boolean","description":"Global broadcast subscription status"}}},"example":{"email":"steve@example.com","firstName":"Steve","first_name":"Steve","lastName":"Wozniak","last_name":"Wozniak","properties":"{\"company\": \"Acme\", \"plan\": \"pro\"}","segment_ids":"[\"clx_segment123\"]","unsubscribed":""}}}}},"get":{"tags":["Contacts"],"parameters":[{"name":"disposable","in":"query","description":"Disposable","required":false,"schema":{"type":"boolean","example":""}},{"name":"limit","in":"query","description":"Default: 50.","required":false,"schema":{"type":"number","example":""}},{"name":"q","in":"query","description":"Q","required":false,"schema":{"type":"string","example":""}},{"name":"segment_id","in":"query","description":"Segment id","required":false,"schema":{"type":"string","example":""}},{"name":"status","in":"query","description":"Allowed values: all, subscribed, unsubscribed. Default: all.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/contacts"},"summary":"List contacts","description":"Return contacts for the current account. Optional query parameters q, status, and limit support filtering. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/contacts/export":{"get":{"tags":["Contacts"],"parameters":[{"name":"disposable","in":"query","description":"Disposable","required":false,"schema":{"type":"boolean","example":""}},{"name":"format","in":"query","description":"Allowed values: csv, json. Default: csv.","required":false,"schema":{"type":"string","example":""}},{"name":"status","in":"query","description":"Allowed values: all, subscribed, unsubscribed. Default: all.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/contacts/export"},"summary":"Export contacts","description":"Export up to 10,000 contacts for the current account as CSV or JSON. Optional status and disposable filtering match the list endpoint. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/segments":{"get":{"tags":["Segments"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/segments"},"summary":"List segments","description":"Return manual contact segments for the current account. (SMTPfast API).","security":[{"bearerAuth":[]}]},"post":{"tags":["Segments"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/segments"},"summary":"Create a segment","description":"Create a manual segment for organizing contacts and targeting broadcasts. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"color":{"type":"string","description":"Color"},"description":{"type":"string","description":"Description"},"name":{"type":"string","description":"Name","required":true}}},"example":{"color":"#10b981","description":"Paying customers","name":"Customers"}}}}}},"/v1/segments/{id}":{"get":{"tags":["Segments"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/segments/{id}"},"summary":"Retrieve a segment","description":"Retrieve a segment (SMTPfast API).","security":[{"bearerAuth":[]}]},"patch":{"tags":["Segments"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/segments/{id}"},"summary":"Update a segment","description":"Update a segment (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"color":{"type":"string","description":"Color"},"description":{"type":"string","description":"Description"},"name":{"type":"string","description":"Name","required":true}}},"example":{"color":"#10b981","description":"Paying customers","name":"Customers"}}}}},"delete":{"tags":["Segments"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/segments/{id}"},"summary":"Delete a segment","description":"Delete a segment (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/segments/{id}/contacts":{"get":{"tags":["Segments"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}},{"name":"limit","in":"query","description":"Default: 50.","required":false,"schema":{"type":"number","example":""}},{"name":"page","in":"query","description":"Default: 1.","required":false,"schema":{"type":"number","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/segments/{id}/contacts"},"summary":"List contacts in a segment","description":"Return contacts assigned to a manual segment. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/contacts/{id}":{"get":{"tags":["Contacts"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/contacts/{id}"},"summary":"Retrieve a contact","description":"Retrieve a contact by ID or URL-encoded email address. (SMTPfast API).","security":[{"bearerAuth":[]}]},"patch":{"tags":["Contacts"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/contacts/{id}"},"summary":"Update a contact","description":"Update name fields, subscription status, or custom properties. Email addresses cannot be changed. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"firstName":{"type":"string","description":"Firstname"},"first_name":{"type":"string","description":"First name"},"lastName":{"type":"string","description":"Lastname"},"last_name":{"type":"string","description":"Last name"},"properties":{"type":"object","description":"Properties"},"segment_ids":{"type":"array","description":"Replace this contact's manual segment assignments","items":{"type":"string"}},"unsubscribed":{"type":"boolean","description":"Unsubscribed"}}},"example":{"firstName":"Steve","first_name":"Steve","lastName":"Wozniak","last_name":"Wozniak","properties":"{\"company\": \"Acme\"}","segment_ids":"[\"clx_segment123\"]","unsubscribed":true}}}}},"delete":{"tags":["Contacts"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/contacts/{id}"},"summary":"Delete a contact","description":"Delete a contact by ID or URL-encoded email address. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/suppressions":{"get":{"tags":["Suppressions"],"parameters":[{"name":"limit","in":"query","description":"Default: 50.","required":false,"schema":{"type":"number","example":""}},{"name":"q","in":"query","description":"Q","required":false,"schema":{"type":"string","example":""}},{"name":"reason","in":"query","description":"Allowed values: all, hard_bounce, complaint, manual, unsubscribe. Default: all.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/suppressions"},"summary":"List suppressions","description":"Return suppressed addresses for the current account. Suppressed recipients are blocked before sending. (SMTPfast API).","security":[{"bearerAuth":[]}]},"post":{"tags":["Suppressions"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/suppressions"},"summary":"Create a manual suppression","description":"Manually suppress an address so future sends to it are blocked. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"diagnostic_code":{"type":"string","description":"Optional internal note for manual suppressions"},"email":{"type":"string","description":"Email","required":true},"reason":{"type":"string","description":"Allowed values: manual. Default: manual."}}},"example":{"diagnostic_code":"Requested by customer support","email":"blocked@example.com","reason":"manual"}}}}}},"/v1/suppressions/{id}":{"get":{"tags":["Suppressions"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/suppressions/{id}"},"summary":"Retrieve a suppression","description":"Retrieve a suppression by ID or URL-encoded email address. (SMTPfast API).","security":[{"bearerAuth":[]}]},"delete":{"tags":["Suppressions"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/contacts","api_endpoint":"https://smtpfa.st/api/v1/suppressions/{id}"},"summary":"Delete a suppression","description":"Remove a suppression. The address becomes eligible for future sends unless it is suppressed again. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/broadcasts":{"get":{"tags":["Broadcasts"],"parameters":[{"name":"q","in":"query","description":"Q","required":false,"schema":{"type":"string","example":""}},{"name":"status","in":"query","description":"Allowed values: all, draft, scheduled, queued, sent, paused, canceled. Default: all.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/broadcasts","api_endpoint":"https://smtpfa.st/api/v1/broadcasts"},"summary":"List broadcasts","description":"Return broadcast campaigns for the current account with recipient rollup metrics. (SMTPfast API).","security":[{"bearerAuth":[]}]},"post":{"tags":["Broadcasts"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/broadcasts","api_endpoint":"https://smtpfa.st/api/v1/broadcasts"},"summary":"Create a broadcast draft","description":"Create a broadcast campaign draft. Broadcasts can be edited while draft or scheduled, and must include an unsubscribe token before sending. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"text":{"type":"string","description":"Text"},"audience":{"type":"string","description":"Allowed values: all_contacts, segment. Default: all_contacts."},"audience_meta":{"type":"object","description":"Audience meta"},"from":{"type":"string","description":"From"},"html":{"type":"string","description":"Html"},"markdown":{"type":"string","description":"Markdown body. Must include {{unsubscribe_url}} or {{{RESEND_UNSUBSCRIBE_URL}}} before sending."},"name":{"type":"string","description":"Name","required":true},"preview_text":{"type":"string","description":"Preview text"},"reply_to":{"type":"string","description":"Reply to"},"segment_id":{"type":"string","description":"Required when audience is segment"},"subject":{"type":"string","description":"Subject"},"track_clicks":{"type":"boolean","description":"Default: True."},"track_opens":{"type":"boolean","description":"Default: True."}}},"example":{"text":"","audience":"all_contacts","audience_meta":"{\"segment_id\": \"clx_segment123\"}","from":"updates@example.com","html":"","markdown":"","name":"May product update","preview_text":"","reply_to":"","segment_id":"clx_segment123","subject":"New features for {{contact.first_name|there}}","track_clicks":true,"track_opens":true}}}}}},"/v1/broadcasts/{id}":{"get":{"tags":["Broadcasts"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/broadcasts","api_endpoint":"https://smtpfa.st/api/v1/broadcasts/{id}"},"summary":"Get broadcast details","description":"Retrieve a broadcast with metrics and the latest recipient rows. (SMTPfast API).","security":[{"bearerAuth":[]}]},"patch":{"tags":["Broadcasts"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/broadcasts","api_endpoint":"https://smtpfa.st/api/v1/broadcasts/{id}"},"summary":"Update a draft or scheduled broadcast","description":"Update broadcast content. Updating a scheduled broadcast cancels the previous schedule and returns it to draft. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"payload":{"type":"string","description":"Request payload","required":true}}},"example":{"payload":""}}}}},"delete":{"tags":["Broadcasts"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/broadcasts","api_endpoint":"https://smtpfa.st/api/v1/broadcasts/{id}"},"summary":"Delete a draft broadcast","description":"Delete a broadcast that has not been queued or scheduled. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/broadcasts/{id}/send":{"post":{"tags":["Broadcasts"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/broadcasts","api_endpoint":"https://smtpfa.st/api/v1/broadcasts/{id}/send"},"summary":"Send or schedule a broadcast","description":"Snapshot eligible subscribed contacts, create one queued email per recipient, and send now or schedule within 30 days. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"scheduled_at":{"type":"string","description":"Scheduled at"}}},"example":{"scheduled_at":""}}}}}},"/v1/broadcasts/{id}/cancel":{"post":{"tags":["Broadcasts"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/broadcasts","api_endpoint":"https://smtpfa.st/api/v1/broadcasts/{id}/cancel"},"summary":"Cancel a scheduled broadcast","description":"Cancel a broadcast. A scheduled broadcast is stopped before anything is sent. A queued or sending broadcast stops where it is: emails already accepted are delivered, the rest are dropped and their credits refunded (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/broadcasts/{id}/test":{"post":{"tags":["Broadcasts"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/broadcasts","api_endpoint":"https://smtpfa.st/api/v1/broadcasts/{id}/test"},"summary":"Send a test broadcast email","description":"Queue a test email to a single recipient using the broadcast content and personalization sample data. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"to":{"type":"string","description":"To","required":true}}},"example":{"to":"you@example.com"}}}}}},"/v1/domains":{"post":{"tags":["Domains"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/domains","api_endpoint":"https://smtpfa.st/api/v1/domains"},"summary":"Add a domain","description":"Register a new sending domain. Returns the DNS records that must be configured before the domain can be verified. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"domain":{"type":"string","description":"The domain name to register for sending","required":true}}},"example":{"domain":"yourapp.com"}}}}},"get":{"tags":["Domains"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/domains","api_endpoint":"https://smtpfa.st/api/v1/domains"},"summary":"List domains","description":"Return all sending domains associated with the current account. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/domains/{id}":{"get":{"tags":["Domains"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/domains","api_endpoint":"https://smtpfa.st/api/v1/domains/{id}"},"summary":"Get domain details","description":"Retrieve details for a single domain including its current verification status and DNS records. (SMTPfast API).","security":[{"bearerAuth":[]}]},"patch":{"tags":["Domains"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/domains","api_endpoint":"https://smtpfa.st/api/v1/domains/{id}"},"summary":"Turn inbound receiving on or off","description":"Enable or disable inbound email for a verified domain (paid plans). Returns the MX record to publish and the receiving status: disabled, pending, active or failed. Requires the domain:write scope. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"receiving_enabled":{"type":"boolean","description":"Receiving enabled","required":true}}},"example":{"receiving_enabled":""}}}}}},"/v1/domains/claim":{"get":{"tags":["Domains"],"parameters":[{"name":"domain","in":"query","description":"Domain","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/domains","api_endpoint":"https://smtpfa.st/api/v1/domains/claim"},"summary":"Get the claim record for a domain","description":"The TXT record a team publishes to prove DNS control before claiming a domain another account added but never verified. 404 when nobody holds the domain, 409 with code already_yours or verified_elsewhere when it cannot be claimed. Requires the domain:read scope. (SMTPfast API).","security":[{"bearerAuth":[]}]},"post":{"tags":["Domains"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/domains","api_endpoint":"https://smtpfa.st/api/v1/domains/claim"},"summary":"Claim a domain held by another account","description":"Checks the claim TXT record and moves a never-verified domain from the account that holds it to the caller's team, with its verification reset and any mail the previous holder still had queued through it cancelled. POST /v1/domains answers 409 with code domain_claimable and the record when this applies. 422 claim_record_missing when the record is not visible, 503 dns_unavailable when the lookup itself failed. The previous holder is notified. Requires the domain:write scope; 20 checks per hour per team. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"domain":{"type":"string","description":"Domain","required":true}}},"example":{"domain":"acme.com"}}}}}},"/v1/domains/{id}/verify":{"post":{"tags":["Domains"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/domains","api_endpoint":"https://smtpfa.st/api/v1/domains/{id}/verify"},"summary":"Verify a domain","description":"Check whether the required DNS records have been configured correctly. If verification succeeds, the domain status changes to verified and it can be used for sending. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/api-keys":{"post":{"tags":["API Keys"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/api-keys","api_endpoint":"https://smtpfa.st/api/v1/api-keys"},"summary":"Create API key","description":"Generate a new API key. The full key value is returned only once in the response. Store it securely. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"A human-readable name for the key","required":true},"scopes":{"type":"array","description":"Optional list of scopes to restrict the key. Available: email:send, email:read, domain:read, domain:write, contact:read, contact:write, form:read, form:write, webhook:read, webhook:write, apikey:manage. If omitted the key gets the default set (everything except apikey:manage). Listing, creating or revoking keys through the API requires apikey:manage.","items":{"type":"string"}}}},"example":{"name":"Production","scopes":"[\"email:send\", \"domain:read\"]"}}}}},"get":{"tags":["API Keys"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/api-keys","api_endpoint":"https://smtpfa.st/api/v1/api-keys"},"summary":"List API keys","description":"Return all API keys for the current account. The full key value is never included; only the prefix is shown. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/api-keys/{id}":{"patch":{"tags":["API Keys"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/api-keys","api_endpoint":"https://smtpfa.st/api/v1/api-keys/{id}"},"summary":"Update API key","description":"Rename a key or change its scopes. The secret is unchanged; scope changes apply on the key's next request. Requires the apikey:manage scope when called with an API key. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"Name"},"scopes":{"type":"array","description":"Replaces the key's scopes","items":{"type":"string"}}}},"example":{"name":"","scopes":[]}}}}},"delete":{"tags":["API Keys"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/api-keys","api_endpoint":"https://smtpfa.st/api/v1/api-keys/{id}"},"summary":"Revoke API key","description":"Permanently revoke an API key. Any requests using this key will be rejected immediately. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/webhooks":{"post":{"tags":["Webhooks"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/webhooks","api_endpoint":"https://smtpfa.st/api/v1/webhooks"},"summary":"Create webhook","description":"Register a new webhook endpoint. SMTPfast will POST event payloads to this URL when the specified events occur. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"events":{"type":"array","description":"List of event types to subscribe to. Legacy unprefixed email aliases are accepted and normalized to Resend-style email.* event names. Allowed values: email.scheduled, email.sent, email.delivered, email.delivery_delayed, email.bounced, email.complained, email.opened, email.clicked, email.failed, email.suppressed, email.unsubscribed, email.received, domain.created, domain.updated, domain.deleted, contact.created, contact.updated, contact.deleted, contact.subscribed.","required":true,"items":{"type":"string"}},"url":{"type":"string","description":"The URL that will receive webhook POST requests","required":true}}},"example":{"events":"[\"email.delivered\", \"email.bounced\"]","url":"https://yourapp.com/webhooks/smtpfast"}}}}},"get":{"tags":["Webhooks"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/webhooks","api_endpoint":"https://smtpfa.st/api/v1/webhooks"},"summary":"List webhooks","description":"Return all webhook endpoints configured for the current account. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/webhooks/{id}":{"put":{"tags":["Webhooks"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/webhooks","api_endpoint":"https://smtpfa.st/api/v1/webhooks/{id}"},"summary":"Update webhook","description":"Update the URL, events, or active status of an existing webhook endpoint. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"active":{"type":"boolean","description":"Set to false to pause delivery without deleting the webhook"},"events":{"type":"array","description":"List of event types to subscribe to. Legacy unprefixed email aliases are accepted and normalized to Resend-style email.* event names. Allowed values: email.scheduled, email.sent, email.delivered, email.delivery_delayed, email.bounced, email.complained, email.opened, email.clicked, email.failed, email.suppressed, email.unsubscribed, email.received, domain.created, domain.updated, domain.deleted, contact.created, contact.updated, contact.deleted, contact.subscribed.","items":{"type":"string"}},"url":{"type":"string","description":"Url"}}},"example":{"active":true,"events":"[\"email.delivered\", \"email.bounced\"]","url":"https://yourapp.com/webhooks/smtpfast"}}}}}},"/v1/webhooks/{id}/test":{"post":{"tags":["Webhooks"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/webhooks","api_endpoint":"https://smtpfa.st/api/v1/webhooks/{id}/test"},"summary":"Test webhook","description":"Send a test event payload to the webhook URL and return the delivery result. Useful for verifying that your endpoint is reachable and responds correctly. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/webhooks/{id}/deliveries":{"get":{"tags":["Webhooks"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}},{"name":"after","in":"query","description":"After","required":false,"schema":{"type":"string","example":""}},{"name":"limit","in":"query","description":"Default: 20.","required":false,"schema":{"type":"number","example":""}},{"name":"status","in":"query","description":"Allowed values: pending, sending, succeeded, failed.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/webhooks","api_endpoint":"https://smtpfa.st/api/v1/webhooks/{id}/deliveries"},"summary":"List webhook deliveries","description":"Delivery log of one webhook, newest first: every event we POSTed with its attempts, status code, response time, response snippet and error. Failed deliveries are retried after 1s, 30s, 5min and 30min; entries are kept for 30 days. Requires the webhook:read scope. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/webhooks/{id}/deliveries/{delivery_id}":{"get":{"tags":["Webhooks"],"parameters":[{"name":"delivery_id","in":"path","description":"Delivery id","required":true,"schema":{"type":"string","example":""}},{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/webhooks","api_endpoint":"https://smtpfa.st/api/v1/webhooks/{id}/deliveries/{delivery_id}"},"summary":"Get a webhook delivery","description":"One delivery with the exact payload that was sent. Requires the webhook:read scope. (SMTPfast API).","security":[{"bearerAuth":[]}]}},"/v1/webhooks/{id}/deliveries/{delivery_id}/retry":{"post":{"tags":["Webhooks"],"parameters":[{"name":"delivery_id","in":"path","description":"Delivery id","required":true,"schema":{"type":"string","example":""}},{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/webhooks","api_endpoint":"https://smtpfa.st/api/v1/webhooks/{id}/deliveries/{delivery_id}/retry"},"summary":"Retry a webhook delivery","description":"Send the same payload again, once, right now, and return the result of that attempt. A delivery with a scheduled attempt still pending returns 409. Requires the webhook:write scope. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/forms":{"get":{"tags":["Forms"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/forms","api_endpoint":"https://smtpfa.st/api/v1/forms"},"summary":"List signup forms","description":"Return all signup forms for the current account. (SMTPfast API).","security":[{"bearerAuth":[]}]},"post":{"tags":["Forms"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/forms","api_endpoint":"https://smtpfa.st/api/v1/forms"},"summary":"Create a signup form","description":"Create a new signup form. After creation, the embed snippet at /api/forms/{id}/submit (HTML) or /api/forms/{id}/embed.js (JavaScript widget) can be used on third-party sites. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"active":{"type":"boolean","description":"Active"},"blockDisposableEmails":{"type":"boolean","description":"Blockdisposableemails"},"buttonColor":{"type":"string","description":"Buttoncolor"},"buttonText":{"type":"string","description":"Buttontext"},"captchaEnabled":{"type":"boolean","description":"Captchaenabled"},"captchaProvider":{"type":"string","description":"Allowed values: turnstile."},"doubleOptIn":{"type":"boolean","description":"Doubleoptin"},"fields":{"type":"array","description":"Allowed values: email, first_name, last_name.","items":{"type":"string"}},"name":{"type":"string","description":"Name","required":true},"redirectUrl":{"type":"string","description":"Redirecturl"},"successMessage":{"type":"string","description":"Successmessage"},"turnstileSecretKey":{"type":"string","description":"Write-only. Returned forms expose turnstile_secret_configured instead."},"turnstileSiteKey":{"type":"string","description":"Turnstilesitekey"}}},"example":{"active":true,"blockDisposableEmails":true,"buttonColor":"#10b981","buttonText":"Subscribe","captchaEnabled":"","captchaProvider":"turnstile","doubleOptIn":true,"fields":"[\"email\", \"first_name\"]","name":"Newsletter signup","redirectUrl":"","successMessage":"Thanks for subscribing!","turnstileSecretKey":"","turnstileSiteKey":""}}}}}},"/v1/forms/{id}":{"get":{"tags":["Forms"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/forms","api_endpoint":"https://smtpfa.st/api/v1/forms/{id}"},"summary":"Retrieve a signup form","description":"Retrieve a signup form by ID. (SMTPfast API).","security":[{"bearerAuth":[]}]},"patch":{"tags":["Forms"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/forms","api_endpoint":"https://smtpfa.st/api/v1/forms/{id}"},"summary":"Update a signup form","description":"Update fields, styling, double opt-in behaviour, or active state on an existing form. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"active":{"type":"boolean","description":"Active"},"blockDisposableEmails":{"type":"boolean","description":"Blockdisposableemails"},"buttonColor":{"type":"string","description":"Buttoncolor"},"buttonText":{"type":"string","description":"Buttontext"},"captchaEnabled":{"type":"boolean","description":"Captchaenabled"},"captchaProvider":{"type":"string","description":"Allowed values: turnstile."},"doubleOptIn":{"type":"boolean","description":"Doubleoptin"},"fields":{"type":"array","description":"Allowed values: email, first_name, last_name.","items":{"type":"string"}},"name":{"type":"string","description":"Name"},"redirectUrl":{"type":"string","description":"Redirecturl"},"successMessage":{"type":"string","description":"Successmessage"},"turnstileSecretKey":{"type":"string","description":"Write-only. Omit to keep the existing secret."},"turnstileSiteKey":{"type":"string","description":"Turnstilesitekey"}}},"example":{"active":"","blockDisposableEmails":"","buttonColor":"","buttonText":"","captchaEnabled":"","captchaProvider":"","doubleOptIn":"","fields":[],"name":"","redirectUrl":"","successMessage":"","turnstileSecretKey":"","turnstileSiteKey":""}}}}},"delete":{"tags":["Forms"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs/forms","api_endpoint":"https://smtpfa.st/api/v1/forms/{id}"},"summary":"Delete a signup form","description":"Delete a signup form. Embedded snippets pointing at this form will stop working. (SMTPfast API).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/analytics":{"get":{"tags":["Analytics"],"parameters":[{"name":"from","in":"query","description":"From","required":false,"schema":{"type":"string","example":""}},{"name":"granularity","in":"query","description":"Allowed values: day, hour. Default: day.","required":false,"schema":{"type":"string","example":""}},{"name":"to","in":"query","description":"To","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://smtpfa.st/docs","api_endpoint":"https://smtpfa.st/api/v1/analytics"},"summary":"Get analytics","description":"Retrieve email sending analytics for the current account. Supports filtering by date range and grouping by day or hour. (SMTPfast API).","security":[{"bearerAuth":[]}]}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"security":[{"bearerAuth":[]}]}