[{"data":1,"prerenderedAt":1604},["ShallowReactive",2],{"navigation_docs":3,"-docs-integration-guides-nuxt-and-next":114,"-docs-integration-guides-nuxt-and-next-surround":1599},[4,8,12,16,20,24,28,32,36,40,44,82,86,90,94,98,102,106,110],{"title":5,"path":6,"stem":7},"Overview","\u002Fdocs","docs\u002Findex",{"title":9,"path":10,"stem":11},"Quickstart","\u002Fdocs\u002Fquickstart","docs\u002F01.quickstart",{"title":13,"path":14,"stem":15},"Authentication and keys","\u002Fdocs\u002Fauthentication","docs\u002F02.authentication",{"title":17,"path":18,"stem":19},"Images","\u002Fdocs\u002Fimages","docs\u002F03.images",{"title":21,"path":22,"stem":23},"Texts","\u002Fdocs\u002Ftexts","docs\u002F04.texts",{"title":25,"path":26,"stem":27},"Migrating from SightEngine","\u002Fdocs\u002Fmigrating-from-sightengine","docs\u002F05.migrating-from-sightengine",{"title":29,"path":30,"stem":31},"Workflows","\u002Fdocs\u002Fworkflows","docs\u002F06.workflows",{"title":33,"path":34,"stem":35},"Responses and errors","\u002Fdocs\u002Fresponses-and-errors","docs\u002F07.responses-and-errors",{"title":37,"path":38,"stem":39},"Limits and quotas","\u002Fdocs\u002Flimits-and-quotas","docs\u002F08.limits-and-quotas",{"title":41,"path":42,"stem":43},"The journal and ref","\u002Fdocs\u002Fjournal-and-ref","docs\u002F09.journal-and-ref",{"title":45,"path":46,"stem":47,"children":48,"page":81},"Integration guides","\u002Fdocs\u002Fintegration-guides","docs\u002F10.integration-guides",[49,53,57,61,65,69,73,77],{"title":50,"path":51,"stem":52},"Node.js and TypeScript","\u002Fdocs\u002Fintegration-guides\u002Fnodejs","docs\u002F10.integration-guides\u002F1.nodejs",{"title":54,"path":55,"stem":56},"Python","\u002Fdocs\u002Fintegration-guides\u002Fpython","docs\u002F10.integration-guides\u002F2.python",{"title":58,"path":59,"stem":60},"PHP","\u002Fdocs\u002Fintegration-guides\u002Fphp","docs\u002F10.integration-guides\u002F3.php",{"title":62,"path":63,"stem":64},"Go","\u002Fdocs\u002Fintegration-guides\u002Fgo","docs\u002F10.integration-guides\u002F4.go",{"title":66,"path":67,"stem":68},"Supabase Edge Functions","\u002Fdocs\u002Fintegration-guides\u002Fsupabase-edge-functions","docs\u002F10.integration-guides\u002F5.supabase-edge-functions",{"title":70,"path":71,"stem":72},"Cloudflare Workers","\u002Fdocs\u002Fintegration-guides\u002Fcloudflare-workers","docs\u002F10.integration-guides\u002F6.cloudflare-workers",{"title":74,"path":75,"stem":76},"Nuxt and Next","\u002Fdocs\u002Fintegration-guides\u002Fnuxt-and-next","docs\u002F10.integration-guides\u002F7.nuxt-and-next",{"title":78,"path":79,"stem":80},"Moderate an AI agent","\u002Fdocs\u002Fintegration-guides\u002Fmoderate-ai-agents","docs\u002F10.integration-guides\u002F8.moderate-ai-agents",false,{"title":83,"path":84,"stem":85},"AI coding agents","\u002Fdocs\u002Fai-agents","docs\u002F11.ai-agents",{"title":87,"path":88,"stem":89},"Best practices","\u002Fdocs\u002Fbest-practices","docs\u002F12.best-practices",{"title":91,"path":92,"stem":93},"Privacy and data","\u002Fdocs\u002Fprivacy-and-data","docs\u002F13.privacy-and-data",{"title":95,"path":96,"stem":97},"API reference","\u002Fdocs\u002Fapi-reference","docs\u002F14.api-reference",{"title":99,"path":100,"stem":101},"Fraud prevention","\u002Fdocs\u002Ffraud-prevention","docs\u002F16.fraud-prevention",{"title":103,"path":104,"stem":105},"Device token and challenges","\u002Fdocs\u002Fdevice-and-challenges","docs\u002F17.device-and-challenges",{"title":107,"path":108,"stem":109},"MCP server","\u002Fdocs\u002Fmcp-server","docs\u002F18.mcp-server",{"title":111,"path":112,"stem":113},"Changelog","\u002Fdocs\u002Fchangelog","docs\u002F99.changelog",{"id":115,"title":74,"body":116,"description":1593,"extension":1594,"links":1595,"meta":1596,"navigation":335,"path":75,"seo":1597,"stem":76,"__hash__":1598},"docs\u002Fdocs\u002F10.integration-guides\u002F7.nuxt-and-next.md",{"type":117,"value":118,"toc":1589},"minimark",[119,123,128,148,226,906,910,917,935,1574,1585],[120,121,122],"p",{},"Both frameworks run server code next to your pages. Put the call to openshield there, and let your pages call your own route.",[124,125,127],"h2",{"id":126},"nuxt","Nuxt",[120,129,130,131,135,136,139,140,143,144,147],{},"Keep the key in a private runtime config value. In ",[132,133,134],"code",{},"nuxt.config.ts",", an empty default under ",[132,137,138],{},"runtimeConfig"," (outside ",[132,141,142],{},"public",") is filled from the environment variable ",[132,145,146],{},"NUXT_OPENSHIELD_API_KEY",":",[149,150,155],"pre",{"className":151,"code":152,"filename":134,"language":153,"meta":154,"style":154},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  runtimeConfig: {\n    openshieldApiKey: \"\", \u002F\u002F set NUXT_OPENSHIELD_API_KEY in the environment\n  },\n})\n","ts","",[132,156,157,181,193,211,217],{"__ignoreMap":154},[158,159,162,166,169,173,177],"span",{"class":160,"line":161},"line",1,[158,163,165],{"class":164},"s7zQu","export",[158,167,168],{"class":164}," default",[158,170,172],{"class":171},"s2Zo4"," defineNuxtConfig",[158,174,176],{"class":175},"sTEyZ","(",[158,178,180],{"class":179},"sMK4o","{\n",[158,182,184,188,190],{"class":160,"line":183},2,[158,185,187],{"class":186},"swJcz","  runtimeConfig",[158,189,147],{"class":179},[158,191,192],{"class":179}," {\n",[158,194,196,199,201,204,207],{"class":160,"line":195},3,[158,197,198],{"class":186},"    openshieldApiKey",[158,200,147],{"class":179},[158,202,203],{"class":179}," \"\"",[158,205,206],{"class":179},",",[158,208,210],{"class":209},"sHwdD"," \u002F\u002F set NUXT_OPENSHIELD_API_KEY in the environment\n",[158,212,214],{"class":160,"line":213},4,[158,215,216],{"class":179},"  },\n",[158,218,220,223],{"class":160,"line":219},5,[158,221,222],{"class":179},"}",[158,224,225],{"class":175},")\n",[149,227,230],{"className":151,"code":228,"filename":229,"language":153,"meta":154,"style":154},"interface Answer {\n  summary: { action: \"accept\" | \"review\" | \"reject\"; reject_reason: Array\u003C{ id: string }> }\n  request_id: string\n}\n\nexport default defineEventHandler(async (event) => {\n  const { text, id } = await readBody\u003C{ text: string; id: string }>(event)\n  const { openshieldApiKey } = useRuntimeConfig(event)\n\n  const result = await $fetch\u003CAnswer>(\"https:\u002F\u002Fapi.openshield.dev\u002Fv1\u002Ftext\", {\n    method: \"POST\",\n    headers: { Authorization: `Bearer ${openshieldApiKey}` },\n    body: { text, ref: id },\n    timeout: 10_000,\n  }).catch((error: { statusCode?: number }) => error.statusCode ?? 0)\n\n  if (typeof result === \"number\") {\n    \u002F\u002F 400, 413 and 415: the content cannot be accepted as it is.\n    if ([400, 413, 415].includes(result)) throw createError({ statusCode: 422 })\n    \u002F\u002F Anything else, a timeout included: the check could not be made. Fail closed, keep the comment hidden.\n    return { published: false }\n  }\n\n  const { action, reject_reason } = result.summary\n  if (action === \"reject\") throw createError({ statusCode: 422, data: { reason: reject_reason[0]?.id } })\n  \u002F\u002F Store the comment, hidden when action is \"review\", published when it is \"accept\".\n  return { published: action === \"accept\", requestId: result.request_id }\n})\n","server\u002Fapi\u002Fcomments.post.ts",[132,231,232,244,316,326,331,337,367,418,441,446,483,501,534,557,571,626,631,659,665,725,731,750,756,761,785,855,861,899],{"__ignoreMap":154},[158,233,234,238,242],{"class":160,"line":161},[158,235,237],{"class":236},"spNyl","interface",[158,239,241],{"class":240},"sBMFI"," Answer",[158,243,192],{"class":179},[158,245,246,249,251,254,257,259,262,266,269,272,274,277,279,281,283,286,288,291,294,296,299,302,305,307,310,313],{"class":160,"line":183},[158,247,248],{"class":186},"  summary",[158,250,147],{"class":179},[158,252,253],{"class":179}," {",[158,255,256],{"class":186}," action",[158,258,147],{"class":179},[158,260,261],{"class":179}," \"",[158,263,265],{"class":264},"sfazB","accept",[158,267,268],{"class":179},"\"",[158,270,271],{"class":179}," |",[158,273,261],{"class":179},[158,275,276],{"class":264},"review",[158,278,268],{"class":179},[158,280,271],{"class":179},[158,282,261],{"class":179},[158,284,285],{"class":264},"reject",[158,287,268],{"class":179},[158,289,290],{"class":179},";",[158,292,293],{"class":186}," reject_reason",[158,295,147],{"class":179},[158,297,298],{"class":240}," Array",[158,300,301],{"class":179},"\u003C{",[158,303,304],{"class":186}," id",[158,306,147],{"class":179},[158,308,309],{"class":240}," string",[158,311,312],{"class":179}," }>",[158,314,315],{"class":179}," }\n",[158,317,318,321,323],{"class":160,"line":195},[158,319,320],{"class":186},"  request_id",[158,322,147],{"class":179},[158,324,325],{"class":240}," string\n",[158,327,328],{"class":160,"line":213},[158,329,330],{"class":179},"}\n",[158,332,333],{"class":160,"line":219},[158,334,336],{"emptyLinePlaceholder":335},true,"\n",[158,338,340,342,344,347,349,352,355,359,362,365],{"class":160,"line":339},6,[158,341,165],{"class":164},[158,343,168],{"class":164},[158,345,346],{"class":171}," defineEventHandler",[158,348,176],{"class":175},[158,350,351],{"class":236},"async",[158,353,354],{"class":179}," (",[158,356,358],{"class":357},"sHdIc","event",[158,360,361],{"class":179},")",[158,363,364],{"class":236}," =>",[158,366,192],{"class":179},[158,368,370,373,375,378,380,382,385,388,391,394,396,398,400,402,404,406,408,410,412,414,416],{"class":160,"line":369},7,[158,371,372],{"class":236},"  const",[158,374,253],{"class":179},[158,376,377],{"class":175}," text",[158,379,206],{"class":179},[158,381,304],{"class":175},[158,383,384],{"class":179}," }",[158,386,387],{"class":179}," =",[158,389,390],{"class":164}," await",[158,392,393],{"class":171}," readBody",[158,395,301],{"class":179},[158,397,377],{"class":186},[158,399,147],{"class":179},[158,401,309],{"class":240},[158,403,290],{"class":179},[158,405,304],{"class":186},[158,407,147],{"class":179},[158,409,309],{"class":240},[158,411,312],{"class":179},[158,413,176],{"class":186},[158,415,358],{"class":175},[158,417,225],{"class":186},[158,419,421,423,425,428,430,432,435,437,439],{"class":160,"line":420},8,[158,422,372],{"class":236},[158,424,253],{"class":179},[158,426,427],{"class":175}," openshieldApiKey",[158,429,384],{"class":179},[158,431,387],{"class":179},[158,433,434],{"class":171}," useRuntimeConfig",[158,436,176],{"class":186},[158,438,358],{"class":175},[158,440,225],{"class":186},[158,442,444],{"class":160,"line":443},9,[158,445,336],{"emptyLinePlaceholder":335},[158,447,449,451,454,456,458,461,464,467,470,472,474,477,479,481],{"class":160,"line":448},10,[158,450,372],{"class":236},[158,452,453],{"class":175}," result",[158,455,387],{"class":179},[158,457,390],{"class":164},[158,459,460],{"class":171}," $fetch",[158,462,463],{"class":179},"\u003C",[158,465,466],{"class":240},"Answer",[158,468,469],{"class":179},">",[158,471,176],{"class":186},[158,473,268],{"class":179},[158,475,476],{"class":264},"https:\u002F\u002Fapi.openshield.dev\u002Fv1\u002Ftext",[158,478,268],{"class":179},[158,480,206],{"class":179},[158,482,192],{"class":179},[158,484,486,489,491,493,496,498],{"class":160,"line":485},11,[158,487,488],{"class":186},"    method",[158,490,147],{"class":179},[158,492,261],{"class":179},[158,494,495],{"class":264},"POST",[158,497,268],{"class":179},[158,499,500],{"class":179},",\n",[158,502,504,507,509,511,514,516,519,522,525,528,531],{"class":160,"line":503},12,[158,505,506],{"class":186},"    headers",[158,508,147],{"class":179},[158,510,253],{"class":179},[158,512,513],{"class":186}," Authorization",[158,515,147],{"class":179},[158,517,518],{"class":179}," `",[158,520,521],{"class":264},"Bearer ",[158,523,524],{"class":179},"${",[158,526,527],{"class":175},"openshieldApiKey",[158,529,530],{"class":179},"}`",[158,532,533],{"class":179}," },\n",[158,535,537,540,542,544,546,548,551,553,555],{"class":160,"line":536},13,[158,538,539],{"class":186},"    body",[158,541,147],{"class":179},[158,543,253],{"class":179},[158,545,377],{"class":175},[158,547,206],{"class":179},[158,549,550],{"class":186}," ref",[158,552,147],{"class":179},[158,554,304],{"class":175},[158,556,533],{"class":179},[158,558,560,563,565,569],{"class":160,"line":559},14,[158,561,562],{"class":186},"    timeout",[158,564,147],{"class":179},[158,566,568],{"class":567},"sbssI"," 10_000",[158,570,500],{"class":179},[158,572,574,577,579,582,585,587,589,592,594,596,599,602,605,608,610,613,615,618,621,624],{"class":160,"line":573},15,[158,575,576],{"class":179},"  }",[158,578,361],{"class":186},[158,580,581],{"class":179},".",[158,583,584],{"class":171},"catch",[158,586,176],{"class":186},[158,588,176],{"class":179},[158,590,591],{"class":357},"error",[158,593,147],{"class":179},[158,595,253],{"class":179},[158,597,598],{"class":186}," statusCode",[158,600,601],{"class":179},"?:",[158,603,604],{"class":240}," number",[158,606,607],{"class":179}," })",[158,609,364],{"class":236},[158,611,612],{"class":175}," error",[158,614,581],{"class":179},[158,616,617],{"class":175},"statusCode",[158,619,620],{"class":179}," ??",[158,622,623],{"class":567}," 0",[158,625,225],{"class":186},[158,627,629],{"class":160,"line":628},16,[158,630,336],{"emptyLinePlaceholder":335},[158,632,634,637,639,642,644,647,649,652,654,657],{"class":160,"line":633},17,[158,635,636],{"class":164},"  if",[158,638,354],{"class":186},[158,640,641],{"class":179},"typeof",[158,643,453],{"class":175},[158,645,646],{"class":179}," ===",[158,648,261],{"class":179},[158,650,651],{"class":264},"number",[158,653,268],{"class":179},[158,655,656],{"class":186},") ",[158,658,180],{"class":179},[158,660,662],{"class":160,"line":661},18,[158,663,664],{"class":209},"    \u002F\u002F 400, 413 and 415: the content cannot be accepted as it is.\n",[158,666,668,671,674,677,679,682,684,687,690,692,695,697,700,703,706,709,711,714,716,718,721,723],{"class":160,"line":667},19,[158,669,670],{"class":164},"    if",[158,672,673],{"class":186}," ([",[158,675,676],{"class":567},"400",[158,678,206],{"class":179},[158,680,681],{"class":567}," 413",[158,683,206],{"class":179},[158,685,686],{"class":567}," 415",[158,688,689],{"class":186},"]",[158,691,581],{"class":179},[158,693,694],{"class":171},"includes",[158,696,176],{"class":186},[158,698,699],{"class":175},"result",[158,701,702],{"class":186},")) ",[158,704,705],{"class":164},"throw",[158,707,708],{"class":171}," createError",[158,710,176],{"class":186},[158,712,713],{"class":179},"{",[158,715,598],{"class":186},[158,717,147],{"class":179},[158,719,720],{"class":567}," 422",[158,722,384],{"class":179},[158,724,225],{"class":186},[158,726,728],{"class":160,"line":727},20,[158,729,730],{"class":209},"    \u002F\u002F Anything else, a timeout included: the check could not be made. Fail closed, keep the comment hidden.\n",[158,732,734,737,739,742,744,748],{"class":160,"line":733},21,[158,735,736],{"class":164},"    return",[158,738,253],{"class":179},[158,740,741],{"class":186}," published",[158,743,147],{"class":179},[158,745,747],{"class":746},"sfNiH"," false",[158,749,315],{"class":179},[158,751,753],{"class":160,"line":752},22,[158,754,755],{"class":179},"  }\n",[158,757,759],{"class":160,"line":758},23,[158,760,336],{"emptyLinePlaceholder":335},[158,762,764,766,768,770,772,774,776,778,780,782],{"class":160,"line":763},24,[158,765,372],{"class":236},[158,767,253],{"class":179},[158,769,256],{"class":175},[158,771,206],{"class":179},[158,773,293],{"class":175},[158,775,384],{"class":179},[158,777,387],{"class":179},[158,779,453],{"class":175},[158,781,581],{"class":179},[158,783,784],{"class":175},"summary\n",[158,786,788,790,792,795,797,799,801,803,805,807,809,811,813,815,817,819,821,824,826,828,831,833,835,838,841,843,846,849,851,853],{"class":160,"line":787},25,[158,789,636],{"class":164},[158,791,354],{"class":186},[158,793,794],{"class":175},"action",[158,796,646],{"class":179},[158,798,261],{"class":179},[158,800,285],{"class":264},[158,802,268],{"class":179},[158,804,656],{"class":186},[158,806,705],{"class":164},[158,808,708],{"class":171},[158,810,176],{"class":186},[158,812,713],{"class":179},[158,814,598],{"class":186},[158,816,147],{"class":179},[158,818,720],{"class":567},[158,820,206],{"class":179},[158,822,823],{"class":186}," data",[158,825,147],{"class":179},[158,827,253],{"class":179},[158,829,830],{"class":186}," reason",[158,832,147],{"class":179},[158,834,293],{"class":175},[158,836,837],{"class":186},"[",[158,839,840],{"class":567},"0",[158,842,689],{"class":186},[158,844,845],{"class":179},"?.",[158,847,848],{"class":175},"id",[158,850,384],{"class":179},[158,852,384],{"class":179},[158,854,225],{"class":186},[158,856,858],{"class":160,"line":857},26,[158,859,860],{"class":209},"  \u002F\u002F Store the comment, hidden when action is \"review\", published when it is \"accept\".\n",[158,862,864,867,869,871,873,875,877,879,881,883,885,888,890,892,894,897],{"class":160,"line":863},27,[158,865,866],{"class":164},"  return",[158,868,253],{"class":179},[158,870,741],{"class":186},[158,872,147],{"class":179},[158,874,256],{"class":175},[158,876,646],{"class":179},[158,878,261],{"class":179},[158,880,265],{"class":264},[158,882,268],{"class":179},[158,884,206],{"class":179},[158,886,887],{"class":186}," requestId",[158,889,147],{"class":179},[158,891,453],{"class":175},[158,893,581],{"class":179},[158,895,896],{"class":175},"request_id",[158,898,315],{"class":179},[158,900,902,904],{"class":160,"line":901},28,[158,903,222],{"class":179},[158,905,225],{"class":175},[124,907,909],{"id":908},"nextjs","Next.js",[120,911,912,913,916],{},"Keep the key in ",[132,914,915],{},".env.local"," (not committed) and read it in a route handler:",[149,918,922],{"className":919,"code":920,"filename":915,"language":921,"meta":154,"style":154},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","OPENSHIELD_API_KEY=om_live_...\n","bash",[132,923,924],{"__ignoreMap":154},[158,925,926,929,932],{"class":160,"line":161},[158,927,928],{"class":175},"OPENSHIELD_API_KEY",[158,930,931],{"class":179},"=",[158,933,934],{"class":264},"om_live_...\n",[149,936,939],{"className":151,"code":937,"filename":938,"language":153,"meta":154,"style":154},"import { NextResponse } from \"next\u002Fserver\"\n\nexport async function POST(request: Request) {\n  const { text, id } = (await request.json()) as { text: string; id: string }\n\n  let answer: Response\n  try {\n    answer = await fetch(\"https:\u002F\u002Fapi.openshield.dev\u002Fv1\u002Ftext\", {\n      method: \"POST\",\n      headers: {\n        Authorization: `Bearer ${process.env.OPENSHIELD_API_KEY}`,\n        \"Content-Type\": \"application\u002Fjson\",\n      },\n      body: JSON.stringify({ text, ref: id }),\n      signal: AbortSignal.timeout(10_000),\n    })\n  } catch {\n    \u002F\u002F The check could not be made: fail closed, keep the comment hidden.\n    return NextResponse.json({ published: false })\n  }\n\n  const body = await answer.json()\n  if (!answer.ok) {\n    const refused = [400, 413, 415].includes(answer.status)\n    return NextResponse.json({ published: false, refused }, { status: refused ? 422 : 200 })\n  }\n\n  const { action, reject_reason } = body.summary\n  if (action === \"reject\") return NextResponse.json({ published: false, reason: reject_reason[0]?.id }, { status: 422 })\n  \u002F\u002F Store the comment, hidden when action is \"review\", published when it is \"accept\".\n  return NextResponse.json({ published: action === \"accept\", requestId: body.request_id })\n}\n","app\u002Fapi\u002Fcomments\u002Froute.ts",[132,940,941,964,968,995,1048,1052,1065,1072,1096,1111,1120,1149,1170,1175,1210,1234,1241,1250,1255,1279,1283,1287,1307,1328,1368,1419,1423,1427,1449,1519,1524,1569],{"__ignoreMap":154},[158,942,943,946,948,951,953,956,958,961],{"class":160,"line":161},[158,944,945],{"class":164},"import",[158,947,253],{"class":179},[158,949,950],{"class":175}," NextResponse",[158,952,384],{"class":179},[158,954,955],{"class":164}," from",[158,957,261],{"class":179},[158,959,960],{"class":264},"next\u002Fserver",[158,962,963],{"class":179},"\"\n",[158,965,966],{"class":160,"line":183},[158,967,336],{"emptyLinePlaceholder":335},[158,969,970,972,975,978,981,983,986,988,991,993],{"class":160,"line":195},[158,971,165],{"class":164},[158,973,974],{"class":236}," async",[158,976,977],{"class":236}," function",[158,979,980],{"class":171}," POST",[158,982,176],{"class":179},[158,984,985],{"class":357},"request",[158,987,147],{"class":179},[158,989,990],{"class":240}," Request",[158,992,361],{"class":179},[158,994,192],{"class":179},[158,996,997,999,1001,1003,1005,1007,1009,1011,1013,1016,1019,1021,1024,1027,1030,1032,1034,1036,1038,1040,1042,1044,1046],{"class":160,"line":213},[158,998,372],{"class":236},[158,1000,253],{"class":179},[158,1002,377],{"class":175},[158,1004,206],{"class":179},[158,1006,304],{"class":175},[158,1008,384],{"class":179},[158,1010,387],{"class":179},[158,1012,354],{"class":186},[158,1014,1015],{"class":164},"await",[158,1017,1018],{"class":175}," request",[158,1020,581],{"class":179},[158,1022,1023],{"class":171},"json",[158,1025,1026],{"class":186},"()) ",[158,1028,1029],{"class":164},"as",[158,1031,253],{"class":179},[158,1033,377],{"class":186},[158,1035,147],{"class":179},[158,1037,309],{"class":240},[158,1039,290],{"class":179},[158,1041,304],{"class":186},[158,1043,147],{"class":179},[158,1045,309],{"class":240},[158,1047,315],{"class":179},[158,1049,1050],{"class":160,"line":219},[158,1051,336],{"emptyLinePlaceholder":335},[158,1053,1054,1057,1060,1062],{"class":160,"line":339},[158,1055,1056],{"class":236},"  let",[158,1058,1059],{"class":175}," answer",[158,1061,147],{"class":179},[158,1063,1064],{"class":240}," Response\n",[158,1066,1067,1070],{"class":160,"line":369},[158,1068,1069],{"class":164},"  try",[158,1071,192],{"class":179},[158,1073,1074,1077,1079,1081,1084,1086,1088,1090,1092,1094],{"class":160,"line":420},[158,1075,1076],{"class":175},"    answer",[158,1078,387],{"class":179},[158,1080,390],{"class":164},[158,1082,1083],{"class":171}," fetch",[158,1085,176],{"class":186},[158,1087,268],{"class":179},[158,1089,476],{"class":264},[158,1091,268],{"class":179},[158,1093,206],{"class":179},[158,1095,192],{"class":179},[158,1097,1098,1101,1103,1105,1107,1109],{"class":160,"line":443},[158,1099,1100],{"class":186},"      method",[158,1102,147],{"class":179},[158,1104,261],{"class":179},[158,1106,495],{"class":264},[158,1108,268],{"class":179},[158,1110,500],{"class":179},[158,1112,1113,1116,1118],{"class":160,"line":448},[158,1114,1115],{"class":186},"      headers",[158,1117,147],{"class":179},[158,1119,192],{"class":179},[158,1121,1122,1125,1127,1129,1131,1133,1136,1138,1141,1143,1145,1147],{"class":160,"line":485},[158,1123,1124],{"class":186},"        Authorization",[158,1126,147],{"class":179},[158,1128,518],{"class":179},[158,1130,521],{"class":264},[158,1132,524],{"class":179},[158,1134,1135],{"class":175},"process",[158,1137,581],{"class":179},[158,1139,1140],{"class":175},"env",[158,1142,581],{"class":179},[158,1144,928],{"class":175},[158,1146,530],{"class":179},[158,1148,500],{"class":179},[158,1150,1151,1154,1157,1159,1161,1163,1166,1168],{"class":160,"line":503},[158,1152,1153],{"class":179},"        \"",[158,1155,1156],{"class":186},"Content-Type",[158,1158,268],{"class":179},[158,1160,147],{"class":179},[158,1162,261],{"class":179},[158,1164,1165],{"class":264},"application\u002Fjson",[158,1167,268],{"class":179},[158,1169,500],{"class":179},[158,1171,1172],{"class":160,"line":536},[158,1173,1174],{"class":179},"      },\n",[158,1176,1177,1180,1182,1185,1187,1190,1192,1194,1196,1198,1200,1202,1204,1206,1208],{"class":160,"line":559},[158,1178,1179],{"class":186},"      body",[158,1181,147],{"class":179},[158,1183,1184],{"class":175}," JSON",[158,1186,581],{"class":179},[158,1188,1189],{"class":171},"stringify",[158,1191,176],{"class":186},[158,1193,713],{"class":179},[158,1195,377],{"class":175},[158,1197,206],{"class":179},[158,1199,550],{"class":186},[158,1201,147],{"class":179},[158,1203,304],{"class":175},[158,1205,384],{"class":179},[158,1207,361],{"class":186},[158,1209,500],{"class":179},[158,1211,1212,1215,1217,1220,1222,1225,1227,1230,1232],{"class":160,"line":573},[158,1213,1214],{"class":186},"      signal",[158,1216,147],{"class":179},[158,1218,1219],{"class":175}," AbortSignal",[158,1221,581],{"class":179},[158,1223,1224],{"class":171},"timeout",[158,1226,176],{"class":186},[158,1228,1229],{"class":567},"10_000",[158,1231,361],{"class":186},[158,1233,500],{"class":179},[158,1235,1236,1239],{"class":160,"line":628},[158,1237,1238],{"class":179},"    }",[158,1240,225],{"class":186},[158,1242,1243,1245,1248],{"class":160,"line":633},[158,1244,576],{"class":179},[158,1246,1247],{"class":164}," catch",[158,1249,192],{"class":179},[158,1251,1252],{"class":160,"line":661},[158,1253,1254],{"class":209},"    \u002F\u002F The check could not be made: fail closed, keep the comment hidden.\n",[158,1256,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277],{"class":160,"line":667},[158,1258,736],{"class":164},[158,1260,950],{"class":175},[158,1262,581],{"class":179},[158,1264,1023],{"class":171},[158,1266,176],{"class":186},[158,1268,713],{"class":179},[158,1270,741],{"class":186},[158,1272,147],{"class":179},[158,1274,747],{"class":746},[158,1276,384],{"class":179},[158,1278,225],{"class":186},[158,1280,1281],{"class":160,"line":727},[158,1282,755],{"class":179},[158,1284,1285],{"class":160,"line":733},[158,1286,336],{"emptyLinePlaceholder":335},[158,1288,1289,1291,1294,1296,1298,1300,1302,1304],{"class":160,"line":752},[158,1290,372],{"class":236},[158,1292,1293],{"class":175}," body",[158,1295,387],{"class":179},[158,1297,390],{"class":164},[158,1299,1059],{"class":175},[158,1301,581],{"class":179},[158,1303,1023],{"class":171},[158,1305,1306],{"class":186},"()\n",[158,1308,1309,1311,1313,1316,1319,1321,1324,1326],{"class":160,"line":758},[158,1310,636],{"class":164},[158,1312,354],{"class":186},[158,1314,1315],{"class":179},"!",[158,1317,1318],{"class":175},"answer",[158,1320,581],{"class":179},[158,1322,1323],{"class":175},"ok",[158,1325,656],{"class":186},[158,1327,180],{"class":179},[158,1329,1330,1333,1336,1338,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1366],{"class":160,"line":763},[158,1331,1332],{"class":236},"    const",[158,1334,1335],{"class":175}," refused",[158,1337,387],{"class":179},[158,1339,1340],{"class":186}," [",[158,1342,676],{"class":567},[158,1344,206],{"class":179},[158,1346,681],{"class":567},[158,1348,206],{"class":179},[158,1350,686],{"class":567},[158,1352,689],{"class":186},[158,1354,581],{"class":179},[158,1356,694],{"class":171},[158,1358,176],{"class":186},[158,1360,1318],{"class":175},[158,1362,581],{"class":179},[158,1364,1365],{"class":175},"status",[158,1367,225],{"class":186},[158,1369,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1390,1392,1395,1397,1400,1402,1404,1407,1409,1412,1415,1417],{"class":160,"line":787},[158,1371,736],{"class":164},[158,1373,950],{"class":175},[158,1375,581],{"class":179},[158,1377,1023],{"class":171},[158,1379,176],{"class":186},[158,1381,713],{"class":179},[158,1383,741],{"class":186},[158,1385,147],{"class":179},[158,1387,747],{"class":746},[158,1389,206],{"class":179},[158,1391,1335],{"class":175},[158,1393,1394],{"class":179}," },",[158,1396,253],{"class":179},[158,1398,1399],{"class":186}," status",[158,1401,147],{"class":179},[158,1403,1335],{"class":175},[158,1405,1406],{"class":179}," ?",[158,1408,720],{"class":567},[158,1410,1411],{"class":179}," :",[158,1413,1414],{"class":567}," 200",[158,1416,384],{"class":179},[158,1418,225],{"class":186},[158,1420,1421],{"class":160,"line":857},[158,1422,755],{"class":179},[158,1424,1425],{"class":160,"line":863},[158,1426,336],{"emptyLinePlaceholder":335},[158,1428,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447],{"class":160,"line":901},[158,1430,372],{"class":236},[158,1432,253],{"class":179},[158,1434,256],{"class":175},[158,1436,206],{"class":179},[158,1438,293],{"class":175},[158,1440,384],{"class":179},[158,1442,387],{"class":179},[158,1444,1293],{"class":175},[158,1446,581],{"class":179},[158,1448,784],{"class":175},[158,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517],{"class":160,"line":1451},29,[158,1453,636],{"class":164},[158,1455,354],{"class":186},[158,1457,794],{"class":175},[158,1459,646],{"class":179},[158,1461,261],{"class":179},[158,1463,285],{"class":264},[158,1465,268],{"class":179},[158,1467,656],{"class":186},[158,1469,1470],{"class":164},"return",[158,1472,950],{"class":175},[158,1474,581],{"class":179},[158,1476,1023],{"class":171},[158,1478,176],{"class":186},[158,1480,713],{"class":179},[158,1482,741],{"class":186},[158,1484,147],{"class":179},[158,1486,747],{"class":746},[158,1488,206],{"class":179},[158,1490,830],{"class":186},[158,1492,147],{"class":179},[158,1494,293],{"class":175},[158,1496,837],{"class":186},[158,1498,840],{"class":567},[158,1500,689],{"class":186},[158,1502,845],{"class":179},[158,1504,848],{"class":175},[158,1506,1394],{"class":179},[158,1508,253],{"class":179},[158,1510,1399],{"class":186},[158,1512,147],{"class":179},[158,1514,720],{"class":567},[158,1516,384],{"class":179},[158,1518,225],{"class":186},[158,1520,1522],{"class":160,"line":1521},30,[158,1523,860],{"class":209},[158,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567],{"class":160,"line":1526},31,[158,1528,866],{"class":164},[158,1530,950],{"class":175},[158,1532,581],{"class":179},[158,1534,1023],{"class":171},[158,1536,176],{"class":186},[158,1538,713],{"class":179},[158,1540,741],{"class":186},[158,1542,147],{"class":179},[158,1544,256],{"class":175},[158,1546,646],{"class":179},[158,1548,261],{"class":179},[158,1550,265],{"class":264},[158,1552,268],{"class":179},[158,1554,206],{"class":179},[158,1556,887],{"class":186},[158,1558,147],{"class":179},[158,1560,1293],{"class":175},[158,1562,581],{"class":179},[158,1564,896],{"class":175},[158,1566,384],{"class":179},[158,1568,225],{"class":186},[158,1570,1572],{"class":160,"line":1571},32,[158,1573,330],{"class":179},[1575,1576,1577,1578,1581,1582,581],"warning",{},"Do not prefix the variable with ",[132,1579,1580],{},"NEXT_PUBLIC_",": that ships it to every visitor's browser. In Nuxt, never put the key under ",[132,1583,1584],{},"runtimeConfig.public",[1586,1587,1588],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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 .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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":154,"searchDepth":183,"depth":183,"links":1590},[1591,1592],{"id":126,"depth":183,"text":127},{"id":908,"depth":183,"text":909},"Moderate content in a Nuxt server route or a Next.js route handler, so the key never leaves the server.","md",null,{},{"title":74,"description":1593},"jMXXn_cHdMGw2QuCkdUaQSaFH0TfEK3sswT9eSs0_MQ",[1600,1602],{"title":70,"path":71,"stem":72,"description":1601,"children":-1},"Moderate content from a Worker, with the key as a Worker secret.",{"title":78,"path":79,"stem":80,"description":1603,"children":-1},"Check what an agent reads and what it writes with two calls and a fallback, so nothing unchecked reaches the model or the reader.",1792938463726]