createWorkspace
const url = 'https://dev.api.endueos.com/api/v1/stations/stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC/workspaces';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"quote_token":"example","storage_bindings":[{"storage_id":"wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC","mount_path":"example"}],"default_storage_id":"wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC","storage_id":"wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC","snapshot_id":"wsnp_01J9ZK3Q8M4XW7D2N5R6T0V1BC","name":"example","environment":"linux","provider":"fly","resources":{"minimum":{"cpus":1,"memory_mb":1},"maximum":{"cpus":1,"memory_mb":1}},"storage_gb":1,"idle_timeout_seconds":1,"start":true,"secrets":{}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://dev.api.endueos.com/api/v1/stations/stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC/workspaces \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "quote_token": "example", "storage_bindings": [ { "storage_id": "wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "mount_path": "example" } ], "default_storage_id": "wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "storage_id": "wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "snapshot_id": "wsnp_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "name": "example", "environment": "linux", "provider": "fly", "resources": { "minimum": { "cpus": 1, "memory_mb": 1 }, "maximum": { "cpus": 1, "memory_mb": 1 } }, "storage_gb": 1, "idle_timeout_seconds": 1, "start": true, "secrets": {} }'Creates a persistent isolated workspace and a 1:1 runtime device. macOS/Android are unavailable on Fly. local runs on the user’s device (linux, macos, chrome). Idempotency key reuses the same identity.
파라미터
섹션 제목: “파라미터”경로 파라미터
섹션 제목: “경로 파라미터”예시
stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC헤더 파라미터
섹션 제목: “헤더 파라미터”요청 본문필수
섹션 제목: “요청 본문필수”local takes only name, environment and provider; compute settings are rejected with 400.
object
object
예시
wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC예시
wst_01J9ZK3Q8M4XW7D2N5R6T0V1BCMutually exclusive with storage_bindings; preserves the legacy whole-root layout.
예시
wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC예시
wsnp_01J9ZK3Q8M4XW7D2N5R6T0V1BCWhere the workspace runs. fly = Linux/Chrome cloud; aws = Android on Graviton with Redroid and the bundled Endue Android agent (compute and a dedicated EBS disk). local = the user’s own device with an installed agent; endue OS provisions nothing.
object
object
object
Environment name (^[A-Z][A-Z0-9_]{0,63}$) -> secret in the same station. Delivered as one-time tokens when the secret grants this workspace use.
object
201
섹션 제목: “201”만들었다.
object
local: status comes from the installed agent — pending (never connected), running (connected), stopped (offline).
resources, storage and idle_timeout_seconds are null because the device decides them.
object
Where the workspace runs. fly = Linux/Chrome cloud; aws = Android on Graviton with Redroid and the bundled Endue Android agent (compute and a dedicated EBS disk). local = the user’s own device with an installed agent; endue OS provisions nothing.
object
object
object
서버 처리 시간(ms).
예시
{ "data": { "workspace_id": "wsp_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "station_id": "stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "environment": "linux", "provider": "fly", "status": "pending", "storage_bindings": [ { "storage_id": "wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "workspace_id": "wsp_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "state": "attaching" } ], "default_storage_id": "wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "storage_id": "wst_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "snapshot_id": "wsnp_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "storage": { "volume_id": "vol_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "status": "pending" }, "device": { "device_id": "res_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "agent_id": "agnt_01J9ZK3Q8M4XW7D2N5R6T0V1BC" } }}400
섹션 제목: “400”요청 형식이 틀렸다 — VALIDATION_ERROR(details.errors[]) 또는 BAD_REQUEST. 본문은 오류 봉투.
401
섹션 제목: “401”인증이 없거나 무효다 — UNAUTHORIZED. 본문은 오류 봉투.
402
섹션 제목: “402”크레딧이 없다 — INSUFFICIENT_CREDITS (충전하면 다시 된다). 본문은 오류 봉투.
404
섹션 제목: “404”없거나 내 것이 아니다 — *_NOT_FOUND. 본문은 오류 봉투.
409
섹션 제목: “409”지금 상태와 충돌한다 — 코드는 위 설명을 본다. 본문은 오류 봉투.
422
섹션 제목: “422”형식은 맞지만 할 수 없다 — 코드는 위 설명을 본다. 본문은 오류 봉투.
429
섹션 제목: “429”한도를 넘었다 — Retry-After 초 뒤에 다시. 본문은 오류 봉투.
500
섹션 제목: “500”서버 오류 — INTERNAL_ERROR. 본문은 오류 봉투.
503
섹션 제목: “503”의존 서비스에 닿지 못했다 — 잠시 뒤 다시. 본문은 오류 봉투.