Polling 200 video jobs every 30 s is 400 calls a minute: do this
A poll loop copied to Sume's 30 s example turns 200 open jobs into 400 status calls a minute. Use next_poll_after_seconds, backoff, or a webhook plus sweep.

If 200 video jobs are open and every one is polled every 30 seconds, you send 400 status requests a minute, about 6.7 a second, to learn almost nothing, because a video job takes minutes. The Sume docs give a 30-second sleep as an example interval; they also say to obey next_poll_after_seconds when the status payload has it, and to back off otherwise. A migrated Sora loop should do that instead of a fixed sleep.
The Sora Videos API stopped answering on 2026-09-24, per the Pondero report, so any poll loop you carry over is being rewritten anyway. Rewrite the interval first.
The arithmetic
Requests per minute is open jobs x 60 / interval. The table shows how fast a fixed interval multiplies, and what a slower one saves.
| Open jobs | Every 30 s | Every 60 s | Every 120 s |
|---|---|---|---|
| 10 | 20 | 10 | 5 |
| 50 | 100 | 50 | 25 |
| 200 | 400 | 200 | 100 |
| 500 | 1000 | 500 | 250 |
What Sume says to do
On the jobs surface, the poll loop is GET /v1/jobs/{id}/status. Stop on completed, failed or canceled. The docs say to use exponential backoff and not to resubmit a paid request because a local timeout fired. On /v1/videos the same job answers at polling_url, with the statuses pending, in_progress, completed, failed, cancelled.
The jobs docs also say read, status and list endpoints can have their own rate limits, which they call poll backpressure rather than generation concurrency. Public responses can carry ratelimit-limit, ratelimit-remaining, ratelimit-reset and retry-after headers. When a 429 arrives, use retry-after if present. A poller that reads ratelimit-remaining can slow itself before it is throttled.
Three ways to cut the call count
- Obey
next_poll_after_secondsfrom the status payload when it is present. It is the server telling you when a check is worth making. - Use
callback_urlon/v1/videos, so a finished job notifies you; then poll only as a backstop, every few minutes, over jobs still open in your own table. - Group the sweep. One backstop pass over all open ids once every few minutes costs the same as a handful of fixed-interval polls.
What waiting mode does not do
mode: sync holds the submit call for at most 30 seconds and returns the same envelope. A video usually takes longer, so you get an unfinished job back and must poll anyway. The docs say not to resubmit in that case. Treat sync as an optimization for short jobs, not a way to avoid polling.
The practical setup is a webhook for the fast path and a slow sweep for the rest, with the sweep interval set from your own tolerance for a late video, not from the example in the docs.
A backoff that respects the server
A loop that fits the docs does three things per job. It reads the status. If next_poll_after_seconds is present it sleeps that long. If not, it doubles its own delay from a small start up to a ceiling you choose, and resets nothing on a transient 429: it waits retry-after and goes on. It stops on any terminal state and then reads the result once.
Keep the interval per job, not global. A job that has been queued for a while because the workspace is at its concurrency limit does not need the same cadence as one that just moved to processing. Queued is a normal state in Sume's admission model, so a long wait there is not a signal to resubmit.
Sources
Related posts
More in Developers
- Portuguese speech to text API: Sume STT language_code pt or pt-BR
Transcribe Portuguese audio with Sume STT using language_code pt or pt-BR, then check the reported language and word times. $0.01 per audio minute.
- Probe a finished video before upload: duration, size and aspect
Run video inspect with frames false to read a render's duration, size and frame rate before posting. Check it against the 3-minute Shorts limit.
- URL or QR code in an AI avatar video: say it, caption it, or link it
An avatar clip cannot reliably carry a QR code or a long URL. Three Sume-supported options: spoken words, authored caption cues, or the text beside the video.
- Python: cheapest Sume image model that lists your aspect ratio
A 25-line Python script reads Sume's image catalog, keeps models that list your aspect ratio, prices each from its endpoints record and prints the cheapest.
Written by Sume