[{"data":1,"prerenderedAt":1242},["ShallowReactive",2],{"doc:\u002Fv\u002F2026.3\u002Fbuild-with-ai\u002Fsend-email-with-the-workspace369-api":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"section":10,"version":11,"lastUpdated":12,"body":13,"_type":1236,"_id":1237,"_source":1238,"_file":1239,"_stem":1240,"_extension":1241},"\u002Fv\u002F2026.3\u002Fbuild-with-ai\u002Fsend-email-with-the-workspace369-api","build-with-ai",false,"","Send email from your app with the Workspace369 API","Send transactional email from your own verified domain with one HTTPS call. Create a send-only key, copy your inbox ID, and send.","Build with AI","2026.3","2026-11-04",{"type":14,"children":15,"toc":1223},"root",[16,24,31,59,65,107,112,117,122,128,162,168,180,201,461,488,495,516,557,570,576,597,603,665,1167,1193,1199,1213,1218],{"type":17,"tag":18,"props":19,"children":20},"element","p",{},[21],{"type":22,"value":23},"text","The Workspace369 email API sends email from an inbox on your own verified domain. Your app, or the CRM an AI coding agent builds for you, makes one HTTPS call per message, and Workspace369 sends it. The same inboxes, suppression list and email credits you use in the app are used here, so there is no second email provider to set up.",{"type":17,"tag":25,"props":26,"children":28},"h2",{"id":27},"before-you-begin",[29],{"type":22,"value":30},"Before you begin",{"type":17,"tag":32,"props":33,"children":34},"ul",{},[35,49,54],{"type":17,"tag":36,"props":37,"children":38},"li",{},[39,41,47],{"type":22,"value":40},"An inbox on your own domain, with the domain verified, in ",{"type":17,"tag":42,"props":43,"children":44},"strong",{},[45],{"type":22,"value":46},"Settings → Inbox",{"type":22,"value":48},". Gmail, Outlook, SMTP and starter inboxes can't send through the API.",{"type":17,"tag":36,"props":50,"children":51},{},[52],{"type":22,"value":53},"The account owner or an admin, to create the key.",{"type":17,"tag":36,"props":55,"children":56},{},[57],{"type":22,"value":58},"Email credits in the workspace. Each email uses email credits and a little of the plan's AI usage, the same as an email sent from the inbox.",{"type":17,"tag":25,"props":60,"children":62},{"id":61},"create-a-send-only-key",[63],{"type":22,"value":64},"Create a send-only key",{"type":17,"tag":66,"props":67,"children":68},"ol",{},[69,81,93],{"type":17,"tag":36,"props":70,"children":71},{},[72,74,79],{"type":22,"value":73},"Open ",{"type":17,"tag":42,"props":75,"children":76},{},[77],{"type":22,"value":78},"Settings → Integrations → For developers → Email API keys",{"type":22,"value":80},".",{"type":17,"tag":36,"props":82,"children":83},{},[84,86,91],{"type":22,"value":85},"Choose ",{"type":17,"tag":42,"props":87,"children":88},{},[89],{"type":22,"value":90},"Create key",{"type":22,"value":92}," and name it. To limit the key, pick up to 20 inboxes it may send from; with no limit it can send from any verified inbox in the workspace.",{"type":17,"tag":36,"props":94,"children":95},{},[96,98,105],{"type":22,"value":97},"Copy the key. It is shown once and starts with ",{"type":17,"tag":99,"props":100,"children":102},"code",{"className":101},[],[103],{"type":22,"value":104},"w369_send_",{"type":22,"value":106},". Workspace369 keeps only a hash of it, so a lost key can't be shown again; create a new one.",{"type":17,"tag":18,"props":108,"children":109},{},[110],{"type":22,"value":111},"Creating a key asks you to have signed in within the last 10 minutes. A workspace can have up to 20 live keys.",{"type":17,"tag":18,"props":113,"children":114},{},[115],{"type":22,"value":116},"A send-only key can only send email from its inboxes. It can't read clients, messages or anything else in the workspace. Revoke it on the same screen; it stops working on the next request.",{"type":17,"tag":18,"props":118,"children":119},{},[120],{"type":22,"value":121},"Keep the key on your server, in a secret store. Never put it in browser or mobile app code.",{"type":17,"tag":25,"props":123,"children":125},{"id":124},"find-your-inbox-id",[126],{"type":22,"value":127},"Find your inbox ID",{"type":17,"tag":18,"props":129,"children":130},{},[131,133,138,140,146,148,153,155,160],{"type":22,"value":132},"On the same ",{"type":17,"tag":42,"props":134,"children":135},{},[136],{"type":22,"value":137},"Email API keys",{"type":22,"value":139}," screen, each inbox on your own domain is listed with its address and its ID, which starts with ",{"type":17,"tag":99,"props":141,"children":143},{"className":142},[],[144],{"type":22,"value":145},"inb_",{"type":22,"value":147},". Choose ",{"type":17,"tag":42,"props":149,"children":150},{},[151],{"type":22,"value":152},"Copy ID",{"type":22,"value":154}," next to the inbox you want to send from. An inbox marked ",{"type":17,"tag":42,"props":156,"children":157},{},[158],{"type":22,"value":159},"Domain not verified",{"type":22,"value":161}," can't send until its domain is verified.",{"type":17,"tag":25,"props":163,"children":165},{"id":164},"send-an-email",[166],{"type":22,"value":167},"Send an email",{"type":17,"tag":169,"props":170,"children":175},"pre",{"className":171,"code":173,"language":174,"meta":7},[172],"language-bash","curl https:\u002F\u002Fmcp.workspace369.com\u002Fv1\u002Femail\u002Fmessages \\\n  -H \"Authorization: Bearer $W369_SEND_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Idempotency-Key: booking-123-confirm\" \\\n  -d '{\n    \"from\": { \"inbox_id\": \"inb_AbCdEfGhIjKlMnOpQrSt\", \"name\": \"Fade Lab\" },\n    \"to\": [{ \"email\": \"guest@example.com\" }],\n    \"subject\": \"Your booking is confirmed\",\n    \"text\": \"See you Friday at 3 pm.\",\n    \"html\": \"\u003Cp>See you Friday at 3 pm.\u003C\u002Fp>\",\n    \"tracking\": { \"opens\": false, \"clicks\": false },\n    \"metadata\": { \"booking_id\": \"123\" }\n  }'\n","bash",[176],{"type":17,"tag":99,"props":177,"children":178},{"__ignoreMap":7},[179],{"type":22,"value":173},{"type":17,"tag":18,"props":181,"children":182},{},[183,185,191,193,199],{"type":22,"value":184},"A ",{"type":17,"tag":99,"props":186,"children":188},{"className":187},[],[189],{"type":22,"value":190},"202",{"type":22,"value":192}," answer with ",{"type":17,"tag":99,"props":194,"children":196},{"className":195},[],[197],{"type":22,"value":198},"{\"id\":\"msg_…\",\"status\":\"queued\"}",{"type":22,"value":200}," means the email will be sent.",{"type":17,"tag":202,"props":203,"children":204},"table",{},[205,224],{"type":17,"tag":206,"props":207,"children":208},"thead",{},[209],{"type":17,"tag":210,"props":211,"children":212},"tr",{},[213,219],{"type":17,"tag":214,"props":215,"children":216},"th",{},[217],{"type":22,"value":218},"Field",{"type":17,"tag":214,"props":220,"children":221},{},[222],{"type":22,"value":223},"Rules",{"type":17,"tag":225,"props":226,"children":227},"tbody",{},[228,251,268,285,302,326,366,391,416],{"type":17,"tag":210,"props":229,"children":230},{},[231,241],{"type":17,"tag":232,"props":233,"children":234},"td",{},[235],{"type":17,"tag":99,"props":236,"children":238},{"className":237},[],[239],{"type":22,"value":240},"from.inbox_id",{"type":17,"tag":232,"props":242,"children":243},{},[244,249],{"type":17,"tag":99,"props":245,"children":247},{"className":246},[],[248],{"type":22,"value":145},{"type":22,"value":250}," plus 20 letters and digits: an inbox the key may use, on a verified domain. The From address is that inbox's address.",{"type":17,"tag":210,"props":252,"children":253},{},[254,263],{"type":17,"tag":232,"props":255,"children":256},{},[257],{"type":17,"tag":99,"props":258,"children":260},{"className":259},[],[261],{"type":22,"value":262},"from.name",{"type":17,"tag":232,"props":264,"children":265},{},[266],{"type":22,"value":267},"Optional display name, up to 100 characters. Line breaks, quotes and angle brackets are removed.",{"type":17,"tag":210,"props":269,"children":270},{},[271,280],{"type":17,"tag":232,"props":272,"children":273},{},[274],{"type":17,"tag":99,"props":275,"children":277},{"className":276},[],[278],{"type":22,"value":279},"to",{"type":17,"tag":232,"props":281,"children":282},{},[283],{"type":22,"value":284},"Exactly one recipient per call. There is no cc or bcc; send one call per recipient.",{"type":17,"tag":210,"props":286,"children":287},{},[288,297],{"type":17,"tag":232,"props":289,"children":290},{},[291],{"type":17,"tag":99,"props":292,"children":294},{"className":293},[],[295],{"type":22,"value":296},"subject",{"type":17,"tag":232,"props":298,"children":299},{},[300],{"type":22,"value":301},"Required, one line, up to 998 characters.",{"type":17,"tag":210,"props":303,"children":304},{},[305,321],{"type":17,"tag":232,"props":306,"children":307},{},[308,313,315],{"type":17,"tag":99,"props":309,"children":311},{"className":310},[],[312],{"type":22,"value":22},{"type":22,"value":314},", ",{"type":17,"tag":99,"props":316,"children":318},{"className":317},[],[319],{"type":22,"value":320},"html",{"type":17,"tag":232,"props":322,"children":323},{},[324],{"type":22,"value":325},"At least one. Sent exactly as you write them, with no Workspace369 branding added.",{"type":17,"tag":210,"props":327,"children":328},{},[329,338],{"type":17,"tag":232,"props":330,"children":331},{},[332],{"type":17,"tag":99,"props":333,"children":335},{"className":334},[],[336],{"type":22,"value":337},"attachments",{"type":17,"tag":232,"props":339,"children":340},{},[341,343,349,350,356,358,364],{"type":22,"value":342},"Optional, up to 10, each as ",{"type":17,"tag":99,"props":344,"children":346},{"className":345},[],[347],{"type":22,"value":348},"filename",{"type":22,"value":314},{"type":17,"tag":99,"props":351,"children":353},{"className":352},[],[354],{"type":22,"value":355},"content_type",{"type":22,"value":357}," and ",{"type":17,"tag":99,"props":359,"children":361},{"className":360},[],[362],{"type":22,"value":363},"content_base64",{"type":22,"value":365},". The whole message can be up to 1 MB once decoded.",{"type":17,"tag":210,"props":367,"children":368},{},[369,378],{"type":17,"tag":232,"props":370,"children":371},{},[372],{"type":17,"tag":99,"props":373,"children":375},{"className":374},[],[376],{"type":22,"value":377},"tracking",{"type":17,"tag":232,"props":379,"children":380},{},[381,383,389],{"type":22,"value":382},"Optional ",{"type":17,"tag":99,"props":384,"children":386},{"className":385},[],[387],{"type":22,"value":388},"{ \"opens\": false, \"clicks\": false }",{"type":22,"value":390},". Leave it out to use the workspace's tracking setting. Turn both off for transactional email.",{"type":17,"tag":210,"props":392,"children":393},{},[394,403],{"type":17,"tag":232,"props":395,"children":396},{},[397],{"type":17,"tag":99,"props":398,"children":400},{"className":399},[],[401],{"type":22,"value":402},"reply_to",{"type":17,"tag":232,"props":404,"children":405},{},[406,408,414],{"type":22,"value":407},"Optional, as ",{"type":17,"tag":99,"props":409,"children":411},{"className":410},[],[412],{"type":22,"value":413},"{ \"email\": \"…\" }",{"type":22,"value":415},". Without it, replies go to the inbox.",{"type":17,"tag":210,"props":417,"children":418},{},[419,428],{"type":17,"tag":232,"props":420,"children":421},{},[422],{"type":17,"tag":99,"props":423,"children":425},{"className":424},[],[426],{"type":22,"value":427},"metadata",{"type":17,"tag":232,"props":429,"children":430},{},[431,433,439,440,445,446,452,453,459],{"type":22,"value":432},"Optional, up to 20 keys with text values of up to 500 characters each. Keys are 1 to 64 characters: letters, digits, ",{"type":17,"tag":99,"props":434,"children":436},{"className":435},[],[437],{"type":22,"value":438},"_",{"type":22,"value":314},{"type":17,"tag":99,"props":441,"children":443},{"className":442},[],[444],{"type":22,"value":80},{"type":22,"value":314},{"type":17,"tag":99,"props":447,"children":449},{"className":448},[],[450],{"type":22,"value":451},":",{"type":22,"value":357},{"type":17,"tag":99,"props":454,"children":456},{"className":455},[],[457],{"type":22,"value":458},"-",{"type":22,"value":460},". Saved with the message; recipients never see it.",{"type":17,"tag":18,"props":462,"children":463},{},[464,466,472,473,479,481,487],{"type":22,"value":465},"Any other field, including ",{"type":17,"tag":99,"props":467,"children":469},{"className":468},[],[470],{"type":22,"value":471},"cc",{"type":22,"value":357},{"type":17,"tag":99,"props":474,"children":476},{"className":475},[],[477],{"type":22,"value":478},"bcc",{"type":22,"value":480},", answers ",{"type":17,"tag":99,"props":482,"children":484},{"className":483},[],[485],{"type":22,"value":486},"400",{"type":22,"value":80},{"type":17,"tag":489,"props":490,"children":492},"h3",{"id":491},"retries-without-duplicates",[493],{"type":22,"value":494},"Retries without duplicates",{"type":17,"tag":18,"props":496,"children":497},{},[498,500,506,508,514],{"type":22,"value":499},"Send an ",{"type":17,"tag":99,"props":501,"children":503},{"className":502},[],[504],{"type":22,"value":505},"Idempotency-Key",{"type":22,"value":507}," header with a stable id for each email, such as ",{"type":17,"tag":99,"props":509,"children":511},{"className":510},[],[512],{"type":22,"value":513},"booking-123-confirm",{"type":22,"value":515},", of 1 to 200 visible characters. Workspace369 keeps it for 24 hours:",{"type":17,"tag":32,"props":517,"children":518},{},[519,540,552],{"type":17,"tag":36,"props":520,"children":521},{},[522,524,530,532,538],{"type":22,"value":523},"The same key with the same body returns ",{"type":17,"tag":99,"props":525,"children":527},{"className":526},[],[528],{"type":22,"value":529},"200",{"type":22,"value":531}," with ",{"type":17,"tag":99,"props":533,"children":535},{"className":534},[],[536],{"type":22,"value":537},"\"idempotent_replay\": true",{"type":22,"value":539},", and no second email goes out.",{"type":17,"tag":36,"props":541,"children":542},{},[543,545,551],{"type":22,"value":544},"The same key with a different body returns ",{"type":17,"tag":99,"props":546,"children":548},{"className":547},[],[549],{"type":22,"value":550},"409 idempotency_conflict",{"type":22,"value":80},{"type":17,"tag":36,"props":553,"children":554},{},[555],{"type":22,"value":556},"Only an accepted send is remembered. If a send was refused, for example for lack of credits, retrying with the same key sends it once the problem is fixed.",{"type":17,"tag":18,"props":558,"children":559},{},[560,562,568],{"type":22,"value":561},"Always send one. Without it, a ",{"type":17,"tag":99,"props":563,"children":565},{"className":564},[],[566],{"type":22,"value":567},"500 send_outcome_unknown",{"type":22,"value":569}," answer means the email may already be queued, and retrying could send it twice.",{"type":17,"tag":25,"props":571,"children":573},{"id":572},"bounces-and-complaints",[574],{"type":22,"value":575},"Bounces and complaints",{"type":17,"tag":18,"props":577,"children":578},{},[579,581,587,589,595],{"type":22,"value":580},"A hard bounce or a spam complaint adds the address to the workspace's suppression list, across all its inboxes. A send to a suppressed address answers ",{"type":17,"tag":99,"props":582,"children":584},{"className":583},[],[585],{"type":22,"value":586},"422",{"type":22,"value":588}," with the code ",{"type":17,"tag":99,"props":590,"children":592},{"className":591},[],[593],{"type":22,"value":594},"suppressed",{"type":22,"value":596},", and uses no credits.",{"type":17,"tag":25,"props":598,"children":600},{"id":599},"limits-and-errors",[601],{"type":22,"value":602},"Limits and errors",{"type":17,"tag":32,"props":604,"children":605},{},[606,619,631,652],{"type":17,"tag":36,"props":607,"children":608},{},[609,611,617],{"type":22,"value":610},"120 requests a minute per key (",{"type":17,"tag":99,"props":612,"children":614},{"className":613},[],[615],{"type":22,"value":616},"429 rate_limited",{"type":22,"value":618},").",{"type":17,"tag":36,"props":620,"children":621},{},[622,624,630],{"type":22,"value":623},"Emails a day per workspace, counted by UTC day: 400 while the workspace is under 30 days old, then 1,500 (",{"type":17,"tag":99,"props":625,"children":627},{"className":626},[],[628],{"type":22,"value":629},"429 daily_limit",{"type":22,"value":618},{"type":17,"tag":36,"props":632,"children":633},{},[634,636,642,644,650],{"type":22,"value":635},"Both ",{"type":17,"tag":99,"props":637,"children":639},{"className":638},[],[640],{"type":22,"value":641},"429",{"type":22,"value":643}," answers carry a ",{"type":17,"tag":99,"props":645,"children":647},{"className":646},[],[648],{"type":22,"value":649},"Retry-After",{"type":22,"value":651}," header in seconds.",{"type":17,"tag":36,"props":653,"children":654},{},[655,657,663],{"type":22,"value":656},"Errors come back as ",{"type":17,"tag":99,"props":658,"children":660},{"className":659},[],[661],{"type":22,"value":662},"{\"error\":{\"code\":\"…\",\"message\":\"…\"}}",{"type":22,"value":664},". Messages never repeat the recipient address or the key.",{"type":17,"tag":202,"props":666,"children":667},{},[668,689],{"type":17,"tag":206,"props":669,"children":670},{},[671],{"type":17,"tag":210,"props":672,"children":673},{},[674,679,684],{"type":17,"tag":214,"props":675,"children":676},{},[677],{"type":22,"value":678},"Status",{"type":17,"tag":214,"props":680,"children":681},{},[682],{"type":22,"value":683},"Code",{"type":17,"tag":214,"props":685,"children":686},{},[687],{"type":22,"value":688},"What to do",{"type":17,"tag":225,"props":690,"children":691},{},[692,724,750,782,813,839,864,897,923,949,974,998,1023,1048,1087,1120],{"type":17,"tag":210,"props":693,"children":694},{},[695,703,719],{"type":17,"tag":232,"props":696,"children":697},{},[698],{"type":17,"tag":99,"props":699,"children":701},{"className":700},[],[702],{"type":22,"value":486},{"type":17,"tag":232,"props":704,"children":705},{},[706,712,713],{"type":17,"tag":99,"props":707,"children":709},{"className":708},[],[710],{"type":22,"value":711},"invalid_request",{"type":22,"value":314},{"type":17,"tag":99,"props":714,"children":716},{"className":715},[],[717],{"type":22,"value":718},"invalid_json",{"type":17,"tag":232,"props":720,"children":721},{},[722],{"type":22,"value":723},"Fix the request; the message says which field.",{"type":17,"tag":210,"props":725,"children":726},{},[727,736,745],{"type":17,"tag":232,"props":728,"children":729},{},[730],{"type":17,"tag":99,"props":731,"children":733},{"className":732},[],[734],{"type":22,"value":735},"401",{"type":17,"tag":232,"props":737,"children":738},{},[739],{"type":17,"tag":99,"props":740,"children":742},{"className":741},[],[743],{"type":22,"value":744},"unauthorized",{"type":17,"tag":232,"props":746,"children":747},{},[748],{"type":22,"value":749},"The key is missing, wrong or revoked.",{"type":17,"tag":210,"props":751,"children":752},{},[753,762,771],{"type":17,"tag":232,"props":754,"children":755},{},[756],{"type":17,"tag":99,"props":757,"children":759},{"className":758},[],[760],{"type":22,"value":761},"402",{"type":17,"tag":232,"props":763,"children":764},{},[765],{"type":17,"tag":99,"props":766,"children":768},{"className":767},[],[769],{"type":22,"value":770},"insufficient_credits",{"type":17,"tag":232,"props":772,"children":773},{},[774,776,781],{"type":22,"value":775},"Add email credits, then retry with the same ",{"type":17,"tag":99,"props":777,"children":779},{"className":778},[],[780],{"type":22,"value":505},{"type":22,"value":80},{"type":17,"tag":210,"props":783,"children":784},{},[785,793,802],{"type":17,"tag":232,"props":786,"children":787},{},[788],{"type":17,"tag":99,"props":789,"children":791},{"className":790},[],[792],{"type":22,"value":761},{"type":17,"tag":232,"props":794,"children":795},{},[796],{"type":17,"tag":99,"props":797,"children":799},{"className":798},[],[800],{"type":22,"value":801},"usage_exhausted",{"type":17,"tag":232,"props":803,"children":804},{},[805,807,812],{"type":22,"value":806},"The workspace is out of AI usage. Add usage or upgrade the plan in Billing, then retry with the same ",{"type":17,"tag":99,"props":808,"children":810},{"className":809},[],[811],{"type":22,"value":505},{"type":22,"value":80},{"type":17,"tag":210,"props":814,"children":815},{},[816,825,834],{"type":17,"tag":232,"props":817,"children":818},{},[819],{"type":17,"tag":99,"props":820,"children":822},{"className":821},[],[823],{"type":22,"value":824},"403",{"type":17,"tag":232,"props":826,"children":827},{},[828],{"type":17,"tag":99,"props":829,"children":831},{"className":830},[],[832],{"type":22,"value":833},"forbidden_inbox",{"type":17,"tag":232,"props":835,"children":836},{},[837],{"type":22,"value":838},"The key may not send from that inbox, or it isn't this workspace's inbox.",{"type":17,"tag":210,"props":840,"children":841},{},[842,850,859],{"type":17,"tag":232,"props":843,"children":844},{},[845],{"type":17,"tag":99,"props":846,"children":848},{"className":847},[],[849],{"type":22,"value":824},{"type":17,"tag":232,"props":851,"children":852},{},[853],{"type":17,"tag":99,"props":854,"children":856},{"className":855},[],[857],{"type":22,"value":858},"messaging_paused",{"type":17,"tag":232,"props":860,"children":861},{},[862],{"type":22,"value":863},"Sending is paused for the workspace. Contact support.",{"type":17,"tag":210,"props":865,"children":866},{},[867,876,885],{"type":17,"tag":232,"props":868,"children":869},{},[870],{"type":17,"tag":99,"props":871,"children":873},{"className":872},[],[874],{"type":22,"value":875},"404",{"type":17,"tag":232,"props":877,"children":878},{},[879],{"type":17,"tag":99,"props":880,"children":882},{"className":881},[],[883],{"type":22,"value":884},"not_found",{"type":17,"tag":232,"props":886,"children":887},{},[888,890,896],{"type":22,"value":889},"Check the URL: ",{"type":17,"tag":99,"props":891,"children":893},{"className":892},[],[894],{"type":22,"value":895},"POST https:\u002F\u002Fmcp.workspace369.com\u002Fv1\u002Femail\u002Fmessages",{"type":22,"value":80},{"type":17,"tag":210,"props":898,"children":899},{},[900,909,918],{"type":17,"tag":232,"props":901,"children":902},{},[903],{"type":17,"tag":99,"props":904,"children":906},{"className":905},[],[907],{"type":22,"value":908},"409",{"type":17,"tag":232,"props":910,"children":911},{},[912],{"type":17,"tag":99,"props":913,"children":915},{"className":914},[],[916],{"type":22,"value":917},"idempotency_conflict",{"type":17,"tag":232,"props":919,"children":920},{},[921],{"type":22,"value":922},"The idempotency key was used with a different body.",{"type":17,"tag":210,"props":924,"children":925},{},[926,935,944],{"type":17,"tag":232,"props":927,"children":928},{},[929],{"type":17,"tag":99,"props":930,"children":932},{"className":931},[],[933],{"type":22,"value":934},"413",{"type":17,"tag":232,"props":936,"children":937},{},[938],{"type":17,"tag":99,"props":939,"children":941},{"className":940},[],[942],{"type":22,"value":943},"payload_too_large",{"type":17,"tag":232,"props":945,"children":946},{},[947],{"type":22,"value":948},"The request is over 2 MB, or the message is over 1 MB once decoded.",{"type":17,"tag":210,"props":950,"children":951},{},[952,960,969],{"type":17,"tag":232,"props":953,"children":954},{},[955],{"type":17,"tag":99,"props":956,"children":958},{"className":957},[],[959],{"type":22,"value":586},{"type":17,"tag":232,"props":961,"children":962},{},[963],{"type":17,"tag":99,"props":964,"children":966},{"className":965},[],[967],{"type":22,"value":968},"invalid_address",{"type":17,"tag":232,"props":970,"children":971},{},[972],{"type":22,"value":973},"Check the recipient address.",{"type":17,"tag":210,"props":975,"children":976},{},[977,985,993],{"type":17,"tag":232,"props":978,"children":979},{},[980],{"type":17,"tag":99,"props":981,"children":983},{"className":982},[],[984],{"type":22,"value":586},{"type":17,"tag":232,"props":986,"children":987},{},[988],{"type":17,"tag":99,"props":989,"children":991},{"className":990},[],[992],{"type":22,"value":594},{"type":17,"tag":232,"props":994,"children":995},{},[996],{"type":22,"value":997},"The address bounced or complained before. Don't send to it again.",{"type":17,"tag":210,"props":999,"children":1000},{},[1001,1009,1018],{"type":17,"tag":232,"props":1002,"children":1003},{},[1004],{"type":17,"tag":99,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":22,"value":586},{"type":17,"tag":232,"props":1010,"children":1011},{},[1012],{"type":17,"tag":99,"props":1013,"children":1015},{"className":1014},[],[1016],{"type":22,"value":1017},"inbox_not_supported",{"type":17,"tag":232,"props":1019,"children":1020},{},[1021],{"type":22,"value":1022},"Use an inbox on your own verified domain.",{"type":17,"tag":210,"props":1024,"children":1025},{},[1026,1034,1043],{"type":17,"tag":232,"props":1027,"children":1028},{},[1029],{"type":17,"tag":99,"props":1030,"children":1032},{"className":1031},[],[1033],{"type":22,"value":586},{"type":17,"tag":232,"props":1035,"children":1036},{},[1037],{"type":17,"tag":99,"props":1038,"children":1040},{"className":1039},[],[1041],{"type":22,"value":1042},"inbox_not_verified",{"type":17,"tag":232,"props":1044,"children":1045},{},[1046],{"type":22,"value":1047},"Finish the inbox's domain DNS setup in Workspace369.",{"type":17,"tag":210,"props":1049,"children":1050},{},[1051,1059,1075],{"type":17,"tag":232,"props":1052,"children":1053},{},[1054],{"type":17,"tag":99,"props":1055,"children":1057},{"className":1056},[],[1058],{"type":22,"value":641},{"type":17,"tag":232,"props":1060,"children":1061},{},[1062,1068,1069],{"type":17,"tag":99,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":22,"value":1067},"rate_limited",{"type":22,"value":314},{"type":17,"tag":99,"props":1070,"children":1072},{"className":1071},[],[1073],{"type":22,"value":1074},"daily_limit",{"type":17,"tag":232,"props":1076,"children":1077},{},[1078,1080,1085],{"type":22,"value":1079},"Wait for ",{"type":17,"tag":99,"props":1081,"children":1083},{"className":1082},[],[1084],{"type":22,"value":649},{"type":22,"value":1086},", then retry.",{"type":17,"tag":210,"props":1088,"children":1089},{},[1090,1099,1108],{"type":17,"tag":232,"props":1091,"children":1092},{},[1093],{"type":17,"tag":99,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":22,"value":1098},"500",{"type":17,"tag":232,"props":1100,"children":1101},{},[1102],{"type":17,"tag":99,"props":1103,"children":1105},{"className":1104},[],[1106],{"type":22,"value":1107},"send_outcome_unknown",{"type":17,"tag":232,"props":1109,"children":1110},{},[1111,1113,1118],{"type":22,"value":1112},"Only without an ",{"type":17,"tag":99,"props":1114,"children":1116},{"className":1115},[],[1117],{"type":22,"value":505},{"type":22,"value":1119},": the email may already be queued. Don't resend.",{"type":17,"tag":210,"props":1121,"children":1122},{},[1123,1139,1155],{"type":17,"tag":232,"props":1124,"children":1125},{},[1126,1131,1133],{"type":17,"tag":99,"props":1127,"children":1129},{"className":1128},[],[1130],{"type":22,"value":1098},{"type":22,"value":1132}," \u002F ",{"type":17,"tag":99,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":22,"value":1138},"503",{"type":17,"tag":232,"props":1140,"children":1141},{},[1142,1148,1149],{"type":17,"tag":99,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":22,"value":1147},"internal_error",{"type":22,"value":314},{"type":17,"tag":99,"props":1150,"children":1152},{"className":1151},[],[1153],{"type":22,"value":1154},"service_unavailable",{"type":17,"tag":232,"props":1156,"children":1157},{},[1158,1160,1165],{"type":22,"value":1159},"Retry with the same ",{"type":17,"tag":99,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":22,"value":505},{"type":22,"value":1166},"; an accepted send is replayed, not sent twice.",{"type":17,"tag":18,"props":1168,"children":1169},{},[1170,1172,1177,1178,1183,1185,1191],{"type":22,"value":1171},"Each ",{"type":17,"tag":99,"props":1173,"children":1175},{"className":1174},[],[1176],{"type":22,"value":190},{"type":22,"value":357},{"type":17,"tag":99,"props":1179,"children":1181},{"className":1180},[],[1182],{"type":22,"value":761},{"type":22,"value":1184}," answer also carries ",{"type":17,"tag":99,"props":1186,"children":1188},{"className":1187},[],[1189],{"type":22,"value":1190},"W369-Credits-Remaining",{"type":22,"value":1192},", the workspace's email credits after this send.",{"type":17,"tag":25,"props":1194,"children":1196},{"id":1195},"build-it-into-your-crm-with-ai",[1197],{"type":22,"value":1198},"Build it into your CRM with AI",{"type":17,"tag":18,"props":1200,"children":1201},{},[1202,1204,1211],{"type":22,"value":1203},"An AI coding agent can wire this up for you. Connect it to Workspace369 first, as in ",{"type":17,"tag":1205,"props":1206,"children":1208},"a",{"href":1207},"\u002Fv\u002F2026.3\u002Fbuild-with-ai\u002Fbuild-a-custom-crm-with-an-ai-coding-agent\u002F",[1209],{"type":22,"value":1210},"Build a custom CRM with an AI coding agent",{"type":22,"value":1212},", then ask:",{"type":17,"tag":18,"props":1214,"children":1215},{},[1216],{"type":22,"value":1217},"\"Add a server route that sends the booking confirmation through the Workspace369 email API. Read the send key from an environment variable, use the booking id as the Idempotency-Key, and save the returned msg_ id on the booking.\"",{"type":17,"tag":18,"props":1219,"children":1220},{},[1221],{"type":22,"value":1222},"Your CRM then sends from your own domain, and every email uses the same suppression list and credit balance as the rest of Workspace369.",{"title":7,"searchDepth":1224,"depth":1224,"links":1225},2,[1226,1227,1228,1229,1233,1234,1235],{"id":27,"depth":1224,"text":30},{"id":61,"depth":1224,"text":64},{"id":124,"depth":1224,"text":127},{"id":164,"depth":1224,"text":167,"children":1230},[1231],{"id":491,"depth":1232,"text":494},3,{"id":572,"depth":1224,"text":575},{"id":599,"depth":1224,"text":602},{"id":1195,"depth":1224,"text":1198},"markdown","content:v:2026.3:build-with-ai:send-email-with-the-workspace369-api.md","content","v\u002F2026.3\u002Fbuild-with-ai\u002Fsend-email-with-the-workspace369-api.md","v\u002F2026.3\u002Fbuild-with-ai\u002Fsend-email-with-the-workspace369-api","md",1793807905527]