[{"data":1,"prerenderedAt":2345},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fsdk\u002Ftypescript":54,"\u002Fdocs\u002Fsdk\u002Ftypescript-surround":2340},[4,16,32,47],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Introduction","\u002Fdocs\u002Fgetting-started","1.docs\u002F1.getting-started\u002F1.index",[9,11],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-house",{"title":12,"path":13,"stem":14,"icon":15},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","1.docs\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":17,"path":18,"stem":19,"children":20,"page":31},"Sdk","\u002Fdocs\u002Fsdk","1.docs\u002F2.sdk",[21,26],{"title":22,"path":23,"stem":24,"icon":25},"TypeScript SDK","\u002Fdocs\u002Fsdk\u002Ftypescript","1.docs\u002F2.sdk\u002F1.typescript","i-simple-icons-typescript",{"title":27,"path":28,"stem":29,"icon":30},"Python SDK","\u002Fdocs\u002Fsdk\u002Fpython","1.docs\u002F2.sdk\u002F2.python","i-simple-icons-python",false,{"title":33,"path":34,"stem":35,"children":36,"page":31},"Concepts","\u002Fdocs\u002Fconcepts","1.docs\u002F3.concepts",[37,42],{"title":38,"path":39,"stem":40,"icon":41},"Pricing database","\u002Fdocs\u002Fconcepts\u002Fpricing-database","1.docs\u002F3.concepts\u002F1.pricing-database","i-lucide-database",{"title":43,"path":44,"stem":45,"icon":46},"Budget guard","\u002Fdocs\u002Fconcepts\u002Fbudgets","1.docs\u002F3.concepts\u002F2.budgets","i-lucide-shield",{"title":48,"path":49,"stem":50,"children":51,"icon":53},"API & MCP","\u002Fdocs\u002Fapi-and-mcp","1.docs\u002F4.api-and-mcp\u002F1.index",[52],{"title":48,"path":49,"stem":50,"icon":53},"i-lucide-plug-zap",{"id":55,"title":22,"body":56,"description":2334,"extension":2335,"meta":2336,"navigation":2337,"path":23,"seo":2338,"stem":24,"__hash__":2339},"docs\u002F1.docs\u002F2.sdk\u002F1.typescript.md",{"type":57,"value":58,"toc":2316},"minimark",[59,72,97,102,354,357,361,370,373,609,623,630,633,802,810,813,1069,1085,1089,1093,1096,1231,1448,1455,1459,1563,1755,1759,2116,2120,2225,2229,2234,2261,2266,2283,2290,2312],[60,61,62,63,67,68,71],"p",{},"The ",[64,65,66],"code",{},"@margint-ai\u002Fsdk"," package runs in Node 18+, Bun, Deno, and edge runtimes that expose ",[64,69,70],{},"fetch",".",[73,74,79],"pre",{"className":75,"code":76,"language":77,"meta":78,"style":78},"language-bash shiki shiki-themes material-theme-lighter vitesse-light github-dark","npm install @margint-ai\u002Fsdk\n","bash","",[64,80,81],{"__ignoreMap":78},[82,83,86,90,94],"span",{"class":84,"line":85},"line",1,[82,87,89],{"class":88},"s8WwD","npm",[82,91,93],{"class":92},"sgGcy"," install",[82,95,96],{"class":92}," @margint-ai\u002Fsdk\n",[98,99,101],"h2",{"id":100},"_60-second-start","60-second start",[73,103,107],{"className":104,"code":105,"language":106,"meta":78,"style":78},"language-ts shiki shiki-themes material-theme-lighter vitesse-light github-dark","import { Margint } from '@margint-ai\u002Fsdk'\n\nconst m = new Margint({ apiKey: process.env.MARGINT_API_KEY! })\n\nm.track({\n  customerId: 'cust_abc',\n  feature: 'chat',\n  provider: 'openai',\n  model: 'gpt-4o',\n  inputTokens: 820,\n  outputTokens: 310\n})\n\n\u002F\u002F before your process exits\nawait m.shutdown()\n","ts",[64,108,109,138,145,202,207,223,242,259,276,293,307,318,326,331,338],{"__ignoreMap":78},[82,110,111,115,119,123,126,129,133,135],{"class":84,"line":85},[82,112,114],{"class":113},"sBwTr","import",[82,116,118],{"class":117},"sCPop"," {",[82,120,122],{"class":121},"sJ3TI"," Margint",[82,124,125],{"class":117}," }",[82,127,128],{"class":113}," from",[82,130,132],{"class":131},"sFbhr"," '",[82,134,66],{"class":92},[82,136,137],{"class":131},"'\n",[82,139,141],{"class":84,"line":140},2,[82,142,144],{"emptyLinePlaceholder":143},true,"\n",[82,146,148,152,156,160,164,167,171,174,178,181,184,186,189,191,194,197,199],{"class":84,"line":147},3,[82,149,151],{"class":150},"sVLbc","const",[82,153,155],{"class":154},"szVFR"," m",[82,157,159],{"class":158},"sX7bk"," =",[82,161,163],{"class":162},"szqSR"," new",[82,165,122],{"class":166},"sThQN",[82,168,170],{"class":169},"srl0I","(",[82,172,173],{"class":117},"{",[82,175,177],{"class":176},"ssyos"," apiKey",[82,179,180],{"class":117},":",[82,182,183],{"class":121}," process",[82,185,71],{"class":117},[82,187,188],{"class":121},"env",[82,190,71],{"class":117},[82,192,193],{"class":154},"MARGINT_API_KEY",[82,195,196],{"class":162},"!",[82,198,125],{"class":117},[82,200,201],{"class":169},")\n",[82,203,205],{"class":84,"line":204},4,[82,206,144],{"emptyLinePlaceholder":143},[82,208,210,213,215,218,220],{"class":84,"line":209},5,[82,211,212],{"class":121},"m",[82,214,71],{"class":117},[82,216,217],{"class":166},"track",[82,219,170],{"class":169},[82,221,222],{"class":117},"{\n",[82,224,226,229,231,233,236,239],{"class":84,"line":225},6,[82,227,228],{"class":176},"  customerId",[82,230,180],{"class":117},[82,232,132],{"class":131},[82,234,235],{"class":92},"cust_abc",[82,237,238],{"class":131},"'",[82,240,241],{"class":117},",\n",[82,243,245,248,250,252,255,257],{"class":84,"line":244},7,[82,246,247],{"class":176},"  feature",[82,249,180],{"class":117},[82,251,132],{"class":131},[82,253,254],{"class":92},"chat",[82,256,238],{"class":131},[82,258,241],{"class":117},[82,260,262,265,267,269,272,274],{"class":84,"line":261},8,[82,263,264],{"class":176},"  provider",[82,266,180],{"class":117},[82,268,132],{"class":131},[82,270,271],{"class":92},"openai",[82,273,238],{"class":131},[82,275,241],{"class":117},[82,277,279,282,284,286,289,291],{"class":84,"line":278},9,[82,280,281],{"class":176},"  model",[82,283,180],{"class":117},[82,285,132],{"class":131},[82,287,288],{"class":92},"gpt-4o",[82,290,238],{"class":131},[82,292,241],{"class":117},[82,294,296,299,301,305],{"class":84,"line":295},10,[82,297,298],{"class":176},"  inputTokens",[82,300,180],{"class":117},[82,302,304],{"class":303},"s4fFo"," 820",[82,306,241],{"class":117},[82,308,310,313,315],{"class":84,"line":309},11,[82,311,312],{"class":176},"  outputTokens",[82,314,180],{"class":117},[82,316,317],{"class":303}," 310\n",[82,319,321,324],{"class":84,"line":320},12,[82,322,323],{"class":117},"}",[82,325,201],{"class":169},[82,327,329],{"class":84,"line":328},13,[82,330,144],{"emptyLinePlaceholder":143},[82,332,334],{"class":84,"line":333},14,[82,335,337],{"class":336},"skvGe","\u002F\u002F before your process exits\n",[82,339,341,344,346,348,351],{"class":84,"line":340},15,[82,342,343],{"class":113},"await",[82,345,155],{"class":121},[82,347,71],{"class":117},[82,349,350],{"class":166},"shutdown",[82,352,353],{"class":169},"()\n",[60,355,356],{},"Events batch in memory and flush every 5 s.",[98,358,360],{"id":359},"three-integration-patterns","Three integration patterns",[362,363,365,366,369],"h3",{"id":364},"_1-wrap-zero-touch","1. ",[64,367,368],{},"wrap()"," — zero-touch",[60,371,372],{},"Wrap your LLM client once and every call is tracked automatically.",[73,374,376],{"className":104,"code":375,"language":106,"meta":78,"style":78},"import OpenAI from 'openai'\nimport { Margint } from '@margint-ai\u002Fsdk'\n\nconst m = new Margint({ apiKey: process.env.MARGINT_API_KEY! })\nconst openai = m.wrap(new OpenAI(), { customerId: 'cust_abc', feature: 'chat' })\n\nconst res = await openai.chat.completions.create({\n  model: 'gpt-4o',\n  messages: [{ role: 'user', content: 'hi' }]\n})\n",[64,377,378,393,411,415,451,510,514,546,560,603],{"__ignoreMap":78},[82,379,380,382,385,387,389,391],{"class":84,"line":85},[82,381,114],{"class":113},[82,383,384],{"class":121}," OpenAI",[82,386,128],{"class":113},[82,388,132],{"class":131},[82,390,271],{"class":92},[82,392,137],{"class":131},[82,394,395,397,399,401,403,405,407,409],{"class":84,"line":140},[82,396,114],{"class":113},[82,398,118],{"class":117},[82,400,122],{"class":121},[82,402,125],{"class":117},[82,404,128],{"class":113},[82,406,132],{"class":131},[82,408,66],{"class":92},[82,410,137],{"class":131},[82,412,413],{"class":84,"line":147},[82,414,144],{"emptyLinePlaceholder":143},[82,416,417,419,421,423,425,427,429,431,433,435,437,439,441,443,445,447,449],{"class":84,"line":204},[82,418,151],{"class":150},[82,420,155],{"class":154},[82,422,159],{"class":158},[82,424,163],{"class":162},[82,426,122],{"class":166},[82,428,170],{"class":169},[82,430,173],{"class":117},[82,432,177],{"class":176},[82,434,180],{"class":117},[82,436,183],{"class":121},[82,438,71],{"class":117},[82,440,188],{"class":121},[82,442,71],{"class":117},[82,444,193],{"class":154},[82,446,196],{"class":162},[82,448,125],{"class":117},[82,450,201],{"class":169},[82,452,453,455,458,460,462,464,467,469,472,474,477,480,482,485,487,489,491,493,495,498,500,502,504,506,508],{"class":84,"line":209},[82,454,151],{"class":150},[82,456,457],{"class":154}," openai",[82,459,159],{"class":158},[82,461,155],{"class":121},[82,463,71],{"class":117},[82,465,466],{"class":166},"wrap",[82,468,170],{"class":169},[82,470,471],{"class":162},"new",[82,473,384],{"class":166},[82,475,476],{"class":169},"()",[82,478,479],{"class":117},",",[82,481,118],{"class":117},[82,483,484],{"class":176}," customerId",[82,486,180],{"class":117},[82,488,132],{"class":131},[82,490,235],{"class":92},[82,492,238],{"class":131},[82,494,479],{"class":117},[82,496,497],{"class":176}," feature",[82,499,180],{"class":117},[82,501,132],{"class":131},[82,503,254],{"class":92},[82,505,238],{"class":131},[82,507,125],{"class":117},[82,509,201],{"class":169},[82,511,512],{"class":84,"line":225},[82,513,144],{"emptyLinePlaceholder":143},[82,515,516,518,521,523,526,528,530,532,534,537,539,542,544],{"class":84,"line":244},[82,517,151],{"class":150},[82,519,520],{"class":154}," res",[82,522,159],{"class":158},[82,524,525],{"class":113}," await",[82,527,457],{"class":121},[82,529,71],{"class":117},[82,531,254],{"class":121},[82,533,71],{"class":117},[82,535,536],{"class":121},"completions",[82,538,71],{"class":117},[82,540,541],{"class":166},"create",[82,543,170],{"class":169},[82,545,222],{"class":117},[82,547,548,550,552,554,556,558],{"class":84,"line":261},[82,549,281],{"class":176},[82,551,180],{"class":117},[82,553,132],{"class":131},[82,555,288],{"class":92},[82,557,238],{"class":131},[82,559,241],{"class":117},[82,561,562,565,567,570,572,575,577,579,582,584,586,589,591,593,596,598,600],{"class":84,"line":278},[82,563,564],{"class":176},"  messages",[82,566,180],{"class":117},[82,568,569],{"class":169}," [",[82,571,173],{"class":117},[82,573,574],{"class":176}," role",[82,576,180],{"class":117},[82,578,132],{"class":131},[82,580,581],{"class":92},"user",[82,583,238],{"class":131},[82,585,479],{"class":117},[82,587,588],{"class":176}," content",[82,590,180],{"class":117},[82,592,132],{"class":131},[82,594,595],{"class":92},"hi",[82,597,238],{"class":131},[82,599,125],{"class":117},[82,601,602],{"class":169},"]\n",[82,604,605,607],{"class":84,"line":295},[82,606,323],{"class":117},[82,608,201],{"class":169},[60,610,611,612,615,616,619,620,71],{},"Works with OpenAI and Anthropic SDK response shapes (",[64,613,614],{},"response.usage",", ",[64,617,618],{},"response.model","). For other providers, use ",[64,621,622],{},"track()",[362,624,626,627,629],{"id":625},"_2-track-manual","2. ",[64,628,622],{}," — manual",[60,631,632],{},"For custom HTTP, multiple customers per request, or providers without a native SDK.",[73,634,636],{"className":104,"code":635,"language":106,"meta":78,"style":78},"const res = await myLlmCall()\n\nm.track({\n  customerId: req.user.id,\n  feature: 'summarize',\n  provider: 'anthropic',\n  model: 'claude-sonnet-4-20250514',\n  inputTokens: res.usage.input_tokens,\n  outputTokens: res.usage.output_tokens,\n  metadata: { requestId: req.id }\n})\n",[64,637,638,653,657,669,689,704,719,734,754,773,796],{"__ignoreMap":78},[82,639,640,642,644,646,648,651],{"class":84,"line":85},[82,641,151],{"class":150},[82,643,520],{"class":154},[82,645,159],{"class":158},[82,647,525],{"class":113},[82,649,650],{"class":166}," myLlmCall",[82,652,353],{"class":169},[82,654,655],{"class":84,"line":140},[82,656,144],{"emptyLinePlaceholder":143},[82,658,659,661,663,665,667],{"class":84,"line":147},[82,660,212],{"class":121},[82,662,71],{"class":117},[82,664,217],{"class":166},[82,666,170],{"class":169},[82,668,222],{"class":117},[82,670,671,673,675,678,680,682,684,687],{"class":84,"line":204},[82,672,228],{"class":176},[82,674,180],{"class":117},[82,676,677],{"class":121}," req",[82,679,71],{"class":117},[82,681,581],{"class":121},[82,683,71],{"class":117},[82,685,686],{"class":121},"id",[82,688,241],{"class":117},[82,690,691,693,695,697,700,702],{"class":84,"line":209},[82,692,247],{"class":176},[82,694,180],{"class":117},[82,696,132],{"class":131},[82,698,699],{"class":92},"summarize",[82,701,238],{"class":131},[82,703,241],{"class":117},[82,705,706,708,710,712,715,717],{"class":84,"line":225},[82,707,264],{"class":176},[82,709,180],{"class":117},[82,711,132],{"class":131},[82,713,714],{"class":92},"anthropic",[82,716,238],{"class":131},[82,718,241],{"class":117},[82,720,721,723,725,727,730,732],{"class":84,"line":244},[82,722,281],{"class":176},[82,724,180],{"class":117},[82,726,132],{"class":131},[82,728,729],{"class":92},"claude-sonnet-4-20250514",[82,731,238],{"class":131},[82,733,241],{"class":117},[82,735,736,738,740,742,744,747,749,752],{"class":84,"line":261},[82,737,298],{"class":176},[82,739,180],{"class":117},[82,741,520],{"class":121},[82,743,71],{"class":117},[82,745,746],{"class":121},"usage",[82,748,71],{"class":117},[82,750,751],{"class":121},"input_tokens",[82,753,241],{"class":117},[82,755,756,758,760,762,764,766,768,771],{"class":84,"line":278},[82,757,312],{"class":176},[82,759,180],{"class":117},[82,761,520],{"class":121},[82,763,71],{"class":117},[82,765,746],{"class":121},[82,767,71],{"class":117},[82,769,770],{"class":121},"output_tokens",[82,772,241],{"class":117},[82,774,775,778,780,782,785,787,789,791,793],{"class":84,"line":295},[82,776,777],{"class":176},"  metadata",[82,779,180],{"class":117},[82,781,118],{"class":117},[82,783,784],{"class":176}," requestId",[82,786,180],{"class":117},[82,788,677],{"class":121},[82,790,71],{"class":117},[82,792,686],{"class":121},[82,794,795],{"class":117}," }\n",[82,797,798,800],{"class":84,"line":309},[82,799,323],{"class":117},[82,801,201],{"class":169},[362,803,805,806,809],{"id":804},"_3-guardedcall-budget-enforcement","3. ",[64,807,808],{},"guardedCall()"," — budget enforcement",[60,811,812],{},"Blocks the call if the customer is over budget. Budget checks are cached for 60 s.",[73,814,816],{"className":104,"code":815,"language":106,"meta":78,"style":78},"import { BudgetExceededError } from '@margint-ai\u002Fsdk'\n\ntry {\n  const res = await m.guardedCall(\n    { customerId: 'cust_abc', feature: 'agent' },\n    () => openai.chat.completions.create({ model: 'gpt-4o', messages })\n  )\n} catch (err) {\n  if (err instanceof BudgetExceededError) {\n    return reply.status(402).send({ error: 'Budget exceeded', breaches: err.breaches })\n  }\n  throw err\n}\n",[64,817,818,837,841,849,871,902,949,954,972,991,1051,1056,1064],{"__ignoreMap":78},[82,819,820,822,824,827,829,831,833,835],{"class":84,"line":85},[82,821,114],{"class":113},[82,823,118],{"class":117},[82,825,826],{"class":121}," BudgetExceededError",[82,828,125],{"class":117},[82,830,128],{"class":113},[82,832,132],{"class":131},[82,834,66],{"class":92},[82,836,137],{"class":131},[82,838,839],{"class":84,"line":140},[82,840,144],{"emptyLinePlaceholder":143},[82,842,843,846],{"class":84,"line":147},[82,844,845],{"class":113},"try",[82,847,848],{"class":117}," {\n",[82,850,851,854,856,858,860,862,864,867],{"class":84,"line":204},[82,852,853],{"class":150},"  const",[82,855,520],{"class":154},[82,857,159],{"class":158},[82,859,525],{"class":113},[82,861,155],{"class":121},[82,863,71],{"class":117},[82,865,866],{"class":166},"guardedCall",[82,868,870],{"class":869},"sK89Q","(\n",[82,872,873,876,878,880,882,884,886,888,890,892,894,897,899],{"class":84,"line":209},[82,874,875],{"class":117},"    {",[82,877,484],{"class":176},[82,879,180],{"class":117},[82,881,132],{"class":131},[82,883,235],{"class":92},[82,885,238],{"class":131},[82,887,479],{"class":117},[82,889,497],{"class":176},[82,891,180],{"class":117},[82,893,132],{"class":131},[82,895,896],{"class":92},"agent",[82,898,238],{"class":131},[82,900,901],{"class":117}," },\n",[82,903,904,907,911,913,915,917,919,921,923,925,927,929,932,934,936,938,940,942,945,947],{"class":84,"line":225},[82,905,906],{"class":117},"    ()",[82,908,910],{"class":909},"s7IML"," =>",[82,912,457],{"class":121},[82,914,71],{"class":117},[82,916,254],{"class":121},[82,918,71],{"class":117},[82,920,536],{"class":121},[82,922,71],{"class":117},[82,924,541],{"class":166},[82,926,170],{"class":869},[82,928,173],{"class":117},[82,930,931],{"class":176}," model",[82,933,180],{"class":117},[82,935,132],{"class":131},[82,937,288],{"class":92},[82,939,238],{"class":131},[82,941,479],{"class":117},[82,943,944],{"class":121}," messages",[82,946,125],{"class":117},[82,948,201],{"class":869},[82,950,951],{"class":84,"line":244},[82,952,953],{"class":869},"  )\n",[82,955,956,958,961,964,967,970],{"class":84,"line":261},[82,957,323],{"class":117},[82,959,960],{"class":113}," catch",[82,962,963],{"class":169}," (",[82,965,966],{"class":121},"err",[82,968,969],{"class":169},")",[82,971,848],{"class":117},[82,973,974,977,979,981,984,987,989],{"class":84,"line":278},[82,975,976],{"class":113},"  if",[82,978,963],{"class":869},[82,980,966],{"class":121},[82,982,983],{"class":162}," instanceof",[82,985,826],{"class":986},"stoRT",[82,988,969],{"class":869},[82,990,848],{"class":117},[82,992,993,996,999,1001,1004,1006,1009,1011,1013,1016,1018,1020,1023,1025,1027,1030,1032,1034,1037,1039,1042,1044,1047,1049],{"class":84,"line":295},[82,994,995],{"class":113},"    return",[82,997,998],{"class":121}," reply",[82,1000,71],{"class":117},[82,1002,1003],{"class":166},"status",[82,1005,170],{"class":869},[82,1007,1008],{"class":303},"402",[82,1010,969],{"class":869},[82,1012,71],{"class":117},[82,1014,1015],{"class":166},"send",[82,1017,170],{"class":869},[82,1019,173],{"class":117},[82,1021,1022],{"class":176}," error",[82,1024,180],{"class":117},[82,1026,132],{"class":131},[82,1028,1029],{"class":92},"Budget exceeded",[82,1031,238],{"class":131},[82,1033,479],{"class":117},[82,1035,1036],{"class":176}," breaches",[82,1038,180],{"class":117},[82,1040,1041],{"class":121}," err",[82,1043,71],{"class":117},[82,1045,1046],{"class":121},"breaches",[82,1048,125],{"class":117},[82,1050,201],{"class":869},[82,1052,1053],{"class":84,"line":309},[82,1054,1055],{"class":117},"  }\n",[82,1057,1058,1061],{"class":84,"line":320},[82,1059,1060],{"class":113},"  throw",[82,1062,1063],{"class":121}," err\n",[82,1065,1066],{"class":84,"line":328},[82,1067,1068],{"class":117},"}\n",[60,1070,1071,1073,1074,1078,1079,1081,1082,1084],{},[64,1072,866],{}," checks the budget but does ",[1075,1076,1077],"strong",{},"not"," auto-track the result — combine with ",[64,1080,368],{}," or ",[64,1083,622],{}," if you want both.",[98,1086,1088],{"id":1087},"framework-quickstarts","Framework quickstarts",[362,1090,1092],{"id":1091},"nextjs-app-router","Next.js (App Router)",[60,1094,1095],{},"Instantiate as a module-level singleton so HMR doesn't leak flush intervals.",[73,1097,1100],{"className":104,"code":1098,"filename":1099,"language":106,"meta":78,"style":78},"import { Margint } from '@margint-ai\u002Fsdk'\n\ndeclare global {\n  var __margint: Margint | undefined\n}\n\nexport const margint =\n  globalThis.__margint ??\n  (globalThis.__margint = new Margint({ apiKey: process.env.MARGINT_API_KEY! }))\n","lib\u002Fmargint.ts",[64,1101,1102,1120,1124,1134,1153,1157,1161,1175,1188],{"__ignoreMap":78},[82,1103,1104,1106,1108,1110,1112,1114,1116,1118],{"class":84,"line":85},[82,1105,114],{"class":113},[82,1107,118],{"class":117},[82,1109,122],{"class":121},[82,1111,125],{"class":117},[82,1113,128],{"class":113},[82,1115,132],{"class":131},[82,1117,66],{"class":92},[82,1119,137],{"class":131},[82,1121,1122],{"class":84,"line":140},[82,1123,144],{"emptyLinePlaceholder":143},[82,1125,1126,1129,1132],{"class":84,"line":147},[82,1127,1128],{"class":150},"declare",[82,1130,1131],{"class":121}," global",[82,1133,848],{"class":117},[82,1135,1136,1139,1142,1144,1146,1149],{"class":84,"line":204},[82,1137,1138],{"class":150},"  var",[82,1140,1141],{"class":121}," __margint",[82,1143,180],{"class":158},[82,1145,122],{"class":986},[82,1147,1148],{"class":158}," |",[82,1150,1152],{"class":1151},"sLiCE"," undefined\n",[82,1154,1155],{"class":84,"line":209},[82,1156,1068],{"class":117},[82,1158,1159],{"class":84,"line":225},[82,1160,144],{"emptyLinePlaceholder":143},[82,1162,1163,1166,1169,1172],{"class":84,"line":244},[82,1164,1165],{"class":113},"export",[82,1167,1168],{"class":150}," const",[82,1170,1171],{"class":154}," margint",[82,1173,1174],{"class":158}," =\n",[82,1176,1177,1180,1182,1185],{"class":84,"line":261},[82,1178,1179],{"class":121},"  globalThis",[82,1181,71],{"class":117},[82,1183,1184],{"class":121},"__margint",[82,1186,1187],{"class":162}," ??\n",[82,1189,1190,1193,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214,1216,1218,1220,1222,1224,1226,1228],{"class":84,"line":278},[82,1191,1192],{"class":169},"  (",[82,1194,1195],{"class":121},"globalThis",[82,1197,71],{"class":117},[82,1199,1184],{"class":121},[82,1201,159],{"class":158},[82,1203,163],{"class":162},[82,1205,122],{"class":166},[82,1207,170],{"class":169},[82,1209,173],{"class":117},[82,1211,177],{"class":176},[82,1213,180],{"class":117},[82,1215,183],{"class":121},[82,1217,71],{"class":117},[82,1219,188],{"class":121},[82,1221,71],{"class":117},[82,1223,193],{"class":154},[82,1225,196],{"class":162},[82,1227,125],{"class":117},[82,1229,1230],{"class":169},"))\n",[73,1232,1235],{"className":104,"code":1233,"filename":1234,"language":106,"meta":78,"style":78},"import { margint } from '@\u002Flib\u002Fmargint'\nimport OpenAI from 'openai'\n\nexport async function POST(req: Request) {\n  const { userId, messages } = await req.json()\n  const client = margint.wrap(new OpenAI(), { customerId: userId, feature: 'chat' })\n  const res = await client.chat.completions.create({ model: 'gpt-4o', messages })\n  return Response.json(res)\n}\n","app\u002Fapi\u002Fchat\u002Froute.ts",[64,1236,1237,1256,1270,1274,1302,1330,1379,1425,1444],{"__ignoreMap":78},[82,1238,1239,1241,1243,1245,1247,1249,1251,1254],{"class":84,"line":85},[82,1240,114],{"class":113},[82,1242,118],{"class":117},[82,1244,1171],{"class":121},[82,1246,125],{"class":117},[82,1248,128],{"class":113},[82,1250,132],{"class":131},[82,1252,1253],{"class":92},"@\u002Flib\u002Fmargint",[82,1255,137],{"class":131},[82,1257,1258,1260,1262,1264,1266,1268],{"class":84,"line":140},[82,1259,114],{"class":113},[82,1261,384],{"class":121},[82,1263,128],{"class":113},[82,1265,132],{"class":131},[82,1267,271],{"class":92},[82,1269,137],{"class":131},[82,1271,1272],{"class":84,"line":147},[82,1273,144],{"emptyLinePlaceholder":143},[82,1275,1276,1278,1281,1284,1287,1289,1293,1295,1298,1300],{"class":84,"line":204},[82,1277,1165],{"class":113},[82,1279,1280],{"class":150}," async",[82,1282,1283],{"class":150}," function",[82,1285,1286],{"class":166}," POST",[82,1288,170],{"class":117},[82,1290,1292],{"class":1291},"smADk","req",[82,1294,180],{"class":158},[82,1296,1297],{"class":986}," Request",[82,1299,969],{"class":117},[82,1301,848],{"class":117},[82,1303,1304,1306,1308,1311,1313,1315,1317,1319,1321,1323,1325,1328],{"class":84,"line":209},[82,1305,853],{"class":150},[82,1307,118],{"class":117},[82,1309,1310],{"class":154}," userId",[82,1312,479],{"class":117},[82,1314,944],{"class":154},[82,1316,125],{"class":117},[82,1318,159],{"class":158},[82,1320,525],{"class":113},[82,1322,677],{"class":121},[82,1324,71],{"class":117},[82,1326,1327],{"class":166},"json",[82,1329,353],{"class":869},[82,1331,1332,1334,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377],{"class":84,"line":225},[82,1333,853],{"class":150},[82,1335,1336],{"class":154}," client",[82,1338,159],{"class":158},[82,1340,1171],{"class":121},[82,1342,71],{"class":117},[82,1344,466],{"class":166},[82,1346,170],{"class":869},[82,1348,471],{"class":162},[82,1350,384],{"class":166},[82,1352,476],{"class":869},[82,1354,479],{"class":117},[82,1356,118],{"class":117},[82,1358,484],{"class":176},[82,1360,180],{"class":117},[82,1362,1310],{"class":121},[82,1364,479],{"class":117},[82,1366,497],{"class":176},[82,1368,180],{"class":117},[82,1370,132],{"class":131},[82,1372,254],{"class":92},[82,1374,238],{"class":131},[82,1376,125],{"class":117},[82,1378,201],{"class":869},[82,1380,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423],{"class":84,"line":244},[82,1382,853],{"class":150},[82,1384,520],{"class":154},[82,1386,159],{"class":158},[82,1388,525],{"class":113},[82,1390,1336],{"class":121},[82,1392,71],{"class":117},[82,1394,254],{"class":121},[82,1396,71],{"class":117},[82,1398,536],{"class":121},[82,1400,71],{"class":117},[82,1402,541],{"class":166},[82,1404,170],{"class":869},[82,1406,173],{"class":117},[82,1408,931],{"class":176},[82,1410,180],{"class":117},[82,1412,132],{"class":131},[82,1414,288],{"class":92},[82,1416,238],{"class":131},[82,1418,479],{"class":117},[82,1420,944],{"class":121},[82,1422,125],{"class":117},[82,1424,201],{"class":869},[82,1426,1427,1430,1433,1435,1437,1439,1442],{"class":84,"line":261},[82,1428,1429],{"class":113},"  return",[82,1431,1432],{"class":121}," Response",[82,1434,71],{"class":117},[82,1436,1327],{"class":166},[82,1438,170],{"class":869},[82,1440,1441],{"class":121},"res",[82,1443,201],{"class":869},[82,1445,1446],{"class":84,"line":278},[82,1447,1068],{"class":117},[60,1449,1450,1451,1454],{},"On serverless, call ",[64,1452,1453],{},"await margint.flush()"," at the end of long-lived handlers for immediate visibility. For short requests the 5 s batch timer is fine.",[362,1456,1458],{"id":1457},"nuxt-3-4","Nuxt 3 \u002F 4",[73,1460,1463],{"className":104,"code":1461,"filename":1462,"language":106,"meta":78,"style":78},"import { Margint } from '@margint-ai\u002Fsdk'\n\nlet instance: Margint | undefined\nexport function useMargint() {\n  return (instance ??= new Margint({ apiKey: process.env.MARGINT_API_KEY! }))\n}\n","server\u002Futils\u002Fmargint.ts",[64,1464,1465,1483,1487,1503,1516,1559],{"__ignoreMap":78},[82,1466,1467,1469,1471,1473,1475,1477,1479,1481],{"class":84,"line":85},[82,1468,114],{"class":113},[82,1470,118],{"class":117},[82,1472,122],{"class":121},[82,1474,125],{"class":117},[82,1476,128],{"class":113},[82,1478,132],{"class":131},[82,1480,66],{"class":92},[82,1482,137],{"class":131},[82,1484,1485],{"class":84,"line":140},[82,1486,144],{"emptyLinePlaceholder":143},[82,1488,1489,1492,1495,1497,1499,1501],{"class":84,"line":147},[82,1490,1491],{"class":150},"let",[82,1493,1494],{"class":121}," instance",[82,1496,180],{"class":158},[82,1498,122],{"class":986},[82,1500,1148],{"class":158},[82,1502,1152],{"class":1151},[82,1504,1505,1507,1509,1512,1514],{"class":84,"line":204},[82,1506,1165],{"class":113},[82,1508,1283],{"class":150},[82,1510,1511],{"class":166}," useMargint",[82,1513,476],{"class":117},[82,1515,848],{"class":117},[82,1517,1518,1520,1522,1525,1528,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557],{"class":84,"line":209},[82,1519,1429],{"class":113},[82,1521,963],{"class":869},[82,1523,1524],{"class":121},"instance",[82,1526,1527],{"class":162}," ??",[82,1529,1530],{"class":158},"=",[82,1532,163],{"class":162},[82,1534,122],{"class":166},[82,1536,170],{"class":869},[82,1538,173],{"class":117},[82,1540,177],{"class":176},[82,1542,180],{"class":117},[82,1544,183],{"class":121},[82,1546,71],{"class":117},[82,1548,188],{"class":121},[82,1550,71],{"class":117},[82,1552,193],{"class":154},[82,1554,196],{"class":162},[82,1556,125],{"class":117},[82,1558,1230],{"class":869},[82,1560,1561],{"class":84,"line":225},[82,1562,1068],{"class":117},[73,1564,1567],{"className":104,"code":1565,"filename":1566,"language":106,"meta":78,"style":78},"import OpenAI from 'openai'\nimport { useMargint } from '..\u002Futils\u002Fmargint'\n\nexport default defineEventHandler(async (event) => {\n  const { userId, messages } = await readBody(event)\n  const client = useMargint().wrap(new OpenAI(), { customerId: userId, feature: 'chat' })\n  return client.chat.completions.create({ model: 'gpt-4o', messages })\n})\n","server\u002Fapi\u002Fchat.post.ts",[64,1568,1569,1583,1602,1606,1632,1659,1709,1749],{"__ignoreMap":78},[82,1570,1571,1573,1575,1577,1579,1581],{"class":84,"line":85},[82,1572,114],{"class":113},[82,1574,384],{"class":121},[82,1576,128],{"class":113},[82,1578,132],{"class":131},[82,1580,271],{"class":92},[82,1582,137],{"class":131},[82,1584,1585,1587,1589,1591,1593,1595,1597,1600],{"class":84,"line":140},[82,1586,114],{"class":113},[82,1588,118],{"class":117},[82,1590,1511],{"class":121},[82,1592,125],{"class":117},[82,1594,128],{"class":113},[82,1596,132],{"class":131},[82,1598,1599],{"class":92},"..\u002Futils\u002Fmargint",[82,1601,137],{"class":131},[82,1603,1604],{"class":84,"line":147},[82,1605,144],{"emptyLinePlaceholder":143},[82,1607,1608,1610,1613,1616,1618,1621,1623,1626,1628,1630],{"class":84,"line":204},[82,1609,1165],{"class":113},[82,1611,1612],{"class":113}," default",[82,1614,1615],{"class":166}," defineEventHandler",[82,1617,170],{"class":169},[82,1619,1620],{"class":150},"async",[82,1622,963],{"class":117},[82,1624,1625],{"class":1291},"event",[82,1627,969],{"class":117},[82,1629,910],{"class":909},[82,1631,848],{"class":117},[82,1633,1634,1636,1638,1640,1642,1644,1646,1648,1650,1653,1655,1657],{"class":84,"line":209},[82,1635,853],{"class":150},[82,1637,118],{"class":117},[82,1639,1310],{"class":154},[82,1641,479],{"class":117},[82,1643,944],{"class":154},[82,1645,125],{"class":117},[82,1647,159],{"class":158},[82,1649,525],{"class":113},[82,1651,1652],{"class":166}," readBody",[82,1654,170],{"class":869},[82,1656,1625],{"class":121},[82,1658,201],{"class":869},[82,1660,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679,1681,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703,1705,1707],{"class":84,"line":225},[82,1662,853],{"class":150},[82,1664,1336],{"class":154},[82,1666,159],{"class":158},[82,1668,1511],{"class":166},[82,1670,476],{"class":869},[82,1672,71],{"class":117},[82,1674,466],{"class":166},[82,1676,170],{"class":869},[82,1678,471],{"class":162},[82,1680,384],{"class":166},[82,1682,476],{"class":869},[82,1684,479],{"class":117},[82,1686,118],{"class":117},[82,1688,484],{"class":176},[82,1690,180],{"class":117},[82,1692,1310],{"class":121},[82,1694,479],{"class":117},[82,1696,497],{"class":176},[82,1698,180],{"class":117},[82,1700,132],{"class":131},[82,1702,254],{"class":92},[82,1704,238],{"class":131},[82,1706,125],{"class":117},[82,1708,201],{"class":869},[82,1710,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739,1741,1743,1745,1747],{"class":84,"line":244},[82,1712,1429],{"class":113},[82,1714,1336],{"class":121},[82,1716,71],{"class":117},[82,1718,254],{"class":121},[82,1720,71],{"class":117},[82,1722,536],{"class":121},[82,1724,71],{"class":117},[82,1726,541],{"class":166},[82,1728,170],{"class":869},[82,1730,173],{"class":117},[82,1732,931],{"class":176},[82,1734,180],{"class":117},[82,1736,132],{"class":131},[82,1738,288],{"class":92},[82,1740,238],{"class":131},[82,1742,479],{"class":117},[82,1744,944],{"class":121},[82,1746,125],{"class":117},[82,1748,201],{"class":869},[82,1750,1751,1753],{"class":84,"line":261},[82,1752,323],{"class":117},[82,1754,201],{"class":169},[362,1756,1758],{"id":1757},"express","Express",[73,1760,1762],{"className":104,"code":1761,"language":106,"meta":78,"style":78},"import express from 'express'\nimport OpenAI from 'openai'\nimport { Margint } from '@margint-ai\u002Fsdk'\n\nconst app = express()\nconst margint = new Margint({ apiKey: process.env.MARGINT_API_KEY! })\n\napp.post('\u002Fchat', async (req, res) => {\n  const client = margint.wrap(new OpenAI(), { customerId: req.user.id, feature: 'chat' })\n  const result = await client.chat.completions.create({ model: 'gpt-4o', messages: req.body.messages })\n  res.json(result)\n})\n\nprocess.on('SIGTERM', async () => {\n  await margint.shutdown()\n  process.exit(0)\n})\n",[64,1763,1764,1779,1793,1811,1815,1828,1864,1868,1905,1961,2022,2038,2044,2048,2078,2091,2109],{"__ignoreMap":78},[82,1765,1766,1768,1771,1773,1775,1777],{"class":84,"line":85},[82,1767,114],{"class":113},[82,1769,1770],{"class":121}," express",[82,1772,128],{"class":113},[82,1774,132],{"class":131},[82,1776,1757],{"class":92},[82,1778,137],{"class":131},[82,1780,1781,1783,1785,1787,1789,1791],{"class":84,"line":140},[82,1782,114],{"class":113},[82,1784,384],{"class":121},[82,1786,128],{"class":113},[82,1788,132],{"class":131},[82,1790,271],{"class":92},[82,1792,137],{"class":131},[82,1794,1795,1797,1799,1801,1803,1805,1807,1809],{"class":84,"line":147},[82,1796,114],{"class":113},[82,1798,118],{"class":117},[82,1800,122],{"class":121},[82,1802,125],{"class":117},[82,1804,128],{"class":113},[82,1806,132],{"class":131},[82,1808,66],{"class":92},[82,1810,137],{"class":131},[82,1812,1813],{"class":84,"line":204},[82,1814,144],{"emptyLinePlaceholder":143},[82,1816,1817,1819,1822,1824,1826],{"class":84,"line":209},[82,1818,151],{"class":150},[82,1820,1821],{"class":154}," app",[82,1823,159],{"class":158},[82,1825,1770],{"class":166},[82,1827,353],{"class":169},[82,1829,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854,1856,1858,1860,1862],{"class":84,"line":225},[82,1831,151],{"class":150},[82,1833,1171],{"class":154},[82,1835,159],{"class":158},[82,1837,163],{"class":162},[82,1839,122],{"class":166},[82,1841,170],{"class":169},[82,1843,173],{"class":117},[82,1845,177],{"class":176},[82,1847,180],{"class":117},[82,1849,183],{"class":121},[82,1851,71],{"class":117},[82,1853,188],{"class":121},[82,1855,71],{"class":117},[82,1857,193],{"class":154},[82,1859,196],{"class":162},[82,1861,125],{"class":117},[82,1863,201],{"class":169},[82,1865,1866],{"class":84,"line":244},[82,1867,144],{"emptyLinePlaceholder":143},[82,1869,1870,1873,1875,1878,1880,1882,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903],{"class":84,"line":261},[82,1871,1872],{"class":121},"app",[82,1874,71],{"class":117},[82,1876,1877],{"class":166},"post",[82,1879,170],{"class":169},[82,1881,238],{"class":131},[82,1883,1884],{"class":92},"\u002Fchat",[82,1886,238],{"class":131},[82,1888,479],{"class":117},[82,1890,1280],{"class":150},[82,1892,963],{"class":117},[82,1894,1292],{"class":1291},[82,1896,479],{"class":117},[82,1898,520],{"class":1291},[82,1900,969],{"class":117},[82,1902,910],{"class":909},[82,1904,848],{"class":117},[82,1906,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959],{"class":84,"line":278},[82,1908,853],{"class":150},[82,1910,1336],{"class":154},[82,1912,159],{"class":158},[82,1914,1171],{"class":121},[82,1916,71],{"class":117},[82,1918,466],{"class":166},[82,1920,170],{"class":869},[82,1922,471],{"class":162},[82,1924,384],{"class":166},[82,1926,476],{"class":869},[82,1928,479],{"class":117},[82,1930,118],{"class":117},[82,1932,484],{"class":176},[82,1934,180],{"class":117},[82,1936,677],{"class":121},[82,1938,71],{"class":117},[82,1940,581],{"class":121},[82,1942,71],{"class":117},[82,1944,686],{"class":121},[82,1946,479],{"class":117},[82,1948,497],{"class":176},[82,1950,180],{"class":117},[82,1952,132],{"class":131},[82,1954,254],{"class":92},[82,1956,238],{"class":131},[82,1958,125],{"class":117},[82,1960,201],{"class":869},[82,1962,1963,1965,1968,1970,1972,1974,1976,1978,1980,1982,1984,1986,1988,1990,1992,1994,1996,1998,2000,2002,2004,2006,2008,2010,2013,2015,2018,2020],{"class":84,"line":295},[82,1964,853],{"class":150},[82,1966,1967],{"class":154}," result",[82,1969,159],{"class":158},[82,1971,525],{"class":113},[82,1973,1336],{"class":121},[82,1975,71],{"class":117},[82,1977,254],{"class":121},[82,1979,71],{"class":117},[82,1981,536],{"class":121},[82,1983,71],{"class":117},[82,1985,541],{"class":166},[82,1987,170],{"class":869},[82,1989,173],{"class":117},[82,1991,931],{"class":176},[82,1993,180],{"class":117},[82,1995,132],{"class":131},[82,1997,288],{"class":92},[82,1999,238],{"class":131},[82,2001,479],{"class":117},[82,2003,944],{"class":176},[82,2005,180],{"class":117},[82,2007,677],{"class":121},[82,2009,71],{"class":117},[82,2011,2012],{"class":121},"body",[82,2014,71],{"class":117},[82,2016,2017],{"class":121},"messages",[82,2019,125],{"class":117},[82,2021,201],{"class":869},[82,2023,2024,2027,2029,2031,2033,2036],{"class":84,"line":309},[82,2025,2026],{"class":121},"  res",[82,2028,71],{"class":117},[82,2030,1327],{"class":166},[82,2032,170],{"class":869},[82,2034,2035],{"class":121},"result",[82,2037,201],{"class":869},[82,2039,2040,2042],{"class":84,"line":320},[82,2041,323],{"class":117},[82,2043,201],{"class":169},[82,2045,2046],{"class":84,"line":328},[82,2047,144],{"emptyLinePlaceholder":143},[82,2049,2050,2053,2055,2058,2060,2062,2065,2067,2069,2071,2074,2076],{"class":84,"line":333},[82,2051,2052],{"class":121},"process",[82,2054,71],{"class":117},[82,2056,2057],{"class":166},"on",[82,2059,170],{"class":169},[82,2061,238],{"class":131},[82,2063,2064],{"class":92},"SIGTERM",[82,2066,238],{"class":131},[82,2068,479],{"class":117},[82,2070,1280],{"class":150},[82,2072,2073],{"class":117}," ()",[82,2075,910],{"class":909},[82,2077,848],{"class":117},[82,2079,2080,2083,2085,2087,2089],{"class":84,"line":340},[82,2081,2082],{"class":113},"  await",[82,2084,1171],{"class":121},[82,2086,71],{"class":117},[82,2088,350],{"class":166},[82,2090,353],{"class":869},[82,2092,2094,2097,2099,2102,2104,2107],{"class":84,"line":2093},16,[82,2095,2096],{"class":121},"  process",[82,2098,71],{"class":117},[82,2100,2101],{"class":166},"exit",[82,2103,170],{"class":869},[82,2105,2106],{"class":303},"0",[82,2108,201],{"class":869},[82,2110,2112,2114],{"class":84,"line":2111},17,[82,2113,323],{"class":117},[82,2115,201],{"class":169},[98,2117,2119],{"id":2118},"configuration","Configuration",[73,2121,2123],{"className":104,"code":2122,"language":106,"meta":78,"style":78},"new Margint({\n  apiKey: string,                 \u002F\u002F required\n  endpoint?: string,              \u002F\u002F default: https:\u002F\u002Fapp.margint.dev\u002Fapi\u002Fingest\u002Fevents\n  budgetEndpoint?: string,        \u002F\u002F default: https:\u002F\u002Fapp.margint.dev\u002Fapi\u002Fbudgets\u002Fcheck\n  flushIntervalMs?: number,       \u002F\u002F default: 5000\n  maxBatchSize?: number,          \u002F\u002F default: 50 (flushes early when reached)\n  budgetCacheTtlMs?: number       \u002F\u002F default: 60000\n})\n",[64,2124,2125,2135,2150,2164,2178,2193,2207,2219],{"__ignoreMap":78},[82,2126,2127,2129,2131,2133],{"class":84,"line":85},[82,2128,471],{"class":162},[82,2130,122],{"class":166},[82,2132,170],{"class":169},[82,2134,222],{"class":117},[82,2136,2137,2140,2142,2145,2147],{"class":84,"line":140},[82,2138,2139],{"class":176},"  apiKey",[82,2141,180],{"class":117},[82,2143,2144],{"class":121}," string",[82,2146,479],{"class":117},[82,2148,2149],{"class":336},"                 \u002F\u002F required\n",[82,2151,2152,2155,2157,2159,2161],{"class":84,"line":147},[82,2153,2154],{"class":169},"  endpoint?",[82,2156,180],{"class":117},[82,2158,2144],{"class":121},[82,2160,479],{"class":117},[82,2162,2163],{"class":336},"              \u002F\u002F default: https:\u002F\u002Fapp.margint.dev\u002Fapi\u002Fingest\u002Fevents\n",[82,2165,2166,2169,2171,2173,2175],{"class":84,"line":204},[82,2167,2168],{"class":169},"  budgetEndpoint?",[82,2170,180],{"class":117},[82,2172,2144],{"class":121},[82,2174,479],{"class":117},[82,2176,2177],{"class":336},"        \u002F\u002F default: https:\u002F\u002Fapp.margint.dev\u002Fapi\u002Fbudgets\u002Fcheck\n",[82,2179,2180,2183,2185,2188,2190],{"class":84,"line":209},[82,2181,2182],{"class":169},"  flushIntervalMs?",[82,2184,180],{"class":117},[82,2186,2187],{"class":121}," number",[82,2189,479],{"class":117},[82,2191,2192],{"class":336},"       \u002F\u002F default: 5000\n",[82,2194,2195,2198,2200,2202,2204],{"class":84,"line":225},[82,2196,2197],{"class":169},"  maxBatchSize?",[82,2199,180],{"class":117},[82,2201,2187],{"class":121},[82,2203,479],{"class":117},[82,2205,2206],{"class":336},"          \u002F\u002F default: 50 (flushes early when reached)\n",[82,2208,2209,2212,2214,2216],{"class":84,"line":244},[82,2210,2211],{"class":169},"  budgetCacheTtlMs?",[82,2213,180],{"class":117},[82,2215,2187],{"class":121},[82,2217,2218],{"class":336},"       \u002F\u002F default: 60000\n",[82,2220,2221,2223],{"class":84,"line":261},[82,2222,323],{"class":117},[82,2224,201],{"class":169},[98,2226,2228],{"id":2227},"troubleshooting","Troubleshooting",[60,2230,2231],{},[1075,2232,2233],{},"Events not appearing?",[2235,2236,2237,2248,2255],"ul",{},[2238,2239,2240,2241,2244,2245,71],"li",{},"Verify ",[64,2242,2243],{},"apiKey"," matches a key in ",[1075,2246,2247],{},"Settings → API Keys",[2238,2249,2250,2251,2254],{},"Call ",[64,2252,2253],{},"await m.flush()"," — the default 5 s timer may not fire in short scripts.",[2238,2256,2257,2258,71],{},"Check egress for ",[64,2259,2260],{},"app.margint.dev",[60,2262,2263],{},[1075,2264,2265],{},"Cost shows as $0?",[2235,2267,2268],{},[2238,2269,2270,2271,2275,2276,2279,2280,2282],{},"Model isn't in the bundled ",[2272,2273,2274],"a",{"href":39},"pricing database",". Pass ",[64,2277,2278],{},"costMicrodollars"," manually on ",[64,2281,622],{},", or email us to add the model.",[60,2284,2285],{},[1075,2286,2287,2289],{},[64,2288,368],{}," doesn't track my calls?",[2235,2291,2292],{},[2238,2293,2294,2295,2298,2299,2302,2303,2305,2306,2309,2310,71],{},"The response must expose ",[64,2296,2297],{},".usage"," (with ",[64,2300,2301],{},"prompt_tokens","\u002F",[64,2304,751],{},") and ",[64,2307,2308],{},".model",". If not, use ",[64,2311,622],{},[2313,2314,2315],"style",{},"html pre.shiki code .s8WwD, html code.shiki .s8WwD{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#B392F0}html pre.shiki code .sgGcy, html code.shiki .sgGcy{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#9ECBFF}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 .sBwTr, html code.shiki .sBwTr{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sCPop, html code.shiki .sCPop{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#E1E4E8}html pre.shiki code .sJ3TI, html code.shiki .sJ3TI{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#E1E4E8}html pre.shiki code .sFbhr, html code.shiki .sFbhr{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#9ECBFF}html pre.shiki code .sVLbc, html code.shiki .sVLbc{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#F97583}html pre.shiki code .szVFR, html code.shiki .szVFR{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#79B8FF}html pre.shiki code .sX7bk, html code.shiki .sX7bk{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#F97583}html pre.shiki code .szqSR, html code.shiki .szqSR{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#F97583}html pre.shiki code .sThQN, html code.shiki .sThQN{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#B392F0}html pre.shiki code .srl0I, html code.shiki .srl0I{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#E1E4E8}html pre.shiki code .ssyos, html code.shiki .ssyos{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#E1E4E8}html pre.shiki code .s4fFo, html code.shiki .s4fFo{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#79B8FF}html pre.shiki code .skvGe, html code.shiki .skvGe{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sK89Q, html code.shiki .sK89Q{--shiki-light:#E53935;--shiki-default:#999999;--shiki-dark:#E1E4E8}html pre.shiki code .s7IML, html code.shiki .s7IML{--shiki-light:#9C3EDA;--shiki-default:#999999;--shiki-dark:#F97583}html pre.shiki code .stoRT, html code.shiki .stoRT{--shiki-light:#E2931D;--shiki-default:#2E8F82;--shiki-dark:#B392F0}html pre.shiki code .sLiCE, html code.shiki .sLiCE{--shiki-light:#E2931D;--shiki-default:#AB5959;--shiki-dark:#79B8FF}html pre.shiki code .smADk, html code.shiki .smADk{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}",{"title":78,"searchDepth":140,"depth":140,"links":2317},[2318,2319,2327,2332,2333],{"id":100,"depth":140,"text":101},{"id":359,"depth":140,"text":360,"children":2320},[2321,2323,2325],{"id":364,"depth":147,"text":2322},"1. wrap() — zero-touch",{"id":625,"depth":147,"text":2324},"2. track() — manual",{"id":804,"depth":147,"text":2326},"3. guardedCall() — budget enforcement",{"id":1087,"depth":140,"text":1088,"children":2328},[2329,2330,2331],{"id":1091,"depth":147,"text":1092},{"id":1457,"depth":147,"text":1458},{"id":1757,"depth":147,"text":1758},{"id":2118,"depth":140,"text":2119},{"id":2227,"depth":140,"text":2228},"@margint-ai\u002Fsdk — per-customer AI cost tracking for Node.js and edge runtimes.","md",{},{"icon":25},{"title":22,"description":2334},"r-4pz18ecnWFXeR4ZlWHJWuJhwymXlx7reljrBVMpas",[2341,2343],{"title":12,"path":13,"stem":14,"description":2342,"icon":15,"children":-1},"From signup to first event in the dashboard — under three minutes.",{"title":27,"path":28,"stem":29,"description":2344,"icon":30,"children":-1},"margint — per-customer AI cost tracking for Python 3.10+.",1777838730393]