API Monitoring Guide

Monitor Discord API Status

Get alerted when the Discord API has issues before your bot goes silent, commands stop responding, or your community wonders why nothing works. Know the Discord API status in real time, not 15 minutes later.

Discord powers millions of communities, and bots are the backbone of moderation, support, games, and notifications. When the REST API at discord.com/api/v10 degrades or the gateway starts dropping sessions, your bot stops sending messages, slash commands time out, and webhook deliveries fail — usually with no error on your end.

This guide covers everything you need to monitor Discord API status: which endpoints to track, how the 50 req/s global limit and per-route buckets work, how to tell a Discord outage from a bot-side problem, and what to do when the API goes down.

Why Monitor the Discord API Externally?

Discord maintains a status page at discordstatus.com covering the API, gateway, voice, and media proxy. It's useful for confirming a platform-wide incident, but relying on it alone has real gaps.

The problem with relying on Discord's status page

  • Bot-specific failures: A reset bot token, a removed scope, or hitting your daily session-start limit will silence your bot while the status page stays green. These aren't platform incidents.
  • Gateway vs. REST: Your bot can stay connected to the gateway while REST calls 429 or 503, or REST can be healthy while new gateway identifies are rejected. The status page summarizes both as one component.
  • Cloudflare bans: Too many invalid requests (401/403/429) get your IP temporarily banned by Cloudflare with an HTML 429 — a self-inflicted "outage" no status page will mention.
  • Status pages lag: A human posts the incident after engineers confirm it. External synthetic checks see the failure the moment it starts.

External synthetic monitoring catches Discord API issues in 1-2 minutes, not 10-15. That head start lets you pause outbound jobs, fail over to a queue, or post a heads-up in your community before everyone notices the bot is dead.

Understanding Discord's API Surfaces

"Discord API" spans several surfaces that fail independently. Knowing which one your bot depends on tells you what to monitor.

Surface Host / Path Role
REST API discord.com/api/v10 Actions / data
Gateway gateway.discord.gg (WSS) Real-time events
Interactions your HTTPS endpoint Slash commands
CDN cdn.discordapp.com Media / assets

Monitoring tip: always pin the API version

Always use a versioned path like /api/v10. Calling /api without a version defaults to an old, deprecated version that can change behavior or return errors that look like an outage.

Bot requests authenticate with Authorization: Bot <token>. Always send a descriptive User-Agent — Discord may reject default or missing user agents, which would look like a failure to your monitor.

Which Discord API Endpoints to Monitor

Each endpoint below tests a different layer. Monitoring several lets you pinpoint whether it's REST, auth, the gateway, or your own bot host.

GET https://discord.com/api/v10/gateway

Gateway URL. Unauthenticated and cheap — returns the WebSocket URL bots should connect to. A great no-token reachability check for the Discord REST API edge. Validate the body contains "url".

Critical
GET https://discord.com/api/v10/users/@me

Bot identity. With Authorization: Bot <token>, this confirms your token is valid and the API is responding. A 401 here means your token was reset or revoked. Validate the body contains your bot's "id".

Critical
GET https://discord.com/api/v10/gateway/bot

Authenticated gateway info. Returns recommended shard count and your session_start_limit. Monitoring this warns you before you exhaust daily identify sessions, which would block reconnection.

High
GET https://your-bot-host.example.com/health

Your bot's own health endpoint. Catches crashes, OOMs, and stuck event loops on your side — failures Discord's status page will never show. Pair it with the Discord checks to separate "Discord is down" from "my bot is down".

High
GET https://your-interactions.example.com/discord

HTTP interactions endpoint (if you use one instead of the gateway). Discord posts signed slash-command payloads here. If it's down or fails signature verification, every slash command fails. Monitor reachability and TLS.

Medium

Rate limit note: Bots get a global limit of 50 requests/second plus per-route buckets. A monitor hitting a few endpoints every minute is well within budget. Just make sure your monitor sends a valid User-Agent and a correct token so it doesn't add to the invalid-request counter that triggers Cloudflare bans.

Discord API Rate Limits Explained

Discord's rate limiting can make a healthy API look broken from your bot's perspective. Understanding it is essential for both reliable bots and accurate alerting.

Global limit: 50 requests/second

