Engines: Fast and Pro
Two engines are available on POST /v1/rigs via the engine field. They are different models with different failure modes, not quality tiers of the same thing.
| Fast (default) | Pro | |
|---|---|---|
engine value | fast | pro |
| Price per rig | 20 credits ($0.20) | 31 credits ($0.31) |
| Typical time | 15–30s | up to 150s |
| Success rate | ~85% of submissions | higher on meshes Fast rejects |
| Availability | All accounts | Requires a paid plan |
Start with Fast
Fast handles the large majority of models, costs a third of Pro, and returns in a fraction of the time. It is the default for good reason and it is what the Cinevva web tool uses for nearly all of its volume.
The ~85% figure is measured across everything submitted to the live service, including malformed uploads and meshes that no rigger could handle. On inputs that meet the model requirements, the practical success rate is higher.
Fall back to Pro selectively
Pro is worth spending on a specific mesh when Fast has already failed on it, or when Fast returns a rig whose skeleton is visibly wrong. It uses a different model with different strengths, so a mesh that defeats one often succeeds on the other.
Pro is not a blanket upgrade. Paying 31 credits for every rig when 2 would have done is the most common way to overspend on this API.
def rig_with_fallback(model_url, rig_type="biped"):
"""Try Fast; escalate to Pro only on failure."""
try:
return submit_and_wait(model_url, rig_type, engine="fast")
except RigFailed:
# Different model, different failure modes — worth one retry before
# declaring a mesh unriggable.
return submit_and_wait(model_url, rig_type, engine="pro")This pattern costs 20 credits for the common case and 51 for the hard one, which across a realistic mix lands well below rigging everything on Pro.
Why Fast is cheap
Fast runs on our own CPU hardware rather than rented GPUs. Past a modest mesh size the work is dominated by geometry loading and file writing rather than by inference, so a resident CPU process beats a cold GPU container end-to-end. That is also why Fast is the engine we price on its own merits: it is ours end to end, where Pro is a vendor model we resell at close to cost.
Capacity
Rigging capacity is finite and shared. When the rigger is saturated you get a 503 with code backend_unavailable, which means retry with backoff, not that your request was malformed. This is reported honestly rather than being disguised as a rate limit: a 429 means you sent too many requests, a 503 means we are busy.
For sustained batch work above a few hundred rigs a day, get in touch so we can plan capacity rather than have you discover the ceiling.