What to send
When an AI feature breaks inside an existing app, users see a spinner that never ends, an empty chat bubble or a generic "something went wrong". To scope the fix, send:
- The site or app URL, the page where the chatbot or AI feature lives, and the stack (PHP or Laravel, WordPress plugin, Python/Flask or Django, Node/Express, Next.js or other).
- The provider and model (OpenAI, Anthropic Claude, Azure OpenAI or another), and whether the call is made from your server or directly from the browser.
- The exact error: HTTP status, the
error.typeorerror.codefrom the response body (for examplerate_limit_exceeded,insufficient_quota,model_not_found,overloaded_error) and the matching server log lines. - When it started and what changed just before: a deploy, a library upgrade, a model change, a new API key or project, a billing change, a move behind Cloudflare or Nginx, or a new host.
Send your AI integration error for a written scope and reply within 24 hours. Never paste an API key (sk-... or sk-ant-...) into the public inquiry form.
Common causes of OpenAI and Claude API integrations breaking
- 429 that is really billing, not traffic:
insufficient_quota("You exceeded your current quota, please check your plan and billing details") does not clear by waiting or retrying. The prepaid balance is empty, auto-recharge is off, the key belongs to a different organization or project than the one with credits, or a project-level budget has been reached. - True rate limits:
rate_limit_exceededon requests per minute (RPM) or tokens per minute (TPM). Common triggers are sending the whole chat history on every turn, a largemax_tokensvalue, a cron or batch job sharing the same key as the live chatbot, or a retry loop with no backoff that multiplies traffic. With Claude,529 overloaded_erroris a separate, provider-side condition that needs a short backoff and retry, not a code change. - Streaming works locally but not in production: the response arrives in one block after many seconds because something between your server and the browser buffers it: Nginx with
proxy_buffering on, PHP output buffering or gzip, a Caddy or Apache proxy without flushing, a serverless platform that does not stream the response, or a CDN layer. The fix is usuallyproxy_buffering off,proxy_http_version 1.1, anX-Accel-Buffering: noheader and flushing after each chunk. - Timeouts: long completions exceed a PHP
max_execution_time, a proxyproxy_read_timeout, a load-balancer idle timeout or a serverless function limit, so the connection closes mid-answer with an incomplete chunked read or a 504. - Retired models and SDK upgrades: a hard-coded model name that has been retired returns
model_not_found, or a major SDK upgrade changed the call shape (for example the move fromopenai.ChatCompletion.createtoclient.chat.completions.createin the Python library), so the code fails after a routine dependency update. - Key exposure and CORS: the key was called from browser JavaScript, got leaked and revoked, or the browser blocks the request with a CORS error. Calls belong on your server, with the key in an environment variable.
- Malformed requests:
400 invalid_request_errorfrom a context window overflow, an empty message, a wrong role order or invalid tool definitions, often only on long conversations.
Safe checks you can run yourself
- Read the error body, not just the status. A 429 with
insufficient_quotais billing; a 429 withrate_limit_exceededis traffic. They need different fixes. - Check billing and limits for the right project. In the provider dashboard, confirm the balance, the project the key belongs to, any monthly budget, and your rate limits for the model you call.
- Call the API once outside your app. A single
curlrequest with the same key and model from your server shows whether the problem is the account or your code. - Test streaming without the proxy. Hit the app server directly, bypassing Nginx, Cloudflare or the CDN. If tokens stream there and not through the public URL, the problem is buffering, not the AI code.
- Check the provider status page for an ongoing incident before changing anything.
If these do not find it, stop rotating keys and changing models at random; send the details so the failing request can be reproduced exactly.
Price, delivery and guarantee
Affordable and low-cost does not mean open-ended: this fix is a $99 fixed price, agreed in writing before work starts, delivered within 48 hours of receiving the required access.
- Fully written. No calls and no project managers.
- Reproduced and fixed on a staging copy or a separate API project first, then released to production after you approve it.
- You receive written proof: the root cause, what changed, a successful request or stream recording, and a rollback note.
- Money-back guarantee if the agreed root cause cannot be resolved.
- Where it fits the fix: exponential backoff with jitter for 429 and overloaded responses, a trimmed conversation history, and a friendly fallback message instead of a silent failure.
A new chatbot, a RAG knowledge base, a provider migration or a new AI feature is outside the fixed price and receives a separate written quote. See AI and LLM integration services for that work, or API integration development for wider integration work.
FAQ
How much does it cost to fix an OpenAI API error or a chatbot that stopped responding?
The fix is $99 fixed price for the confirmed issue, including root-cause diagnosis, a staging test, the fix, written proof and a rollback note. Typical agency hourly rates are higher and open-ended, while very low marketplace gig prices rarely include root-cause diagnosis, staging tests or a guarantee. API usage charges from OpenAI or Anthropic stay on your own account.
What is the best way to fix OpenAI 429 errors?
First read the error code. For insufficient_quota, fix billing or the key's project; retries will not help. For rate_limit_exceeded, reduce tokens per request, separate background jobs from the live feature, and add exponential backoff with jitter. Request a higher limit only after the integration stops wasting tokens.
Why does streaming work on my laptop but not on the live site?
Almost always because a layer in production buffers the response: Nginx, PHP output buffering, compression, a CDN or a serverless platform. The AI call itself is usually fine.
Do you need my production API key?
Usually not. Most fixes are done on staging with a separate key or project that has a small budget. If production configuration must change, you make the change from written steps, or create a key you revoke afterwards.
Does this cover Claude and other providers?
Yes: OpenAI, Anthropic Claude and Azure OpenAI integrations in PHP, Laravel, WordPress, Python/Flask, Node and Next.js apps. Portfolio work includes a Python/Flask production platform built on the OpenAI API for script generation and Whisper subtitles.
Can this be done without calls?
Yes. Everything is in writing: scope, questions, approval and delivery.
Next step
Send the error body and the log lines and get a written fixed-price scope within 24 hours. For how written, async bug fixing works end to end, read how a production bug gets fixed in 48 hours, async.