API 목록
/api/ci/v1 엔드포인트 · 권한 · MCP 도구 · CLI 명령
API 목록 직접 확인하기펼쳐보기
주소 https://xenoci.com/api/ci/v1, 인증 Authorization: Bearer 발급한_API_키. 요청 헤더 XenoCI-Error-Format: 2를 보내면 오류를 전체 봉투로 받습니다. 기계가 읽는 명세는 /openapi.json입니다.
권한(scopes): 새 키 기본은 read·build·order이고, secrets(시크릿 저장·삭제)와 manage(맥 초기화)는 키 화면에서 켭니다. 권한이 없으면 403 scope_required와 required_scope가 옵니다. 반납·취소·환불, 결제 승인과 결제 수단은 어떤 키로도 할 수 없습니다.
키별 한도: 1분 요청 수(읽기 600·쓰기 120), 동시 빌드 20, 결제 대기 주문 3. 넘으면 429와 retry_after_s. 남은 양은 GET /me의 remaining.
| 요청 | 권한 | MCP · CLI | 설명 |
|---|---|---|---|
GET /me | read | account · xenoci whoami | 이 API 키의 계정·키 이름·권한(scopes)·한도(limits)·남은 요청 수(remaining). /account도 같음 |
GET /account | read | account · xenoci whoami | /me와 같음 |
GET /catalog | read | catalog · xenoci catalog | 상품별 24시간 가격(원, VAT 포함)·사양·Xcode·지금 배정 가능한 대수(available_now)·sales_open·내 재입고 알림 |
POST /quote | read | quote · xenoci order --tier ID --hours 24 --quote | 새 임대 견적(부작용 없음) |
POST /orders | order | create_order · xenoci order --tier ID --hours 24 | 주문 생성 → 201 + pay_url(30분 유효). 사람이 같은 계정으로 열어 동의·결제. API는 동의·결제를 하지 않음 |
GET /orders | read | order_status · xenoci orders | 주문 목록(?status=awaiting_payment 등) |
GET /orders/{order_no} | read | order_status · xenoci order RT-… | 주문 상태(awaiting_payment·paid·provisioning·ready·expired·canceled)·pay_url·rental_ids |
GET /orders/{order_no}/wait | read | wait_order · xenoci wait RT-… | 상태가 바뀌거나 ready·expired·canceled가 될 때까지 최대 60초 롱폴(timeout=초) |
POST /orders/{order_no}/release | order | release_order · xenoci release RT-… | 결제 전 주문 취소, 잡아 둔 자리 반납 |
GET /rentals | read | list_macs · xenoci macs | 빌린 맥(남은 시간·연장 가능 여부·현재 빌드)과 빌드 대기열 |
GET /rentals/{rental_id} | read | list_macs · xenoci macs | 맥 한 대 상세 |
POST /rentals/{rental_id}/extend/quote | read | extend (quote_only) · xenoci extend rt_… --hours 24 --quote | 연장 견적 |
POST /rentals/{rental_id}/extend | order | extend · xenoci extend rt_… --hours 24 | 한 대 연장 주문 → pay_url |
POST /rentals/extend | order | extend · xenoci extend rt_1 rt_2 --hours 24 | 여러 대 한 번에 연장 → pay_url 하나. 하나라도 불가면 409 extension_unavailable + items |
POST /rentals/{rental_id}/reset | manage | - | 맥 VM 초기화(manage 권한, 기본 꺼짐) |
GET /waitlist | read | join_waitlist · xenoci waitlist | 재입고 알림 신청 목록 |
POST /waitlist | order | join_waitlist · xenoci waitlist --tier ID | 재입고 알림 신청 |
DELETE /waitlist/{id} | order | join_waitlist (leave) · xenoci waitlist --leave ID | 재입고 알림 취소 |
GET /pool | read | list_macs · xenoci pool | 빈 자리와 대기열 |
POST /uploads | build | build · xenoci build | 폴더 업로드: gzip 매니페스트 → 서버에 없는 파일 목록 |
POST /uploads/{id}/blobs | build | build · xenoci build | 빠진 파일 묶음(gzip) 전송 |
POST /uploads/tar | build | - | CLI 없이 tar.gz 한 번에 업로드(curl·PowerShell) |
POST /builds | build | build · xenoci build --script ./ci.sh | 빌드 제출. 소스는 upload_id·repo_url·repo 중 하나, rental_id로 맥 지정, queue_until_rental: true면 맥이 생길 때까지 대기. Idempotency-Key 지원 |
GET /builds | read | - | 빌드 목록(rental·state·from·to·q·before·limit) |
GET /builds/{build_id} | read | build_status · xenoci status rb_… | 빌드 상태·대기 순번(queue_position)·estimated_start_at·종료 코드·실패 요약(failure) |
GET /builds/{build_id}/wait | read | wait_build · xenoci wait rb_… | 빌드가 끝날 때까지 최대 60초 롱폴 |
GET /builds/{build_id}/log | read | build_log · xenoci logs rb_… [--failure | --tail N] | 로그. offset=N이면 JSON 구간, format=text&wait=S면 텍스트 스트림 |
POST /builds/{build_id}/cancel | build | cancel_build · xenoci cancel rb_… | 빌드 취소 |
GET /secrets | read | secrets (list) · xenoci secrets | 빌드 시크릿 이름 목록(값은 돌려주지 않음) |
PUT /secrets/{name} | secrets | secrets (put) · xenoci secrets put NAME < 값 | 시크릿 저장. 빌드에 환경 변수로 들어가고 로그에서 가려짐 |
DELETE /secrets/{name} | secrets | secrets (delete) · xenoci secrets delete NAME | 시크릿 삭제 |
GET /errors | read | list_errors · xenoci errors | 내 계정 최근 API 오류와 실패 빌드(?fault=&code=&kind=api|build&since=&key=self) |