IronStratum

pi 0.5 LIBERO checkpoint API pricing

A LIBERO report bought through a per-call API is priced in calls, and the call count turns on one number: how many returned actions your client executes before it asks again. The documented protocol executes 10 per call. On that setting, the 500-episode report this site measured on a rented card, 1.93 in compute over 47.18 hours, holds 17,250 calls, and those calls cost 51.75 at the written-record rate for the pi05-libero model id. The card beat the meter by about 27 times, and the reason is not the rate. A card-hour meter prices the whole clock, including the simulator rebuilds that eat most of it. A per-call meter prices the policy and leaves the simulator on your machine. This page prices both paths for this one checkpoint, names every input, and lists the exact strings the run types. Third-party figures were read on 26 October 2026. The measured figures carry their own date, 2026-10-10.

The price in one line

The written record, in plain words. The pi05-libero row sits in the platform's model data. Metering is per call. The rate is set. The model is not on the public list, and no date is attached to that. Nothing answers under the id today: the route returns a plain 404 for it, and the models list omits it. Only listed rows render in the table below, and the models index is the live catalog. A written record is not a launch.

ModelContext$/1M in$/1M out$/1M cached
Qwen
qwen3.8-27b262K$0.35$2.55$0.105
qwen3.6-35b131K$0.11$0.8$0.044
Minimax
minimax-m2.7197K$0.24$0.95$0.072
Muse
muse-glimmer-30b131K$0.28$1.2$0.084
Ornith
ornith-1.5-35b100K$0.35$2.55$0.105
ornith-1.5-9b100K$0.1$0.3$0.03
Glm
glm-5.3-flash1049K$0.11$0.35$0.033
Deepseek
deepseek-v4-flash-07311311K$0.15$0.42$0.045
Gemma
gemma-4-31b-it262K$0.22$0.49$0.066
Deepseek
deepseek-v4-pro1000K$1.13$2.21$0.339
deepseek-v4.1-flash1000K$0.19$0.71$0.06
deepseek-v4.1-flash-10171049K$0.16$0.65$0.003
Glm
glm-5.31000K$1.32$4.25$0.4
Flux
flux-1-schnell—$0.003/image
flux-pro-1.1—$0.04/image
Chatterbox
chatterbox-tts—$25/1M chars
Kokoro
kokoro-tts—$15/1M chars
Pocket
pocket-tts—$16/1M chars
Audio
audio8-tts—$8/1M chars
Hayamimi
hayamimi-stt—$0.6/audio-hr
Bge
bge-m3—$0.05/1M tokens
bge-reranker-v2-m3—$1.5/1k searches
Ocr
ocr-print—$1/1k pages
ocr-archival—$3/1k pages
Whisper
whisper—$0.12/audio-hr
Iab
iab-2x—$0.7/1k pages
iab-3x—$0.7/1k pages
Gliner
gliner-extract—$0.9/1k searches
Jev
jev-fast1K$0.03$0—
jev-causal1K$0.03$0—
jev-batch1K$0.03$0—
Wemm
wemm-embed—$0.09/1M tokens
Molmo
molmo2-er8K$1$5$0.5
Cosmos
cosmos-reason2-2b4K$0.1$0.4$0.05
Sam
sam2.1-base—$0.02/image
Da
da3-small—$0.05/image
Smolvla
smolvla—$0.001/call
Openvla
openvla-oft—$0.006/call
Act
act—$0.001/call

The rate itself stays inside the machine table. In the arithmetic below it is the named variable P. You can recover it from a figure this site already publishes.

P               =  6.48 per robot hour / 2,160 calls per robot hour

report actions  =  125 x (280 + 280 + 300 + 520)   =  172,500
protocol calls  =  172,500 / 10                    =  17,250
report cost     =  17,250 x P                      =  51.75

The 6.48 anchor is this site's published robot-hour figure for the pi05 id, derived in the open. That basis is 2,160 calls per robot hour at the written-record rate, the same rate this page's fence carries. Divide 6.48 by 2,160 and you hold P. The check inverts, too: 51.75 divided by 17,250 hands the same P back. A money figure nobody can invert is not a number. It is a mood.

The checkpoint you are pricing

Three public artifacts carry this tune. The publisher's repository calls the model fine-tuned for the LIBERO benchmark, meant for inference. LeRobot's port page describes the same tune converted and refined. Here is the menu.

CheckpointWho ships itWhat it isThe score it carries
pi05_liberoPhysical Intelligence, the openpi repositorythe reference tune, 30,000 fine-tune steps, JAX weights at gs://openpi-assets/checkpoints/pi05_libero/96.85 average over the four reported suites
lerobot/pi05_libero_baseLeRobotthe PyTorch conversion of the reference tune, a starting point for your own fine-tunenone. It is a conversion, not a scored model
lerobot/pi05_libero_finetuned_v044LeRobot, the port cardthe conversion plus 6,000 more training steps97.5 average over the same four suites

