[{"data":1,"prerenderedAt":1507},["ShallowReactive",2],{"docs-navigation":3,"\u002Fdocs\u002Fapi\u002Fintroduction":202,"\u002Fdocs\u002Fapi\u002Fintroduction-surround":1502},[4],{"title":5,"path":6,"stem":7,"children":8,"page":22},"Docs","\u002Fdocs","docs",[9,23,36,65,86,115,128,172,185],{"title":10,"path":11,"stem":12,"children":13,"page":22},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[14,18],{"title":15,"path":16,"stem":17},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002F1.getting-started\u002F1.quickstart",{"title":19,"path":20,"stem":21},"Concepts","\u002Fdocs\u002Fgetting-started\u002Fconcepts","docs\u002F1.getting-started\u002F2.concepts",false,{"title":24,"path":25,"stem":26,"children":27,"page":22},"Sending domain","\u002Fdocs\u002Fdomains","docs\u002F2.domains",[28,32],{"title":29,"path":30,"stem":31},"Add your domain","\u002Fdocs\u002Fdomains\u002Fadd-your-domain","docs\u002F2.domains\u002F1.add-your-domain",{"title":33,"path":34,"stem":35},"Troubleshooting","\u002Fdocs\u002Fdomains\u002Ftroubleshooting","docs\u002F2.domains\u002F2.troubleshooting",{"title":37,"path":38,"stem":39,"children":40,"page":22},"Audience","\u002Fdocs\u002Faudience","docs\u002F3.audience",[41,45,49,53,57,61],{"title":42,"path":43,"stem":44},"Contacts","\u002Fdocs\u002Faudience\u002Fcontacts","docs\u002F3.audience\u002F1.contacts",{"title":46,"path":47,"stem":48},"Import contacts","\u002Fdocs\u002Faudience\u002Fimport","docs\u002F3.audience\u002F2.import",{"title":50,"path":51,"stem":52},"Lists","\u002Fdocs\u002Faudience\u002Flists","docs\u002F3.audience\u002F3.lists",{"title":54,"path":55,"stem":56},"Segments","\u002Fdocs\u002Faudience\u002Fsegments","docs\u002F3.audience\u002F4.segments",{"title":58,"path":59,"stem":60},"Signup forms","\u002Fdocs\u002Faudience\u002Fsignup-forms","docs\u002F3.audience\u002F5.signup-forms",{"title":62,"path":63,"stem":64},"Unsubscribe and preferences","\u002Fdocs\u002Faudience\u002Funsubscribe-and-preferences","docs\u002F3.audience\u002F6.unsubscribe-and-preferences",{"title":66,"path":67,"stem":68,"children":69,"page":22},"Sending emails","\u002Fdocs\u002Femails","docs\u002F4.emails",[70,74,78,82],{"title":71,"path":72,"stem":73},"Writing emails","\u002Fdocs\u002Femails\u002Fwriting-emails","docs\u002F4.emails\u002F1.writing-emails",{"title":75,"path":76,"stem":77},"Campaigns","\u002Fdocs\u002Femails\u002Fcampaigns","docs\u002F4.emails\u002F2.campaigns",{"title":79,"path":80,"stem":81},"Flows","\u002Fdocs\u002Femails\u002Fflows","docs\u002F4.emails\u002F3.flows",{"title":83,"path":84,"stem":85},"Transactional emails","\u002Fdocs\u002Femails\u002Ftransactional","docs\u002F4.emails\u002F4.transactional",{"title":87,"path":88,"stem":89,"children":90,"page":22},"Deliverability","\u002Fdocs\u002Fdeliverability","docs\u002F5.deliverability",[91,95,99,103,107,111],{"title":92,"path":93,"stem":94},"Overview","\u002Fdocs\u002Fdeliverability\u002Foverview","docs\u002F5.deliverability\u002F1.overview",{"title":96,"path":97,"stem":98},"Warm-up","\u002Fdocs\u002Fdeliverability\u002Fwarm-up","docs\u002F5.deliverability\u002F2.warm-up",{"title":100,"path":101,"stem":102},"Contacts under review","\u002Fdocs\u002Fdeliverability\u002Fimported-contacts","docs\u002F5.deliverability\u002F3.imported-contacts",{"title":104,"path":105,"stem":106},"Reputation","\u002Fdocs\u002Fdeliverability\u002Freputation","docs\u002F5.deliverability\u002F4.reputation",{"title":108,"path":109,"stem":110},"Bounces and suppressions","\u002Fdocs\u002Fdeliverability\u002Fbounces-and-suppressions","docs\u002F5.deliverability\u002F5.bounces-and-suppressions",{"title":112,"path":113,"stem":114},"Deliverability report","\u002Fdocs\u002Fdeliverability\u002Fdeliverability-report","docs\u002F5.deliverability\u002F6.deliverability-report",{"title":116,"path":117,"stem":118,"children":119,"page":22},"AI","\u002Fdocs\u002Fai","docs\u002F6.ai",[120,124],{"title":121,"path":122,"stem":123},"Assistant","\u002Fdocs\u002Fai\u002Fassistant","docs\u002F6.ai\u002F1.assistant",{"title":125,"path":126,"stem":127},"Connect your agent (MCP)","\u002Fdocs\u002Fai\u002Fmcp","docs\u002F6.ai\u002F2.mcp",{"title":129,"path":130,"stem":131,"children":132,"page":22},"API reference","\u002Fdocs\u002Fapi","docs\u002F7.api",[133,137,141,145,148,152,156,160,164,168],{"title":134,"path":135,"stem":136},"Introduction","\u002Fdocs\u002Fapi\u002Fintroduction","docs\u002F7.api\u002F01.introduction",{"title":138,"path":139,"stem":140},"Emails","\u002Fdocs\u002Fapi\u002Femails","docs\u002F7.api\u002F02.emails",{"title":142,"path":143,"stem":144},"Templates","\u002Fdocs\u002Fapi\u002Ftemplates","docs\u002F7.api\u002F03.templates",{"title":42,"path":146,"stem":147},"\u002Fdocs\u002Fapi\u002Fcontacts","docs\u002F7.api\u002F04.contacts",{"title":149,"path":150,"stem":151},"Events","\u002Fdocs\u002Fapi\u002Fevents","docs\u002F7.api\u002F05.events",{"title":153,"path":154,"stem":155},"Lists and segments","\u002Fdocs\u002Fapi\u002Flists-and-segments","docs\u002F7.api\u002F06.lists-and-segments",{"title":157,"path":158,"stem":159},"Campaigns and flows","\u002Fdocs\u002Fapi\u002Fcampaigns-and-flows","docs\u002F7.api\u002F07.campaigns-and-flows",{"title":161,"path":162,"stem":163},"Domains and suppressions","\u002Fdocs\u002Fapi\u002Fdomains-and-suppressions","docs\u002F7.api\u002F08.domains-and-suppressions",{"title":165,"path":166,"stem":167},"Spaces","\u002Fdocs\u002Fapi\u002Fspaces","docs\u002F7.api\u002F09.spaces",{"title":169,"path":170,"stem":171},"Webhooks","\u002Fdocs\u002Fapi\u002Fwebhooks","docs\u002F7.api\u002F10.webhooks",{"title":173,"path":174,"stem":175,"children":176,"page":22},"Account & billing","\u002Fdocs\u002Faccount","docs\u002F8.account",[177,181],{"title":178,"path":179,"stem":180},"Spaces and members","\u002Fdocs\u002Faccount\u002Fspaces-and-members","docs\u002F8.account\u002F1.spaces-and-members",{"title":182,"path":183,"stem":184},"Billing","\u002Fdocs\u002Faccount\u002Fbilling","docs\u002F8.account\u002F2.billing",{"title":186,"path":187,"stem":188,"children":189,"page":22},"Guides","\u002Fdocs\u002Fguides","docs\u002F9.guides",[190,194,198],{"title":191,"path":192,"stem":193},"Welcome new subscribers","\u002Fdocs\u002Fguides\u002Fwelcome-sequence","docs\u002F9.guides\u002F1.welcome-sequence",{"title":195,"path":196,"stem":197},"Onboarding with events","\u002Fdocs\u002Fguides\u002Fonboarding-with-events","docs\u002F9.guides\u002F2.onboarding-with-events",{"title":199,"path":200,"stem":201},"Migrate from another tool","\u002Fdocs\u002Fguides\u002Fmigrate-from-another-tool","docs\u002F9.guides\u002F3.migrate-from-another-tool",{"id":203,"title":134,"body":204,"description":1495,"extension":1496,"links":1497,"meta":1498,"navigation":1499,"path":135,"seo":1500,"stem":136,"__hash__":1501},"docs\u002Fdocs\u002F7.api\u002F01.introduction.md",{"type":205,"value":206,"toc":1482},"minimark",[207,211,216,227,234,238,245,285,296,301,387,393,401,441,451,455,458,474,533,537,541,544,566,783,790,794,797,902,913,1116,1120,1131,1141,1153,1157,1168,1262,1268,1272,1278,1343,1368,1379,1383,1478],[208,209,210],"p",{},"The Kula API is a REST API that takes and returns JSON.",[212,213,215],"h2",{"id":214},"base-url","Base URL",[217,218,223],"pre",{"className":219,"code":221,"language":222},[220],"language-text","https:\u002F\u002Fapi.kulamail.com\u002Fv1\n","text",[224,225,221],"code",{"__ignoreMap":226},"",[208,228,229,230,233],{},"HTTPS only. Send JSON bodies with ",[224,231,232],{},"Content-Type: application\u002Fjson",".",[212,235,237],{"id":236},"authentication","Authentication",[208,239,240,241,244],{},"Pass an API key in the ",[224,242,243],{},"Authorization"," header:",[217,246,250],{"className":247,"code":248,"language":249,"meta":226,"style":226},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl https:\u002F\u002Fapi.kulamail.com\u002Fv1\u002Fme \\\n  -H \"Authorization: Bearer ml_your_api_key\"\n","bash",[224,251,252,269],{"__ignoreMap":226},[253,254,257,261,265],"span",{"class":255,"line":256},"line",1,[253,258,260],{"class":259},"sBMFI","curl",[253,262,264],{"class":263},"sfazB"," https:\u002F\u002Fapi.kulamail.com\u002Fv1\u002Fme",[253,266,268],{"class":267},"sTEyZ"," \\\n",[253,270,272,275,279,282],{"class":255,"line":271},2,[253,273,274],{"class":263},"  -H",[253,276,278],{"class":277},"sMK4o"," \"",[253,280,281],{"class":263},"Authorization: Bearer ml_your_api_key",[253,283,284],{"class":277},"\"\n",[208,286,287,288,291,292,295],{},"A key starts with ",[224,289,290],{},"ml_"," and is shown once, at creation: store it in a secret manager, never in front-end code. The dashboard then shows only its prefix (",[224,293,294],{},"ml_a1b2c3d4",").",[297,298,300],"h3",{"id":299},"space-keys-and-account-keys","Space keys and account keys",[302,303,304,319],"table",{},[305,306,307],"thead",{},[308,309,310,313,316],"tr",{},[311,312],"th",{},[311,314,315],{},"Space key",[311,317,318],{},"Account key",[320,321,322,341,357,375],"tbody",{},[308,323,324,331,336],{},[325,326,327],"td",{},[328,329,330],"strong",{},"Created in",[325,332,333],{},[328,334,335],{},"Settings › API keys",[325,337,338],{},[328,339,340],{},"Account › Account API keys",[308,342,343,348,351],{},[325,344,345],{},[328,346,347],{},"Acts on",[325,349,350],{},"Its own space",[325,352,353,354],{},"Any space of the account, chosen with ",[224,355,356],{},"X-Space-Id",[308,358,359,369,372],{},[325,360,361,364,365,368],{},[328,362,363],{},"Manages spaces"," (",[224,366,367],{},"\u002Fv1\u002Fspaces",")",[325,370,371],{},"No",[325,373,374],{},"Yes",[308,376,377,382,385],{},[325,378,379],{},[328,380,381],{},"Who can create it",[325,383,384],{},"Admins and owners",[325,386,384],{},[208,388,389,390,233],{},"Most integrations need a space key. Use an account key when your product creates one space per customer or brand: see ",[391,392,165],"a",{"href":166},[208,394,395,396,398,399,244],{},"With an account key, every route outside ",[224,397,367],{}," acts on the space named in the ",[224,400,356],{},[217,402,404],{"className":247,"code":403,"language":249,"meta":226,"style":226},"curl https:\u002F\u002Fapi.kulamail.com\u002Fv1\u002Fcontacts \\\n  -H \"Authorization: Bearer ml_your_account_key\" \\\n  -H \"X-Space-Id: 3f1c9a52-7b0e-4d8a-9c61-2e5f8b7a4d10\"\n",[224,405,406,415,429],{"__ignoreMap":226},[253,407,408,410,413],{"class":255,"line":256},[253,409,260],{"class":259},[253,411,412],{"class":263}," https:\u002F\u002Fapi.kulamail.com\u002Fv1\u002Fcontacts",[253,414,268],{"class":267},[253,416,417,419,421,424,427],{"class":255,"line":271},[253,418,274],{"class":263},[253,420,278],{"class":277},[253,422,423],{"class":263},"Authorization: Bearer ml_your_account_key",[253,425,426],{"class":277},"\"",[253,428,268],{"class":267},[253,430,432,434,436,439],{"class":255,"line":431},3,[253,433,274],{"class":263},[253,435,278],{"class":277},[253,437,438],{"class":263},"X-Space-Id: 3f1c9a52-7b0e-4d8a-9c61-2e5f8b7a4d10",[253,440,284],{"class":277},[208,442,443,444,447,448,233],{},"Without the header the API answers ",[224,445,446],{},"400 space_required",". A space key sent with another space's id answers ",[224,449,450],{},"403 forbidden",[297,452,454],{"id":453},"permissions","Permissions",[208,456,457],{},"Each key has one of two permissions:",[459,460,461,468],"ul",{},[462,463,464,467],"li",{},[328,465,466],{},"Full access",": every route.",[462,469,470,473],{},[328,471,472],{},"Sending access",": only the routes below, for servers that just send emails and events.",[302,475,476,485],{},[305,477,478],{},[308,479,480,483],{},[311,481,482],{},"Route",[311,484,472],{},[320,486,487,496,505,514,523],{},[308,488,489,494],{},[325,490,491],{},[224,492,493],{},"POST \u002Fv1\u002Femails",[325,495,374],{},[308,497,498,503],{},[325,499,500],{},[224,501,502],{},"POST \u002Fv1\u002Femails\u002Fbatch",[325,504,374],{},[308,506,507,512],{},[325,508,509],{},[224,510,511],{},"POST \u002Fv1\u002Fevents",[325,513,374],{},[308,515,516,521],{},[325,517,518],{},[224,519,520],{},"GET \u002Fv1\u002Fme",[325,522,374],{},[308,524,525,528],{},[325,526,527],{},"Anything else",[325,529,530,531],{},"No: ",[224,532,450],{},[212,534,536],{"id":535},"test-your-key","Test your key",[208,538,539],{},[224,540,520],{},[208,542,543],{},"Returns the key making the request, its account, and the space it acts on.",[217,545,546],{"className":247,"code":248,"language":249,"meta":226,"style":226},[224,547,548,556],{"__ignoreMap":226},[253,549,550,552,554],{"class":255,"line":256},[253,551,260],{"class":259},[253,553,264],{"class":263},[253,555,268],{"class":267},[253,557,558,560,562,564],{"class":255,"line":271},[253,559,274],{"class":263},[253,561,278],{"class":277},[253,563,281],{"class":263},[253,565,284],{"class":277},[217,567,571],{"className":568,"code":569,"language":570,"meta":226,"style":226},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"key\": {\n    \"name\": \"Production server\",\n    \"permission\": \"SENDING_ACCESS\",\n    \"prefix\": \"ml_a1b2c3d4\"\n  },\n  \"account\": {\n    \"id\": \"b7d2e8f1-4c3a-4e9b-8f60-1a2b3c4d5e6f\",\n    \"name\": \"Acme\"\n  },\n  \"space\": {\n    \"id\": \"3f1c9a52-7b0e-4d8a-9c61-2e5f8b7a4d10\",\n    \"name\": \"Acme\"\n  }\n}\n","json",[224,572,573,578,595,617,638,656,662,676,697,715,720,734,754,771,777],{"__ignoreMap":226},[253,574,575],{"class":255,"line":256},[253,576,577],{"class":277},"{\n",[253,579,580,583,587,589,592],{"class":255,"line":271},[253,581,582],{"class":277},"  \"",[253,584,586],{"class":585},"spNyl","key",[253,588,426],{"class":277},[253,590,591],{"class":277},":",[253,593,594],{"class":277}," {\n",[253,596,597,600,603,605,607,609,612,614],{"class":255,"line":431},[253,598,599],{"class":277},"    \"",[253,601,602],{"class":259},"name",[253,604,426],{"class":277},[253,606,591],{"class":277},[253,608,278],{"class":277},[253,610,611],{"class":263},"Production server",[253,613,426],{"class":277},[253,615,616],{"class":277},",\n",[253,618,620,622,625,627,629,631,634,636],{"class":255,"line":619},4,[253,621,599],{"class":277},[253,623,624],{"class":259},"permission",[253,626,426],{"class":277},[253,628,591],{"class":277},[253,630,278],{"class":277},[253,632,633],{"class":263},"SENDING_ACCESS",[253,635,426],{"class":277},[253,637,616],{"class":277},[253,639,641,643,646,648,650,652,654],{"class":255,"line":640},5,[253,642,599],{"class":277},[253,644,645],{"class":259},"prefix",[253,647,426],{"class":277},[253,649,591],{"class":277},[253,651,278],{"class":277},[253,653,294],{"class":263},[253,655,284],{"class":277},[253,657,659],{"class":255,"line":658},6,[253,660,661],{"class":277},"  },\n",[253,663,665,667,670,672,674],{"class":255,"line":664},7,[253,666,582],{"class":277},[253,668,669],{"class":585},"account",[253,671,426],{"class":277},[253,673,591],{"class":277},[253,675,594],{"class":277},[253,677,679,681,684,686,688,690,693,695],{"class":255,"line":678},8,[253,680,599],{"class":277},[253,682,683],{"class":259},"id",[253,685,426],{"class":277},[253,687,591],{"class":277},[253,689,278],{"class":277},[253,691,692],{"class":263},"b7d2e8f1-4c3a-4e9b-8f60-1a2b3c4d5e6f",[253,694,426],{"class":277},[253,696,616],{"class":277},[253,698,700,702,704,706,708,710,713],{"class":255,"line":699},9,[253,701,599],{"class":277},[253,703,602],{"class":259},[253,705,426],{"class":277},[253,707,591],{"class":277},[253,709,278],{"class":277},[253,711,712],{"class":263},"Acme",[253,714,284],{"class":277},[253,716,718],{"class":255,"line":717},10,[253,719,661],{"class":277},[253,721,723,725,728,730,732],{"class":255,"line":722},11,[253,724,582],{"class":277},[253,726,727],{"class":585},"space",[253,729,426],{"class":277},[253,731,591],{"class":277},[253,733,594],{"class":277},[253,735,737,739,741,743,745,747,750,752],{"class":255,"line":736},12,[253,738,599],{"class":277},[253,740,683],{"class":259},[253,742,426],{"class":277},[253,744,591],{"class":277},[253,746,278],{"class":277},[253,748,749],{"class":263},"3f1c9a52-7b0e-4d8a-9c61-2e5f8b7a4d10",[253,751,426],{"class":277},[253,753,616],{"class":277},[253,755,757,759,761,763,765,767,769],{"class":255,"line":756},13,[253,758,599],{"class":277},[253,760,602],{"class":259},[253,762,426],{"class":277},[253,764,591],{"class":277},[253,766,278],{"class":277},[253,768,712],{"class":263},[253,770,284],{"class":277},[253,772,774],{"class":255,"line":773},14,[253,775,776],{"class":277},"  }\n",[253,778,780],{"class":255,"line":779},15,[253,781,782],{"class":277},"}\n",[208,784,785,787,788,233],{},[224,786,727],{}," is absent when an account key calls without ",[224,789,356],{},[212,791,793],{"id":792},"errors","Errors",[208,795,796],{},"Errors use HTTP status codes and always the same body:",[217,798,800],{"className":568,"code":799,"language":570,"meta":226,"style":226},"{\n  \"error\": \"validation_error\",\n  \"message\": \"email: Email is required\",\n  \"status\": 400,\n  \"fields\": {\n    \"email\": \"Email is required\"\n  }\n}\n",[224,801,802,806,826,846,863,876,894,898],{"__ignoreMap":226},[253,803,804],{"class":255,"line":256},[253,805,577],{"class":277},[253,807,808,810,813,815,817,819,822,824],{"class":255,"line":271},[253,809,582],{"class":277},[253,811,812],{"class":585},"error",[253,814,426],{"class":277},[253,816,591],{"class":277},[253,818,278],{"class":277},[253,820,821],{"class":263},"validation_error",[253,823,426],{"class":277},[253,825,616],{"class":277},[253,827,828,830,833,835,837,839,842,844],{"class":255,"line":431},[253,829,582],{"class":277},[253,831,832],{"class":585},"message",[253,834,426],{"class":277},[253,836,591],{"class":277},[253,838,278],{"class":277},[253,840,841],{"class":263},"email: Email is required",[253,843,426],{"class":277},[253,845,616],{"class":277},[253,847,848,850,853,855,857,861],{"class":255,"line":619},[253,849,582],{"class":277},[253,851,852],{"class":585},"status",[253,854,426],{"class":277},[253,856,591],{"class":277},[253,858,860],{"class":859},"sbssI"," 400",[253,862,616],{"class":277},[253,864,865,867,870,872,874],{"class":255,"line":640},[253,866,582],{"class":277},[253,868,869],{"class":585},"fields",[253,871,426],{"class":277},[253,873,591],{"class":277},[253,875,594],{"class":277},[253,877,878,880,883,885,887,889,892],{"class":255,"line":658},[253,879,599],{"class":277},[253,881,882],{"class":259},"email",[253,884,426],{"class":277},[253,886,591],{"class":277},[253,888,278],{"class":277},[253,890,891],{"class":263},"Email is required",[253,893,284],{"class":277},[253,895,896],{"class":255,"line":664},[253,897,776],{"class":277},[253,899,900],{"class":255,"line":678},[253,901,782],{"class":277},[208,903,904,906,907,909,910,912],{},[224,905,812],{}," is a stable code to test in your code; ",[224,908,832],{}," is for humans and may change. ",[224,911,869],{}," only appears on validation errors.",[302,914,915,928],{},[305,916,917],{},[308,918,919,922,925],{},[311,920,921],{},"Status",[311,923,924],{},"Codes",[311,926,927],{},"What happened",[320,929,930,966,979,994,1010,1023,1036,1061,1074,1090,1103],{},[308,931,932,935,961],{},[325,933,934],{},"400",[325,936,937,940,941,940,943,940,946,940,949,940,952,940,955,940,958],{},[224,938,939],{},"bad_request",", ",[224,942,821],{},[224,944,945],{},"invalid_body",[224,947,948],{},"space_required",[224,950,951],{},"invalid_to",[224,953,954],{},"invalid_from",[224,956,957],{},"domain_not_verified",[224,959,960],{},"invalid_url",[325,962,963,964],{},"The request is invalid. Read ",[224,965,832],{},[308,967,968,971,976],{},[325,969,970],{},"401",[325,972,973],{},[224,974,975],{},"unauthorized",[325,977,978],{},"Missing, unknown or revoked API key",[308,980,981,984,989],{},[325,982,983],{},"402",[325,985,986],{},[224,987,988],{},"quota_exceeded",[325,990,991,992],{},"The monthly sending limit of your plan is reached. See ",[391,993,182],{"href":183},[308,995,996,999,1007],{},[325,997,998],{},"403",[325,1000,1001,940,1004],{},[224,1002,1003],{},"forbidden",[224,1005,1006],{},"account_suspended",[325,1008,1009],{},"The key cannot use this route or this space, or the account is suspended",[308,1011,1012,1015,1020],{},[325,1013,1014],{},"404",[325,1016,1017],{},[224,1018,1019],{},"not_found",[325,1021,1022],{},"The resource does not exist in this space",[308,1024,1025,1028,1033],{},[325,1026,1027],{},"405",[325,1029,1030],{},[224,1031,1032],{},"method_not_allowed",[325,1034,1035],{},"Wrong HTTP method for this route",[308,1037,1038,1041,1058],{},[325,1039,1040],{},"409",[325,1042,1043,940,1046,940,1049,940,1052,940,1055],{},[224,1044,1045],{},"conflict",[224,1047,1048],{},"contact_unreachable",[224,1050,1051],{},"alias_taken",[224,1053,1054],{},"template_not_published",[224,1056,1057],{},"nothing_to_publish",[325,1059,1060],{},"The request conflicts with the current state, such as a duplicate alias",[308,1062,1063,1066,1071],{},[325,1064,1065],{},"413",[325,1067,1068],{},[224,1069,1070],{},"payload_too_large",[325,1072,1073],{},"The file is over 50 MB",[308,1075,1076,1079,1084],{},[325,1077,1078],{},"429",[325,1080,1081],{},[224,1082,1083],{},"rate_limited",[325,1085,1086,1087],{},"Too many requests. Wait for ",[224,1088,1089],{},"Retry-After",[308,1091,1092,1095,1100],{},[325,1093,1094],{},"500",[325,1096,1097],{},[224,1098,1099],{},"internal_error",[325,1101,1102],{},"Something broke on our side. Retry later",[308,1104,1105,1108,1113],{},[325,1106,1107],{},"503",[325,1109,1110],{},[224,1111,1112],{},"unavailable",[325,1114,1115],{},"A dependency (DNS, sending provider) is unavailable. Retry later",[212,1117,1119],{"id":1118},"rate-limits","Rate limits",[208,1121,1122,1123,1126,1127,1130],{},"Each key can make ",[328,1124,1125],{},"20 requests per second"," and ",[328,1128,1129],{},"10,000 requests per day"," (the day resets at midnight UTC).",[208,1132,1133,1134,1137,1138,1140],{},"Over a limit, the API answers ",[224,1135,1136],{},"429 rate_limited"," with a ",[224,1139,1089],{}," header in seconds (1 for the per-second limit, the time until midnight UTC for the daily one).",[1142,1143,1144],"tip",{},[208,1145,1146,1147,1152],{},"With ",[391,1148,1150],{"href":1149},"\u002Fdocs\u002Fapi\u002Femails#send-a-batch",[224,1151,502],{},", 100 emails count as one request.",[212,1154,1156],{"id":1155},"pagination","Pagination",[208,1158,1159,1160,1163,1164,1167],{},"List routes that can grow large take a ",[224,1161,1162],{},"page"," parameter, starting at ",[224,1165,1166],{},"0",", and return the totals:",[217,1169,1171],{"className":568,"code":1170,"language":570,"meta":226,"style":226},"{\n  \"contacts\": [ ... ],\n  \"page\": 0,\n  \"size\": 50,\n  \"total\": 1284,\n  \"totalPages\": 26\n}\n",[224,1172,1173,1177,1197,1212,1228,1244,1258],{"__ignoreMap":226},[253,1174,1175],{"class":255,"line":256},[253,1176,577],{"class":277},[253,1178,1179,1181,1184,1186,1188,1191,1194],{"class":255,"line":271},[253,1180,582],{"class":277},[253,1182,1183],{"class":585},"contacts",[253,1185,426],{"class":277},[253,1187,591],{"class":277},[253,1189,1190],{"class":277}," [",[253,1192,1193],{"class":267}," ... ",[253,1195,1196],{"class":277},"],\n",[253,1198,1199,1201,1203,1205,1207,1210],{"class":255,"line":431},[253,1200,582],{"class":277},[253,1202,1162],{"class":585},[253,1204,426],{"class":277},[253,1206,591],{"class":277},[253,1208,1209],{"class":859}," 0",[253,1211,616],{"class":277},[253,1213,1214,1216,1219,1221,1223,1226],{"class":255,"line":619},[253,1215,582],{"class":277},[253,1217,1218],{"class":585},"size",[253,1220,426],{"class":277},[253,1222,591],{"class":277},[253,1224,1225],{"class":859}," 50",[253,1227,616],{"class":277},[253,1229,1230,1232,1235,1237,1239,1242],{"class":255,"line":640},[253,1231,582],{"class":277},[253,1233,1234],{"class":585},"total",[253,1236,426],{"class":277},[253,1238,591],{"class":277},[253,1240,1241],{"class":859}," 1284",[253,1243,616],{"class":277},[253,1245,1246,1248,1251,1253,1255],{"class":255,"line":658},[253,1247,582],{"class":277},[253,1249,1250],{"class":585},"totalPages",[253,1252,426],{"class":277},[253,1254,591],{"class":277},[253,1256,1257],{"class":859}," 26\n",[253,1259,1260],{"class":255,"line":664},[253,1261,782],{"class":277},[208,1263,1264,1265,1267],{},"The page size depends on the resource: contacts take a ",[224,1266,1218],{}," parameter (50 by default, 200 at most), suppressions too (50 by default, 100 at most), campaigns come 25 per page.",[212,1269,1271],{"id":1270},"idempotency","Idempotency",[208,1273,1274,1275,244],{},"To retry a send without risking a duplicate email, add an ",[224,1276,1277],{},"Idempotency-Key",[217,1279,1281],{"className":247,"code":1280,"language":249,"meta":226,"style":226},"curl https:\u002F\u002Fapi.kulamail.com\u002Fv1\u002Femails \\\n  -H \"Authorization: Bearer ml_your_api_key\" \\\n  -H \"Idempotency-Key: password-reset-7f3a9c\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"to\": \"ada@example.com\", \"template\": \"password-reset\" }'\n",[224,1282,1283,1292,1304,1317,1329],{"__ignoreMap":226},[253,1284,1285,1287,1290],{"class":255,"line":256},[253,1286,260],{"class":259},[253,1288,1289],{"class":263}," https:\u002F\u002Fapi.kulamail.com\u002Fv1\u002Femails",[253,1291,268],{"class":267},[253,1293,1294,1296,1298,1300,1302],{"class":255,"line":271},[253,1295,274],{"class":263},[253,1297,278],{"class":277},[253,1299,281],{"class":263},[253,1301,426],{"class":277},[253,1303,268],{"class":267},[253,1305,1306,1308,1310,1313,1315],{"class":255,"line":431},[253,1307,274],{"class":263},[253,1309,278],{"class":277},[253,1311,1312],{"class":263},"Idempotency-Key: password-reset-7f3a9c",[253,1314,426],{"class":277},[253,1316,268],{"class":267},[253,1318,1319,1321,1323,1325,1327],{"class":255,"line":619},[253,1320,274],{"class":263},[253,1322,278],{"class":277},[253,1324,232],{"class":263},[253,1326,426],{"class":277},[253,1328,268],{"class":267},[253,1330,1331,1334,1337,1340],{"class":255,"line":640},[253,1332,1333],{"class":263},"  -d",[253,1335,1336],{"class":277}," '",[253,1338,1339],{"class":263},"{ \"to\": \"ada@example.com\", \"template\": \"password-reset\" }",[253,1341,1342],{"class":277},"'\n",[459,1344,1345,1351,1365],{},[462,1346,1347,1348,233],{},"The key is any string up to 200 characters, unique within the space. Use an id from your own system, such as ",[224,1349,1350],{},"order-1042-receipt",[462,1352,1353,1354,1357,1358,1361,1362,233],{},"If an email already exists with that key, the API sends nothing and returns the first email with ",[224,1355,1356],{},"200"," and the header ",[224,1359,1360],{},"Idempotent-Replayed: true",", instead of ",[224,1363,1364],{},"201",[462,1366,1367],{},"Two concurrent requests with the same key are safe: the second waits for the first and replays it.",[208,1369,1370,1371,1126,1375,233],{},"Idempotency applies to ",[391,1372,1373],{"href":139},[224,1374,493],{},[391,1376,1377],{"href":1149},[224,1378,502],{},[212,1380,1382],{"id":1381},"resources","Resources",[302,1384,1385,1395],{},[305,1386,1387],{},[308,1388,1389,1392],{},[311,1390,1391],{},"Resource",[311,1393,1394],{},"Routes",[320,1396,1397,1406,1415,1424,1433,1442,1451,1460,1469],{},[308,1398,1399,1403],{},[325,1400,1401],{},[391,1402,138],{"href":139},[325,1404,1405],{},"Send transactional emails, alone or in batches, and read their events",[308,1407,1408,1412],{},[325,1409,1410],{},[391,1411,142],{"href":143},[325,1413,1414],{},"Transactional templates, with a draft and a published version",[308,1416,1417,1421],{},[325,1418,1419],{},[391,1420,42],{"href":146},[325,1422,1423],{},"Contacts, list subscriptions and bulk imports",[308,1425,1426,1430],{},[325,1427,1428],{},[391,1429,149],{"href":150},[325,1431,1432],{},"Record what contacts do in your product",[308,1434,1435,1439],{},[325,1436,1437],{},[391,1438,153],{"href":154},[325,1440,1441],{},"Subscription lists and saved filters",[308,1443,1444,1448],{},[325,1445,1446],{},[391,1447,157],{"href":158},[325,1449,1450],{},"Create and schedule campaigns, read flows",[308,1452,1453,1457],{},[325,1454,1455],{},[391,1456,161],{"href":162},[325,1458,1459],{},"Sending domains and the suppression list",[308,1461,1462,1466],{},[325,1463,1464],{},[391,1465,165],{"href":166},[325,1467,1468],{},"Spaces of the account, for account keys",[308,1470,1471,1475],{},[325,1472,1473],{},[391,1474,169],{"href":170},[325,1476,1477],{},"Endpoints notified of deliveries, opens, clicks and unsubscribes",[1479,1480,1481],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":226,"searchDepth":256,"depth":271,"links":1483},[1484,1485,1489,1490,1491,1492,1493,1494],{"id":214,"depth":271,"text":215},{"id":236,"depth":271,"text":237,"children":1486},[1487,1488],{"id":299,"depth":431,"text":300},{"id":453,"depth":431,"text":454},{"id":535,"depth":271,"text":536},{"id":792,"depth":271,"text":793},{"id":1118,"depth":271,"text":1119},{"id":1155,"depth":271,"text":1156},{"id":1270,"depth":271,"text":1271},{"id":1381,"depth":271,"text":1382},"Base URL, API keys, errors, rate limits, pagination and idempotency","md",null,{},true,{"title":134,"description":1495},"YOQVBWKmhQ6xpuv-Jl83dIg1OC91Sd9lHVbZltvNFI0",[1503,1505],{"title":125,"path":126,"stem":127,"description":1504,"children":-1},"Connect Claude, Cursor, ChatGPT or any MCP client to a space",{"title":138,"path":139,"stem":140,"description":1506,"children":-1},"Send transactional emails, alone or in batches",1792265662283]