跳转到内容
Rayrun
登录注册

执行与终端

非交互命令执行与交互式终端会话。 完整参数、请求 / 响应 schema 见下方(本页只渲染该组):

v0.1.0
OpenAPI 3.0.3

Rayrun API

Rayrun REST API —— 控制台与命令行(rayrun CLI)的统一接口,也是自托管部署的 第三方集成的接入点。共 13 组、93 个端点(分组见左侧栏或「介绍」页的接口一览)。 基地址与部署同源:<实例地址>/v1(如 https://rayrun.example.com/v1)。 认证:Bearer Token(控制台「设置 → 我的 API Token」或 rayrun login 创建) 或浏览器会话 Cookie;GET /health 免认证。详见「介绍」页的认证一节。

Server:https://api.rayrunos.com/v1

Rayrun 托管平台

Client Libraries

执行与终端

​

执行非交互命令

​

一次非交互命令。同步:响应即命令结束(最长为 timeout_seconds;预生产 nginx 已配 3600s 读超时)。输出上限 4 MiB (stdout+stderr 合计),触顶截断并置 truncated=true。command 与 argv 二选一:给 command ⇒ /bin/sh -c ;给 argv ⇒ 直接 exec 不过 shell。 不挂 Idempotency-Key(重复 exec 合法,与 prompt 同款)。

Path Parameters

  • sandbox_id(UUIDv7)

Body·

required
application/json

POST /v1/sandboxes/{id}/exec 请求

  • 与 command 二选一;直接 exec、不过 shell。空数组 → 400 invalid_request。

  • 与 argv 二选一(两者都给或都不给 → 400 invalid_request)。给 command ⇒ 按 /bin/sh -c <command> 执行。全文不进 journal —— 审计走结构化摘要。

  • 可选;只接受绝对路径(daemon 不解析相对路径:传相对值会按 guestd 自己的进程 cwd 解析,不是 workdir,别依赖);缺省 = manifest [run].workdir。由 guestd 判(必须是存在目录,否则 invalid_arg → 400);daemon 不做前缀校验 —— 进程工作目录语义,不是受控文件路径 。

  • 可选;增量并入基线 env(PID 1 环境 + manifest [run].env,请求值末者 优先)。值不进 journal(摘要器只记 argv 与命令前 128 字符)。

    Properties: 1
  • 可选;缺省 300,上限 3600;越界 400 invalid_request

  • 可选;只接受 root,其余 400(明确拒绝好过静默降级)

Responses

  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for post/sandboxes/{id}/exec
curl https://api.rayrunos.com/v1/sandboxes/123e4567-e89b-12d3-a456-426614174000/exec \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '{
  "command": "",
  "argv": [
    ""
  ],
  "cwd": "",
  "env": {
    "additionalProperty": ""
  },
  "timeout_seconds": 1,
  "user": ""
}'
{
  "exec_id": "123e4567-e89b-12d3-a456-426614174000",
  "exit_code": null,
  "stdout": "string",
  "stderr": "string",
  "duration_ms": 1,
  "timed_out": true,
  "truncated": true,
  "pid": null
}

开一条终端会话(起 shell)

​

Path Parameters

  • sandbox_id(UUIDv7)

Body

required
application/json
  • 终端列数

  • 终端行数

Responses

  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for post/sandboxes/{id}/terminals
curl https://api.rayrunos.com/v1/sandboxes/123e4567-e89b-12d3-a456-426614174000/terminals \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '{
  "rows": 1,
  "cols": 1
}'
{
  "terminal_id": "123e4567-e89b-12d3-a456-426614174000",
  "rows": 1,
  "cols": 1
}

流式读终端输出

​

响应体是 guest 侧 PTY 的原始输出字节(含 ANSI 转义序列),不做任何 解释或包装。流结束 = 会话结束(用户敲 exit / 连接断开 / 沙箱销毁)。 不可重放:PTY 是会话态,断线后只能新建会话,没有"续上"这回事。

Path Parameters

  • terminal_id

Responses

  • application/octet-stream
  • application/json
  • application/json
Request Example for get/sandboxes/{id}/terminals/{tid}/stream
curl https://api.rayrunos.com/v1/sandboxes/123e4567-e89b-12d3-a456-426614174000/terminals/123e4567-e89b-12d3-a456-426614174000/stream \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN'
null

发送按键字节

​

body 是原始按键字节(不是 JSON):Enter=\r、Ctrl-C=\x03、 方向键=\x1b[A —— 由前端的终端模拟器直接产出,服务端原样透传。 不落 journal(审计口径)。

Path Parameters

Body

required
application/json

Responses

  • 已写入

  • application/json
  • application/json
  • application/json
Request Example for post/sandboxes/{id}/terminals/{tid}/input
curl https://api.rayrunos.com/v1/sandboxes/123e4567-e89b-12d3-a456-426614174000/terminals/123e4567-e89b-12d3-a456-426614174000/input \
  --request POST \
  --header 'Content-Type: application/octet-stream' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data-binary 'null'
No Body

改窗口尺寸

​

走独立的短连接(不是数据连接上加帧):数据路径因此保持字节透明, input 与 resize 零共享。内核随即向会话投 SIGWINCH。

Path Parameters

Body

required
application/json
  • Integer numbers.

  • Integer numbers.

Responses

  • 已生效

  • application/json
  • application/json
Request Example for post/sandboxes/{id}/terminals/{tid}/resize
curl https://api.rayrunos.com/v1/sandboxes/123e4567-e89b-12d3-a456-426614174000/terminals/123e4567-e89b-12d3-a456-426614174000/resize \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '{
  "rows": 1,
  "cols": 1
}'
No Body

关闭终端会话(杀 shell)

​

204 幂等:会话已不存在也返回 204。

Path Parameters

Responses

  • 已关闭(幂等)

Request Example for delete/sandboxes/{id}/terminals/{tid}
curl https://api.rayrunos.com/v1/sandboxes/123e4567-e89b-12d3-a456-426614174000/terminals/123e4567-e89b-12d3-a456-426614174000 \
  --request DELETE \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN'
No Body

Models