LLM MonitoringUpdated July 2026

OpenRouter API Monitoring Guide 2026

How to monitor the OpenRouter API in production — status tracking, credit-based rate limits, error decoding, and automated alerts for a multi-provider LLM router.

TL;DR

  • OpenRouter has an official status page at status.openrouter.ai — bookmark it or subscribe to updates
  • Rate limits scale with your credit balance, not a flat per-tier RPM — free models cap around 20 RPM / 50–1,000 requests per day
  • A 502 usually means the upstream provider failed, not OpenRouter itself — configure fallback routing
  • OpenRouter is OpenAI-compatible — point the OpenAI SDK at openrouter.ai/api/v1

Why OpenRouter Monitoring Is Different

OpenRouter is a unified API that routes requests to dozens of upstream model providers — OpenAI, Anthropic, Google, Meta, DeepSeek, Mistral, and many others — behind a single OpenAI-compatible endpoint. That architecture makes monitoring OpenRouter fundamentally different from monitoring a single-provider API: an outage can originate at OpenRouter's own routing layer, or at any one of the upstream providers it's forwarding to.

Without layered monitoring, teams often misdiagnose the failure point:

  • A 502 from OpenRouter gets treated as "OpenRouter is down" when the real cause is one upstream provider having an incident
  • A free-tier account silently caps out at ~50 requests/day and requests start failing without an obvious reason
  • Credit balance runs out mid-production-run and every subsequent request fails with 402
  • No provider-level fallback is configured, so a single upstream outage takes down requests that could have been routed elsewhere
📡
Recommended

Monitor your services before your users notice

Try Better Stack Free →

Where to Check OpenRouter Status

OpenRouter Status Page

status.openrouter.ai

Covers: OpenRouter's own routing layer and API availability

Official — OpenRouter posts incidents and maintenance windows hereDoes not cover upstream model-provider outages individually

OpenRouter Activity Dashboard

openrouter.ai/activity

Covers: Your account's request logs, per-model latency, and error rates

Shows which specific model/provider is erroring for your trafficRequires login; not a public incident feed

API Status Check

apistatuscheck.com/api/openrouter

Covers: OpenRouter API real-time uptime + incident history + instant alerts

Third-party monitoring with 60-second polling + email/Slack/webhook alertsThird-party — synthesized from multiple signals

API Status Check — OpenRouter Monitoring

API Status Check tracks the OpenRouter API in real time with 60-second polling. See current status, uptime over the last 30/60/90 days, and subscribe to instant alerts when OpenRouter has an incident.

Check OpenRouter API status now →

OpenRouter Rate Limits: Credits, Not Tiers

Unlike single-provider APIs with fixed per-plan RPM/TPM tables, OpenRouter ties rate limits primarily to your account's credit balance:

Account stateFree modelsPaid models
Never purchased credits~20 RPM, ~50 requests/dayBlocked (requires balance)
Purchased 10+ credits (lifetime)~20 RPM, ~1,000 requests/dayLimited by available balance
Production tip: If you're prototyping on free models and plan to ship, purchase at least 10 credits early — it permanently raises your daily free-tier request cap even if you never spend the balance down on paid models.

OpenRouter API Error Codes: What They Mean

