Skip to main content
POST
The last user message carries the task instruction as a text part and the camera frames as JPEG image parts, camera-major and oldest first within a camera. robot_state, session_id and the controls are top-level fields. The action chunk comes back as a JSON string in choices[0].message.content. With stream: true the answer is text/event-stream: : processing comments every 250 ms, one event with the whole chunk, one event with finish_reason and usage, then data: [DONE]. A failure after the stream starts arrives as an event with an error object and finish_reason: "error"; the HTTP status stays 200.

Authorizations

Authorization
string
header
required

Your Abstract API key. Get it with abstract login, pass it as $(abstract token).

Body

application/json
model
enum<string>
required

A robot model id.

Available options:
abstract/dreamzero-astra:yam,
stealth/picasso:yam,
allenai/molmoact2:yam,
microsoft/rho:yam,
perceptron/isaac-0.5:yam,
physical-intelligence/pi0.5:yam
messages
object[]
required

The server reads the last user message only. Its text parts are the task instruction; its image parts are the camera frames.

Minimum array length: 1
robot_state
YAM joint state · object

The robot's state at the time of the latest frame. Required with image parts. The model picks the shape.

session_id
string

The episode id you choose. Required with image parts on abstract/dreamzero-astra:yam and stealth/picasso:yam; optional on the others. A new value starts a new episode.

Maximum string length: 128
observation_id
string

Logical observation identity. Reuse with an identical body to replay the original result without another execution or charge.

Pattern: ^[A-Za-z0-9._:-]{1,128}$
expected_step
integer

Expected next session step. A mismatch returns 409 without inference.

Required range: x >= 0
stream
boolean
default:false

true returns server-sent events.

action_horizon
integer

Action rows to return, up to the model's rows per chunk (24, 30 or 25). Default all rows. The model still computes and bills the whole chunk.

Required range: 1 <= x <= 30
num_inference_steps
integer

Accepted for compatibility. No served model reads it.

Required range: 1 <= x <= 4
handoff
boolean
default:false

true is refused with handoff_unavailable until an operator can take over. Send false or omit it.

Response

The action chunk, or a text description of the model for a request without images.

id
string
required
object
string
required
Allowed value: "chat.completion"
created
integer
required

Unix seconds.

model
string
required
choices
object[]
required
usage
object
required