In the publisher's run the tune scored 98.8 on spatial, 98.2 on object, 98.0 on goal, and 92.4 on the long suite, for the 96.85 average. With 6,000 extra steps, the port scored 97.0, 99.0, 98.0, and 96.0, for 97.5. Both scores sit on the LeRobot LIBERO guide and the openpi results table. Both describe simulation only. The port card was read today: 26,314 downloads, and the card's own inference switch reads false, because it is weights, not a service.

One pricing fact belongs on this page and nowhere else. On the platform's written record, the LIBERO row is not priced differently from the base. The three pi 0.5 rows, pi05, pi05-droid, and pi05-libero, carry the same per-call rate. The tune you send does not change the bill. What changes the bill is how you drive it, which is the next four sections.

Who serves it by API, checked today

Every party a buyer would check, read on 26 October 2026:

PartyWhat is there todayA price for the LIBERO tune
Physical Intelligencethe Pi API beta, opened 13 October 2026: upload data, fine-tune on their compute, serve the tuned model through their gateway, application onlynone. The post names no rate and no billing unit, and the word LIBERO appears zero times in it
abstract.inca public rate card, six rows, pi0.5 among them, metering input per million tokens and output per million actionsno LIBERO row. Their pi0.5 hour estimate is 0.85, for the base model, on their own meter
roboticinference.comone API across robot foundation model families including pi0.5, tested on LIBERO in simulation, access by invitationnone public. No rate appears on any page read, and the model list needs their key
Hugging Faceboth port checkpoints, downloadable todayweights, not a service. The card's inference switch reads false
this platforma written record on a published action routethe rate is set, the row is not on the public list, and the id returns a plain 404

Read the last column as one finding. On every public page read today, no per-call price for this checkpoint appears anywhere. The honest version of that sentence stops at public pages. One platform's catalog sits behind an invitation key. What it prices is not visible from outside. This page says so rather than guess.

The abstract.inc row deserves one relation, because their estimate is priced on a unit this site also uses. Their 0.85 estimate covers one hour of a 30 Hz control loop, 108,000 actions, the same action-hour behind this site's 2,160-call robot hour. The report priced on this page holds 172,500 actions, about 1.6 of those hours. Their card prices the base model. The LIBERO row is absent, so the crossed cell stays dashed rather than multiplied out.

The meter: one call, one bill

Field by field, the route contract is published on the action route page and the run-action reference. The short version follows, because the budget consequences live in the details. The route is POST /v1/action. Its body is a multipart form with four required fields: model, instruction, state, and one or more image parts. State is a JSON array of numbers; this arm sends eight values. Back come three fields. First comes actions, the chunk of actuator deltas. Second comes normalization, the statistics the model applied, passed through untouched. Third comes usage, the call count with the call's cost. One served request is one billed call. A request refused before it is served bills nothing.

The details a budget-minded client cares about. The route refuses any field it does not take, with 400 unknown_param naming the field. Both horizon and chunk_size are refused. Chunk length is the model's own property, not a request knob. An empty prepaid wallet returns 402 credit_balance_exhausted. An id that is not on the public list returns 404 model_not_found, which is what pi05-libero returns today. The 25 MiB body cap returns 413 before any connection is made. Saturation relays as 429 rate_limited, and that turn is unbilled. And the retry law: Idempotency-Key is accepted and logged, with no replay. A retrying client pays twice.

The trap that turns this meter expensive is old and well documented. Point the run at the base port instead of the finetuned one. The score reads zero while every call still bills. A mismatched normalization raises ValueError: QUANTILES normalization mode requires q01 and q99 stats on the first batch. The crash is loud, at least. Still, the episodes before you notice are on the bill. The quantile crash guide owns that failure family, and the bill-shock guide owns the wallet floors and the runaway-loop guards.

From calls to episodes

Two inputs fix the call count. The first is the step cap: how many environment steps an episode may run. The two documented conventions disagree on one suite, so both are named.

SuiteCap, the LeRobot tableCap, the openpi client
libero_spatial280220
libero_object280280
libero_goal300300
libero_10520520

On the left is the TASK_SUITE_MAX_STEPS table from the LeRobot source. On the right is the publisher's own example client. The measured card report this page prices ran on the LeRobot caps. Those are the caps in every number below. A fifth suite, libero_90, holds 90 more tasks outside the four reported suites, and published runs do not report it (the benchmark's own repository, which prints the 130-task count and the LIBERO-90/LIBERO-10 split). After every reset the environment also takes 10 settling steps. Those steps are zero actions. They are not counted against the cap, and they are not billable calls. They are your clock, never your bill.

