[{"data":1,"prerenderedAt":342},["ShallowReactive",2],{"integration:\u002Fintegrations\u002Fopenai-sdk":3},{"id":4,"title":5,"body":6,"description":332,"extension":333,"keywords":334,"logo":335,"meta":336,"navigation":125,"order":337,"path":338,"product":21,"seo":339,"stem":340,"__hash__":341},"integrations\u002Fintegrations\u002Fopenai-sdk.md","Use 402.report with the OpenAI SDK",{"type":7,"value":8,"toc":327},"minimark",[9,27,32,60,75,79,241,245,256,320,323],[10,11,12,13,17,18,22,23,26],"p",{},"Any HTTP client that accepts a ",[14,15,16],"code",{},"baseURL"," + default headers — like the official ",[19,20,21],"strong",{},"OpenAI SDK"," or\n",[19,24,25],{},"axios"," — can route through 402.report so the x402 (HTTP 402) payments it triggers are observed.",[28,29,31],"h2",{"id":30},"_1-install","1. Install",[33,34,39],"pre",{"className":35,"code":36,"language":37,"meta":38,"style":38},"language-bash shiki shiki-themes github-light github-dark","npm install @402report\u002Fsdk openai\n","bash","",[14,40,41],{"__ignoreMap":38},[42,43,46,50,54,57],"span",{"class":44,"line":45},"line",1,[42,47,49],{"class":48},"sScJk","npm",[42,51,53],{"class":52},"sZZnC"," install",[42,55,56],{"class":52}," @402report\u002Fsdk",[42,58,59],{"class":52}," openai\n",[10,61,62,63,66,67,74],{},"Set your key as ",[14,64,65],{},"REPORT402_API_KEY"," (create one in the ",[68,69,73],"a",{"href":70,"rel":71},"https:\u002F\u002F402.report",[72],"nofollow","dashboard",").",[28,76,78],{"id":77},"_2-route-via-baseurl-headers","2. Route via baseURL + headers",[33,80,84],{"className":81,"code":82,"language":83,"meta":38,"style":38},"language-ts shiki shiki-themes github-light github-dark","import OpenAI from \"openai\";\nimport { proxyClientConfig } from \"@402report\u002Fsdk\";\n\nconst { baseURL, headers } = proxyClientConfig({\n  apiKey: process.env.REPORT402_API_KEY!,\n  target: \"https:\u002F\u002Fapi.openai.com\",\n});\n\nconst openai = new OpenAI({\n  apiKey: process.env.OPENAI_API_KEY!,\n  baseURL,\n  defaultHeaders: headers,\n});\n","ts",[14,85,86,105,120,127,157,171,182,188,193,212,224,230,236],{"__ignoreMap":38},[42,87,88,92,96,99,102],{"class":44,"line":45},[42,89,91],{"class":90},"szBVR","import",[42,93,95],{"class":94},"sVt8B"," OpenAI ",[42,97,98],{"class":90},"from",[42,100,101],{"class":52}," \"openai\"",[42,103,104],{"class":94},";\n",[42,106,108,110,113,115,118],{"class":44,"line":107},2,[42,109,91],{"class":90},[42,111,112],{"class":94}," { proxyClientConfig } ",[42,114,98],{"class":90},[42,116,117],{"class":52}," \"@402report\u002Fsdk\"",[42,119,104],{"class":94},[42,121,123],{"class":44,"line":122},3,[42,124,126],{"emptyLinePlaceholder":125},true,"\n",[42,128,130,133,136,139,142,145,148,151,154],{"class":44,"line":129},4,[42,131,132],{"class":90},"const",[42,134,135],{"class":94}," { ",[42,137,16],{"class":138},"sj4cs",[42,140,141],{"class":94},", ",[42,143,144],{"class":138},"headers",[42,146,147],{"class":94}," } ",[42,149,150],{"class":90},"=",[42,152,153],{"class":48}," proxyClientConfig",[42,155,156],{"class":94},"({\n",[42,158,160,163,165,168],{"class":44,"line":159},5,[42,161,162],{"class":94},"  apiKey: process.env.",[42,164,65],{"class":138},[42,166,167],{"class":90},"!",[42,169,170],{"class":94},",\n",[42,172,174,177,180],{"class":44,"line":173},6,[42,175,176],{"class":94},"  target: ",[42,178,179],{"class":52},"\"https:\u002F\u002Fapi.openai.com\"",[42,181,170],{"class":94},[42,183,185],{"class":44,"line":184},7,[42,186,187],{"class":94},"});\n",[42,189,191],{"class":44,"line":190},8,[42,192,126],{"emptyLinePlaceholder":125},[42,194,196,198,201,204,207,210],{"class":44,"line":195},9,[42,197,132],{"class":90},[42,199,200],{"class":138}," openai",[42,202,203],{"class":90}," =",[42,205,206],{"class":90}," new",[42,208,209],{"class":48}," OpenAI",[42,211,156],{"class":94},[42,213,215,217,220,222],{"class":44,"line":214},10,[42,216,162],{"class":94},[42,218,219],{"class":138},"OPENAI_API_KEY",[42,221,167],{"class":90},[42,223,170],{"class":94},[42,225,227],{"class":44,"line":226},11,[42,228,229],{"class":94},"  baseURL,\n",[42,231,233],{"class":44,"line":232},12,[42,234,235],{"class":94},"  defaultHeaders: headers,\n",[42,237,239],{"class":44,"line":238},13,[42,240,187],{"class":94},[28,242,244],{"id":243},"_3-or-use-a-drop-in-fetch","3. Or use a drop-in fetch",[10,246,247,248,251,252,255],{},"If your client accepts a custom ",[14,249,250],{},"fetch"," instead, that's even simpler — no ",[14,253,254],{},"target"," needed, since\neach request's origin is read automatically:",[33,257,259],{"className":81,"code":258,"language":83,"meta":38,"style":38},"import { createProxyFetch } from \"@402report\u002Fsdk\";\n\nconst fetch402 = createProxyFetch({ apiKey: process.env.REPORT402_API_KEY! });\nawait fetch402(\"https:\u002F\u002Fapi.example.com\u002Fpremium\"); \u002F\u002F observed\n",[14,260,261,274,278,300],{"__ignoreMap":38},[42,262,263,265,268,270,272],{"class":44,"line":45},[42,264,91],{"class":90},[42,266,267],{"class":94}," { createProxyFetch } ",[42,269,98],{"class":90},[42,271,117],{"class":52},[42,273,104],{"class":94},[42,275,276],{"class":44,"line":107},[42,277,126],{"emptyLinePlaceholder":125},[42,279,280,282,285,287,290,293,295,297],{"class":44,"line":122},[42,281,132],{"class":90},[42,283,284],{"class":138}," fetch402",[42,286,203],{"class":90},[42,288,289],{"class":48}," createProxyFetch",[42,291,292],{"class":94},"({ apiKey: process.env.",[42,294,65],{"class":138},[42,296,167],{"class":90},[42,298,299],{"class":94}," });\n",[42,301,302,305,307,310,313,316],{"class":44,"line":129},[42,303,304],{"class":90},"await",[42,306,284],{"class":48},[42,308,309],{"class":94},"(",[42,311,312],{"class":52},"\"https:\u002F\u002Fapi.example.com\u002Fpremium\"",[42,314,315],{"class":94},"); ",[42,317,319],{"class":318},"sJ8bj","\u002F\u002F observed\n",[10,321,322],{},"402.report is non-custodial — it observes x402 activity, it never holds or settles funds.",[324,325,326],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":38,"searchDepth":107,"depth":107,"links":328},[329,330,331],{"id":30,"depth":107,"text":31},{"id":77,"depth":107,"text":78},{"id":243,"depth":107,"text":244},"Point the OpenAI SDK (or any baseURL-style client) at 402.report so your agent's x402 payments are observed — set one API key.","md","OpenAI SDK baseURL, x402 OpenAI, agent payment tracking, proxy fetch, agentic payments observability","\u002Fopenai.svg",{},40,"\u002Fintegrations\u002Fopenai-sdk",{"title":5,"description":332},"integrations\u002Fopenai-sdk","lRk_Hqa1NeBZwRmACeARVUjylJgg3L4-TR7amXzcIO4",1784841652811]