diff --git a/docs/platforms/javascript/common/configuration/integrations/openai.mdx b/docs/platforms/javascript/common/configuration/integrations/openai.mdx
new file mode 100644
index 0000000000000..c3d4d2734707b
--- /dev/null
+++ b/docs/platforms/javascript/common/configuration/integrations/openai.mdx
@@ -0,0 +1,143 @@
+---
+title: OpenAI
+description: "Adds instrumentation for OpenAI API."
+supported:
+ - javascript.node
+ - javascript.aws-lambda
+ - javascript.azure-functions
+ - javascript.connect
+ - javascript.express
+ - javascript.fastify
+ - javascript.gcp-functions
+ - javascript.hapi
+ - javascript.hono
+ - javascript.koa
+ - javascript.nestjs
+ - javascript.electron
+ - javascript.nextjs
+ - javascript.nuxt
+ - javascript.solidstart
+ - javascript.sveltekit
+ - javascript.react-router
+ - javascript.remix
+ - javascript.astro
+ - javascript.bun
+ - javascript.tanstackstart-react
+ - javascript.cloudflare
+---
+
+
+
+This integration works in the Node.js, Cloudflare Workers, Vercel Edge Functions runtimes. It requires SDK version `10.2.0` or higher.
+
+
+
+_Import name: `Sentry.openAIIntegration`_
+
+The `openAIIntegration` adds instrumentation for the `openai` API to capture spans by automatically wrapping OpenAI client calls and recording LLM interactions with configurable input/output recording.
+
+
+It is enabled by default and will automatically capture spans for OpenAI API method calls. You can opt-in to capture inputs and outputs by setting `recordInputs` and `recordOutputs` in the integration config:
+
+```javascript
+Sentry.init({
+ dsn: "____PUBLIC_DSN____",
+ tracesSampleRate: 1.0,
+ integrations: [
+ Sentry.openAIIntegration({
+ recordInputs: true,
+ recordOutputs: true,
+ }),
+ ],
+});
+```
+
+
+
+
+For Cloudflare Workers, you need to manually instrument the OpenAI client using the `instrumentOpenAiClient` helper:
+
+```javascript
+import * as Sentry from "@sentry/cloudflare";
+import OpenAI from "openai";
+
+const openai = new OpenAI();
+const client = Sentry.instrumentOpenAiClient(openai, {
+ recordInputs: true,
+ recordOutputs: true,
+});
+
+// Use the wrapped client instead of the original openai instance
+const response = await client.chat.completions.create({
+ model: "gpt-4o",
+ messages: [{ role: "user", content: "Hello!" }],
+});
+```
+
+
+
+
+
+This integration is automatically instrumented in the Node.js runtime. For Next.js applications using the Edge runtime, you need to manually instrument the OpenAI client:
+
+```javascript
+import * as Sentry from "@sentry/nextjs";
+import OpenAI from "openai";
+
+const openai = new OpenAI();
+const client = Sentry.instrumentOpenAiClient(openai, {
+ recordInputs: true,
+ recordOutputs: true,
+});
+
+// Use the wrapped client instead of the original openai instance
+const response = await client.chat.completions.create({
+ model: "gpt-4o",
+ messages: [{ role: "user", content: "Hello!" }],
+});
+```
+
+
+
+## Options
+
+### `recordInputs`
+
+_Type: `boolean`_
+
+Records inputs to OpenAI API method calls (such as prompts and messages).
+
+Defaults to `true` if `sendDefaultPii` is `true`.
+
+```javascript
+Sentry.init({
+ integrations: [Sentry.openAIIntegration({ recordInputs: true })],
+});
+```
+
+### `recordOutputs`
+
+_Type: `boolean`_
+
+Records outputs from OpenAI API method calls (such as generated text and responses).
+
+Defaults to `true` if `sendDefaultPii` is `true`.
+
+```javascript
+Sentry.init({
+ integrations: [Sentry.openAIIntegration({ recordOutputs: true })],
+});
+```
+
+## Configuration
+
+By default this integration adds tracing support to OpenAI API method calls including:
+
+- `chat.completions.create()` - Chat completion requests
+- `responses.create()` - Response API requests
+
+The integration will automatically detect streaming vs non-streaming requests and handle them appropriately.
+
+## Supported Versions
+
+- `openai`: `>=4.0.0 <6`
diff --git a/platform-includes/configuration/integrations/javascript.astro.mdx b/platform-includes/configuration/integrations/javascript.astro.mdx
index 82a79000747cb..6714b5150fe30 100644
--- a/platform-includes/configuration/integrations/javascript.astro.mdx
+++ b/platform-includes/configuration/integrations/javascript.astro.mdx
@@ -81,3 +81,4 @@ Depending on whether an integration enhances the functionality of a particular r
| [`localVariablesIntegration`](./localvariables) | | ✓ | | |
| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | |
| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
diff --git a/platform-includes/configuration/integrations/javascript.aws-lambda.mdx b/platform-includes/configuration/integrations/javascript.aws-lambda.mdx
index da20b0d8372bb..fcb6851d4025a 100644
--- a/platform-includes/configuration/integrations/javascript.aws-lambda.mdx
+++ b/platform-includes/configuration/integrations/javascript.aws-lambda.mdx
@@ -18,6 +18,7 @@
| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | |
| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ |
| [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
| [`amqplibIntegration`](./amqplib) | | | ✓ | |
| [`anrIntegration`](./anr) | | ✓ | | |
| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ |
diff --git a/platform-includes/configuration/integrations/javascript.bun.mdx b/platform-includes/configuration/integrations/javascript.bun.mdx
index da3c317d233cf..ad44371c98bac 100644
--- a/platform-includes/configuration/integrations/javascript.bun.mdx
+++ b/platform-includes/configuration/integrations/javascript.bun.mdx
@@ -30,6 +30,7 @@
| [`tediousIntegration`](./tedious) | ✓ | | ✓ | |
| [`prismaIntegration`](./prisma) | ✓ | | ✓ | |
| [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ |
| [`dataloaderIntegration`](./dataloader) | | | ✓ | |
| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ |
diff --git a/platform-includes/configuration/integrations/javascript.connect.mdx b/platform-includes/configuration/integrations/javascript.connect.mdx
index c5381631500bd..e767b5dcad9bd 100644
--- a/platform-includes/configuration/integrations/javascript.connect.mdx
+++ b/platform-includes/configuration/integrations/javascript.connect.mdx
@@ -31,6 +31,7 @@
| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ |
| [`rewriteFramesIntegration`](./rewriteframes) | ✓ | ✓ | | |
| [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
| [`anrIntegration`](./anr) | | ✓ | | |
| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ |
| [`eventLoopBlockIntegration`](./event-loop-block) | | ✓ | | |
diff --git a/platform-includes/configuration/integrations/javascript.fastify.mdx b/platform-includes/configuration/integrations/javascript.fastify.mdx
index 3e50202ca7c6c..37655ce773083 100644
--- a/platform-includes/configuration/integrations/javascript.fastify.mdx
+++ b/platform-includes/configuration/integrations/javascript.fastify.mdx
@@ -31,6 +31,7 @@
| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ |
| [`prismaIntegration`](./prisma) | ✓ | | ✓ | |
| [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
| [`anrIntegration`](./anr) | | ✓ | | |
| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ |
| [`eventLoopBlockIntegration`](./event-loop-block) | | ✓ | | |
diff --git a/platform-includes/configuration/integrations/javascript.gcp-functions.mdx b/platform-includes/configuration/integrations/javascript.gcp-functions.mdx
index 93e081114ab14..8c47081af6886 100644
--- a/platform-includes/configuration/integrations/javascript.gcp-functions.mdx
+++ b/platform-includes/configuration/integrations/javascript.gcp-functions.mdx
@@ -18,6 +18,7 @@
| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | |
| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ |
| [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
| [`amqplibIntegration`](./amqplib) | | | ✓ | |
| [`anrIntegration`](./anr) | | ✓ | | |
| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ |
diff --git a/platform-includes/configuration/integrations/javascript.hapi.mdx b/platform-includes/configuration/integrations/javascript.hapi.mdx
index eeb97654ea56d..fdb2607e09a41 100644
--- a/platform-includes/configuration/integrations/javascript.hapi.mdx
+++ b/platform-includes/configuration/integrations/javascript.hapi.mdx
@@ -31,6 +31,7 @@
| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ |
| [`prismaIntegration`](./prisma) | ✓ | | ✓ | |
| [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
| [`anrIntegration`](./anr) | | ✓ | | |
| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ |
| [`eventLoopBlockIntegration`](./event-loop-block) | | ✓ | | |
diff --git a/platform-includes/configuration/integrations/javascript.nestjs.mdx b/platform-includes/configuration/integrations/javascript.nestjs.mdx
index 5709781760c40..9e85b0fab02ac 100644
--- a/platform-includes/configuration/integrations/javascript.nestjs.mdx
+++ b/platform-includes/configuration/integrations/javascript.nestjs.mdx
@@ -44,3 +44,4 @@
| [`supabaseIntegration`](./supabase) | | ✓ | ✓ | |
| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ |
| [`unleashIntegration`](./unleash) | | | | ✓ |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
diff --git a/platform-includes/configuration/integrations/javascript.nextjs.mdx b/platform-includes/configuration/integrations/javascript.nextjs.mdx
index debf2424b04b2..de0210f691ca7 100644
--- a/platform-includes/configuration/integrations/javascript.nextjs.mdx
+++ b/platform-includes/configuration/integrations/javascript.nextjs.mdx
@@ -87,6 +87,7 @@ Depending on whether an integration enhances the functionality of a particular r
| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | |
| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ |
| [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | ✓ |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
### Edge Integrations
diff --git a/platform-includes/configuration/integrations/javascript.node.mdx b/platform-includes/configuration/integrations/javascript.node.mdx
index 9fcc6fb42926d..d9be6d22d671c 100644
--- a/platform-includes/configuration/integrations/javascript.node.mdx
+++ b/platform-includes/configuration/integrations/javascript.node.mdx
@@ -42,3 +42,4 @@
| [`supabaseIntegration`](./supabase) | | ✓ | ✓ | |
| [`tediousIntegration`](./tedious) | ✓ | | ✓ | |
| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
diff --git a/platform-includes/configuration/integrations/javascript.nuxt.mdx b/platform-includes/configuration/integrations/javascript.nuxt.mdx
index fe3227f1a55af..4b25f09ab5b0a 100644
--- a/platform-includes/configuration/integrations/javascript.nuxt.mdx
+++ b/platform-includes/configuration/integrations/javascript.nuxt.mdx
@@ -80,3 +80,4 @@ Depending on whether an integration enhances the functionality of a particular r
| [`localVariablesIntegration`](./localvariables) | | ✓ | | |
| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | |
| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
diff --git a/platform-includes/configuration/integrations/javascript.remix.mdx b/platform-includes/configuration/integrations/javascript.remix.mdx
index 243acaaca43af..8849cca15c3a0 100644
--- a/platform-includes/configuration/integrations/javascript.remix.mdx
+++ b/platform-includes/configuration/integrations/javascript.remix.mdx
@@ -80,3 +80,4 @@ Depending on whether an integration enhances the functionality of a particular r
| [`localVariablesIntegration`](./localvariables) | | ✓ | | |
| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | |
| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
diff --git a/platform-includes/configuration/integrations/javascript.solidstart.mdx b/platform-includes/configuration/integrations/javascript.solidstart.mdx
index 0bbe29a566028..f58c659fd8997 100644
--- a/platform-includes/configuration/integrations/javascript.solidstart.mdx
+++ b/platform-includes/configuration/integrations/javascript.solidstart.mdx
@@ -80,3 +80,4 @@ Depending on whether an integration enhances the functionality of a particular r
| [`localVariablesIntegration`](./localvariables) | | ✓ | | |
| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | |
| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |
diff --git a/platform-includes/configuration/integrations/javascript.sveltekit.mdx b/platform-includes/configuration/integrations/javascript.sveltekit.mdx
index 7769fc4adcb71..82da16a61135f 100644
--- a/platform-includes/configuration/integrations/javascript.sveltekit.mdx
+++ b/platform-includes/configuration/integrations/javascript.sveltekit.mdx
@@ -80,3 +80,4 @@ Depending on whether an integration enhances the functionality of a particular r
| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | |
| [`supabaseIntegration`](./supabase) | | ✓ | ✓ | |
| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ |
+| [`openAIIntegration`](./openai) | ✓ | | ✓ | |