Sends up to 100 emails in a single API call. Each message in the batch is independent and can have a different recipient, subject, and body. Messages are queued atomically — either all are accepted or none are.
Requirements
Permission:emails:send.
Safe retries: give each item its own idempotencyKey; items settle independently.
HTTP rate limit: 30 requests per 60 seconds per API key.
POST
/
v1
/
emails
/
batch
TypeScript
import { createApolloSignalApiClient } from "@apollo-deploy/signal-sdk";const signal = createApolloSignalApiClient({ apiKey: "ap_signal_..." });const result = await signal.emails.batchSendEmails(/* params */);console.log(result);
from apollo_signal import SignalClient
signal = SignalClient(api_key="ap_signal_...")
result = signal.emails.batchSendEmails(# params)
print(result)
import com.apollodeploy.signal.SignalClient;
SignalClient signal = new SignalClient("ap_signal_...");
var result = signal.emails().batchSendEmails(/* params */);
System.out.println(result);
import com.apollodeploy.signal.SignalClient
val signal = SignalClient("ap_signal_...")
val result = signal.emails.batchSendEmails(/* params */)
println(result)
require "apollo_signal"
signal = ApolloSignal::Client.new(api_key: "ap_signal_...")
result = signal.emails.batchSendEmails(# params)
puts result
use ApolloSignal\SignalClient;
$signal = new SignalClient("ap_signal_...");
$result = $signal->emails->batchSendEmails(/* params */);
var_dump($result);
use apollo_signal::SignalClient;
let signal = SignalClient::new("ap_signal_...");
let result = signal.emails.batchSendEmails(/* params */).await?;
println!("{:?}", result);
using ApolloSignal;
var signal = new SignalClient("ap_signal_...");
var result = await signal.Emails.BatchSendEmailsAsync(/* params */);
Console.WriteLine(result);
import com.apollodeploy.signal.SignalClient;
SignalClient signal = new SignalClient("ap_signal_...");
var result = signal.emails().batchSendEmails(/* params */);
System.out.println(result);
import com.apollodeploy.signal.SignalClient
val signal = SignalClient("ap_signal_...")
val result = signal.emails.batchSendEmails(/* params */)
println(result)
require "apollo_signal"
signal = ApolloSignal::Client.new(api_key: "ap_signal_...")
result = signal.emails.batchSendEmails(# params)
puts result
use ApolloSignal\SignalClient;
$signal = new SignalClient("ap_signal_...");
$result = $signal->emails->batchSendEmails(/* params */);
var_dump($result);
use apollo_signal::SignalClient;
let signal = SignalClient::new("ap_signal_...");
let result = signal.emails.batchSendEmails(/* params */).await?;
println!("{:?}", result);
using ApolloSignal;
var signal = new SignalClient("ap_signal_...");
var result = await signal.Emails.BatchSendEmailsAsync(/* params */);
Console.WriteLine(result);
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Apollo Deploy","description":"Documentation for Apollo Deploy and Apollo Signal — release intelligence and transactional email for developers.","colors":{"primary":"#171717","light":"#e8e4d9","dark":"#171717"},"logo":{"light":"https://mintcdn.com/apollodeploy/2tkCO7PoXSgjQkrC/logo/light.svg?fit=max\u0026auto=format\u0026n=2tkCO7PoXSgjQkrC\u0026q=85\u0026s=e4fc18ba64dc074898dfde7f40c3ad00","dark":"https://mintcdn.com/apollodeploy/2tkCO7PoXSgjQkrC/logo/dark.svg?fit=max\u0026auto=format\u0026n=2tkCO7PoXSgjQkrC\u0026q=85\u0026s=35bcfcc36dd51b5bd5e0893e68d06319","href":"https://apollodeploy.com"},"favicon":{"light":"https://mintcdn.com/apollodeploy/2tkCO7PoXSgjQkrC/favicons/signal/favicon.png?fit=max\u0026auto=format\u0026n=2tkCO7PoXSgjQkrC\u0026q=85\u0026s=1d5463e7d5e2ca968b35adc601d13a07","dark":"https://mintcdn.com/apollodeploy/2tkCO7PoXSgjQkrC/favicons/signal/favicon-dark.png?fit=max\u0026auto=format\u0026n=2tkCO7PoXSgjQkrC\u0026q=85\u0026s=2156d9f0f5a581d144fe2a23ff1f29a1"},"appearance":{"default":"system","strict":false},"background":{"color":{"light":"#ffffff","dark":"#000000"}},"navbar":{"primary":{"type":"button","label":"Get started","href":"https://auth.apollodeploy.com/register"}},"fonts":{"family":"Geist"},"styling":{"eyebrows":"section","codeblocks":"dark","latex":false},"contextual":{"options":["copy","view","chatgpt","claude","cursor","vscode"],"display":"header"},"interaction":{"drilldown":false},"navigation":{"global":{"anchors":[{"anchor":"Marketing site","icon":"house","href":"https://apollodeploy.com"},{"anchor":"Support","icon":"life-ring","href":"mailto:support@apollodeploy.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"apollodeploy","hasAudioNarration":false,"actualSubdomain":"apollodeploy","customDomains":["docs.apollodeploy.com"],"gitSource":{"type":"github","owner":"apollo-deploy","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"12f1d3a2-e8df-400b-a958-533197edc232","liveDeploymentHistoryId":"6a94885103b74ae883b1c027","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6a94885103b74ae883b1c027"},"feedback":{"thumbs":true,"issues":true,"edits":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a94885103b74ae883b1c027","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Apollo Signal","count":179},{"language":"default","tag":"API Reference","count":86},{"language":"default","tag":"Documentation","count":58},{"language":"default","tag":"Knowledge base","count":35},{"language":"default","tag":"Getting started","count":26},{"language":"default","tag":"Send with","count":20},{"language":"default","tag":"Contacts","count":18},{"language":"default","tag":"Emails","count":15},{"language":"default","tag":"Webhooks","count":14},{"language":"default","tag":"Domains and DNS","count":10}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/emails/batch-send-emails","slug":"/api-reference/emails/batch-send-emails","pageMetadata":{"title":"Batch send emails","description":"Sends up to 100 emails in a single API call. Each message in the batch is independent and can have a different recipient, subject, and body. Messages are queued atomically — either all are accepted or none are.\n\n### Requirements\n\n- **Permission:** `emails:send`.\n- **Safe retries:** give each item its own `idempotencyKey`; items settle independently.\n- **HTTP rate limit:** 30 requests per 60 seconds per API key.","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/emails/batch","href":"/api-reference/emails/batch-send-emails","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h3: \"h3\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Sends up to 100 emails in a single API call. Each message in the batch is independent and can have a different recipient, subject, and body. Messages are queued atomically — either all are accepted or none are.\"\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Requirements\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Permission:\"\n }), \" \", _jsx(_components.code, {\n children: \"emails:send\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Safe retries:\"\n }), \" give each item its own \", _jsx(_components.code, {\n children: \"idempotencyKey\"\n }), \"; items settle independently.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"HTTP rate limit:\"\n }), \" 30 requests per 60 seconds per API key.\"]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Batch send emails","description":"Sends up to 100 emails in a single API call. Each message in the batch is independent and can have a different recipient, subject, and body. Messages are queued atomically — either all are accepted or none are.\n\n### Requirements\n\n- **Permission:** `emails:send`.\n- **Safe retries:** give each item its own `idempotencyKey`; items settle independently.\n- **HTTP rate limit:** 30 requests per 60 seconds per API key.","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/emails/batch","href":"/api-reference/emails/batch-send-emails","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/apollodeploy/16ba9f8ee6643672/favicon-runtime.js"],"openApiReferenceData":{"operation":{"tags":["Emails"],"summary":"Batch send emails","description":"Sends up to 100 emails in a single API call. Each message in the batch is independent and can have a different recipient, subject, and body. Messages are queued atomically — either all are accepted or none are.\n\n### Requirements\n\n- **Permission:** `emails:send`.\n- **Safe retries:** give each item its own `idempotencyKey`; items settle independently.\n- **HTTP rate limit:** 30 requests per 60 seconds per API key.","parameters":[],"requestBody":"313d9177-f59d-4e1f-a053-8c800e56e9a5","responses":{"200":"d93f13d4-13d4-4fd9-8e37-ea9160277fbf","400":"ad8ac922-93b9-4ac5-84d8-6335e51b4f0e","401":"d1401c69-c4ad-44f9-abc2-d075f3757b1f","403":"50bb7798-5737-42b2-9390-e1e9c12b6f6c","422":"a8043c67-bdac-4527-a966-fa9e81f53af0","429":"48705465-587a-4946-93d2-0f7ed5df1208"},"deprecated":false,"x-codeSamples":[{"lang":"TypeScript","label":"TypeScript","source":"import { createApolloSignalApiClient } from \"@apollo-deploy/signal-sdk\";\n\nconst signal = createApolloSignalApiClient({ apiKey: \"ap_signal_...\" });\n\nconst result = await signal.emails.batchSendEmails(/* params */);\n\nconsole.log(result);"},{"lang":"Python","label":"Python","source":"from apollo_signal import SignalClient\n\nsignal = SignalClient(api_key=\"ap_signal_...\")\n\nresult = signal.emails.batchSendEmails(# params)\n\nprint(result)"},{"lang":"Go","label":"Go","source":"import signal \"github.com/apollo-deploy/signal-sdk-go\"\n\nclient := signal.NewClient(\"ap_signal_...\")\n\nresult, err := client.Emails.BatchSendEmails(context.Background() /* params */)\nif err != nil {\n log.Fatal(err)\n}\nfmt.Println(result)"},{"lang":"Java","label":"Java","source":"import com.apollodeploy.signal.SignalClient;\n\nSignalClient signal = new SignalClient(\"ap_signal_...\");\n\nvar result = signal.emails().batchSendEmails(/* params */);\nSystem.out.println(result);"},{"lang":"Kotlin","label":"Kotlin","source":"import com.apollodeploy.signal.SignalClient\n\nval signal = SignalClient(\"ap_signal_...\")\n\nval result = signal.emails.batchSendEmails(/* params */)\nprintln(result)"},{"lang":"Ruby","label":"Ruby","source":"require \"apollo_signal\"\n\nsignal = ApolloSignal::Client.new(api_key: \"ap_signal_...\")\n\nresult = signal.emails.batchSendEmails(# params)\nputs result"},{"lang":"PHP","label":"PHP","source":"use ApolloSignal\\SignalClient;\n\n$signal = new SignalClient(\"ap_signal_...\");\n\n$result = $signal->emails->batchSendEmails(/* params */);\nvar_dump($result);"},{"lang":"Rust","label":"Rust","source":"use apollo_signal::SignalClient;\n\nlet signal = SignalClient::new(\"ap_signal_...\");\n\nlet result = signal.emails.batchSendEmails(/* params */).await?;\nprintln!(\"{:?}\", result);"},{"lang":"C#","label":".NET","source":"using ApolloSignal;\n\nvar signal = new SignalClient(\"ap_signal_...\");\n\nvar result = await signal.Emails.BatchSendEmailsAsync(/* params */);\nConsole.WriteLine(result);"}],"operationId":"batchSendEmails","security":["cc0587b9-3fba-4846-96ee-c1a2ffe4c8af"],"x-required-permissions":["emails:send"],"x-rate-limit":{"requests":30,"seconds":60,"policy":"email-batch"},"method":"post","type":"path","servers":["f6001a60-13af-4ce2-b1d4-02de70ac9cc2"],"path":"/v1/emails/batch","baseUrlOptions":["https://api.signal.apollodeploy.com"],"title":"Batch send emails","codeSamples":[{"label":"TypeScript","lang":"TypeScript","source":"import { createApolloSignalApiClient } from \"@apollo-deploy/signal-sdk\";\n\nconst signal = createApolloSignalApiClient({ apiKey: \"ap_signal_...\" });\n\nconst result = await signal.emails.batchSendEmails(/* params */);\n\nconsole.log(result);"},{"label":"Python","lang":"Python","source":"from apollo_signal import SignalClient\n\nsignal = SignalClient(api_key=\"ap_signal_...\")\n\nresult = signal.emails.batchSendEmails(# params)\n\nprint(result)"},{"label":"Go","lang":"Go","source":"import signal \"github.com/apollo-deploy/signal-sdk-go\"\n\nclient := signal.NewClient(\"ap_signal_...\")\n\nresult, err := client.Emails.BatchSendEmails(context.Background() /* params */)\nif err != nil {\n log.Fatal(err)\n}\nfmt.Println(result)"},{"label":"Java","lang":"Java","source":"import com.apollodeploy.signal.SignalClient;\n\nSignalClient signal = new SignalClient(\"ap_signal_...\");\n\nvar result = signal.emails().batchSendEmails(/* params */);\nSystem.out.println(result);"},{"label":"Kotlin","lang":"Kotlin","source":"import com.apollodeploy.signal.SignalClient\n\nval signal = SignalClient(\"ap_signal_...\")\n\nval result = signal.emails.batchSendEmails(/* params */)\nprintln(result)"},{"label":"Ruby","lang":"Ruby","source":"require \"apollo_signal\"\n\nsignal = ApolloSignal::Client.new(api_key: \"ap_signal_...\")\n\nresult = signal.emails.batchSendEmails(# params)\nputs result"},{"label":"PHP","lang":"PHP","source":"use ApolloSignal\\SignalClient;\n\n$signal = new SignalClient(\"ap_signal_...\");\n\n$result = $signal->emails->batchSendEmails(/* params */);\nvar_dump($result);"},{"label":"Rust","lang":"Rust","source":"use apollo_signal::SignalClient;\n\nlet signal = SignalClient::new(\"ap_signal_...\");\n\nlet result = signal.emails.batchSendEmails(/* params */).await?;\nprintln!(\"{:?}\", result);"},{"label":".NET","lang":"C#","source":"using ApolloSignal;\n\nvar signal = new SignalClient(\"ap_signal_...\");\n\nvar result = await signal.Emails.BatchSendEmailsAsync(/* params */);\nConsole.WriteLine(result);"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"description":"Array of email messages to send. Maximum 100 messages per batch.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","title":"String","description":"Sender address. Its domain must be verified in the authenticated project.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].from","typeLabel":"string"},"subject":{"type":"string","title":"String","description":"Email subject. The request is rejected when this field is omitted.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].subject","typeLabel":"string"},"to":{"type":"array","items":{"type":"string","title":"String","uniqueKey":"\\items.items.[INDEX].to.items.[INDEX]","typeLabel":"string"},"title":"List\u003cString>","description":"Recipient addresses, or one topic (`top_…`) or segment (`seg_…`) identifier. A single string is accepted. Audience sends are capped at 50 resolved recipients and cannot include `cc` or `bcc`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].to","typeLabel":"string[]"},"attachments":{"type":"array","items":{"type":"object","properties":{"content":{"type":"string","title":"String","description":"Valid base64-encoded file content.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].attachments.items.[INDEX].content","typeLabel":"string"},"contentType":{"type":"string","title":"String","description":"Non-empty MIME type for the attachment.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].attachments.items.[INDEX].contentType","typeLabel":"string"},"filename":{"type":"string","title":"String","description":"File name without path separators or control characters.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].attachments.items.[INDEX].filename","typeLabel":"string"},"contentId":{"type":"string","title":"String","description":"Optional Content-ID used to reference an inline attachment from HTML.","uniqueKey":"\\items.items.[INDEX].attachments.items.[INDEX].contentId","typeLabel":"string"},"disposition":{"type":"string","title":"String","description":"MIME disposition: `attachment` (default) or `inline`.","enum":["attachment","inline"],"default":"attachment","uniqueKey":"\\items.items.[INDEX].attachments.items.[INDEX].disposition","typeLabel":"enum\u003cstring>"}},"required":["filename","content","contentType"],"title":"AttachmentRequest","description":"One MIME attachment encoded inside the JSON request.","uniqueKey":"\\items.items.[INDEX].attachments.items.[INDEX]","typeLabel":"AttachmentRequest · object"},"title":"List\u003cAttachmentRequest>","description":"Base64-encoded attachments. The decoded total must fit the configured attachment limit, and the message may contain at most 500 MIME parts including bodies.","uniqueKey":"\\items.items.[INDEX].attachments","typeLabel":"AttachmentRequest · object[]"},"bcc":{"type":"array","items":{"type":"string","title":"String","uniqueKey":"\\items.items.[INDEX].bcc.items.[INDEX]","typeLabel":"string"},"title":"List\u003cString>","description":"Blind-carbon-copy recipient addresses. These count toward the project's per-message recipient limit.","uniqueKey":"\\items.items.[INDEX].bcc","typeLabel":"string[]"},"cc":{"type":"array","items":{"type":"string","title":"String","uniqueKey":"\\items.items.[INDEX].cc.items.[INDEX]","typeLabel":"string"},"title":"List\u003cString>","description":"Carbon-copy recipient addresses. These count toward the project's per-message recipient limit.","uniqueKey":"\\items.items.[INDEX].cc","typeLabel":"string[]"},"deliveryWindow":{"type":"object","properties":{"end":{"type":"string","title":"String","description":"Inclusive ISO 8601 end of the delivery window.","format":"date-time","isRequired":true,"uniqueKey":"\\items.items.[INDEX].deliveryWindow.end","typeLabel":"string\u003cdate-time>"},"start":{"type":"string","title":"String","description":"Inclusive ISO 8601 start of the delivery window.","format":"date-time","isRequired":true,"uniqueKey":"\\items.items.[INDEX].deliveryWindow.start","typeLabel":"string\u003cdate-time>"}},"required":["end","start"],"title":"DeliveryWindowRequest","description":"Allowed time window for an `optimal` non-transactional send. Required when optimization may delay the message.","uniqueKey":"\\items.items.[INDEX].deliveryWindow","typeLabel":"DeliveryWindowRequest · object"},"html":{"type":"string","title":"String","description":"HTML body. Supply `html`, `text`, or both.","uniqueKey":"\\items.items.[INDEX].html","typeLabel":"string"},"idempotencyKey":{"type":"string","title":"String","description":"Project-scoped key that returns the original send result when the request is retried.","uniqueKey":"\\items.items.[INDEX].idempotencyKey","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"type":"string","title":"String","uniqueKey":"\\items.items.[INDEX].metadata.additionalProperties","typeLabel":"string"},"title":"Map\u003cString,String>","description":"Caller-defined string metadata associated with the send.","uniqueKey":"\\items.items.[INDEX].metadata","typeLabel":"Map\u003cString,String> · object"},"replyTo":{"type":"string","title":"String","description":"Address that receives replies instead of the sender address.","uniqueKey":"\\items.items.[INDEX].replyTo","typeLabel":"string"},"scheduledAt":{"type":"string","title":"String","description":"ISO 8601 send time or `optimal`. Explicit times must be 30 seconds to 30 days in the future; omit to send immediately.","uniqueKey":"\\items.items.[INDEX].scheduledAt","typeLabel":"string"},"sendTimeCategory":{"type":"string","title":"String","description":"Delivery category. `transactional` messages are never delayed by optimal-time scheduling. Defaults to `transactional`.","enum":["transactional","marketing","notification","digest"],"default":"transactional","uniqueKey":"\\items.items.[INDEX].sendTimeCategory","typeLabel":"enum\u003cstring>"},"tags":{"type":"object","additionalProperties":{"type":"string","title":"String","uniqueKey":"\\items.items.[INDEX].tags.additionalProperties","typeLabel":"string"},"title":"Map\u003cString,String>","description":"Caller-defined string labels used to categorize the email.","uniqueKey":"\\items.items.[INDEX].tags","typeLabel":"Map\u003cString,String> · object"},"testMode":{"type":"boolean","title":"Boolean","description":"Exercises the send flow without delivering to real recipients. Defaults to `false`.","default":false,"uniqueKey":"\\items.items.[INDEX].testMode","typeLabel":"boolean"},"text":{"type":"string","title":"String","description":"Plain-text body. Supply `html`, `text`, or both.","uniqueKey":"\\items.items.[INDEX].text","typeLabel":"string"},"trackingSettings":{"type":"object","properties":{"clickTracking":{"type":"boolean","title":"Boolean","description":"Enable or disable tracked-link rewriting for this message.","uniqueKey":"\\items.items.[INDEX].trackingSettings.clickTracking","typeLabel":"boolean"},"openTracking":{"type":"boolean","title":"Boolean","description":"Enable or disable open-pixel tracking for this message.","uniqueKey":"\\items.items.[INDEX].trackingSettings.openTracking","typeLabel":"boolean"},"readEngagement":{"type":"boolean","title":"Boolean","description":"Enable or disable read-engagement tracking for this message.","uniqueKey":"\\items.items.[INDEX].trackingSettings.readEngagement","typeLabel":"boolean"},"unsubscribeTracking":{"type":"boolean","title":"Boolean","description":"Enable or disable unsubscribe-link handling for this message.","uniqueKey":"\\items.items.[INDEX].trackingSettings.unsubscribeTracking","typeLabel":"boolean"}},"title":"TrackingSettingsRequest","description":"Per-message overrides for the project's tracking settings.","uniqueKey":"\\items.items.[INDEX].trackingSettings","typeLabel":"TrackingSettingsRequest · object"}},"required":["from","to","subject"],"title":"SendEmailRequest","description":"Email content and delivery options. `from`, `to`, and `subject` are required, and at least one of `html` or `text` must be supplied.","uniqueKey":"\\items.items.[INDEX]","typeLabel":"SendEmailRequest · object"},"title":"List\u003cSendEmailRequest>","description":"Email requests processed independently and returned in input order.","maxItems":100,"isRequired":true,"uniqueKey":"\\items","typeLabel":"SendEmailRequest · object[]"}},"required":["items"],"title":"BatchSendRequest","description":"Up to 100 independent email send requests.","uniqueKey":"","typeLabel":"BatchSendRequest · object"},"examples":{"Example":{"title":"Example","value":{"items":[{"from":"\u003cstring>","subject":"\u003cstring>","to":["\u003cstring>"],"attachments":[{"content":"\u003cstring>","contentType":"\u003cstring>","filename":"\u003cstring>","contentId":"\u003cstring>","disposition":"attachment"}],"bcc":["\u003cstring>"],"cc":["\u003cstring>"],"html":"\u003cstring>","idempotencyKey":"\u003cstring>","metadata":{},"replyTo":"\u003cstring>","scheduledAt":"\u003cstring>","sendTimeCategory":"transactional","tags":{},"testMode":false,"text":"\u003cstring>","trackingSettings":{"clickTracking":true,"openTracking":true,"readEngagement":true,"unsubscribeTracking":true}}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"d93f13d4-13d4-4fd9-8e37-ea9160277fbf":{"description":"All messages accepted. Returns an ID for each message in order.","headers":{},"content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","format":"int32","title":"Int","isRequired":true,"uniqueKey":"results.items.[INDEX].index","typeLabel":"integer\u003cint32>"},"createdAt":{"type":"string","title":"String","uniqueKey":"results.items.[INDEX].createdAt","typeLabel":"string"},"error":{"type":"string","title":"String","uniqueKey":"results.items.[INDEX].error","typeLabel":"string"},"id":{"type":"string","title":"String","uniqueKey":"results.items.[INDEX].id","typeLabel":"string"},"messageId":{"type":"string","title":"String","uniqueKey":"results.items.[INDEX].messageId","typeLabel":"string"},"scheduledAt":{"type":"string","title":"String","uniqueKey":"results.items.[INDEX].scheduledAt","typeLabel":"string"},"status":{"type":"string","title":"String","uniqueKey":"results.items.[INDEX].status","typeLabel":"string"}},"required":["index"],"title":"BatchSendItemResponse","uniqueKey":"results.items.[INDEX]","typeLabel":"BatchSendItemResponse · object"},"title":"List\u003cBatchSendItemResponse>","isRequired":true,"uniqueKey":"results","typeLabel":"BatchSendItemResponse · object[]"}},"required":["results"],"title":"BatchSendResponse","uniqueKey":"","typeLabel":"BatchSendResponse · object"},"examples":{"Example":{"title":"Example","value":{"results":[{"index":123,"createdAt":"\u003cstring>","error":"\u003cstring>","id":"\u003cstring>","messageId":"\u003cstring>","scheduledAt":"\u003cstring>","status":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"ad8ac922-93b9-4ac5-84d8-6335e51b4f0e":{"description":"Validation error in one or more messages.","headers":{},"content":{"application/problem+json":{"schema":{"type":"object","properties":{"code":{"type":"string","title":"ErrorCode","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"status":{"type":"integer","format":"int32","title":"Int","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"type":"string","title":"String","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"type":"string","title":"ProblemType","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"detail":{"type":"string","title":"String","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"detail":{"type":"string","title":"String","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"pointer":{"type":"string","title":"String","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"}},"required":["detail","pointer"],"title":"FieldProblem","uniqueKey":"errors.items.[INDEX]","typeLabel":"FieldProblem · object"},"title":"List\u003cFieldProblem>","uniqueKey":"errors","typeLabel":"FieldProblem · object[]"},"instance":{"type":"string","title":"ProblemInstance","uniqueKey":"instance","typeLabel":"string"},"requestId":{"type":"string","title":"String","uniqueKey":"requestId","typeLabel":"string"}},"required":["code","status","title","type"],"title":"ApiProblem","uniqueKey":"","typeLabel":"ApiProblem · object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>","errors":[{"detail":"\u003cstring>","pointer":"\u003cstring>"}],"instance":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"d1401c69-c4ad-44f9-abc2-d075f3757b1f":{"description":"Missing or invalid API key.","headers":{},"content":{"application/problem+json":{"schema":{"type":"object","properties":{"code":{"type":"string","title":"ErrorCode","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"status":{"type":"integer","format":"int32","title":"Int","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"type":"string","title":"String","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"type":"string","title":"ProblemType","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"detail":{"type":"string","title":"String","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"detail":{"type":"string","title":"String","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"pointer":{"type":"string","title":"String","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"}},"required":["detail","pointer"],"title":"FieldProblem","uniqueKey":"errors.items.[INDEX]","typeLabel":"FieldProblem · object"},"title":"List\u003cFieldProblem>","uniqueKey":"errors","typeLabel":"FieldProblem · object[]"},"instance":{"type":"string","title":"ProblemInstance","uniqueKey":"instance","typeLabel":"string"},"requestId":{"type":"string","title":"String","uniqueKey":"requestId","typeLabel":"string"}},"required":["code","status","title","type"],"title":"ApiProblem","uniqueKey":"","typeLabel":"ApiProblem · object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>","errors":[{"detail":"\u003cstring>","pointer":"\u003cstring>"}],"instance":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"50bb7798-5737-42b2-9390-e1e9c12b6f6c":{"description":"The credential lacks the required permission or cannot access this project.","headers":{},"content":{"application/problem+json":{"schema":{"type":"object","properties":{"code":{"type":"string","title":"ErrorCode","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"status":{"type":"integer","format":"int32","title":"Int","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"type":"string","title":"String","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"type":"string","title":"ProblemType","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"detail":{"type":"string","title":"String","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"detail":{"type":"string","title":"String","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"pointer":{"type":"string","title":"String","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"}},"required":["detail","pointer"],"title":"FieldProblem","uniqueKey":"errors.items.[INDEX]","typeLabel":"FieldProblem · object"},"title":"List\u003cFieldProblem>","uniqueKey":"errors","typeLabel":"FieldProblem · object[]"},"instance":{"type":"string","title":"ProblemInstance","uniqueKey":"instance","typeLabel":"string"},"requestId":{"type":"string","title":"String","uniqueKey":"requestId","typeLabel":"string"}},"required":["code","status","title","type"],"title":"ApiProblem","uniqueKey":"","typeLabel":"ApiProblem · object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>","errors":[{"detail":"\u003cstring>","pointer":"\u003cstring>"}],"instance":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"a8043c67-bdac-4527-a966-fa9e81f53af0":{"description":"One or more `from` domains are not verified.","headers":{},"content":{"application/problem+json":{"schema":{"type":"object","properties":{"code":{"type":"string","title":"ErrorCode","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"status":{"type":"integer","format":"int32","title":"Int","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"type":"string","title":"String","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"type":"string","title":"ProblemType","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"detail":{"type":"string","title":"String","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"detail":{"type":"string","title":"String","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"pointer":{"type":"string","title":"String","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"}},"required":["detail","pointer"],"title":"FieldProblem","uniqueKey":"errors.items.[INDEX]","typeLabel":"FieldProblem · object"},"title":"List\u003cFieldProblem>","uniqueKey":"errors","typeLabel":"FieldProblem · object[]"},"instance":{"type":"string","title":"ProblemInstance","uniqueKey":"instance","typeLabel":"string"},"requestId":{"type":"string","title":"String","uniqueKey":"requestId","typeLabel":"string"}},"required":["code","status","title","type"],"title":"ApiProblem","uniqueKey":"","typeLabel":"ApiProblem · object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>","errors":[{"detail":"\u003cstring>","pointer":"\u003cstring>"}],"instance":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"48705465-587a-4946-93d2-0f7ed5df1208":{"description":"The endpoint rate limit was exceeded. Wait for the `Retry-After` interval before retrying.","headers":{"Retry-After":{"description":"Whole seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"type":"object","properties":{"code":{"type":"string","title":"ErrorCode","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"status":{"type":"integer","format":"int32","title":"Int","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"type":"string","title":"String","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"type":"string","title":"ProblemType","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"detail":{"type":"string","title":"String","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"detail":{"type":"string","title":"String","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"pointer":{"type":"string","title":"String","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"}},"required":["detail","pointer"],"title":"FieldProblem","uniqueKey":"errors.items.[INDEX]","typeLabel":"FieldProblem · object"},"title":"List\u003cFieldProblem>","uniqueKey":"errors","typeLabel":"FieldProblem · object[]"},"instance":{"type":"string","title":"ProblemInstance","uniqueKey":"instance","typeLabel":"string"},"requestId":{"type":"string","title":"String","uniqueKey":"requestId","typeLabel":"string"}},"required":["code","status","title","type"],"title":"ApiProblem","uniqueKey":"","typeLabel":"ApiProblem · object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>","errors":[{"detail":"\u003cstring>","pointer":"\u003cstring>"}],"instance":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"cc0587b9-3fba-4846-96ee-c1a2ffe4c8af":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Project-bound Apollo Signal API key. Keys begin with `ap_signal_` and must carry the permission shown on the operation.","scopes":[]}}},"servers":{"f6001a60-13af-4ce2-b1d4-02de70ac9cc2":{"url":"https://api.signal.apollodeploy.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Project-bound Apollo Signal API key. Keys begin with `ap_signal_` and must carry the permission shown on the operation.","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Project-bound Apollo Signal API key. Keys begin with `ap_signal_` and must carry the permission shown on the operation.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"signal/api-reference/openapi.json"},"subdomain":"apollodeploy","siteName":"Apollo Deploy","title":"Batch send emails - Apollo Deploy","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-26T09:04:51.103Z","originalFileLocation":"api-reference/emails/batch-send-emails.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Sends up to 100 emails in a single API call. Each message in the batch is independent and can have a different recipient, subject, and body. Messages are queued atomically — either all are accepted or none are. ### Requirements - Permission: emails:send. - Safe retries: give each item its own idempotencyKey; items settle independently. - HTTP rate limit: 30 requests per 60 seconds per API key.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Apollo Deploy\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/apollodeploy/q4MGu_nnSpzYfDXv/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/apollodeploy/q4MGu_nnSpzYfDXv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/apollodeploy/q4MGu_nnSpzYfDXv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/apollodeploy/q4MGu_nnSpzYfDXv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/apollodeploy/q4MGu_nnSpzYfDXv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/apollodeploy/q4MGu_nnSpzYfDXv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/apollodeploy/q4MGu_nnSpzYfDXv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/apollodeploy/q4MGu_nnSpzYfDXv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/apollodeploy/q4MGu_nnSpzYfDXv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Batch send emails - Apollo Deploy\">\u003cmeta data-mint-head property=\"og:description\" content=\"Sends up to 100 emails in a single API call. Each message in the batch is independent and can have a different recipient, subject, and body. Messages are queued atomically — either all are accepted or none are. ### Requirements - Permission: emails:send. - Safe retries: give each item its own idempotencyKey; items settle independently. - HTTP rate limit: 30 requests per 60 seconds per API key.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Apollo Deploy\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.apollodeploy.com/api-reference/emails/batch-send-emails\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://apollodeploy.mintlify.app/_mintlify/api/og/v2?division=Emails\u0026amp;title=Batch+send+emails\u0026amp;description=Sends+up+to+100+emails+in+a+single+API+call.+Each+message+in+the+batch+is+independent+and+can+have+a+different+recipient%2C+subject%2C+and+body.+Messages+are+queued\u0026amp;theme=3e94fd2a68a715f99c52a168\u0026amp;signature=6225afb9cdb3d59f37098cf690c89992ceb7d39942289a4f86f50c3d20df0124\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Batch send emails - Apollo Deploy\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sends up to 100 emails in a single API call. Each message in the batch is independent and can have a different recipient, subject, and body. Messages are queued atomically — either all are accepted or none are. ### Requirements - Permission: emails:send. - Safe retries: give each item its own idempotencyKey; items settle independently. - HTTP rate limit: 30 requests per 60 seconds per API key.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://apollodeploy.mintlify.app/_mintlify/api/og/v2?division=Emails\u0026amp;title=Batch+send+emails\u0026amp;description=Sends+up+to+100+emails+in+a+single+API+call.+Each+message+in+the+batch+is+independent+and+can+have+a+different+recipient%2C+subject%2C+and+body.+Messages+are+queued\u0026amp;theme=3e94fd2a68a715f99c52a168\u0026amp;signature=6225afb9cdb3d59f37098cf690c89992ceb7d39942289a4f86f50c3d20df0124\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/apollodeploy/q4MGu_nnSpzYfDXv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Apollo Deploy\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#171717\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.apollodeploy.com/api-reference/emails/batch-send-emails\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/emails/batch-send-emails.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.apollodeploy.com/#organization\",\"name\":\"Apollo Deploy\",\"url\":\"https://docs.apollodeploy.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/apollodeploy/2tkCO7PoXSgjQkrC/logo/light.svg?fit=max\u0026auto=format\u0026n=2tkCO7PoXSgjQkrC\u0026q=85\u0026s=e4fc18ba64dc074898dfde7f40c3ad00\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.apollodeploy.com#website\",\"name\":\"Apollo Deploy\",\"url\":\"https://docs.apollodeploy.com\",\"publisher\":{\"@id\":\"https://docs.apollodeploy.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.apollodeploy.com/api-reference/emails/batch-send-emails#webpage\",\"url\":\"https://docs.apollodeploy.com/api-reference/emails/batch-send-emails\",\"name\":\"Batch send emails\",\"description\":\"Sends up to 100 emails in a single API call. Each message in the batch is independent and can have a different recipient, subject, and body. Messages are queued atomically — either all are accepted or none are. ### Requirements - Permission: emails:send. - Safe retries: give each item its own idempotencyKey; items settle independently. - HTTP rate limit: 30 requests per 60 seconds per API key.\",\"dateModified\":\"2026-08-26T09:04:51.103Z\",\"isPartOf\":{\"@id\":\"https://docs.apollodeploy.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.apollodeploy.com/api-reference/emails/batch-send-emails#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.apollodeploy.com/api-reference/emails/batch-send-emails#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Emails\",\"item\":\"https://docs.apollodeploy.com/api-reference/emails/send-email\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Batch send emails\",\"item\":\"https://docs.apollodeploy.com/api-reference/emails/batch-send-emails\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.apollodeploy.com/api-reference/emails/batch-send-emails#apireference\",\"headline\":\"Batch send emails\",\"name\":\"Batch send emails\",\"description\":\"Sends up to 100 emails in a single API call. Each message in the batch is independent and can have a different recipient, subject, and body. Messages are queued atomically — either all are accepted or none are. ### Requirements - Permission: emails:send. - Safe retries: give each item its own idempotencyKey; items settle independently. - HTTP rate limit: 30 requests per 60 seconds per API key.\",\"url\":\"https://docs.apollodeploy.com/api-reference/emails/batch-send-emails\",\"mainEntityOfPage\":{\"@id\":\"https://docs.apollodeploy.com/api-reference/emails/batch-send-emails#webpage\"},\"dateModified\":\"2026-08-26T09:04:51.103Z\",\"publisher\":{\"@id\":\"https://docs.apollodeploy.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.apollodeploy.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Apollo Deploy\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Apollo Deploy","nav":{"global":{"anchors":[{"anchor":"Marketing site","icon":"house","href":"https://apollodeploy.com"},{"anchor":"Support","icon":"life-ring","href":"mailto:support@apollodeploy.com"}]},"products":[{"product":"Apollo Deploy","icon":"rocket","description":"Release intelligence control plane","pages":[{"title":"Apollo Deploy","href":"/deploy"}]},{"product":"Packages","icon":"box","description":"Reusable utilities and components","pages":[{"title":"Packages","href":"/packages/time"}]},{"product":"Apollo Signal","icon":"https://mintlify.s3.us-west-1.amazonaws.com/apollodeploy/logo/signal/icon.svg","description":"Transactional email for developers","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/signal"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API reference","href":"/signal/api-reference/introduction"},{"title":"Authentication","href":"/signal/api-reference/authentication"},{"title":"Errors","href":"/signal/api-reference/errors"},{"title":"Pagination","href":"/signal/api-reference/pagination"},{"title":"Idempotency","href":"/signal/api-reference/idempotency"},{"title":"Email event streams","href":"/signal/api-reference/event-streams"},{"title":"Rate limits and sending quotas","href":"/signal/api-reference/rate-limit"}]},{"group":"Emails","pages":[{"title":"Send email","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/emails","href":"/api-reference/emails/send-email"},{"title":"Get email","description":"Retrieves the full details of a previously sent email by its ID, including the message headers, delivery status, and recipient information.\n\n### Requirements\n\n- **Permission:** `emails:read`.","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/emails/{emailId}","href":"/api-reference/emails/get-email"},{"title":"Batch send emails","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/emails/batch","href":"/api-reference/emails/batch-send-emails"},{"title":"Cancel email","description":"Cancels a scheduled email before it is sent. Only emails with `status: scheduled` can be cancelled. Attempting to cancel an already-sent email returns 409.\n\n### Requirements\n\n- **Permission:** `emails:send`.","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/emails/{emailId}","href":"/api-reference/emails/cancel-email"},{"title":"Bulk cancel scheduled emails","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/emails","href":"/api-reference/emails/bulk-cancel-scheduled-emails"},{"title":"Issue stream token","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/emails/{projectId}/stream/token","href":"/api-reference/emails/issue-stream-token"},{"title":"Stream email events","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/emails/stream","href":"/api-reference/emails/stream-email-events"},{"title":"Validate links in HTML","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/emails/validate","href":"/api-reference/emails/validate-links-in-html"}]},{"group":"Metrics","pages":[{"title":"Get topic engagement analytics","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/metrics/topics/{id}","href":"/api-reference/metrics/get-topic-engagement-analytics"},{"title":"Get email performance","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/metrics/emails/{id}","href":"/api-reference/metrics/get-email-performance"},{"title":"Get email read engagement","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/metrics/emails/{id}/engagement","href":"/api-reference/metrics/get-email-read-engagement"},{"title":"Get project metrics summary","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/metrics/summary","href":"/api-reference/metrics/get-project-metrics-summary"},{"title":"Get project metrics timeline","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/metrics/timeline","href":"/api-reference/metrics/get-project-metrics-timeline"},{"title":"Get deliverability advisor","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/metrics/advisor","href":"/api-reference/metrics/get-deliverability-advisor"}]},{"group":"Projects and email logs","pages":[{"title":"List projects","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects","href":"/api-reference/projects/list-projects"},{"title":"Get project","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}","href":"/api-reference/projects/get-project"},{"title":"Update project","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json patch /v1/projects/{projectId}","href":"/api-reference/projects/update-project"},{"title":"List emails","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/emails","href":"/api-reference/projects/list-emails"},{"title":"Get email","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/emails/{emailId}","href":"/api-reference/projects/get-email"},{"title":"Get email timeline","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/emails/{emailId}/events","href":"/api-reference/projects/get-email-timeline"}]},{"group":"Sending domains","pages":[{"title":"List domains","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/domains","href":"/api-reference/sending-domains/list-domains"},{"title":"Get domain","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/domains/{domainId}","href":"/api-reference/sending-domains/get-domain"},{"title":"Create domain","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/domains","href":"/api-reference/sending-domains/create-domain"},{"title":"Verify domain","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/domains/{domainId}/verify","href":"/api-reference/sending-domains/verify-domain"},{"title":"Delete domain","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/projects/{projectId}/domains/{domainId}","href":"/api-reference/sending-domains/delete-domain"},{"title":"Verify BIMI","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/domains/{domainId}/bimi/verify","href":"/api-reference/sending-domains/verify-bimi"},{"title":"Update BIMI","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json patch /v1/projects/{projectId}/domains/{domainId}/bimi","href":"/api-reference/sending-domains/update-bimi"}]},{"group":"Contacts","pages":[{"title":"List contacts","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/contacts","href":"/api-reference/contacts/list-contacts"},{"title":"Get contact","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/contacts/{contactId}","href":"/api-reference/contacts/get-contact"},{"title":"List contact segments","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/contacts/{contactId}/segments","href":"/api-reference/contacts/list-contact-segments"},{"title":"Get contact topics","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/contacts/{contactId}/topics","href":"/api-reference/contacts/get-contact-topics"},{"title":"Create contact","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/contacts","href":"/api-reference/contacts/create-contact"},{"title":"Update contact","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json patch /v1/projects/{projectId}/contacts/{contactId}","href":"/api-reference/contacts/update-contact"},{"title":"Delete contact","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/projects/{projectId}/contacts/{contactId}","href":"/api-reference/contacts/delete-contact"},{"title":"Upload contact profile image","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/contacts/{contactId}/image","href":"/api-reference/contacts/upload-contact-profile-image"},{"title":"Set contact profile image URL","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json put /v1/projects/{projectId}/contacts/{contactId}/image","href":"/api-reference/contacts/set-contact-profile-image-url"},{"title":"Delete contact profile image","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/projects/{projectId}/contacts/{contactId}/image","href":"/api-reference/contacts/delete-contact-profile-image"},{"title":"Add contact to segment","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/contacts/{contactId}/segments","href":"/api-reference/contacts/add-contact-to-segment"},{"title":"Remove contact from segment","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/projects/{projectId}/contacts/{contactId}/segments/{segmentId}","href":"/api-reference/contacts/remove-contact-from-segment"},{"title":"Update contact topics","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json patch /v1/projects/{projectId}/contacts/{contactId}/topics","href":"/api-reference/contacts/update-contact-topics"},{"title":"Get contact activity","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/contacts/{contactId}/activity","href":"/api-reference/contacts/get-contact-activity"},{"title":"Get contact engagement score","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/contacts/{contactId}/engagement","href":"/api-reference/contacts/get-contact-engagement-score"},{"title":"Get contact email validation status","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/contacts/{contactId}/email-validation","href":"/api-reference/contacts/get-contact-email-validation-status"},{"title":"Refresh contact engagement score","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/contacts/{contactId}/engagement/refresh","href":"/api-reference/contacts/refresh-contact-engagement-score"},{"title":"Record email validation result","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/contacts/{contactId}/email-validation","href":"/api-reference/contacts/record-email-validation-result"}]},{"group":"Contact properties","pages":[{"title":"List contact properties","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/contact-properties","href":"/api-reference/contact-properties/list-contact-properties"},{"title":"Get contact property","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/contact-properties/{propertyId}","href":"/api-reference/contact-properties/get-contact-property"},{"title":"Create contact property","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/contact-properties","href":"/api-reference/contact-properties/create-contact-property"},{"title":"Update contact property","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json patch /v1/projects/{projectId}/contact-properties/{propertyId}","href":"/api-reference/contact-properties/update-contact-property"},{"title":"Delete contact property","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/projects/{projectId}/contact-properties/{propertyId}","href":"/api-reference/contact-properties/delete-contact-property"}]},{"group":"Segments","pages":[{"title":"List segments","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/segments","href":"/api-reference/segments/list-segments"},{"title":"Get segment","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/segments/{segmentId}","href":"/api-reference/segments/get-segment"},{"title":"List contacts in segment","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/segments/{segmentId}/contacts","href":"/api-reference/segments/list-contacts-in-segment"},{"title":"Create segment","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/segments","href":"/api-reference/segments/create-segment"},{"title":"Delete segment","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/projects/{projectId}/segments/{segmentId}","href":"/api-reference/segments/delete-segment"}]},{"group":"Topics","pages":[{"title":"List topics","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/topics","href":"/api-reference/topics/list-topics"},{"title":"Get topic","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/topics/{topicId}","href":"/api-reference/topics/get-topic"},{"title":"List opt-in contacts","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/topics/{topicId}/contacts","href":"/api-reference/topics/list-opt-in-contacts"},{"title":"Create topic","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/topics","href":"/api-reference/topics/create-topic"},{"title":"Update topic","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json patch /v1/projects/{projectId}/topics/{topicId}","href":"/api-reference/topics/update-topic"},{"title":"Delete topic","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/projects/{projectId}/topics/{topicId}","href":"/api-reference/topics/delete-topic"}]},{"group":"Suppressions","pages":[{"title":"List suppressions","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/suppressions","href":"/api-reference/suppressions/list-suppressions"},{"title":"Export suppressions","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/suppressions/export","href":"/api-reference/suppressions/export-suppressions"},{"title":"Add suppression","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/suppressions","href":"/api-reference/suppressions/add-suppression"},{"title":"Remove suppression","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/projects/{projectId}/suppressions/{email}","href":"/api-reference/suppressions/remove-suppression"},{"title":"Import suppressions","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/suppressions/import","href":"/api-reference/suppressions/import-suppressions"}]},{"group":"Webhooks","pages":[{"title":"List webhooks","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Get webhook","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/webhooks/{endpointId}","href":"/api-reference/webhooks/get-webhook"},{"title":"List webhook deliveries","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/webhooks/{endpointId}/deliveries","href":"/api-reference/webhooks/list-webhook-deliveries"},{"title":"Get webhook delivery","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/webhooks/{endpointId}/deliveries/{deliveryId}","href":"/api-reference/webhooks/get-webhook-delivery"},{"title":"Create webhook","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/webhooks","href":"/api-reference/webhooks/create-webhook"},{"title":"Update webhook","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json patch /v1/projects/{projectId}/webhooks/{endpointId}","href":"/api-reference/webhooks/update-webhook"},{"title":"Delete webhook","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json delete /v1/projects/{projectId}/webhooks/{endpointId}","href":"/api-reference/webhooks/delete-webhook"},{"title":"Test webhook","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/webhooks/{endpointId}/test","href":"/api-reference/webhooks/test-webhook"},{"title":"Replay webhook delivery","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json post /v1/projects/{projectId}/webhooks/{endpointId}/replay/{deliveryId}","href":"/api-reference/webhooks/replay-webhook-delivery"}]},{"group":"API key usage","pages":[{"title":"List API keys","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/api-keys","href":"/api-reference/api-key-usage/list-api-keys"},{"title":"Get API key","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/api-keys/{keyId}","href":"/api-reference/api-key-usage/get-api-key"},{"title":"Get API key usage","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/api-keys/{keyId}/usage","href":"/api-reference/api-key-usage/get-api-key-usage"},{"title":"Export API key usage","deprecated":false,"version":null,"openapi":"/signal/api-reference/openapi.json get /v1/projects/{projectId}/api-keys/{keyId}/usage/export","href":"/api-reference/api-key-usage/export-api-key-usage"}]}]},{"tab":"Knowledge base","pages":[{"title":"Knowledge base","href":"/signal/knowledge-base/introduction"}]}]}]},"basePath":"","title":"Batch send emails - Apollo Deploy","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-Bevw23-4.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}