The second input is the lever. How many returned actions your client executes before it asks again is your setting, not the model's property. It is documented three different ways.

Actions executed per callWhere the setting is writtenCalls per episode, the four suitesCalls in a 500-episode reportCost at P
5the publisher's example client replans every 556, 56, 60, 10434,500103.50
10the documented protocol flag, --policy.n_action_steps=1028, 28, 30, 5217,25051.75
50the checkpoint's own shipped config, n_action_steps 506, 6, 6, 113,62510.875

Per episode, the same three rows cost 0.207, 0.1035, and 0.02175. The factor of ten across the column is the finding. The bill for the identical report moves tenfold on a client setting. At 50 per call the counts round up per episode. The 520-step suite needs 11 calls of 50 actions, and the last one is partly unspent. The protocol setting of 10 divides every cap exactly.

From episodes to a report

The measured anchor, from the evaluation-cost report on this site, dated 2026-10-10. One 500-episode report, 125 episodes over each of the four suites. Wall time 47.18 hours on one rented 24 GB card. Rate basis 0.041 per card-hour, a below-list batch rate at a named community cloud. Compute cost 1.9344, written 1.93 in that page's title. Result 482 successes of 500, 96.4 percent. The clock per episode was about 5.8 minutes, and the rollout itself was 23 to 83 seconds of it: the simulator rebuild between episodes takes the rest. The published comparability shape is smaller, 400 episodes at 10 per task, about 37.7 hours, which that page prices at 3.40 on the lowest public card tier.

Set the metered numbers beside the card numbers, same report, same five paths:

Path for one 500-episode reportWhat the meter coversCost
Rented card at the account rate, 0.041 per card-houreverything on the card: policy, simulator, rebuilds1.9344
Rented card at the lowest public tier, 0.090the same whole clock4.25
Calls at the shipped config, 3,625policy calls only10.875
Calls at the protocol setting, 17,250policy calls only51.75
Calls at the publisher's client setting, 34,500policy calls only103.50

Two honesty notes belong on this table. First, the per-call rows still need a machine that runs the simulator. The reset is about 5.8 minutes per episode of that machine's clock, whichever path you buy. Per wall hour, the protocol setting runs about 1.10 over the measured 47.18-hour wall. Second, the motion itself is small. The report holds 172,500 actions, about 1.6 robot hours at the site's 108,000-action hour, stretched across 47 hours of wall. A LIBERO report is 47 hours of clock and under 2 hours of motion. Rent by the hour and you buy the clock. Pay by the call and you buy only the motion. That motion carries a unit price that has to compete with a whole rented card.

That is the whole comparison in one paragraph. The card at its entry public tier costs 4.25 for the report. The meter at the protocol setting costs 51.75. That is about 12 times the entry public card, and about 27 times the account-rate number. Even at the checkpoint's own shipped config, 10.875 is about 2.6 times the entry public card. On benchmark math alone, at every scale measured here, the card wins. The 400-episode comparability shape lands the same way: 8.70 at the shipped config and 41.40 at the protocol setting, against 1.55 on the account-rate card and 3.40 at the lowest public tier.

Which path to buy

The decision rules, honestly drawn from the table above.

  1. A full benchmark report: rent the card. The clock dominates a report and the card prices the clock. This is not close, at any setting documented above.
  2. A short check on a machine you already run: buy calls. A 40-episode smoke test costs about 4.14 in calls at the protocol setting. On a rented card at the lowest public tier the same 3.9 hours cost about 0.35. The card still wins if you would rent anyway. The calls win when the machine is already there. That means a laptop driving the simulator, a CI job, or a real arm whose loop you do not want to hang off a GPU you own. Calls buy exactly the policy slice, no card rental, no idle time, no setup.
  3. Match the checkpoint and the preprocessing before spending anything. The served id must be the row you scored locally. The base port scores zero where the finetuned port scores 97.5, and both bill identically per call. The normalization must match the checkpoint's own statistics, or the arm moves wrong without an error. Average over seeds before quoting a score, and treat any simulation score as a simulation claim.

The one rule that saves the most money is older than any of this. Print the episode plan before the long run. On one pinned library version, a request for 500 episodes counted per suite and delivered 2,000. On a meter with no replay, a mistake of that size bills four times the intended report.

The strings you will type

The reference index, quoted exactly as each source spells it. API side first:

