LLM MonitoringUpdated July 2026

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.

📡
Recommended

Monitor your services before your users notice

Try Better Stack Free →

Where to Check Replicate API Status

Replicate maintains a dedicated status page covering its core platform:

Replicate Status Page

status.replicate.com

Covers: Prediction API, hardware availability, and webhook delivery

Official — Replicate posts incidents and maintenance windows hereNo programmatic access to status data without polling the page

Replicate Dashboard

replicate.com/account

Covers: Your API token usage, spend, and billing

Shows your specific usage and spend against your billing settingsRequires login; not a real-time incident feed

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.

TierRequestsBillingCost
Free tierLow concurrent predictions, shared hardware queuePay-per-second compute, no monthly request capPer-second hardware pricing, model-dependent
Paid / usage-basedHigher concurrency, priority hardware accessPay-per-second compute, billed monthlyPer-second hardware pricing, model-dependent
Enterprise / dedicatedCustom concurrency, dedicated hardware availableCommitted-spend or custom billing arrangementCustom contract pricing
Production tip: Set a per-model concurrency cap client-side that matches your account tier — bursts of concurrent predictions against a cold model are the most common cause of unexpected 429s.
Check your current limits: Go to 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 Request

Malformed 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 Unauthorized

Missing 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 Required

Billing 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 Found

Model 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 Entity

Input 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 Requests

Rate 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 Error

Server-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:

TypeScript (webhook pattern)Production-ready
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:

1.

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
2.

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
3.

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 trial

Stop 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.

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