Bots are capped at 50 requests per second globally. Exceed it and you get HTTP 429 with X-RateLimit-Global: true and a retry_after value. Interaction responses are exempt from this global limit.

Per-route buckets

Each route (often per channel or guild) has its own bucket. Discord tells you which bucket and how much is left via headers:

X-RateLimit-Bucket: abcd1234
X-RateLimit-Remaining: 0
X-RateLimit-Reset-After: 1.250

When Remaining hits 0, wait Reset-After seconds before retrying that bucket.

Invalid-request limit & Cloudflare bans

Roughly 10,000 invalid requests (401/403/429) per 10 minutes per IP gets you a temporary Cloudflare ban — an HTML 429, not JSON, lasting up to an hour. A bot in a crash loop with a bad token can trigger this and take itself fully offline.

Distinguishing rate limits from outages

A JSON 429 with retry_after means you're throttled — back off and retry. An HTML 429 means a Cloudflare ban from invalid requests. A 503 or widespread timeouts point to an actual Discord incident. UptimeSignal records status codes and response times so you can tell these apart instantly.

Your bot runs on the Discord API. Monitor it yourself.

Get alerted when the REST API, gateway, or your bot host start failing — before your community notices the bot went quiet. Free for 25 endpoints, checks every 5 minutes.

Monitor Discord API free →

Common Discord API Issues and How to Detect Them

Knowing the common failure patterns helps you configure monitoring that catches real problems and avoids false alerts.

Reset or Revoked Bot Token

If you regenerate the token in the Developer Portal or it leaks and gets reset, every authenticated call returns 401 Unauthorized. Monitoring /users/@me catches this immediately so you can redeploy with the new token.

Gateway Session Exhaustion

Every reconnect with a fresh identify consumes a daily session start. A crash loop can burn the limit and lock your bot out of reconnecting. Monitoring /gateway/bot and watching session_start_limit.remaining warns you before that happens.

Rate-Limit Storms (429)

Sending in a loop without respecting headers triggers per-route or global 429s. Sustained 429s on your monitor signal a misbehaving deploy that could escalate to a Cloudflare ban.

Cloudflare IP Ban (HTML 429)

Too many invalid requests get your host IP banned by Cloudflare with an HTML error page. Body validation distinguishes this from a normal JSON 429 — they need very different fixes (fix the bot vs. wait out the ban).

Gateway Degradation During Incidents

During Discord incidents, the gateway can stop delivering events or reject resumes while REST partially works. Your bot looks "online" but is deaf. Combining gateway-endpoint checks with your bot's own health endpoint surfaces this gap.

How to Monitor the Discord API: Step-by-Step

1

Get your bot token

