The RSI API
One base URL, one Bearer key, four routes. Everything returns JSON.
Base URL: https://rsi.robomart.ai/v1
Overview
RSI serves complete robot brains — action models (VLAs), robot-grade vision-language
models, and world models — behind one API key, priced in one unit: the step. There is no
SDK requirement. If you can curl, you're integrated. The reasoning route
is OpenAI-compatible, so existing SDKs work by changing base_url.
Authentication
Mint a key in the console. Keys are shown once, stored hashed, revocable anytime, and carry a monthly spend cap.
Quickstart
Three calls, one per modality:
GET /v1/models
The live catalog — id, category, per-model step rates (price_live / price_queued), license class, serving status. Public, no key required.
POST /v1/act
One inference from an action model: observation in, action chunk out. The robotics-native route — no token math on an action chunk.
| Field | Notes |
|---|---|
| model | Any action-category model id from /v1/models |
| image | Base64 data URI or HTTPS URL; array accepted for multi-cam |
| state | Proprioception vector; length validated per embodiment |
| embodiment | Named rig (so101, aloha, franka, g1, custom:*) — picks norm stats |
POST /v1/chat/completions
OpenAI-compatible chat for the reasoning catalog — robot VLMs, pointing models, physical-reasoning models. Streaming supported.
POST /v1/world
World-model generation: conditioned future video. Batch by default — returns a job you poll.
POST /v1/policies
Create an account-scoped Policy from a catalog model. The response includes its stable name, matching inference route, deployment status, and revision.
POST /v1/fine-tuning/jobs
Request a tuned revision for an existing Policy using a LeRobot-format Hugging Face repository.
Steps & pricing
A step is one tick of the control loop — one motor command, one frame of imagined
future, or one decision (up to ~500 tokens of deliberation inside it). One unit across the
catalog; each model carries its own rate, exactly as token prices vary by model. Usage
responses report usage.steps on every route.
Rates are per model — exact numbers on every model page and in
GET /v1/models (fields price_live,
price_queued). Two ways to run any job:
live (answer now) or queued (runs when GPUs have slack, −66%).
World models are queue-native. Fine-tune jobs bill the clock: $0.07/min A100 · $0.10/min H100.
Serving status
Errors
| Code | Meaning |
|---|---|
| 401 invalid_key | Key missing, revoked, or malformed |
| 402 spend_cap | Monthly cap hit — raise it in the console |
| 404 unknown_model | Not in the catalog — GET /v1/models |
| 409 model_queued | Catalog model not serving yet; body has queue info |
| 409 policy_queued | Policy deployment is queued; the stable Policy name is reserved |
| 422 bad_observation | Image/state shape doesn't match the embodiment |
| 429 rate_limited | Per-key RPS exceeded; retry-after in headers |