OpenRouter is OpenAI-compatible, so most error shapes mirror OpenAI's format. The key difference is distinguishing routing-layer errors (OpenRouter's fault) from provider-layer errors (the upstream model's fault):

400 Bad Request

Malformed request — invalid model name or missing required fields

Verify the model string matches OpenRouter's exact model slug format (e.g., "anthropic/claude-sonnet-4-6"). Check the OpenRouter model catalog for current supported IDs.

401 Unauthorized

Missing or invalid API key

Verify your OPENROUTER_API_KEY is set and active. Generate a new key at openrouter.ai/keys if needed.

402 Payment Required

Insufficient account credits to fulfill the request

Top up your balance at openrouter.ai/credits. OpenRouter is prepaid — there is no invoicing grace period once your balance is depleted.

403 Forbidden

Requested model requires a data policy or verification you haven't enabled

Some models require enabling specific privacy/data-sharing settings in your OpenRouter account before they can be called. Check your account settings for the model's requirements.

408 Request Timeout

The upstream model provider took too long to respond

Retry the request. If persistent for a specific model, consider routing to an alternate provider for the same model via OpenRouter's provider preferences.

429 Too Many Requests

Rate limit exceeded — free-tier RPM/daily cap or provider-side throttling

Implement exponential backoff. If you're on free models, purchasing credits raises your daily request cap significantly.

502 Bad Gateway

The upstream model provider OpenRouter routed to returned an error or invalid response

This is a provider-side failure, not an OpenRouter outage. Configure provider routing/fallback preferences so OpenRouter automatically retries with an alternate provider for the same model.

Configuring Provider Fallback

Since OpenRouter routes each model request to one of potentially several upstream providers, you can configure provider order and fallback behavior per request so a single upstream incident doesn't take down your app:

TypeScript (provider routing + retry)Production-ready
import OpenAI from 'openai';

const openrouter = new OpenAI({
  apiKey: process.env.OPENROUTER_API_KEY,
  baseURL: 'https://openrouter.ai/api/v1',
});

async function callWithFallbackRouting(prompt: string, maxRetries = 3): Promise<string> {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    try {
      const completion = await openrouter.chat.completions.create({
        model: 'anthropic/claude-sonnet-4-6',
        messages: [{ role: 'user', content: prompt }],
        // @ts-expect-error - OpenRouter-specific extension field
        provider: {
          // Let OpenRouter fail over to another upstream provider
          // hosting the same model if the primary one errors
          allow_fallbacks: true,
        },
      });
      return completion.choices[0].message.content ?? '';
    } catch (error: any) {
      const status = error?.status;

      if (status === 402) {
        throw new Error('OpenRouter balance depleted — top up at openrouter.ai/credits');
      }

      const isRetryable = [429, 502, 503].includes(status);
      if (!isRetryable || attempt === maxRetries - 1) throw error;

      const delay = Math.pow(2, attempt) * 1000 + Math.random() * 500;
      await new Promise((r) => setTimeout(r, delay));
    }
  }
  throw new Error('Max retries exceeded');
}

Setting Up OpenRouter Monitoring

1.

External uptime monitoring

  • Monitor openrouter.ai/api/v1/models every 60 seconds (lightweight, doesn't consume credits)
  • Alert on: non-200 responses, elevated response time, SSL issues
  • API Status Check does this automatically — subscribe to get alerts
2.

Per-model / per-provider error tracking

Tag your application logs with the specific model and, where available, the provider OpenRouter selected. This lets you distinguish "OpenRouter routing is degraded" from "one upstream provider is having a bad day" — the fix differs completely between the two.

3.

Credit balance alerting

Poll your balance via the OpenRouter dashboard/API and alert at a threshold (e.g., 20% remaining) well before it hits zero — a depleted balance fails every request with a 402 regardless of upstream provider health.

Alert Pro

14-day free trial

Stop checking — get alerted instantly

Next time OpenRouter goes down, you'll know in under 60 seconds — not when your users start complaining.

  • Email alerts for OpenRouter + 9 more APIs
  • $0 due today for trial
  • Cancel anytime — $9/mo after trial

Related Guides

Frequently Asked Questions

How do I check if OpenRouter is down?

Check the official OpenRouter status page at status.openrouter.ai for real-time incident updates. You can also use API Status Check at apistatuscheck.com/api/openrouter to see current uptime, recent incidents, and subscribe to instant alerts when OpenRouter goes down.

What are the OpenRouter API rate limits?

OpenRouter rate limits are tied to your account credit balance rather than a flat per-tier RPM number. Free model variants are limited to roughly 20 requests per minute, with a daily cap of about 50 requests per day for accounts that have never purchased credits, rising to about 1,000 requests per day once you've purchased at least 10 credits. Paid (non-free) models are limited primarily by your available balance rather than a fixed RPM.

What does an OpenRouter 402 error mean?

A 402 error means insufficient credits — your account balance can't cover the request. Since OpenRouter is prepaid, top up your balance at openrouter.ai/credits to resume making requests.

What does an OpenRouter 502 error mean?

A 502 from OpenRouter usually means the upstream model provider it routed your request to failed or returned an invalid response — not that OpenRouter itself is down. OpenRouter's routing layer can often be configured to automatically fail over to an alternate provider for the same model when this happens.

Is the OpenRouter API OpenAI-compatible?

Yes. OpenRouter exposes an OpenAI-compatible chat completions endpoint at openrouter.ai/api/v1, so you can use the standard OpenAI SDK by overriding the base URL and API key, and select any of OpenRouter's supported models by name (e.g., anthropic/claude-sonnet-4-6, openai/gpt-4o).

Staff Pick

📡 Monitor your APIs — know when they go down before your users do

Better Stack checks uptime every 30 seconds with instant Slack, email & SMS alerts. Free tier available.

Start Free →

Affiliate link — we may earn a commission at no extra cost to you