[{"data":1,"prerenderedAt":1158},["ShallowReactive",2],{"navigation":3,"\u002Fdevelopers\u002Fnuxt":224,"\u002Fdevelopers\u002Fnuxt-surround":1154},[4,9,14,40,57,74,95,112,133,150,207,216],{"title":5,"path":6,"stem":7,"icon":8},"Quick start","\u002Fgetting-started","01.getting-started","i-lucide-rocket",{"title":10,"path":11,"stem":12,"icon":13},"Set up from the terminal","\u002Fcli","02.cli","i-lucide-terminal",{"title":15,"path":16,"stem":17,"children":18,"page":39},"Domains & DNS","\u002Fdomains","03.domains",[19,23,27,31,35],{"title":20,"path":21,"stem":22},"Adding a domain","\u002Fdomains\u002Fadding-a-domain","03.domains\u002F01.adding-a-domain",{"title":24,"path":25,"stem":26},"Automatic DNS setup","\u002Fdomains\u002Fautomatic-dns-setup","03.domains\u002F02.automatic-dns-setup",{"title":28,"path":29,"stem":30},"Manual DNS records","\u002Fdomains\u002Fmanual-dns-records","03.domains\u002F03.manual-dns-records",{"title":32,"path":33,"stem":34},"Domain verification","\u002Fdomains\u002Fverification","03.domains\u002F04.verification",{"title":36,"path":37,"stem":38},"Troubleshooting DNS","\u002Fdomains\u002Ftroubleshooting","03.domains\u002F05.troubleshooting",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"Mailboxes & Aliases","\u002Fmailboxes","04.mailboxes",[45,49,53],{"title":46,"path":47,"stem":48},"Creating mailboxes","\u002Fmailboxes\u002Fcreating-mailboxes","04.mailboxes\u002F01.creating-mailboxes",{"title":50,"path":51,"stem":52},"Aliases","\u002Fmailboxes\u002Faliases","04.mailboxes\u002F02.aliases",{"title":54,"path":55,"stem":56},"Passwords, passkeys & access","\u002Fmailboxes\u002Fpasswords-and-access","04.mailboxes\u002F03.passwords-and-access",{"title":58,"path":59,"stem":60,"children":61,"page":39},"Using Your Mail","\u002Fmail","05.mail",[62,66,70],{"title":63,"path":64,"stem":65},"Webmail","\u002Fmail\u002Fwebmail","05.mail\u002F01.webmail",{"title":67,"path":68,"stem":69},"IMAP & SMTP settings","\u002Fmail\u002Fimap-smtp-settings","05.mail\u002F02.imap-smtp-settings",{"title":71,"path":72,"stem":73},"iPhone setup","\u002Fmail\u002Fios-profile","05.mail\u002F03.ios-profile",{"title":75,"path":76,"stem":77,"children":78,"page":39},"Drive","\u002Fdrive","06.drive",[79,83,87,91],{"title":80,"path":81,"stem":82},"Drive overview","\u002Fdrive\u002Foverview","06.drive\u002F01.overview",{"title":84,"path":85,"stem":86},"Uploading & organising files","\u002Fdrive\u002Ffiles-and-folders","06.drive\u002F02.files-and-folders",{"title":88,"path":89,"stem":90},"Sharing files","\u002Fdrive\u002Fsharing","06.drive\u002F03.sharing",{"title":92,"path":93,"stem":94},"Connect Drive to other apps","\u002Fdrive\u002Fconnect-apps","06.drive\u002F04.connect-apps",{"title":96,"path":97,"stem":98,"children":99,"page":39},"Sending & Campaigns","\u002Fsending","07.sending",[100,104,108],{"title":101,"path":102,"stem":103},"Sending limits","\u002Fsending\u002Flimits","07.sending\u002F01.limits",{"title":105,"path":106,"stem":107},"Campaigns","\u002Fsending\u002Fcampaigns","07.sending\u002F02.campaigns",{"title":109,"path":110,"stem":111},"Deliverability & staying out of spam","\u002Fsending\u002Fdeliverability","07.sending\u002F03.deliverability",{"title":113,"path":114,"stem":115,"children":116,"page":39},"Transactional Email","\u002Ftransactional","08.transactional",[117,121,125,129],{"title":118,"path":119,"stem":120},"Transactional email","\u002Ftransactional\u002Foverview","08.transactional\u002F01.overview",{"title":122,"path":123,"stem":124},"Templates","\u002Ftransactional\u002Ftemplates","08.transactional\u002F02.templates",{"title":126,"path":127,"stem":128},"Sending via the API","\u002Ftransactional\u002Fsend-api","08.transactional\u002F03.send-api",{"title":130,"path":131,"stem":132},"Webhooks","\u002Ftransactional\u002Fwebhooks","08.transactional\u002F04.webhooks",{"title":134,"path":135,"stem":136,"children":137,"page":39},"Migrations","\u002Fmigrations","09.migrations",[138,142,146],{"title":139,"path":140,"stem":141},"Migrating your email","\u002Fmigrations\u002Foverview","09.migrations\u002F01.overview",{"title":143,"path":144,"stem":145},"Migrating from Gmail","\u002Fmigrations\u002Ffrom-gmail","09.migrations\u002F02.from-gmail",{"title":147,"path":148,"stem":149},"Migrating from Microsoft 365","\u002Fmigrations\u002Ffrom-microsoft-365","09.migrations\u002F03.from-microsoft-365",{"title":151,"path":152,"stem":153,"children":154,"page":39},"AI & Developers","\u002Fdevelopers","10.developers",[155,159,163,167,171,174,178,182,187,191,195,199,203],{"title":156,"path":157,"stem":158,"icon":8},"Quickstart","\u002Fdevelopers\u002Fquickstart","10.developers\u002F00.quickstart",{"title":160,"path":161,"stem":162},"Connect ChatGPT","\u002Fdevelopers\u002Fconnect-chatgpt","10.developers\u002F01.connect-chatgpt",{"title":164,"path":165,"stem":166},"Connect Claude","\u002Fdevelopers\u002Fconnect-claude","10.developers\u002F01.connect-claude",{"title":168,"path":169,"stem":170},"AI agents & API keys","\u002Fdevelopers\u002Fai-agents","10.developers\u002F02.ai-agents",{"title":130,"path":172,"stem":173},"\u002Fdevelopers\u002Fwebhooks","10.developers\u002F03.webhooks",{"title":175,"path":176,"stem":177},"Partner API","\u002Fdevelopers\u002Fpartners","10.developers\u002F04.partners",{"title":179,"path":180,"stem":181},"Use Faivelo from your coding agent","\u002Fdevelopers\u002Fcoding-agents","10.developers\u002F06.coding-agents",{"title":183,"path":184,"stem":185,"icon":186},"Errors","\u002Fdevelopers\u002Ferrors","10.developers\u002F07.errors","i-lucide-circle-alert",{"title":188,"path":189,"stem":190},"Email your agent","\u002Fdevelopers\u002Femail-your-agent","10.developers\u002F08.email-your-agent",{"title":192,"path":193,"stem":194},"Email agent with Claude","\u002Fdevelopers\u002Fagent-with-claude","10.developers\u002F09.agent-with-claude",{"title":196,"path":197,"stem":198},"Email agent with ChatGPT","\u002Fdevelopers\u002Fagent-with-chatgpt","10.developers\u002F10.agent-with-chatgpt",{"title":200,"path":201,"stem":202},"Next.js","\u002Fdevelopers\u002Fnextjs","10.developers\u002F11.nextjs",{"title":204,"path":205,"stem":206},"Nuxt","\u002Fdevelopers\u002Fnuxt","10.developers\u002F12.nuxt",{"title":208,"path":209,"stem":210,"children":211,"page":39},"Billing","\u002Fbilling","11.billing",[212],{"title":213,"path":214,"stem":215},"Billing & plans","\u002Fbilling\u002Fplans","11.billing\u002F01.plans",{"title":217,"path":218,"stem":219,"children":220,"page":39},"Security","\u002Fsecurity","12.security",[221],{"title":217,"path":222,"stem":223},"\u002Fsecurity\u002Foverview","12.security\u002F01.overview",{"id":225,"title":204,"body":226,"description":1144,"extension":1145,"links":1146,"meta":1147,"navigation":1148,"path":205,"seo":1149,"stem":206,"__hash__":1153},"docs\u002F10.developers\u002F12.nuxt.md",{"type":227,"value":228,"toc":1134},"minimark",[229,249,290,293,298,323,404,408,540,574,578,601,608,612,733,747,775,804,812,816,822,865,878,932,936,947,1017,1023,1027,1033,1043,1053,1090,1101,1107,1111,1130],[230,231,232,236,237,244,245,248],"p",{},[233,234,235],"code",{},"@faivelo\u002Fnuxt"," is the official ",[238,239,243],"a",{"href":240,"rel":241},"https:\u002F\u002Ffaivelo.com\u002F",[242],"nofollow","Faivelo"," module for Nuxt. It sends transactional email (welcome emails, password resets, receipts, sign-in links) from your own domain with one auto-imported function, ",[233,246,247],{},"sendEmail()",", and delivers replies and delivery events back to your server as typed, signed webhooks. Until you add an API key, emails go to a local dev outbox, so you can build and test email flows before you sign up.",[250,251,252,260,270,280],"ul",{},[253,254,255,259],"li",{},[256,257,258],"strong",{},"Send"," from any address on your domain, from any server route. Nothing to import.",[253,261,262,265,266,269],{},[256,263,264],{},"Receive"," replies, new mail and bounces with ",[233,267,268],{},"defineFaiveloWebhookHandler()",", typed per event.",[253,271,272,275,276,279],{},[256,273,274],{},"Test locally"," in the dev outbox at ",[233,277,278],{},"\u002F_faivelo\u002Foutbox"," and in a Nuxt DevTools tab.",[253,281,282,285,286,289],{},[256,283,284],{},"Full API"," with ",[233,287,288],{},"useFaivelo()",": real mailboxes, reading mail, domains and DNS.",[230,291,292],{},"Works with Nuxt 3 and Nuxt 4.",[294,295,297],"h2",{"id":296},"install","Install",[299,300,305],"pre",{"className":301,"code":302,"language":303,"meta":304,"style":304},"language-bash shiki shiki-themes github-light-high-contrast","npm install @faivelo\u002Fnuxt\n","bash","",[233,306,307],{"__ignoreMap":304},[308,309,312,316,320],"span",{"class":310,"line":311},"line",1,[308,313,315],{"class":314},"sV4o_","npm",[308,317,319],{"class":318},"sYEJz"," install",[308,321,322],{"class":318}," @faivelo\u002Fnuxt\n",[299,324,328],{"className":325,"code":326,"language":327,"meta":304,"style":304},"language-ts shiki shiki-themes github-light-high-contrast","\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  modules: ['@faivelo\u002Fnuxt'],\n  faivelo: {\n    from: 'Acme \u003Chello@acme.com>', \u002F\u002F default sender\n  },\n})\n","ts",[233,329,330,336,353,369,375,390,398],{"__ignoreMap":304},[308,331,332],{"class":310,"line":311},[308,333,335],{"class":334},"sFeEa","\u002F\u002F nuxt.config.ts\n",[308,337,339,343,346,350],{"class":310,"line":338},2,[308,340,342],{"class":341},"sTJeM","export",[308,344,345],{"class":341}," default",[308,347,349],{"class":348},"s3dhs"," defineNuxtConfig",[308,351,352],{"class":314},"({\n",[308,354,356,360,363,366],{"class":310,"line":355},3,[308,357,359],{"class":358},"sigWx","  modules: [",[308,361,362],{"class":318},"'@faivelo\u002Fnuxt'",[308,364,365],{"class":358},"]",[308,367,368],{"class":314},",\n",[308,370,372],{"class":310,"line":371},4,[308,373,374],{"class":358},"  faivelo: {\n",[308,376,378,381,384,387],{"class":310,"line":377},5,[308,379,380],{"class":358},"    from: ",[308,382,383],{"class":318},"'Acme \u003Chello@acme.com>'",[308,385,386],{"class":358},", ",[308,388,389],{"class":334},"\u002F\u002F default sender\n",[308,391,393,396],{"class":310,"line":392},6,[308,394,395],{"class":358},"  }",[308,397,368],{"class":314},[308,399,401],{"class":310,"line":400},7,[308,402,403],{"class":314},"})\n",[294,405,407],{"id":406},"how-do-i-send-an-email-from-a-nuxt-server-route","How do I send an email from a Nuxt server route?",[299,409,411],{"className":325,"code":410,"language":327,"meta":304,"style":304},"\u002F\u002F server\u002Fapi\u002Fsignup.post.ts\nexport default defineEventHandler(async (event) => {\n  const { email } = await readBody(event)\n  \u002F\u002F ...create the user...\n  await sendEmail({\n    to: email,\n    subject: 'Welcome to Acme',\n    html: '\u003Cp>Your account is ready.\u003C\u002Fp>',\n  })\n  return { ok: true }\n})\n",[233,412,413,418,442,469,474,484,489,499,510,516,531],{"__ignoreMap":304},[308,414,415],{"class":310,"line":311},[308,416,417],{"class":334},"\u002F\u002F server\u002Fapi\u002Fsignup.post.ts\n",[308,419,420,422,424,427,430,433,436,439],{"class":310,"line":338},[308,421,342],{"class":341},[308,423,345],{"class":341},[308,425,426],{"class":348}," defineEventHandler",[308,428,429],{"class":314},"(",[308,431,432],{"class":341},"async",[308,434,435],{"class":314}," (event) ",[308,437,438],{"class":341},"=>",[308,440,441],{"class":358}," {\n",[308,443,444,447,450,454,457,460,463,466],{"class":310,"line":355},[308,445,446],{"class":341},"  const",[308,448,449],{"class":358}," { ",[308,451,453],{"class":452},"sacAq","email",[308,455,456],{"class":358}," } ",[308,458,459],{"class":341},"=",[308,461,462],{"class":341}," await",[308,464,465],{"class":348}," readBody",[308,467,468],{"class":358},"(event)\n",[308,470,471],{"class":310,"line":371},[308,472,473],{"class":334},"  \u002F\u002F ...create the user...\n",[308,475,476,479,482],{"class":310,"line":377},[308,477,478],{"class":341},"  await",[308,480,481],{"class":348}," sendEmail",[308,483,352],{"class":358},[308,485,486],{"class":310,"line":392},[308,487,488],{"class":358},"    to: email,\n",[308,490,491,494,497],{"class":310,"line":400},[308,492,493],{"class":358},"    subject: ",[308,495,496],{"class":318},"'Welcome to Acme'",[308,498,368],{"class":358},[308,500,502,505,508],{"class":310,"line":501},8,[308,503,504],{"class":358},"    html: ",[308,506,507],{"class":318},"'\u003Cp>Your account is ready.\u003C\u002Fp>'",[308,509,368],{"class":358},[308,511,513],{"class":310,"line":512},9,[308,514,515],{"class":358},"  })\n",[308,517,519,522,525,528],{"class":310,"line":518},10,[308,520,521],{"class":341},"  return",[308,523,524],{"class":358}," { ok: ",[308,526,527],{"class":452},"true",[308,529,530],{"class":358}," }\n",[308,532,534,537],{"class":310,"line":533},11,[308,535,536],{"class":358},"}",[308,538,539],{"class":314},")\n",[230,541,542,544,545,386,548,386,551,386,554,386,557,386,560,386,563,285,566,569,570,573],{},[233,543,247],{}," also takes ",[233,546,547],{},"from",[233,549,550],{},"cc",[233,552,553],{},"bcc",[233,555,556],{},"replyTo",[233,558,559],{},"text",[233,561,562],{},"attachments",[233,564,565],{},"templateAlias",[233,567,568],{},"variables"," (for templates you design in the Faivelo dashboard), and ",[233,571,572],{},"idempotencyKey",", so a retried request never sends twice.",[294,575,577],{"id":576},"how-do-i-test-emails-locally-without-sending-them","How do I test emails locally without sending them?",[230,579,580,581,584,585,587,588,591,592,596,597,600],{},"Run ",[233,582,583],{},"nuxi dev"," with no API key. ",[233,586,247],{}," keeps each email instead of sending it, and returns a normal response with an id starting ",[233,589,590],{},"dev_",". Open ",[256,593,594],{},[233,595,278],{},", or the ",[256,598,599],{},"Faivelo outbox"," tab in Nuxt DevTools (Shift + Option + D), to see each email as the recipient would.",[230,602,603,604,607],{},"Add the key and the same code sends for real. The outbox exists only in development. In production, a missing key is an error, never a silent capture. Turn the outbox off with ",[233,605,606],{},"faivelo: { devOutbox: false }",".",[294,609,611],{"id":610},"how-do-i-receive-replies-and-bounces","How do I receive replies and bounces?",[299,613,615],{"className":325,"code":614,"language":327,"meta":304,"style":304},"\u002F\u002F server\u002Fapi\u002Ffaivelo.post.ts\nexport default defineFaiveloWebhookHandler({\n  'message.received': async (event) => {\n    \u002F\u002F Someone wrote to one of your mailboxes, or replied to your app's email.\n    const { from, subject, mailbox } = event.data\n  },\n  'email.bounced': async (event) => {\n    await markUndeliverable(event.data.to)\n  },\n})\n",[233,616,617,622,633,656,661,687,693,712,723,729],{"__ignoreMap":304},[308,618,619],{"class":310,"line":311},[308,620,621],{"class":334},"\u002F\u002F server\u002Fapi\u002Ffaivelo.post.ts\n",[308,623,624,626,628,631],{"class":310,"line":338},[308,625,342],{"class":341},[308,627,345],{"class":341},[308,629,630],{"class":348}," defineFaiveloWebhookHandler",[308,632,352],{"class":314},[308,634,635,638,641,643,646,649,652,654],{"class":310,"line":355},[308,636,637],{"class":318},"  'message.received'",[308,639,640],{"class":358},": ",[308,642,432],{"class":341},[308,644,645],{"class":358}," (",[308,647,648],{"class":314},"event",[308,650,651],{"class":358},") ",[308,653,438],{"class":341},[308,655,441],{"class":358},[308,657,658],{"class":310,"line":371},[308,659,660],{"class":334},"    \u002F\u002F Someone wrote to one of your mailboxes, or replied to your app's email.\n",[308,662,663,666,668,670,672,675,677,680,682,684],{"class":310,"line":377},[308,664,665],{"class":341},"    const",[308,667,449],{"class":358},[308,669,547],{"class":452},[308,671,386],{"class":358},[308,673,674],{"class":452},"subject",[308,676,386],{"class":358},[308,678,679],{"class":452},"mailbox",[308,681,456],{"class":358},[308,683,459],{"class":341},[308,685,686],{"class":358}," event.data\n",[308,688,689,691],{"class":310,"line":392},[308,690,395],{"class":358},[308,692,368],{"class":314},[308,694,695,698,700,702,704,706,708,710],{"class":310,"line":400},[308,696,697],{"class":318},"  'email.bounced'",[308,699,640],{"class":358},[308,701,432],{"class":341},[308,703,645],{"class":358},[308,705,648],{"class":314},[308,707,651],{"class":358},[308,709,438],{"class":341},[308,711,441],{"class":358},[308,713,714,717,720],{"class":310,"line":501},[308,715,716],{"class":341},"    await",[308,718,719],{"class":348}," markUndeliverable",[308,721,722],{"class":358},"(event.data.to)\n",[308,724,725,727],{"class":310,"line":512},[308,726,395],{"class":358},[308,728,368],{"class":314},[308,730,731],{"class":310,"line":518},[308,732,403],{"class":314},[230,734,735,736,739,740,743,744,607],{},"Add ",[233,737,738],{},"https:\u002F\u002Fyour-app.com\u002Fapi\u002Ffaivelo"," as an endpoint in ",[256,741,742],{},"Settings → Developers → Webhooks"," in Faivelo, and put its signing secret in ",[233,745,746],{},"FAIVELO_WEBHOOK_SECRET",[250,748,749,752,762,768],{},[253,750,751],{},"The signature is checked before your code runs. A bad or old signature gets a 400.",[253,753,754,755,386,758,761],{},"Each handler gets its event fully typed: ",[233,756,757],{},"event.data.from.address",[233,759,760],{},"event.data.bounce.reason",", and so on.",[253,763,764,767],{},[233,765,766],{},"'*'"," handles every event without its own handler. Events you did not list get a 200.",[253,769,770,771,774],{},"If your handler throws, the answer is a 500 and Faivelo tries again for up to a day. A retry keeps the same ",[233,772,773],{},"event.id",", so you can skip repeats.",[230,776,777,778,386,781,386,784,386,787,386,790,386,793,796,797,800,801,607],{},"Events include ",[233,779,780],{},"message.received",[233,782,783],{},"message.sent",[233,785,786],{},"email.delivered",[233,788,789],{},"email.bounced",[233,791,792],{},"email.complained",[233,794,795],{},"domain.verified"," and ",[233,798,799],{},"mailbox.created",". ",[238,802,803],{"href":172},"All events",[230,805,806,807,796,809,811],{},"Webhooks come with the Growth, Pro and Business plans. ",[233,808,780],{},[233,810,783],{}," need Pro or Business.",[294,813,815],{"id":814},"configuration","Configuration",[230,817,818,821],{},[233,819,820],{},".env",":",[299,823,825],{"className":301,"code":824,"language":303,"meta":304,"style":304},"FAIVELO_API_KEY=fvl_live_...          # Settings → Developers in Faivelo\nFAIVELO_WEBHOOK_SECRET=whsec_...      # only if you receive webhooks\nFAIVELO_FROM=\"Acme \u003Chello@acme.com>\"  # optional, instead of the nuxt.config option\n",[233,826,827,840,852],{"__ignoreMap":304},[308,828,829,832,834,837],{"class":310,"line":311},[308,830,831],{"class":358},"FAIVELO_API_KEY",[308,833,459],{"class":341},[308,835,836],{"class":318},"fvl_live_...",[308,838,839],{"class":334},"          # Settings → Developers in Faivelo\n",[308,841,842,844,846,849],{"class":310,"line":338},[308,843,746],{"class":358},[308,845,459],{"class":341},[308,847,848],{"class":318},"whsec_...",[308,850,851],{"class":334},"      # only if you receive webhooks\n",[308,853,854,857,859,862],{"class":310,"line":355},[308,855,856],{"class":358},"FAIVELO_FROM",[308,858,459],{"class":341},[308,860,861],{"class":318},"\"Acme \u003Chello@acme.com>\"",[308,863,864],{"class":334},"  # optional, instead of the nuxt.config option\n",[230,866,867,868,386,871,796,874,877],{},"The ",[233,869,870],{},"NUXT_FAIVELO_API_KEY",[233,872,873],{},"NUXT_FAIVELO_WEBHOOK_SECRET",[233,875,876],{},"NUXT_FAIVELO_FROM"," names work too. Keys live in server-only runtime config and never reach the browser.",[879,880,881,897],"table",{},[882,883,884],"thead",{},[885,886,887,891,894],"tr",{},[888,889,890],"th",{},"Option",[888,892,893],{},"Default",[888,895,896],{},"What it does",[898,899,900,916],"tbody",{},[885,901,902,907,910],{},[903,904,905],"td",{},[233,906,547],{},[903,908,909],{},"none",[903,911,912,913,915],{},"Default sender, e.g. ",[233,914,383],{},". Any address on a domain you added to Faivelo.",[885,917,918,923,927],{},[903,919,920],{},[233,921,922],{},"devOutbox",[903,924,925],{},[233,926,527],{},[903,928,929,930,607],{},"Keep emails in the dev outbox when there is no API key during ",[233,931,583],{},[294,933,935],{"id":934},"the-full-faivelo-api","The full Faivelo API",[230,937,938,940,941,946],{},[233,939,288],{}," returns the ",[238,942,945],{"href":943,"rel":944},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Ffaivelo",[242],"Faivelo SDK"," client, made from your API key:",[299,948,950],{"className":325,"code":949,"language":327,"meta":304,"style":304},"export default defineEventHandler(async () => {\n  const faivelo = useFaivelo()\n  return faivelo.messages.list('support@acme.com', { limit: 10 })\n})\n",[233,951,952,971,987,1011],{"__ignoreMap":304},[308,953,954,956,958,960,962,964,967,969],{"class":310,"line":311},[308,955,342],{"class":341},[308,957,345],{"class":341},[308,959,426],{"class":348},[308,961,429],{"class":314},[308,963,432],{"class":341},[308,965,966],{"class":314}," () ",[308,968,438],{"class":341},[308,970,441],{"class":358},[308,972,973,975,978,981,984],{"class":310,"line":338},[308,974,446],{"class":341},[308,976,977],{"class":452}," faivelo",[308,979,980],{"class":341}," =",[308,982,983],{"class":348}," useFaivelo",[308,985,986],{"class":358},"()\n",[308,988,989,991,994,997,999,1002,1005,1008],{"class":310,"line":355},[308,990,521],{"class":341},[308,992,993],{"class":358}," faivelo.messages.",[308,995,996],{"class":348},"list",[308,998,429],{"class":358},[308,1000,1001],{"class":318},"'support@acme.com'",[308,1003,1004],{"class":358},", { limit: ",[308,1006,1007],{"class":452},"10",[308,1009,1010],{"class":358}," })\n",[308,1012,1013,1015],{"class":310,"line":371},[308,1014,536],{"class":358},[308,1016,539],{"class":314},[230,1018,1019,1020,607],{},"Event types are exported: ",[233,1021,1022],{},"import type { FaiveloEvent } from '@faivelo\u002Fnuxt'",[294,1024,1026],{"id":1025},"faq","FAQ",[230,1028,1029,1032],{},[256,1030,1031],{},"What is Faivelo?","\nFaivelo is email hosting for your own domain with an API. One account covers mailboxes for your team (IMAP, SMTP and webmail) and email sent by your code, with replies coming back as webhooks. AI agents can use it too, through the Faivelo MCP server.",[230,1034,1035,1038,1039,1042],{},[256,1036,1037],{},"Do I need a mailbox to send?","\nNo. Any address on a domain you added to Faivelo can send, for example ",[233,1040,1041],{},"noreply@acme.com",", with no mailbox behind it.",[230,1044,1045,1048,1049,1052],{},[256,1046,1047],{},"How do I add my domain?","\nRun ",[233,1050,1051],{},"npx faivelo init acme.com",". It adds the domain and gets the DNS records in place: one click where your DNS host allows it, copy-ready values otherwise.",[230,1054,1055,1058,1059,1061,1062,386,1064,386,1067,386,1069,386,1072,386,1074,386,1076,386,1078,796,1080,645,1082,1085,1086,1089],{},[256,1056,1057],{},"Can I move from Nodemailer or another email API?","\nYes. ",[233,1060,247],{}," takes ",[233,1063,547],{},[233,1065,1066],{},"to",[233,1068,674],{},[233,1070,1071],{},"html",[233,1073,559],{},[233,1075,550],{},[233,1077,553],{},[233,1079,556],{},[233,1081,562],{},[233,1083,1084],{},"{ filename, content }","), the same fields Nodemailer's ",[233,1087,1088],{},"sendMail"," uses. Usually you change the import and remove the SMTP setup.",[230,1091,1092,1095,1096,1098,1099,607],{},[256,1093,1094],{},"Can I write emails as Vue components?","\nNot in this module yet. Send ",[233,1097,1071],{}," you build yourself, or design a template in the Faivelo dashboard and send it with ",[233,1100,565],{},[230,1102,1103,1106],{},[256,1104,1105],{},"Where does it run?","\nOn the server, in any server route, server middleware or Nitro task. Tested with Node.js server builds on Nuxt 3 and Nuxt 4.",[294,1108,1110],{"id":1109},"links","Links",[250,1112,1113,1118,1125],{},[253,1114,1115],{},[238,1116,1117],{"href":172},"Webhook events",[253,1119,1120],{},[238,1121,1124],{"href":1122,"rel":1123},"https:\u002F\u002Ffaivelo.com\u002Fdocs\u002Fapi",[242],"API reference",[253,1126,1127,1128,607],{},"Building with Next.js? See ",[238,1129,200],{"href":201},[1131,1132,1133],"style",{},"html pre.shiki code .sV4o_, html code.shiki .sV4o_{--shiki-default:#702C00}html pre.shiki code .sYEJz, html code.shiki .sYEJz{--shiki-default:#032563}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 pre.shiki code .sFeEa, html code.shiki .sFeEa{--shiki-default:#66707B}html pre.shiki code .sTJeM, html code.shiki .sTJeM{--shiki-default:#A0111F}html pre.shiki code .s3dhs, html code.shiki .s3dhs{--shiki-default:#622CBC}html pre.shiki code .sigWx, html code.shiki .sigWx{--shiki-default:#0E1116}html pre.shiki code .sacAq, html code.shiki .sacAq{--shiki-default:#023B95}",{"title":304,"searchDepth":311,"depth":338,"links":1135},[1136,1137,1138,1139,1140,1141,1142,1143],{"id":296,"depth":338,"text":297},{"id":406,"depth":338,"text":407},{"id":576,"depth":338,"text":577},{"id":610,"depth":338,"text":611},{"id":814,"depth":338,"text":815},{"id":934,"depth":338,"text":935},{"id":1025,"depth":338,"text":1026},{"id":1109,"depth":338,"text":1110},"[object Object]","md",null,{},true,{"title":204,"description":1150},{"Send transactional email from your own domain in a Nuxt app with an auto-imported sendEmail(), receive replies as typed webhooks, and test in a local dev outbox":1151},{" Package":1152},"@faivelo\u002Fnuxt.","nTNpNrBfnuOgV1V4BrlfYXK7g4zhlIgYRG6x1fLehXg",[1155,1156],{"title":200,"path":201,"stem":202,"description":1144,"children":-1},{"title":213,"path":214,"stem":215,"description":1157,"children":-1},"Plans, pricing, storage, and trials.",1793622031772]