레퍼런스

서버 API

CLI는 로컬 서버 위의 얇은 셸 — 대부분의 /api/* 라우트에 CLI 래퍼가 있지만, Agent 모드는 웹 UI 전용입니다. Prompt builder는 ima2 prompt build로도 사용할 수 있습니다. 이 페이지는 엔드포인트 그룹을 정리합니다; 전체 요청/응답 형태는 API.md를 보세요.

베이스 URL

모든 엔드포인트는 로컬에서 제공됩니다. 기본 베이스는 http://localhost:3333이고, 실제 바인딩 포트는 ~/.ima2/server.json에 광고됩니다(backend.url 권장).

생성

엔드포인트용도
POST /api/generate텍스트-이미지 및 레퍼런스 기반 루트 생성.
POST /api/edit이미지 편집 / image-to-image 생성.
POST /api/generate/multimodeMultimode 배치. 비동기 POST (202) + SSE 멀티플렉싱 지원.
POST /api/node/generateNode 모드 생성 및 자식 편집. 비동기 POST (202) + SSE 멀티플렉싱 지원.
GET /api/node/:nodeId저장된 노드 메타데이터와 에셋 URL 조회.
GET /api/events비동기 생성 진행 이벤트를 위한 SSE 멀티플렉스 채널.
POST /api/video/generateGrok 비디오 생성 (T2V/I2V/Ref2V). 비동기 POST (202) + SSE 멀티플렉싱 지원.
POST /api/video/editGrok 비디오-투-비디오 편집. 결과 MP4를 generated artifact로 저장.
POST /api/video/extend기존 MP4의 마지막 프레임에서 이어붙이기.
GET /api/video/framegenerated MP4에서 PNG 프레임 추출.
POST /api/video/analyzegenerated MP4의 첫/마지막 프레임을 Grok 4.3 vision으로 분석.

POST /api/generate — 요청 바디

{
  "prompt": "a shiba in space",
  "quality": "medium",
  "size": "1024x1024",
  "format": "png",
  "moderation": "low",
  "provider": "oauth",
  "model": "gpt-5.4",
  "references": [],
  "requestId": "optional-client-id"
}

품질: low, medium, high. Moderation: auto, low. Provider: auto, oauth, api, grok, grok-api, agy, gemini-api. 권장 OpenAI 모델은 gpt-5.4; 앱 기본값은 gpt-5.4-mini입니다. Grok 모델은 grok-imagine-imagegrok-imagine-image-quality입니다. Gemini 모델은 nano-banana-2(Flash)와 nano-banana-pro(Pro)입니다. 웹 UI는 GET /api/events (SSE 멀티플렉싱)로 모든 생성 진행 이벤트를 받습니다: POST 라우트에 { async: true, requestId }를 보내면 202 응답 후 이벤트 버스를 통해 phase, partial, done, error 이벤트가 멀티플렉싱됩니다. CLI에서 Accept: text/event-stream을 보내면 기존 per-request SSE를 그대로 사용합니다.

비디오 생성. POST /api/video/generate (SSE)는 Grok을 통해 비디오를 생성합니다. 모델: grok-imagine-video, 정식 grok-imagine-video-1.5; grok-imagine-video-1.5-preview는 호환 alias로만 받습니다. 모드: text-to-video, image-to-video, reference-to-video (2–7개 ref). 1080p는 1.5 단일 이미지/프레임 I2V에서만 사용할 수 있고 Ref2V, V2V edit, extension은 기본 모델 경로로 유지됩니다. CLI: ima2 video. 확장 표면은 ima2 video edit, ima2 video extend, ima2 video frame, ima2 video analyze입니다. 요청 본문은 plannerModel(기본 grok-4.3)와 순차 클립 연속성용 storyboard를 받습니다. frame/analyze는 generated MP4 파일을 대상으로 하며 analyze는 임의 원격 URL을 거부합니다.

히스토리

엔드포인트비고
GET /api/history생성 에셋 목록; ?groupBy=session은 세션 제목별 그룹.
DELETE /api/history/:filename생성 에셋 톰스톤(소프트 삭제).
POST /api/history/:filename/restore최근 삭제된 에셋 복원.

세션 & 그래프

엔드포인트비고
GET /api/sessions · POST /api/sessions그래프 세션 목록 또는 생성.
GET /api/sessions/:id세션과 그래프 로드.
PATCH /api/sessions/:id · DELETE /api/sessions/:id세션 이름 변경 또는 삭제.
PUT /api/sessions/:id/graph그래프 스냅샷 저장.
낙관적 동시성. 그래프 저장은 현재 버전이 담긴 If-Match 헤더가 필요합니다. 버전이 stale하면 GRAPH_VERSION_CONFLICT와 현재 버전을 반환합니다 — 다른 탭이 그래프를 바꿨다는 증거가 아니라, stale 스냅샷에 대해 저장했다는 뜻입니다.

Agent 모드 & 디스커버리

Agent 모드는 대화형 이미지 워크스페이스입니다(세션, 턴, durable 세션 큐). 이 라우트들은 항상 등록되지만 CLI 래퍼가 없습니다 — Agent 모드는 웹 UI에서 사용하세요.

엔드포인트용도
GET /api/capabilities에이전트 디스커버리: 지원 모델, 유효 값, 한도, 버전 (ima2 capabilities).
GET · POST /api/agent/sessions에이전트 세션 목록 또는 생성.
GET · PATCH · DELETE /api/agent/sessions/:id세션 로드·수정·삭제.
POST /api/agent/sessions/:id/turns에이전트 턴 실행; 슬래시 명령과 /question 지원.
GET · POST /api/agent/sessions/:id/queuedurable 큐 조회·적재 (/api/agent/queue/:itemId/cancel · retry로 항목 관리).
POST /api/prompt-builder/chatPrompt-builder 어시스턴트 (ima2 prompt build).

헬스 · 스토리지 · 작업

엔드포인트비고
GET /api/health헬스 체크 (ima2 ping).
GET /api/providers프로바이더 가용성과 런타임 포트 (ima2 providers).
GET /api/oauth/statusOAuth 프록시 상태 (ima2 oauth status).
GET /api/grok/status번들 progrok 상태와 xAI 모델 probe (ima2 grok status).
GET /api/storage/status스토리지 점검.
POST /api/storage/open-generated-dirOS 파일 매니저에서 생성 디렉터리 열기.
GET /api/inflight · DELETE /api/inflight/:id진행 중 작업 목록 또는 강제 제거.

공통 에러 코드

코드의미
API_KEY_REQUIRED설정된 key 없이 API 경로 요청.
INVALID_IMAGE_MODEL모델 이름이 알 수 없거나 미지원.
IMAGE_MODEL_UNSUPPORTED모델은 있으나 이미지 생성 불가.
SAFETY_REFUSAL · MODERATION_REFUSED업스트림 안전/모더레이션 거부.
AUTH_CHATGPT_EXPIREDCodex/ChatGPT OAuth 세션 만료.
AUTH_API_KEY_INVALIDAPI key가 무효·취소·할당량 초과.
NETWORK_FAILED네트워크·프록시·VPN·방화벽 실패.
OAUTH_UNAVAILABLE로컬 OAuth 프록시 사용 불가.
GRAPH_VERSION_CONFLICTstale 그래프 버전에 대한 저장.
NODE_NOT_FOUND노드 메타데이터를 찾을 수 없음.
GROK_REF_TOO_MANYGrok 요청에 총 세 장을 넘는 입력 이미지가 포함됨.
GROK_MASK_UNSUPPORTEDGrok edit이 mask와 함께 요청됨.
INVALID_GROK_IMAGE_MODELGrok 요청이 지원하지 않는 이미지 모델을 사용함.
GROK_RATE_LIMITED · GROK_AUTH_FAILEDprogrok을 통한 xAI rate-limit 또는 auth 실패.
GROK_SEARCH_TIMEOUT · GROK_PLANNER_TIMEOUT · GROK_IMAGE_TIMEOUTGrok 단계 중 하나가 timeout budget을 초과함.
AGY_GENERATION_FAILEDGemini(agy) 이미지 생성 실패.
AGY_TIMEOUTagy CLI 프로세스가 360초 timeout 초과.
AGY_QUOTA_EXHAUSTEDGemini API 할당량 소진(rate limit).
AGY_VIDEO_UNSUPPORTEDGemini(agy) 프로바이더는 비디오 생성 미지원.
AGY_REF_TOO_MANYagy 레퍼런스 이미지 초과(최대 3장).
GEMINI_API_KEY_MISSINGGemini API key 또는 Vertex AI 자격증명 미설정.
GEMINI_API_RATE_LIMITEDGemini API rate limit(429).
GEMINI_API_SAFETY_BLOCKEDGemini API safety 필터로 생성 차단.
GEMINI_API_NO_IMAGEGemini API 응답에 이미지 없음.
VIDEO_PROVIDER_UNSUPPORTED비디오 생성은 "grok" 또는 "grok-api" 프로바이더가 필요함.

키 관리

설정 UI 또는 HTTP API로 런타임에 프로바이더 자격증명을 설정합니다.

엔드포인트메서드설명
/api/keys/statusGET모든 프로바이더(openai, xai, gemini, vertex) 키 설정·유효성·마스킹 상태 반환.
/api/keys/:providerPUTAPI key 저장. 바디: {"apiKey": "..."}. 프로바이더: openai·xai·gemini.
/api/keys/:providerDELETE설정 파일 기반 API key 제거. env var 기반 키는 제거 불가(ENV_KEY_IMMUTABLE).
/api/keys/vertexPUTVertex AI 서비스 계정 JSON 저장. 바디: {"serviceAccountJson": "..."}.
/api/keys/vertexDELETE설정 파일 기반 Vertex 서비스 계정 제거.

PUT으로 저장된 키는 config.json에 기록되고 런타임에 즉시 반영됩니다(서버 재시작 불필요). 환경 변수(GEMINI_API_KEY, VERTEX_SERVICE_ACCOUNT_JSON 등)는 설정 파일보다 우선하며 API로 변경할 수 없습니다.

전체 엔드포인트 → CLI 매핑, 레퍼런스 이미지 에러 코드, 스타일 시트 라우트는 API.md에 있습니다.