Unlimited Open Source Models

Get Plan
Skip to main content

API rate limits

ModelsLab runs a shared GPU fleet, so every account has a cap on how many generations it can start in a given period. The caps exist so one very heavy account cannot absorb the whole fleet and leave everyone else queueing. There are four of them, and they are independent — this page shows all four, and your live usage against each.

Your limits right now

Sign in to see how much of each limit you have used in the current window, and when it resets.

Sign in

1. Your plan’s request window

The main limit. Every plan gets an hourly allowance, enforced in 30 minutes slices so a burst cannot spend the whole hour in the first few minutes. Video and 3D draw on a second, smaller allowance of their own, because a single video costs 10–100× the GPU time of an image.

PlanImages & audioVideo & 3DAt the same timeRequests per month
Starter150 / hour75 per 30 minutes15 / hour8 per 30 minutes
Basic$21/mo400 / hour200 per 30 minutes50 / hour25 per 30 minutes5 generations3,250
Standard$47/mo1,250 / hour625 per 30 minutes125 / hour63 per 30 minutes10 generations10,000
Open Source Unlimited$149/mo350 / hour175 per 30 minutes35 / hour18 per 30 minutes15 generationsUnlimited
No subscription, empty wallet50 / hour25 per 30 minutes8 / hour4 per 30 minutes5 generations
Other / legacy plans150 / hour75 per 30 minutes15 / hour8 per 30 minutes

Why does Open Source Unlimited allow fewer per hour than Standard?

Because the two plans are bounded by different things. Basic and Standard include a fixed number of requests per month, and that monthly total — not the hourly window — is what limits them; their windows are set wide enough that a whole month’s allowance can be spent in a single working day. Open Source Unlimited has no monthly total at all, so the hourly window is the only thing bounding it, and it has to be set at a level the shared fleet can sustain indefinitely. A higher number in the first column is not a bigger plan.

Requests to a dedicated Enterprise endpoint run on your own GPUs, not the shared fleet, and are not counted here.

2. Generations running at the same time

Separate from the window above, and the one most often mistaken for it. It caps how many of your generations may be in progress at once, not how many you may start. It is not a budget that refills on a clock — a slot frees the moment a generation finishes, so this limit clears itself. The number for each plan is in the last column of the table above.

3. Per-model caps

A few model pools are small enough that one account running flat out fills the queue for everybody else on them, while staying comfortably inside its plan window. Those pools carry their own cap, applied on top of your plan window, on every plan.

Model poolPer hourPer 30 minutes
interior4523
ultra_upscale6030
flux_kontext_dev4523

4. What does and does not count

Only requests that actually start work on a GPU count. In particular, polling a generation you already started is free — a single generation is polled up to 25 times, and counting those would exhaust an allowance after a dozen real generations.

Counted against the video & 3D allowance

  • v6/video/
  • v6/3d/
  • video-fusion/
  • v8/videos
  • v8/3ds
  • _to_3d
  • v5/text2video
  • video_swap

Matched anywhere in the request path. Everything else that generates draws on the images & audio allowance.

Never counted

  • fetch
  • webhook
  • base64_to_url
  • system_details
  • base64_crop
  • load_model
  • image_editing/caption
  • clear_cache
  • voice_list
  • voice-call/voices
  • voice-call/cancel-all
  • /status
  • /transcript
  • /close
  • v7/llm/

Matched anywhere in the request path. Fetching results, webhooks, captioning, listings and other requests that do no GPU work.

Reading your limits from the API

Every API response carries your current state, so a client can slow down before it is refused rather than after.

RateLimit-LimitRequests permitted in the current window.
RateLimit-RemainingRequests still available. Throttle against this one.
RateLimit-ResetSeconds until the window resets.
Retry-AfterSeconds to wait. Sent once the limit is exhausted.

The legacy X-RateLimit-Limit and X-RateLimit-Remaining headers are still sent alongside these.

What a refusal looks like

The generation API reports every failure as HTTP 200 with an error body, so check status and code rather than the HTTP status:

{
  "status": "error",
  "code": "rate_limited",
  "message": "Rate limit exceeded: Try again in 12 minute(s), ..."
}

Wait for Retry-After and retry. Retrying immediately does not help — a refused request still counts, so a tight retry loop keeps the window full and extends the lockout.

Other limits

These apply to account and billing endpoints rather than to generation, and are unrelated to the caps above.

EndpointLimitCounted per
Agent control plane120 / minutePer API token
Billing and wallet changes15 / minutePer API token
Sign in and auth20 / minutePer IP and email
Sign up3 / minute, 10 / hour, 20 / dayPer client IP
Model and voice listings10 / minutePer IP

Need more

A higher plan raises the window. Compare plans. If your workload does not fit any of them, an Enterprise deployment runs on GPUs reserved for you, with no shared-fleet cap at all.