콘텐츠로 이동

API 레퍼런스

endue OS API v0.3.0 — Station·기기·앱·명령·화면·이벤트·크레딧을 다루는 공개 REST API 예요. 사람이 쓰는 데스크톱도, 서버·CI 도, AI 에이전트도 같은 API 를 불러요. 아래 표의 오퍼레이션 266개가 전부이고, 이 쪽은 계약(OpenAPI 3.1)에서 매 빌드 다시 만들어요.

시작하기

주소
https://dev.api.endueos.com개발 환경
http://127.0.0.1:8900로컬 스택 — local/up.sh
https://api.endueos.com운영 — 예정, 아직 열지 않았다
모든 경로는 /api/v1 아래에 있어요.
인증
Authorization: Bearer <JWT>endue 계정 — endue AI 와 같은 계정
Authorization: Bearer osk_…Station API 키 (또는 X-API-Key)
인증과 신원 →
형식
application/json요청·응답 본문 (화면 API 는 이미지 바이트)
{ data, meta }성공 응답의 봉투
빠른 시작 →

첫 호출 — 내 Station 목록:

GET /stations
curl -s http://127.0.0.1:8900/api/v1/stations \
-H "Authorization: Bearer $TOKEN"
# 200
{
"data": [{ "station_id": "stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "name": "lab", … }],
"meta": { "request_id": "…", "timestamp": "2026-10-05T01:02:03Z",
"pagination": { "page": 1, "limit": 20, "total": 1, "has_next_page": false } }
}

공통 규칙

모든 오퍼레이션에 같이 적용돼요. 오퍼레이션 쪽에서는 다시 적지 않아요.

무엇규칙
성공 응답{ data, meta }. meta.request_id·timestamp, 목록이면 meta.pagination(page·limit·total·has_next_page)
오류 응답{ error: { code, message, details, suggest }, meta }. code 로 분기해요 — 오류 코드
요청 추적모든 응답에 X-Request-Id 헤더 — 문의할 때 이 값을 알려 주세요
목록?page=1&limit=20 — limit 최대 200
권한소유자만. 남의 것은 403 이 아니라 404 — 있는지조차 알리지 않아요. API 키는 자기 Station 안에서만
오래 걸리는 일명령은 wait_ms(기본 25초) 안에 끝나면 201, 아니면 202 + Location — 명령
다시 보내기명령의 request_id 는 멱등 키 — 24시간 안에 같은 키·같은 입력이면 같은 명령
한도429 RATE_LIMITED 면 Retry-After 초 뒤에
id·시각id 는 접두사 + ULID (stn_·app_·res_·cmd_ …), 시각은 RFC 3339 UTC
비밀값API 키·연결 토큰·웹훅 비밀은 만들 때 응답에서 한 번만 보여요
오류 응답 — 409
{
"error": { "code": "RESOURCE_OFFLINE", "message": "Resource is offline",
"details": {}, "suggest": null },
"meta": { "request_id": "…", "timestamp": "2026-10-05T01:02:03Z" }
}

오퍼레이션

묶음마다 하는 일 순서로 놓았어요. 줄을 누르면 파라미터·본문·응답·예시가 있는 쪽으로 가요.

Station

사용자의 환경 — 컴퓨터 한 대처럼. 만들기·조회·한눈에 보기·사용량.

OS

Station 에 하나인 OS — 설정·한도, 멈추기(halt)와 켜기(boot).

기기

내 기기에 설치한 것(actual)과 클라우드에 만든 것(virtual). 만들기·조회·시작·정지, 에이전트·도구·화면·명령.

Workspace 앱

CLI-Anything 앱 카탈로그·설치·SKILL·실행.

로컬 에이전트

OpenCode·Claude Code·OpenClaw·Hermes의 설치·세션·작업·취소.

기기 안의 앱

기기 안의 앱을 저장하고 Dock 에 고정·실행하기.

명령

명령 조회·롱폴·취소·출력·블롭과 Station 의 명령 기록. 보내기는 기기 묶음의 POST /devices/{id}/commands.

Dock

Dock 1단의 순서 — 기기와 앱. 읽기와 통째로 바꾸기.

이벤트

Station 이벤트 — 입장권, SSE, WebSocket.

웹훅

서명된 이벤트 전달 — 만들기·목록·다시 켜기.

저장 객체

Station 의 파일 저장소 (R2).

API 키

서버·CI 용 Station API 키(osk_). 만들기·목록·폐기.

내 계정

로그인한 사용자 — 계정과 크레딧 잔액.

프로젝트

Station 을 묶는 단위 — 사용자가 만들고, 프로젝트의 Station·키·감사 로그를 본다.

크레딧

계정의 크레딧 지갑·원장·단가·충전. 결제는 v0.2.0 에서 테스트(mock)만 된다.

모니터링

Station 의 지표 — 명령·기기·컴퓨트.

감사 로그

내 계정의 쓰기 요청 기록.

리소스 (옛 경로)

v0.1.0 의 경로. 새 코드는 기기(/devices)를 쓴다.

에이전트 (옛 경로)

v0.1.0 의 경로. 새 코드는 /devices/{id}/agent·/tools 를 쓴다.

화면 (옛 경로)

v0.1.0 의 경로. 새 코드는 /devices/{id}/screen 을 쓴다.

릴레이 (에이전트 전용)

에이전트가 붙는 WebSocket 과 블롭 업로드 — 사람·프로그램이 부르지 않는다.

Billing costs

Deployment access

Deployments

OS interface

Resource usage

Hosting

OAuth

Organizations

Secret access

Secrets

OS snapshots

Workspace storage bindings

Workspace storage

Workspaces

Storage transfer

Scoped storage transfer v2

Storage history and operations

Storage transfer v2

인증 수단

수단어디에누가 · 무엇을
사용자 JWTAuthorization: Bearer <JWT>endue 계정(셀 신원 공급자 Keycloak). 모든 오퍼레이션
Station API 키Authorization: Bearer osk_… 또는 X-API-Key: osk_…서버·CI. 자기 Station 안에서만. Station 만들기·지우기, 키 만들기, 클라우드 기기 만들기·지우기는 못 해요(403)
이벤트 입장권?ticket=ostk_…브라우저의 EventSource·WebSocket. 1회용, 60초 — 이벤트
연결 토큰?token=osat_…기기의 에이전트만 — 릴레이 소켓·블롭 업로드