In the Discord Developer Portal → your application → Bot, copy the bot token (or reset it if you've lost it). You'll send it as Authorization: Bot <token>.

Security tip: A bot token is a full credential. Store it as a secret in your monitor, and consider a dedicated low-privilege bot just for health checks if your main bot has sensitive permissions.

2

Create a monitor in UptimeSignal

Sign up at app.uptimesignal.io and add a new HTTP monitor:

URL: https://discord.com/api/v10/users/@me
Method: GET
Header: Authorization: Bot YOUR_TOKEN
Header: User-Agent: UptimeSignal-Monitor/1.0
Expected status: 200
Body contains: "id"

For an unauthenticated check, point a second monitor at /api/v10/gateway with no token.

3

Add monitors for each layer

Add the gateway endpoint (edge reachability), /gateway/bot (sessions), and your bot's own health endpoint. Together they tell you whether a problem is Discord's or yours.

4

Configure alerting for your team

Route alerts where you'll see them fast:

  • Email -- Immediate notification to maintainers
  • Slack -- Alert your dev or ops channel
  • Webhook -- Trigger PagerDuty or auto-restart your bot
5

Tighten intervals for high-traffic bots

If your bot serves large or active communities, use 1-minute checks (Pro plan) so you detect a token reset, ban, or gateway issue within a minute instead of five.

What to Watch For

Configure your monitors to alert on these conditions:

HTTP Status Codes

  • 200 -- API responding normally
  • 401 -- Token reset or revoked
  • 403 -- Missing permissions/scope
  • 429 -- Rate limited (check JSON vs HTML)
  • 500, 502, 503 -- Discord issue, alert now

Response Time

  • < 300ms -- Normal
  • 300ms-1.5s -- Degraded, watch trend
  • > 1.5s -- Severe latency, likely incident

Response body validation

For /gateway, check for "url"; for /users/@me, check for "id". Body validation distinguishes a real JSON response from a Cloudflare HTML error page returned with a 429 or 5xx — a status-only check can't tell them apart.

When Discord Goes Down: Response Playbook

When monitoring alerts you to a Discord problem, here's how to respond and limit the impact on your community.

1. Verify and classify

Check discordstatus.com by component. Determine if it's auth (401), rate limiting (JSON vs HTML 429), a gateway issue, or a REST outage (5xx). Each needs a different response.

2. Stop hammering the API

If you're getting 429s, pause outbound message jobs and back off. Continuing to retry into a Cloudflare ban only makes the outage longer and more total.

3. Queue, don't drop

If your bot sends time-sensitive notifications, queue them with idempotency keys so they go out once the API recovers instead of being lost. Prioritize critical alerts over chatty ones.

4. Check your side first on partial failures

If only your bot's health endpoint is failing while Discord's endpoints are fine, the problem is yours — restart the process, check memory, and inspect your gateway connection logic.

5. Communicate

Post a heads-up in a channel that's still reachable, or update your status page. If it's an upstream Discord incident, link the official status post to cut down on "is the bot broken?" questions.

Frequently Asked Questions

Why monitor the Discord API instead of just using their status page?
Discord's status page reports platform-wide incidents, but won't reflect bot-specific problems like a reset token, hitting per-route or global rate limits, or your gateway session being exhausted. External monitoring catches token, 429, and gateway issues in 1-2 minutes regardless of what the status page shows.
How do I check Discord API status right now?
For platform-wide status, visit discordstatus.com. For your bot, run: curl -H "Authorization: Bot YOUR_TOKEN" https://discord.com/api/v10/users/@me. For continuous monitoring, set up UptimeSignal to poll every 1-5 minutes and alert you instantly when the status changes.
Which Discord endpoints should I monitor?
Start with /api/v10/gateway as an unauthenticated reachability check, add /api/v10/users/@me to confirm your bot token, and /api/v10/gateway/bot to watch your session-start limit. Monitor your bot's own health endpoint too, so you can separate Discord outages from bot crashes.
Can I monitor the Discord API for free?
Yes. UptimeSignal's free tier includes 25 monitors with 5-minute check intervals. You can monitor the gateway endpoint, your bot token validity, and your interactions endpoint plus other APIs. Commercial use is allowed on the free tier. For 1-minute intervals and unlimited monitors, Pro is $10/mo billed annually ($15/mo monthly).
What are Discord's API rate limits?
Bots get a global limit of 50 requests/second plus per-route buckets tracked via X-RateLimit-Bucket, X-RateLimit-Remaining, and X-RateLimit-Reset-After headers. Exceeding a limit returns HTTP 429 with retry_after. Interaction endpoints are exempt from the global limit. Invalid requests (401/403/429) are themselves capped at ~10,000 per 10 minutes per IP before a Cloudflare ban.
What's the difference between the REST API and the gateway?
The REST API (discord.com/api/v10) handles request/response actions like sending messages. The gateway is a persistent WebSocket for real-time events (messages, presence, voice). They fail independently — REST can be up while gateway sessions are rejected, or vice versa. The /gateway and /gateway/bot endpoints let you health-check gateway availability over plain HTTPS.
Why does my Discord bot keep getting rate limited (429)?
A 429 usually means you exceeded a per-route bucket or the 50 req/s global limit — often from sending in a tight loop or ignoring X-RateLimit-Remaining. Read the headers and back off using retry_after. Cloudflare can also issue an HTML 429 (a temporary IP ban) when invalid requests pile up, so watch for sustained 429s after a deploy.
How do I monitor Discord bot uptime and gateway sessions?
Hit /api/v10/gateway/bot with your bot token — the response includes session_start_limit (total, remaining, reset_after, max_concurrency). Monitoring remaining session starts warns you before you exhaust your daily identify budget, which would block reconnection. Pair it with an HTTP health endpoint on your bot host to also catch crashes on your side.

Start monitoring Discord now

UptimeSignal checks your endpoints from outside your network and catches errors before users do.

25 monitors free, unlimited for $10/month.

Monitor Other APIs