{"id":16,"library":"openai","title":"OpenAI: Official Node.js SDK","description":"The official TypeScript and Node.js SDK for the OpenAI API, providing convenient access to frontier models like GPT-5.4, GPT-5.4-mini, and Sora 2. Currently at version 6.34.0, it features auto-retries, native streaming, structured data handling, and robust typing. It is the recommended standard to interact with OpenAI from server-side JavaScript runtimes (Node.js, Deno, Bun, Cloudflare Workers), abstracting away raw HTTP calls and providing seamless integration with advanced capabilities like Computer Use, Tool Search, and WebSocket-based Realtime streams.","status":"active","version":"6.34.0","language":"javascript","source_language":"typescript","source_url":"https://github.com/openai/openai-node","tags":["javascript","ai","llm","openai","gpt","gpt-5","sora","typescript"],"install":[{"cmd":"npm install openai","lang":"bash","label":"npm"},{"cmd":"yarn add openai","lang":"bash","label":"yarn"},{"cmd":"pnpm add openai","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Version 4.0 and above completely rewrote the SDK, removing the separate Configuration and OpenAIApi classes in favor of a single unified default export.","wrong":"import { Configuration, OpenAIApi } from 'openai';\nconst configuration = new Configuration({});\nconst openai = new OpenAIApi(configuration);","symbol":"OpenAI","correct":"import OpenAI from 'openai';\nconst openai = new OpenAI();"},{"note":"Advanced authentication token providers (like Azure Managed Identity or GCP ID token providers) are exposed via the 'openai/auth' subpath to keep the main bundle streamlined.","wrong":"import { azureManagedIdentityTokenProvider } from 'openai';","symbol":"Auth Providers","correct":"import { azureManagedIdentityTokenProvider } from 'openai/auth';"}],"quickstart":{"code":"import OpenAI from 'openai';\n\nconst client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });\n\nasync function main() {\n  const response = await client.chat.completions.create({\n    model: 'gpt-5.4-mini',\n    messages: [{ role: 'user', content: 'What is the speed of light?' }],\n  });\n  console.log(response.choices[0].message.content);\n}\n\nmain();","lang":"typescript","description":"A basic Chat Completions API request using the latest gpt-5.4-mini model, illustrating the standard async initialization and usage pattern."},"warnings":[{"fix":"Rewrite initialization to use `new OpenAI()` and migrate method calls from `openai.createChatCompletion` to `openai.chat.completions.create`.","message":"The v4.0 release was a complete architectural rewrite. Code written for v3 using `Configuration` and `OpenAIApi` will instantly fail and requires a full migration to the new `OpenAI` client instance architecture.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Pass `dangerouslyAllowBrowser: true` to the constructor ONLY if you are absolutely sure about the security implications or are proxying requests securely through a backend.","message":"Attempting to use the SDK in a browser environment will intentionally throw an error by default to prevent leaking API keys to the client side.","severity":"gotcha","affected_versions":"All"},{"fix":"Implement a unique `safety_identifier` per end-user. If access is revoked due to suspicious activity, passing this identifier ensures it only impacts the offending user rather than your entire organization.","message":"With the introduction of new generation capabilities (like Codex and Computer Use), OpenAI implemented automated cybersecurity safeguards. Suspicious traffic patterns may result in sudden HTTP 403 or `cyber_policy` errors.","severity":"gotcha","affected_versions":">=6.0.0"}],"env_vars":["OPENAI_API_KEY","OPENAI_ORG_ID","OPENAI_PROJECT_ID","OPENAI_BASE_URL","OPENAI_LOG"],"last_verified":"2026-05-11T18:51:08.792Z","next_check":"2026-07-20T00:00:00.000Z","problems":[{"fix":"Navigate to platform.openai.com/account/billing, attach a valid payment method, and add an initial credit balance.","cause":"You are attempting to use the API without pre-paid credits. OpenAI APIs are no longer free and require a pre-funded balance, even on newly created accounts or accounts with a ChatGPT Plus subscription (which is billed separately).","error":"Error 429: You exceeded your current quota, please check your plan and billing details"},{"fix":"Move the API call to a backend server/serverless API route. If you must run it in the client, instantiate with `new OpenAI({ dangerouslyAllowBrowser: true })`.","cause":"The SDK detected a browser environment (like React, Vue, or Next.js client-components). OpenAI blocks this to prevent developers from accidentally exposing their secret `OPENAI_API_KEY` in client-side bundles.","error":"Error: It looks like you're running in a browser-like environment. This is disabled by default"},{"fix":"Ensure you provide a valid purpose string. Example: `await openai.files.create({ file: fs.createReadStream('data.jsonl'), purpose: 'assistants' });`","cause":"When uploading files via `openai.files.create`, a `purpose` argument is required to validate the file format. The endpoint strictly expects certain enumerations like 'fine-tune' or 'assistants'.","error":"Error 400: Purpose must be fine-tune/assistants"}],"ecosystem":"npm","meta_description":"openai · official OpenAI Python/JS SDK · pip install openai · from openai import OpenAI · Error 429: quota exceeded · AuthenticationError: invalid API key","install_score":100,"install_tag":"verified","quickstart_score":10,"quickstart_tag":"stale","pypi_latest":null,"install_checks":{"last_tested":"2026-05-11","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"node:18-alpine","python_version":"18","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"node:18-slim","python_version":"18","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"node:20-alpine","python_version":"20","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"node:20-slim","python_version":"20","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"node:22-alpine","python_version":"22","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"node:22-slim","python_version":"22","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.74,"mem_mb":23.6,"disk_size":"46.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.2,"mem_mb":23.6,"disk_size":"46M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.51,"mem_mb":25.4,"disk_size":"50.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.95,"mem_mb":26.2,"disk_size":"50M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.29,"mem_mb":25.2,"disk_size":"42.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.24,"mem_mb":25.2,"disk_size":"41M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.07,"mem_mb":26.2,"disk_size":"41.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.16,"mem_mb":26.2,"disk_size":"41M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.67,"mem_mb":24.5,"disk_size":"46.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.44,"mem_mb":24.5,"disk_size":"45M"}]},"quickstart_checks":{"last_tested":"2026-05-11","tag":"stale","tag_description":"widespread failures or data too old to trust","results":[{"runtime":"node:18-alpine","exit_code":1},{"runtime":"node:18-slim","exit_code":1},{"runtime":"node:20-alpine","exit_code":1},{"runtime":"node:20-slim","exit_code":1},{"runtime":"node:22-alpine","exit_code":1},{"runtime":"node:22-slim","exit_code":1}]}}