[{"data":1,"prerenderedAt":506},["ShallowReactive",2],{"navigation_docs_en":3,"-en-advertiser-api-estimate":135,"-en-advertiser-api-estimate-surround":501},[4,18,47,60,69,102,131],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Getting Started","\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[9,13],{"title":10,"path":11,"stem":12},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F1.getting-started\u002F1.installation",{"title":14,"path":15,"stem":16},"Configuration","\u002Fen\u002Fgetting-started\u002Fconfiguration","en\u002F1.getting-started\u002F2.configuration",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Features","\u002Fen\u002Ffeatures","en\u002F2.features",[23,27,31,35,39,43],{"title":24,"path":25,"stem":26},"Page View Tracking","\u002Fen\u002Ffeatures\u002Fpageview-tracking","en\u002F2.features\u002F1.pageview-tracking",{"title":28,"path":29,"stem":30},"Conversion Tracking","\u002Fen\u002Ffeatures\u002Fconversion-tracking","en\u002F2.features\u002F2.conversion-tracking",{"title":32,"path":33,"stem":34},"SPA Support","\u002Fen\u002Ffeatures\u002Fspa-support","en\u002F2.features\u002F3.spa-support",{"title":36,"path":37,"stem":38},"React & Next.js","\u002Fen\u002Ffeatures\u002Freact-integration","en\u002F2.features\u002F4.react-integration",{"title":40,"path":41,"stem":42},"Vue & Nuxt","\u002Fen\u002Ffeatures\u002Fvue-integration","en\u002F2.features\u002F5.vue-integration",{"title":44,"path":45,"stem":46},"Google Tag Manager","\u002Fen\u002Ffeatures\u002Fgtm-integration","en\u002F2.features\u002F6.gtm-integration",{"title":48,"path":49,"stem":50,"children":51,"page":17},"Api","\u002Fen\u002Fapi","en\u002F3.api",[52,56],{"title":53,"path":54,"stem":55},"API Reference","\u002Fen\u002Fapi\u002Freference","en\u002F3.api\u002F1.reference",{"title":57,"path":58,"stem":59},"Events Reference","\u002Fen\u002Fapi\u002Fevents-reference","en\u002F3.api\u002F2.events-reference",{"title":61,"path":62,"stem":63,"children":64,"page":17},"Privacy","\u002Fen\u002Fprivacy","en\u002F4.privacy",[65],{"title":66,"path":67,"stem":68},"Data Collection & Privacy","\u002Fen\u002Fprivacy\u002Fdata-collection","en\u002F4.privacy\u002F1.data-collection",{"title":70,"path":71,"stem":72,"children":73,"page":17},"Chat SDK","\u002Fen\u002Fchat-sdk","en\u002F5.chat-sdk",[74,78,82,86,90,94,98],{"title":75,"path":76,"stem":77},"Chat SDK Getting Started","\u002Fen\u002Fchat-sdk\u002Fgetting-started","en\u002F5.chat-sdk\u002F1.getting-started",{"title":79,"path":80,"stem":81},"Vue Non-chat Integration","\u002Fen\u002Fchat-sdk\u002Fvue-non-chat","en\u002F5.chat-sdk\u002F2.vue-non-chat",{"title":83,"path":84,"stem":85},"React Integration","\u002Fen\u002Fchat-sdk\u002Freact-integration","en\u002F5.chat-sdk\u002F3.react-integration",{"title":87,"path":88,"stem":89},"AI SDK Middleware","\u002Fen\u002Fchat-sdk\u002Fai-sdk-middleware","en\u002F5.chat-sdk\u002F4.ai-sdk-middleware",{"title":91,"path":92,"stem":93},"Ad Formats","\u002Fen\u002Fchat-sdk\u002Fad-formats","en\u002F5.chat-sdk\u002F5.ad-formats",{"title":95,"path":96,"stem":97},"Tracking and Attribution","\u002Fen\u002Fchat-sdk\u002Ftracking-and-attribution","en\u002F5.chat-sdk\u002F6.tracking-and-attribution",{"title":99,"path":100,"stem":101},"Troubleshooting","\u002Fen\u002Fchat-sdk\u002Ftroubleshooting","en\u002F5.chat-sdk\u002F7.troubleshooting",{"title":103,"path":104,"stem":105,"children":106,"page":17},"Advertiser API","\u002Fen\u002Fadvertiser-api","en\u002F6.advertiser-api",[107,111,115,119,123,127],{"title":108,"path":109,"stem":110},"Overview","\u002Fen\u002Fadvertiser-api\u002Foverview","en\u002F6.advertiser-api\u002F1.overview",{"title":112,"path":113,"stem":114},"Read","\u002Fen\u002Fadvertiser-api\u002Fread","en\u002F6.advertiser-api\u002F2.read",{"title":116,"path":117,"stem":118},"Write","\u002Fen\u002Fadvertiser-api\u002Fwrite","en\u002F6.advertiser-api\u002F3.write",{"title":120,"path":121,"stem":122},"Conversions API","\u002Fen\u002Fadvertiser-api\u002Fconversions","en\u002F6.advertiser-api\u002F4.conversions",{"title":124,"path":125,"stem":126},"MCP server","\u002Fen\u002Fadvertiser-api\u002Fmcp","en\u002F6.advertiser-api\u002F5.mcp",{"title":128,"path":129,"stem":130},"Estimate","\u002Fen\u002Fadvertiser-api\u002Festimate","en\u002F6.advertiser-api\u002F6.estimate",{"title":132,"path":133,"stem":134},"Start Here","\u002Fen\u002Fstart-here","en\u002Fstart-here",{"id":136,"title":128,"body":137,"description":494,"extension":495,"links":496,"meta":497,"navigation":498,"path":129,"seo":499,"stem":130,"__hash__":500},"docs_en\u002Fen\u002F6.advertiser-api\u002F6.estimate.md",{"type":138,"value":139,"toc":490},"minimark",[140,144,160,207,248,254,261,403,408,415,428,431,438,441,445,466,469,479,486],[141,142,128],"h1",{"id":143},"estimate",[145,146,147,151,152,155,156,159],"p",{},[148,149,150],"code",{},"GET \u002Festimate"," requires the ",[148,153,154],{},"read"," scope. It calls one database function, ",[148,157,158],{},"estimate_budget_delivery",". The public site, Ads Manager, and this API use that same function.",[161,162,167],"pre",{"className":163,"code":164,"language":165,"meta":166,"style":166},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl 'https:\u002F\u002Ftyfrhxfejrawgdlhryfu.supabase.co\u002Ffunctions\u002Fv1\u002Fadvertiser-api\u002Festimate?deposit_cents=5000&billing_model=cpm&apply_first_deposit_bonus=true' \\\n  -H 'Authorization: Bearer idl_adv_xxx'\n","bash","",[148,168,169,193],{"__ignoreMap":166},[170,171,174,178,182,186,189],"span",{"class":172,"line":173},"line",1,[170,175,177],{"class":176},"sBMFI","curl",[170,179,181],{"class":180},"sMK4o"," '",[170,183,185],{"class":184},"sfazB","https:\u002F\u002Ftyfrhxfejrawgdlhryfu.supabase.co\u002Ffunctions\u002Fv1\u002Fadvertiser-api\u002Festimate?deposit_cents=5000&billing_model=cpm&apply_first_deposit_bonus=true",[170,187,188],{"class":180},"'",[170,190,192],{"class":191},"sTEyZ"," \\\n",[170,194,196,199,201,204],{"class":172,"line":195},2,[170,197,198],{"class":184},"  -H",[170,200,181],{"class":180},[170,202,203],{"class":184},"Authorization: Bearer idl_adv_xxx",[170,205,206],{"class":180},"'\n",[145,208,209,210,213,214,217,218,221,222,213,225,228,229,232,233,236,237,240,241,244,245,247],{},"Pass ",[148,211,212],{},"budget_cents"," or ",[148,215,216],{},"deposit_cents",". Amounts are euro cents. ",[148,219,220],{},"billing_model"," is ",[148,223,224],{},"cpm",[148,226,227],{},"cpc",". Omit ",[148,230,231],{},"bid_cents"," to use the median price charged in the window. ",[148,234,235],{},"countries"," and ",[148,238,239],{},"placements"," are comma-separated. ",[148,242,243],{},"daily=true"," treats ",[148,246,212],{}," as one day.",[145,249,250,253],{},[148,251,252],{},"apply_first_deposit_bonus=true"," adds the configured first-deposit bonus when the deposit qualifies. A first deposit of €50 is estimated as €100 of credit.",[145,255,256,257,260],{},"The response is ",[148,258,259],{},"{ \"data\": { ... } }",".",[262,263,264,277],"table",{},[265,266,267],"thead",{},[268,269,270,274],"tr",{},[271,272,273],"th",{},"Field",[271,275,276],{},"Meaning",[278,279,280,296,314,335,345,361,373,383,393],"tbody",{},[268,281,282,288],{},[283,284,285],"td",{},[148,286,287],{},"status",[283,289,290,213,293],{},[148,291,292],{},"ok",[148,294,295],{},"not_enough_data",[268,297,298,303],{},[283,299,300],{},[148,301,302],{},"reason",[283,304,305,306,309,310,313],{},"Why the range is empty or withheld. ",[148,307,308],{},"too_few_wins"," means the bid clears too little of the observed market. ",[148,311,312],{},"budget_below_one_unit"," means the credit does not cover one billed unit.",[268,315,316,328],{},[283,317,318,321,322,321,325],{},[148,319,320],{},"window_start",", ",[148,323,324],{},"window_end",[148,326,327],{},"window_days",[283,329,330,331,334],{},"The delivery window. The length is ",[148,332,333],{},"platform_settings.budget_estimate.windowDays"," (default 28).",[268,336,337,342],{},[283,338,339],{},[148,340,341],{},"credit_cents",[283,343,344],{},"What the estimate spends, after a bonus when one applies",[268,346,347,355],{},[283,348,349,321,352],{},[148,350,351],{},"impressions",[148,353,354],{},"clicks",[283,356,357,360],{},[148,358,359],{},"{ \"low\", \"high\" }",", or null",[268,362,363,368],{},[283,364,365],{},[148,366,367],{},"clicks_status",[283,369,370,372],{},[148,371,295],{}," when there are not enough clicks to publish a click range",[268,374,375,380],{},[283,376,377],{},[148,378,379],{},"win_share",[283,381,382],{},"Share of priced auctions in the window below this bid's eCPM. Omitted when that share is too small to publish.",[268,384,385,390],{},[283,386,387],{},[148,388,389],{},"market_ecpm_cents",[283,391,392],{},"25th and 75th percentile of charged prices in the slice, in eCPM cents",[268,394,395,400],{},[283,396,397],{},[148,398,399],{},"method",[283,401,402],{},"The calculation, in one paragraph",[404,405,407],"h2",{"id":406},"how-the-range-is-calculated","How the range is calculated",[145,409,410,411,414],{},"Inventory is the impressions delivered in the window, for the countries and placements you set. A placement matches an ad-set placement, an ad format, or the surface stored on the impression (",[148,412,413],{},"editor",").",[145,416,417,418,421,422,236,425,260],{},"A bid wins the share of those auctions whose observed charged price, converted to eCPM, is below the bid. CPM eCPM is the bid in cents per 1 000 impressions. CPC eCPM is the bid times the smoothed CTR ",[148,419,420],{},"(clicks + 1) \u002F (impressions + 50)",", the same prior delivery uses in ",[148,423,424],{},"serve_ad_v2_paid",[148,426,427],{},"serve_chat_ad_core",[145,429,430],{},"Charged prices come from billed CPM impressions, CPC click charges, and auction clearing prices when a log row is tied to the impression. The price this bid would pay is the 25th to 75th percentile of the auctions it would win, capped at the bid. CPM impressions are billed in whole cents, at least 1 cent, the same way an impression is recorded.",[145,432,433,434,437],{},"The credit cannot buy more than the inventory that bid would have won over the horizon. A daily budget uses one day of that inventory. The low end is reduced by ",[148,435,436],{},"safetyMargin"," (default 0.2). When there are enough clicks, the click bounds also use an 80% Wilson interval of the observed CTR.",[145,439,440],{},"Empty chat requests are extra inventory only when that unfilled count itself clears the minimum volume.",[404,442,444],{"id":443},"not-enough-data","Not enough data",[145,446,447,448,236,451,321,454,221,456,458,459,462,463,465],{},"If the slice has fewer impressions or priced auctions than ",[148,449,450],{},"minImpressions",[148,452,453],{},"minPriceObservations",[148,455,287],{},[148,457,295],{},". Counts are omitted. The same happens for clicks below ",[148,460,461],{},"minClicks",": the impression range can still be present, and ",[148,464,354],{}," is null.",[145,467,468],{},"The result is a platform aggregate. It does not include another advertiser's campaigns, ads, or bids.",[145,470,471,472,475,476,478],{},"An invalid bid, country, or amount is HTTP 400 with ",[148,473,474],{},"invalid_request",". ",[148,477,295],{}," is HTTP 200.",[145,480,481,482,485],{},"The MCP tool is ",[148,483,484],{},"estimate_budget",". It sends this route.",[487,488,489],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .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);}",{"title":166,"searchDepth":195,"depth":195,"links":491},[492,493],{"id":406,"depth":195,"text":407},{"id":443,"depth":195,"text":444},"Estimate impressions and clicks from recent delivery","md",null,{},true,{"title":128,"description":494},"C4FLrEIWdOwcVzFKMEwrTh89i-NvG5Frcg6Ikiy4DaE",[502,504],{"title":124,"path":125,"stem":126,"description":503,"children":-1},"Streamable HTTP MCP server for the Advertiser API, with 15 tools",{"title":132,"path":133,"stem":134,"description":505,"children":-1},"Choose the right documentation path for your integration",1793864620375]