Upload, Dry Run, Submit: A Practical Sequence for Batch AI Jobs
Most batch AI failures are not model failures. They are sequencing failures: files staged too early, prices guessed instead of calculated, a billing hold that blocks the next job, or outputs that expire before anyone downloads them. Whether you are upscaling ten thousand product photos, transcribing a year of call recordings, or pushing scanned documents through OCR, the same order of operations keeps a run predictable — upload, dry run, submit, poll, download. This article walks that sequence for developers, data teams and operators running bulk image, audio and text jobs.
The worked example throughout is Y-PAD, a bulk AI jobs service that exposes twelve open models behind a single API key, with a request and response shape deliberately close to Replicate’s so existing client code translates with minimal friction. Its specific limits and billing rules make the dry-run step unusually important, which is exactly why it is a useful case to reason about.
Upload: Stage Files You Can Actually Validate
Upload links on Y-PAD last one hour, which reframes staging entirely. Do not prepare a two-thousand-file batch on Monday and submit it on Tuesday. Treat preprocessing and upload as one continuous step: normalise formats, compress where the model tolerates it, generate the upload links, and submit before they expire. Anything that sits idle is a link you will have to regenerate.
Two hard ceilings shape the design of the upload stage. A single call accepts up to 100 files, and a batch holds up to 2,000 items. A 5,000-image job is therefore not one batch but three, and each one carries its own hold against your balance. Planning the run means planning how many concurrent holds you will have open, not just how many files you have. There is also no free storage: uploads return HTTP 402 until the first payment lands, so new accounts should fund the balance before writing any staging code.
The docs for the Ai-api list input types per model, and those types are worth enforcing client-side before anything leaves your machine. Image models accept PNG, JPEG and WebP up to 25 MB. Whisper large-v3 accepts audio/mpeg, MP4, WAV, FLAC, OGG, WebM and video/MP4 up to 500 MB. Feed a model something outside its declared types and you have paid for nothing but a rejected item.
Three preprocessing details are easy to miss. An image with an alpha channel sent to Real-ESRGAN takes a second pass and costs the same again, so flatten transparent images unless you need the transparency preserved. Whisper measures duration from decoded samples rather than the file header, so a mislabelled file still bills correctly — but a truncated one still fails. And per-file minimums apply: 30 seconds per audio file, 500 characters per TTS file, 100 tokens per text file. Naming files deterministically so each item maps back to a local path is unglamorous and saves hours during verification.
Dry Run: Price the Batch Before You Commit the Hold
At submit, Y-PAD holds the sum of maximum possible units multiplied by list price. At settlement you are charged for succeeded units at launch price if you hold a launch seat, otherwise list price, and any unused hold returns to the balance. The practical consequence is that your dry run should always be calculated against list price, because that is the number the platform reserves from your balance — even if you expect to settle lower.
Published examples make the arithmetic concrete. At one megapixel or under, 1,000 upscaled images cost $1.00 and 1,000 background removals cost $0.50. For audio, 1,000 one-minute transcripts cost $0.44 at list or $0.40 at launch, while 1,000 ten-second transcripts cost $0.22 at list or $0.20 at launch — because the 30-second per-file minimum still applies to every short clip. That gap is the single most common surprise in audio batches: ten-second fragments are not ten times cheaper than one-minute files unless you concatenate them first. The same logic applies to text-to-speech, where a 500-character minimum means batching sixty-character strings as separate files wastes most of the charge.
Balance caps matter as much as unit maths. The first payment cannot exceed $25, and for seven days after it, the day’s charges plus open holds cannot pass $25. A dry run that assumes you can open four holds at once is wrong on day one. Larger balances need subsequent top-ups, and a launch seat — assigned at payment on the $25 or $100 packs, one per account and per card, while the 40 seats last — changes the settle price but not the hold.
For text generation, think in weighted tokens: output tokens plus input tokens at the published 0.25 ratio, with a 100-token minimum per file. Because output dominates the weight, setting max_tokens deliberately (the default is 2048, the range 1–8192) is the difference between a tight estimate and a hold several times larger than the work needs. Finish the dry run with a pilot: five to ten representative items through the playground, then a small live batch, before committing the full queue.
Submit, Poll and Settle: Keeping a Batch Honest
Once a batch is submitted, the prices used are stored with it. The fares listed on the model and pricing pages are provisional beta fares with check dates attached, so confirm them on the live pricing page before you build an estimate into a budget — and note that a batch already accepted keeps its own stored prices.
Cold starts are the scheduling reality. Expect 10 to 30 seconds before work begins, occasionally minutes, and understand that later items in a batch ride on the same start. That argues for submitting related files together rather than trickling them in one at a time. There are no webhooks, so polling with backoff is the integration contract; build it once and reuse it.
What settlement looks like on a mixed batch
Only successful items are charged. Failed and cancelled items cost nothing, and the unused portion of the hold comes back. Outputs remain available for seven days, so a download-and-verify step belongs inside the run, not in a follow-up ticket a fortnight later. If a batch mixes models — upscaling, cutouts, transcription, OCR — each line settles on its own unit basis, and the reconcile is per item, not per batch.
Price comparisons deserve the same discipline. Y-PAD’s published tables show Real-ESRGAN at $1.00 per 1,000 images against Replicate’s $2.00 (checked 7 Nov 2026), and BiRefNet at $0.50 against roughly $1.70. For Seedance 2.5, Replicate’s $0.2312 per second sits between Y-PAD’s launch rate of $0.1850 and its list rate of $0.3780 — under list, over launch — and Pruna P-Video follows the same pattern at $0.02 versus $0.016 launch and $0.021 list. The site is candid that some vendors charge less on some models, and Qwen3-VL is the clearest example, with a modelled OpenRouter cost of $0.30 per 1,000 images below both Y-PAD prices. Dry run the specific model on your list, at the price in force today, and the sequence holds up.
Related Posts:
Archives
- November 2026
- October 2026
- September 2026
- August 2026
- July 2026
- June 2026
- May 2026
- April 2026
- March 2026
- February 2026
- January 2026
- December 2025
- November 2025
- October 2025
- September 2025
- August 2025
- July 2025
- June 2025
- May 2025
- April 2025
- March 2025
- February 2025
- January 2025
- December 2024
- November 2024
- October 2024
- September 2024
- August 2024
- July 2024
- June 2024
- June 2002

