Replicate API Monitoring Guide 2026
How to monitor the Replicate API in production — prediction status tracking, rate limits, cold starts, error decoding, and webhook-based alerts.
TL;DR
- →Replicate has an official status page at
status.replicate.com— bookmark it or subscribe to updates - →Predictions run on on-demand hardware — cold starts are normal and shouldn't trigger latency alerts on their own
- →Use webhooks instead of polling — tight polling loops add load and can contribute to rate limiting
- →A prediction's
status: "failed"is distinct from an HTTP error — check the error field for the real cause
Why Replicate API Monitoring Matters
Replicate runs a marketplace of thousands of open and custom models — image generation, video, audio, and more — on on-demand cloud hardware. That flexibility means monitoring looks different than for a single-model API: latency, failure modes, and rate limits can vary significantly depending on which model you're calling and whether hardware is already warm.
Without dedicated monitoring, teams building on Replicate run into:
- ✗Cold-start latency gets mistaken for an outage, triggering false alerts on every scale-to-zero cycle
- ✗A tight polling loop for prediction status adds unnecessary load and itself contributes to rate limiting
- ✗A specific model version starts failing while the API layer stays fully healthy, hiding the real scope of the issue
- ✗Webhook delivery silently fails and predictions appear to hang forever from the application's point of view
Separating cold-start behavior, model-level failures, and platform-wide incidents from each other is the key to monitoring Replicate without drowning in noise.
Where to Check Replicate API Status
Replicate maintains a dedicated status page covering its core platform:
Replicate Status Page
status.replicate.comCovers: Prediction API, hardware availability, and webhook delivery
Replicate Dashboard
replicate.com/accountCovers: Your API token usage, spend, and billing
API Status Check — Replicate Monitoring
See the full Replicate status guide for troubleshooting steps, incident history context, and how to tell a Replicate-wide outage apart from a single-model or cold-start delay.
Is Replicate down right now? →Replicate API Rate Limits by Tier
Replicate limits are driven by account tier and hardware availability for the specific model you're running. Concurrency, not a flat requests-per-minute count, is the main constraint.
| Tier | Requests | Billing | Cost |
|---|---|---|---|
| Free tier | Low concurrent predictions, shared hardware queue | Pay-per-second compute, no monthly request cap | Per-second hardware pricing, model-dependent |
| Paid / usage-based | Higher concurrency, priority hardware access | Pay-per-second compute, billed monthly | Per-second hardware pricing, model-dependent |
| Enterprise / dedicated | Custom concurrency, dedicated hardware available | Committed-spend or custom billing arrangement | Custom contract pricing |
replicate.com/account to see your usage, spend, and billing configuration.Replicate API Error Codes: What They Mean
Replicate uses standard HTTP status codes for the request layer, plus a separate status field on the prediction object itself for model-level outcomes.
400 Bad RequestMalformed request — invalid model version, missing required input field, or bad parameter type
Check the response body against the specific model's input schema. Each model on Replicate defines its own input parameters, so validate against that model's current schema, not a generic one.
401 UnauthorizedMissing or invalid API token
Verify your REPLICATE_API_TOKEN is set and current. Generate a fresh token from your Replicate account settings if needed.
402 Payment RequiredBilling issue — payment method failed or spend limit reached
Check your billing settings and spend limit configuration in the Replicate dashboard. This is a billing state, not a transient error.
404 Not FoundModel or specific model version not found
Verify the model owner/name and version hash are correct and current. Model authors can push new versions, and old version hashes may be removed.
422 Unprocessable EntityInput validation failed against the model's schema
Check required vs. optional fields and valid value ranges for the specific model you are calling — schemas vary significantly between models.
429 Too Many RequestsRate limit or concurrent prediction limit exceeded
Implement exponential backoff and cap concurrent in-flight predictions to your account tier limit. Consider queuing requests client-side rather than firing them all at once.
prediction.status = "failed"The model run itself errored — not an HTTP-level failure
Read the prediction's error field for the model-specific failure reason. Common causes: invalid input for that model, out-of-memory on the hardware, or a bug in the model code.
500 / 503 Server ErrorServer-side error or temporary overload on Replicate infrastructure
Retry with backoff. Persistent 500/503s across multiple requests and multiple models indicate a genuine platform incident — check status.replicate.com.
Webhooks vs. Polling for Prediction Status
Since predictions run asynchronously, use a webhook on creation rather than polling the status endpoint on a tight loop:
import Replicate from 'replicate';
const replicate = new Replicate({ auth: process.env.REPLICATE_API_TOKEN });
async function createPrediction(input: Record<string, unknown>) {
const prediction = await replicate.predictions.create({
version: 'model-version-hash',
input,
webhook: 'https://yourapp.com/api/replicate-webhook',
webhook_events_filter: ['completed'],
});
return prediction.id;
}
// In your webhook handler:
async function handleReplicateWebhook(payload: {
id: string;
status: 'succeeded' | 'failed' | 'canceled';
error: string | null;
output: unknown;
}) {
if (payload.status === 'failed') {
// Model-level failure — log payload.error for the specific cause
metrics.increment('replicate.prediction.failed');
return;
}
// Handle payload.output for succeeded predictions
}If webhooks aren't available in your environment, poll with exponential backoff (starting at 1-2s, capping around 10s) rather than a fixed tight interval — this reduces load on both sides and lowers your exposure to rate limits.
Setting Up Replicate API Monitoring
A complete Replicate monitoring stack has three layers:
External uptime monitoring
Monitor the API layer itself (prediction creation, not full model execution) from outside your infrastructure on a schedule.
- →Monitor prediction creation on a lightweight, fast model
- →Alert on: non-200 responses when creating predictions, SSL issues
- →A synthetic monitor with email/Slack/webhook alerts catches this before users report it
Application-layer metrics
Track these metrics in your observability stack (Better Stack Logs, Datadog, Grafana):
- • Prediction status: failed rate — per model, since failure rates vary widely by model
- • Cold-start frequency and duration — track separately from actual model processing time
- • Webhook delivery success rate — a stuck "processing" prediction may mean a missed webhook, not a hung job
- • 429 rate — signals you're exceeding your concurrency limit for a given model
- • Spend velocity — hardware-second billing can spike unexpectedly with heavier models
Stuck-prediction detection
Since predictions run async, set a timeout that reconciles state if a webhook never arrives:
// Fallback reconciliation if a webhook doesn't arrive in time
async function reconcileStuckPredictions() {
const pending = await db.predictions.findMany({
where: { status: 'processing', createdAt: { lt: fifteenMinutesAgo() } },
});
for (const p of pending) {
const current = await replicate.predictions.get(p.id);
if (current.status !== 'processing') {
await db.predictions.update(p.id, { status: current.status });
} else {
alerting.notify(`Replicate prediction ${p.id} stuck > 15min`);
}
}
}Alert Pro
14-day free trialStop checking — get alerted instantly
Next time Replicate goes down, you'll know in under 60 seconds — not when your users start complaining.
- Email alerts for Replicate + 9 more APIs
- $0 due today for trial
- Cancel anytime — $9/mo after trial
Replicate API Production Best Practices
Use webhooks, not tight polling loops
Polling adds unnecessary load and can itself contribute to hitting rate limits. Configure a webhook URL on prediction creation instead.
Separate cold-start latency from real incidents
A cold start on scale-to-zero hardware is normal and can add tens of seconds. Track it as its own metric rather than folding it into a general latency alert.
Monitor failure rate per model
Different models have very different failure profiles. An aggregate failure rate can hide a single problematic model version.
Reconcile stuck predictions with a timeout
If a webhook never arrives, poll as a fallback after a reasonable timeout so predictions don't appear to hang forever from the application's perspective.
Validate input against the model-specific schema
Each model defines its own input schema. Validate client-side against the current schema for the exact model version you're calling to avoid preventable 422s.
Track spend velocity, not just request count
Hardware-second billing means cost can spike with heavier models even at a constant request volume. Alert on spend rate, not just call count.
Related Guides
Frequently Asked Questions
How do I check if the Replicate API is down?
Check the official status page at status.replicate.com for real-time incident updates on prediction creation, hardware availability, and webhook delivery. API Status Check also maintains a dedicated Replicate status guide with troubleshooting steps and monitoring recommendations.
What are the Replicate API rate limits?
Replicate limits are primarily driven by account tier and available hardware capacity for the model you are running, rather than a single flat requests-per-minute number. Free and low-tier accounts have lower concurrency for predictions; paid accounts unlock higher concurrent prediction limits. Check your exact quota in the Replicate dashboard.
Why does my Replicate prediction take much longer than expected?
Replicate runs models on-demand hardware, and a "cold start" — spinning up a new instance when no warm instance is available — can add tens of seconds to a minute before a prediction even begins processing. This is normal behavior, not an error. Track cold-start frequency separately from actual processing time to avoid false-positive latency alerts.
Should I poll for prediction status or use webhooks?
Webhooks are strongly preferred for production. Polling the prediction status endpoint on a tight interval adds load and latency, and can itself contribute to rate limiting. Configure a webhook URL on prediction creation and let Replicate notify you when the prediction succeeds, fails, or is canceled.
What does a Replicate prediction status of "failed" mean?
A "failed" status means the model run itself errored — often due to invalid input for that specific model, an out-of-memory condition on the hardware, or a bug in the model's code. Check the prediction's error field for the specific message; this is distinct from an HTTP-level API error when creating the prediction.
📡 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.
Affiliate link — we may earn a commission at no extra cost to you