StringWhere it goes
pi05-liberothe model field, this platform's id
POST /v1/actionthe route
model, instruction, state, imagethe four required form fields
actions, normalization, usagethe three response fields
400 unknown_paramthe refusal for horizon or chunk_size
402 credit_balance_exhaustedthe empty-wallet refusal
404 model_not_foundwhat the id returns today
413 request_too_largethe 25 MiB cap, refused before any connection
429 rate_limitedsaturation, the turn unbilled
Idempotency-Keyaccepted and logged, no replay: a retry pays twice

Local evaluation side, the LeRobot command surface:

StringWhat it sets
--env.type=liberothe environment family
--env.task=libero_spatial,libero_object,libero_goal,libero_10the four reported suites
--eval.n_episodes=1010 per task, the 400-episode comparability shape
--policy.n_action_steps=10the documented protocol setting
--env.max_parallel_tasks=1one task batch at a time
--env.init_states=truefixed initial states, comparable episodes
--env.hard_reset=falsesoft resets, faster, not bit-identical
--env.control_mode=relativethe default control mode
MUJOCO_GL=eglthe rendering backend
observation.state, observation.images.image, observation.images.image2the observation keys, 8 values and two cameras
Box(-1, 1, shape=(7,))the action space, 6D end-effector delta plus gripper
TASK_SUITE_MAX_STEPSthe source constant behind the cap table
--policy.path=pi05_libero_finetunedthe documented example policy path

The publisher's docker workflow, from the openpi README:

StringWhat it is
SERVER_ARGS="--env LIBERO"the server side of the example workflow
CLIENT_ARGS="--args.task-suite-name libero_10"the client side, here the long suite
--policy.config pi05_liberothe reference tune by config name
gs://openpi-assets/checkpoints/pi05_libero/the reference tune's weights
lerobot/pi05_libero_finetuned_v044the scored port checkpoint
lerobot/pi05_libero_basethe base port, the fine-tuning starting point
ValueError: QUANTILES normalization mode requires q01 and q99 statsthe loud crash when the statistics do not match

Frequently asked questions

What does a LIBERO report cost through a per-call API?

It depends on one client setting, and the page prices all three documented settings. At the protocol's 10 actions per call, a 500-episode report holds 17,250 calls and costs 51.75 at the written-record rate. At the checkpoint's shipped 50, it holds 3,625 calls and costs 10.875. At the publisher's client default of 5, it holds 34,500 calls and costs 103.50. The rate itself renders only in the machine pricing table on this page.

What does one episode cost?

At the protocol setting, 0.1035 per episode on average across the four suites. At the shipped config, 0.02175. At the publisher's client setting, 0.207. The long suite runs 520 steps against the short suites' 280 to 300. Its episodes cost more calls than the average in every row.

Which meter suits a LIBERO benchmark?

The rented card, and it is not close. A report is 47 hours of clock and about 1.6 robot hours of motion. A meter that prices the clock therefore beats a meter that prices the motion, at every rate on this page. The per-call meter wins when the machine running the loop already exists and you want no card at all. Think short checks, CI, or a real arm.

Is the pi 0.5 LIBERO checkpoint on the public list here?

No. The row sits in the platform's model data with its rate set, and it is not on the public list as of 26 October 2026. Nothing answers under the id today: the route returns a plain 404 and the models list omits it. The models index is the live catalog, and the machine table on this page renders only listed rows.

What does the actions-per-call setting actually change?

Only the bill, and by a factor of ten across the documented settings. The model returns its chunk; your client decides how much of it to execute before asking again. On this platform's route the chunk length is the model's own property: horizon and chunk_size are refused as request fields with 400 unknown_param. The executed-count lever stays yours, in your client.

What can the API not do for a LIBERO run?

Three things. It cannot run the simulator: the environment, the resets, and the 5.8-minute-per-episode rebuild stay on your machine. It cannot pick your checkpoint or fix your preprocessing. The base port bills the same as the finetuned one and scores zero. And it cannot make a retry free. Idempotency-Key is logged with no replay, so a retrying client pays twice.

The budget pages around this one

Neighboring numbers each have an owner on this site. For the measured card report and its 1.93, read the evaluation-cost page. The 6.48-per-robot-hour derivation and the 2,160-call conversion sit on the cost derivation and the unit glossary. For the family rate picture, there is the pi 0.5 API pricing page, and for the unit conversion worked both ways, the per-call versus per-robot-hour guide. On the protocol side, suites and checkpoints and leaderboard reading, the companion is the LIBERO evaluation guide. Listed rates for listed rows render on the pricing page, never in prose. Sign up to create a key when a metered path fits your run. Every third-party figure on this page was read on 26 October 2026. The measured figures carry 2026-10-10. The written record is a record, not a launch.

Last verified: 2026-10-26