Test keys validate everything, return real-looking ids and never send. Use them in development and CI.
Every API key is either live (sk_live_) or test (sk_test_). Test keys let you build and run automated tests without a verified domain, without spending your allowance and without a real inbox.
Runs every validation and compliance check, so a bad request fails exactly as it would in production.
Returns an id (em_…, sm_…) and "mode": "test" in the send response.
Stores the message: it appears in the dashboard Logs with a test badge and GET /v1/emails/{id} returns it with status sent and a queued and sent event.
Never enqueues, never contacts Amazon SES or a mobile network, never debits credits and never counts against your monthly allowance.
Skips the verified-domain, suppression and allowance checks, since nothing is delivered. Attachments are validated and described but not stored.
Deliver anything. To reach an inbox, use a live key.
Produce delivery webhooks. A test send emits no email.delivered or email.bounced events. To exercise your webhook handler, use Send test event on the Webhooks page or POST /v1/webhooks/{id}/test.
A test key never delivers. To see a real email arrive before you have a verified domain, send with a live key from the shared test address onboarding@sendbaze.com to your own sign-in email. It only delivers to your organisation’s own addresses (members and the billing email) and to the simulator addresses below, and each organisation gets 100 such emails in total. See send before your domain is verified.
With a live key you can test delivery outcomes without a real mailbox using the Amazon SES simulator addresses. They count as sends but never reach a person, and they are allowed from the shared test address too:
Address
Outcome
success@simulator.amazonses.com
Delivered
bounce@simulator.amazonses.com
Hard bounce; the address is suppressed
complaint@simulator.amazonses.com
Complaint; the address is suppressed and counts toward your rate
Do not send complaint simulations in bulk: they count toward the complaint rate that can pause your organisation.
First real delivery, before DNS: a live key from onboarding@sendbaze.com to your own address.
Staging: a live key on a staging subdomain such as staging.yourshop.co.za, sending to the simulator addresses and your own team.
Production: a live key with the narrowest scopes you need.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Sendbaze","description":"Transactional email and SMS API for Africa. Send from your own domain, from servers on the continent, with webhooks, templates, suppressions and a dashboard.","colors":{"primary":"#4D7CFF","light":"#8FD6FF","dark":"#4D7CFF"},"logo":{"light":"https://mintcdn.com/sendbaze-e4685166/qQClJyyt7LIRtxE9/logo/light.svg?fit=max\u0026auto=format\u0026n=qQClJyyt7LIRtxE9\u0026q=85\u0026s=ad3774129b02e31998cf4d4b68faa6c4","dark":"https://mintcdn.com/sendbaze-e4685166/qQClJyyt7LIRtxE9/logo/dark.svg?fit=max\u0026auto=format\u0026n=qQClJyyt7LIRtxE9\u0026q=85\u0026s=996553666d3645f8510736df07dfd91b","href":"https://www.sendbaze.com"},"favicon":"https://mintcdn.com/sendbaze-e4685166/qQClJyyt7LIRtxE9/favicon.svg?fit=max\u0026auto=format\u0026n=qQClJyyt7LIRtxE9\u0026q=85\u0026s=6cbee94d357b57a8ce76524cdffd13bc","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python","ruby","php","go"]}},"appearance":{"default":"dark","strict":false},"background":{"decoration":"gradient","color":{"light":"#F5F7FF","dark":"#04060D"}},"navbar":{"links":[{"href":"https://dashboard.sendbaze.com","label":"Sign in"}],"primary":{"type":"button","label":"Get started","href":"https://www.sendbaze.com/sign-up"}},"footer":{"socials":{"github":"https://github.com/sendbaze","website":"https://www.sendbaze.com"}},"fonts":{"heading":{"family":"Space Grotesk"},"body":{"family":"Inter"}},"styling":{"codeblocks":"dark","latex":false},"navigation":{"global":{"anchors":[{"anchor":"Dashboard","icon":"gauge","href":"https://dashboard.sendbaze.com"},{"anchor":"Status","icon":"signal","href":"https://www.sendbaze.com/status"},{"anchor":"Support","icon":"envelope","href":"mailto:support@sendbaze.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"sendbaze-e4685166","hasAudioNarration":false,"actualSubdomain":"sendbaze-e4685166","customDomains":["docs.sendbaze.com"],"gitSource":{"type":"github","owner":"leossaini","repo":"sendbaze","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae371adcacd1c86dbd6e99f","collectionId":"e4644757-a9be-4bcc-959f-aa0bfd3eddce","liveDeploymentHistoryId":"6ae371adcacd1c86dbd6e99f","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae371adcacd1c86dbd6e99f","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API reference","count":40},{"language":"default","tag":"Documentation","count":36},{"language":"default","tag":"Learn","count":19},{"language":"default","tag":"Get started","count":12},{"language":"default","tag":"Webhooks","count":12},{"language":"default","tag":"Domains","count":8},{"language":"default","tag":"Sending","count":8},{"language":"default","tag":"Sending examples","count":7},{"language":"default","tag":"Templates","count":7},{"language":"default","tag":"Resources","count":5}]},"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":"rbac-expansion","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":"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":"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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"learn/sending/test-mode","slug":"/learn/sending/test-mode","pageMetadata":{"title":"Test mode","description":"Test keys validate everything, return real-looking ids and never send. Use them in development and CI.","href":"/learn/sending/test-mode"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Test keys validate everything, return real-looking ids and never send. Use them in development and CI.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Every API key is either `,_jsx(_components.strong,{children:`live`}),` (`,_jsx(_components.code,{children:`sk_live_`}),`) or `,_jsx(_components.strong,{children:`test`}),` (`,_jsx(_components.code,{children:`sk_test_`}),`). Test keys let you build and run automated tests without a verified domain, without spending your allowance and without a real inbox.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-a-test-key-does`,children:`What a test key does`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Runs every validation and compliance check, so a bad request fails exactly as it would in production.`}),`\n`,_jsxs(_components.li,{children:[`Returns an id (`,_jsx(_components.code,{children:`em_…`}),`, `,_jsx(_components.code,{children:`sm_…`}),`) and `,_jsx(_components.code,{children:`\"mode\": \"test\"`}),` in the send response.`]}),`\n`,_jsxs(_components.li,{children:[`Stores the message: it appears in the dashboard `,_jsx(_components.strong,{children:`Logs`}),` with a `,_jsx(_components.strong,{children:`test`}),` badge and `,_jsx(_components.code,{children:`GET /v1/emails/{id}`}),` returns it with status `,_jsx(_components.code,{children:`sent`}),` and a `,_jsx(_components.code,{children:`queued`}),` and `,_jsx(_components.code,{children:`sent`}),` event.`]}),`\n`,_jsx(_components.li,{children:`Never enqueues, never contacts Amazon SES or a mobile network, never debits credits and never counts against your monthly allowance.`}),`\n`,_jsx(_components.li,{children:`Skips the verified-domain, suppression and allowance checks, since nothing is delivered. Attachments are validated and described but not stored.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-a-test-key-does-not-do`,children:`What a test key does not do`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Deliver anything. To reach an inbox, use a live key.`}),`\n`,_jsxs(_components.li,{children:[`Produce delivery webhooks. A test send emits no `,_jsx(_components.code,{children:`email.delivered`}),` or `,_jsx(_components.code,{children:`email.bounced`}),` events. To exercise your webhook handler, use `,_jsx(_components.strong,{children:`Send test event`}),` on the Webhooks page or `,_jsx(_components.code,{children:`POST /v1/webhooks/{id}/test`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`sending-before-your-domain-is-verified`,children:`Sending before your domain is verified`}),`\n`,_jsxs(_components.p,{children:[`A test key never delivers. To see a real email arrive before you have a verified domain, send with a `,_jsx(_components.strong,{children:`live`}),` key from the shared test address `,_jsx(_components.code,{children:`onboarding@sendbaze.com`}),` to your own sign-in email. It only delivers to your organisation’s own addresses (members and the billing email) and to the simulator addresses below, and each organisation gets 100 such emails in total. See `,_jsx(_components.a,{href:`/get-started/test-without-a-domain`,children:`send before your domain is verified`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`simulated-addresses`,children:`Simulated addresses`}),`\n`,_jsxs(_components.p,{children:[`With a `,_jsx(_components.strong,{children:`live`}),` key you can test delivery outcomes without a real mailbox using the Amazon SES simulator addresses. They count as sends but never reach a person, and they are allowed from the shared test address too:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Address`}),_jsx(_components.th,{children:`Outcome`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`success@simulator.amazonses.com`})}),_jsx(_components.td,{children:`Delivered`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bounce@simulator.amazonses.com`})}),_jsx(_components.td,{children:`Hard bounce; the address is suppressed`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`complaint@simulator.amazonses.com`})}),_jsx(_components.td,{children:`Complaint; the address is suppressed and counts toward your rate`})]})]})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Do not send complaint simulations in bulk: they count toward the complaint rate that can pause your organisation.`})}),`\n`,_jsx(Heading,{level:`2`,id:`recommended-set-up`,children:`Recommended set-up`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Local development and CI: `,_jsx(_components.code,{children:`sk_test_`}),` key.`]}),`\n`,_jsxs(_components.li,{children:[`First real delivery, before DNS: a live key from `,_jsx(_components.code,{children:`onboarding@sendbaze.com`}),` to your own address.`]}),`\n`,_jsxs(_components.li,{children:[`Staging: a live key on a staging subdomain such as `,_jsx(_components.code,{children:`staging.yourshop.co.za`}),`, sending to the simulator addresses and your own team.`]}),`\n`,_jsx(_components.li,{children:`Production: a live key with the narrowest scopes you need.`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Test mode","description":"Test keys validate everything, return real-looking ids and never send. Use them in development and CI.","href":"/learn/sending/test-mode"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What a test key does","slug":"what-a-test-key-does","depth":2,"children":[]},{"title":"What a test key does not do","slug":"what-a-test-key-does-not-do","depth":2,"children":[]},{"title":"Sending before your domain is verified","slug":"sending-before-your-domain-is-verified","depth":2,"children":[]},{"title":"Simulated addresses","slug":"simulated-addresses","depth":2,"children":[]},{"title":"Recommended set-up","slug":"recommended-set-up","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"sendbaze-e4685166","siteName":"Sendbaze","title":"Test mode - Sendbaze","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-24T09:45:51.525Z","originalFileLocation":"learn/sending/test-mode.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=\"dark\"}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=\"Test keys validate everything, return real-looking ids and never send. Use them in development and CI.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Sendbaze\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/sendbaze-e4685166/EerGTJNPOdlOkMSC/_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/sendbaze-e4685166/EerGTJNPOdlOkMSC/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/sendbaze-e4685166/EerGTJNPOdlOkMSC/_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/sendbaze-e4685166/EerGTJNPOdlOkMSC/_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/sendbaze-e4685166/EerGTJNPOdlOkMSC/_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/sendbaze-e4685166/EerGTJNPOdlOkMSC/_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/sendbaze-e4685166/EerGTJNPOdlOkMSC/_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/sendbaze-e4685166/EerGTJNPOdlOkMSC/_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/sendbaze-e4685166/EerGTJNPOdlOkMSC/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Test mode - Sendbaze\">\u003cmeta data-mint-head property=\"og:description\" content=\"Test keys validate everything, return real-looking ids and never send. Use them in development and CI.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Sendbaze\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.sendbaze.com/learn/sending/test-mode\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://sendbaze-e4685166.mintlify.site/_mintlify/api/og/v2?division=Sending\u0026amp;title=Test+mode\u0026amp;description=Test+keys+validate+everything%2C+return+real-looking+ids+and+never+send.+Use+them+in+development+and+CI.\u0026amp;theme=e0a16bd18abb95d7926b3870\u0026amp;signature=6d58a4ecef2e594763d8e5c0528594900caa6c5a1ac76f085e0188ab34189b51\">\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=\"Test mode - Sendbaze\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Test keys validate everything, return real-looking ids and never send. Use them in development and CI.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://sendbaze-e4685166.mintlify.site/_mintlify/api/og/v2?division=Sending\u0026amp;title=Test+mode\u0026amp;description=Test+keys+validate+everything%2C+return+real-looking+ids+and+never+send.+Use+them+in+development+and+CI.\u0026amp;theme=e0a16bd18abb95d7926b3870\u0026amp;signature=6d58a4ecef2e594763d8e5c0528594900caa6c5a1ac76f085e0188ab34189b51\">\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/sendbaze-e4685166/EerGTJNPOdlOkMSC/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Sendbaze\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4D7CFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.sendbaze.com/learn/sending/test-mode\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/learn/sending/test-mode.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.sendbaze.com/#organization\",\"name\":\"Sendbaze\",\"url\":\"https://docs.sendbaze.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/sendbaze-e4685166/qQClJyyt7LIRtxE9/logo/light.svg?fit=max\u0026auto=format\u0026n=qQClJyyt7LIRtxE9\u0026q=85\u0026s=ad3774129b02e31998cf4d4b68faa6c4\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.sendbaze.com#website\",\"name\":\"Sendbaze\",\"url\":\"https://docs.sendbaze.com\",\"publisher\":{\"@id\":\"https://docs.sendbaze.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.sendbaze.com/learn/sending/test-mode#webpage\",\"url\":\"https://docs.sendbaze.com/learn/sending/test-mode\",\"name\":\"Test mode\",\"description\":\"Test keys validate everything, return real-looking ids and never send. Use them in development and CI.\",\"dateModified\":\"2026-10-24T09:45:51.525Z\",\"isPartOf\":{\"@id\":\"https://docs.sendbaze.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.sendbaze.com/learn/sending/test-mode#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.sendbaze.com/learn/sending/test-mode#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Learn\",\"item\":\"https://docs.sendbaze.com/learn/domains/verification\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sending\",\"item\":\"https://docs.sendbaze.com/learn/sending/emails\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Test mode\",\"item\":\"https://docs.sendbaze.com/learn/sending/test-mode\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.sendbaze.com/learn/sending/test-mode#article\",\"headline\":\"Test mode\",\"name\":\"Test mode\",\"description\":\"Test keys validate everything, return real-looking ids and never send. Use them in development and CI.\",\"url\":\"https://docs.sendbaze.com/learn/sending/test-mode\",\"mainEntityOfPage\":{\"@id\":\"https://docs.sendbaze.com/learn/sending/test-mode#webpage\"},\"dateModified\":\"2026-10-24T09:45:51.525Z\",\"publisher\":{\"@id\":\"https://docs.sendbaze.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.sendbaze.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Sendbaze\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Sendbaze","nav":{"global":{"anchors":[{"anchor":"Dashboard","icon":"gauge","href":"https://dashboard.sendbaze.com"},{"anchor":"Status","icon":"signal","href":"https://www.sendbaze.com/status"},{"anchor":"Support","icon":"envelope","href":"mailto:support@sendbaze.com"}]},"tabs":[{"tab":"Documentation","icon":"book-open","groups":[{"group":"Get started","pages":[{"title":"Introduction","icon":"hand-wave","href":"/introduction"},{"title":"Create an API key","href":"/get-started/create-api-key"},{"title":"Send before your domain is verified","href":"/get-started/test-without-a-domain"},{"title":"Add and verify a domain","href":"/get-started/add-domain"},{"title":"Email types","href":"/get-started/email-types"},{"group":"Sending examples","pages":[{"title":"Send emails with Node.js","href":"/get-started/send-with/nodejs"},{"title":"Send emails with Next.js","href":"/get-started/send-with/nextjs"},{"title":"Send emails with Python","href":"/get-started/send-with/python"},{"title":"Send emails with Ruby","href":"/get-started/send-with/ruby"},{"title":"Send emails with PHP","href":"/get-started/send-with/php"},{"title":"Send emails with Go","href":"/get-started/send-with/go"},{"title":"Send emails with cURL","href":"/get-started/send-with/curl"}]}]},{"group":"Learn","pages":[{"group":"Domains","pages":[{"title":"How verification works","href":"/learn/domains/verification"},{"title":"DNS guides","href":"/learn/domains/dns-guides"},{"title":"Subdomain or root domain","href":"/learn/domains/subdomains"}]},{"group":"Sending","pages":[{"title":"Sending email","href":"/learn/sending/emails"},{"title":"Templates","href":"/learn/sending/templates"},{"title":"React Email","href":"/learn/sending/react-email"},{"title":"Attachments and inline images","href":"/learn/sending/attachments"},{"title":"Batch sending","href":"/learn/sending/batch"},{"title":"Idempotency","description":"Retry a send safely. The same Idempotency-Key returns the same id for 24 hours instead of sending twice.","href":"/learn/sending/idempotency"},{"title":"Test mode","href":"/learn/sending/test-mode"},{"title":"Tags and logs","description":"Tag your sends, find them again in the dashboard or with the list endpoint, and read the timeline of every message.","href":"/learn/sending/tags-and-logs"}]},{"group":"Deliverability","pages":[{"title":"Suppressions","href":"/learn/deliverability/suppressions"},{"title":"Marketing email","href":"/learn/deliverability/marketing-email"},{"title":"Reputation and the complaint monitor","href":"/learn/deliverability/reputation"}]},{"group":"Webhooks","pages":[{"title":"Webhooks","href":"/learn/webhooks/overview"},{"title":"Event types","href":"/learn/webhooks/events"},{"title":"Verify the signature","href":"/learn/webhooks/verify-signature"},{"title":"Retries, ordering and the delivery log","href":"/learn/webhooks/retries"}]},{"title":"SMS","href":"/learn/sms"}]},{"group":"Resources","pages":[{"title":"SDKs","href":"/resources/sdks"},{"title":"Errors","href":"/errors"},{"title":"Rate limits","href":"/resources/rate-limits"},{"title":"Plans and limits","href":"/resources/plans"},{"title":"Changelog","href":"/resources/changelog"}]}]},{"tab":"API reference","icon":"square-terminal","pages":[{"title":"API reference","href":"/api-reference/introduction"}]}]},"basePath":"","title":"Test mode - Sendbaze","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":[],"chunks":[]}