콘텐츠로 이동

관리 API

Management API는 opencodex의 제어 평면입니다. http://localhost:10100의 대시보드는 이 API의 한 클라이언트이며, 헤드리스 ocx provider, model, combo, account, settings, diagnostics, lifecycle 명령도 모두 클라이언트입니다. 이 API는 프록시가 실행 중일 때만 사용할 수 있습니다.

대화형 클라이언트가 필요하면 Web Dashboard를 사용하고, 자동화를 만들 때는 이 참고 문서를 사용하십시오. 영속 값은 결국 Configuration을 따릅니다.

Management API에는 데이터 평면 API 키와는 독립된 자체 관리자 자격 증명이 있습니다. 시작 시 opencodex는 다음 순서로 이를 확인합니다.

  1. 설정되어 있으면 OPENCODEX_ADMIN_AUTH_TOKEN
  2. 강화된 비밀 파일에 저장된 생성된 ocx_admin_* 토큰

파일 기반 토큰은 해당 디렉터리와 파일 권한 또는 ACL이 강화된 뒤에만 허용됩니다. 이를 보장할 수 없으면 관리 인증은 실패를 닫는 방식으로 처리되며, 환경 토큰이 제공되거나 파일 상태가 복구될 때까지 API는 503을 반환합니다.

관리자 토큰은 다음 두 형식 중 하나로 보내면 됩니다.

X-OpenCodex-API-Key: <admin-token>
Authorization: Bearer <admin-token>

루프백 바인드에서는 대시보드 초기화가 수명이 짧은 ocx_session_* 자격 증명을 받을 수 있습니다. 각 세션은 5분 동안 유지되며 정확한 대시보드 origin에 묶입니다. 안전한 요청은 그 origin과 일치해야 합니다. 안전하지 않은 메서드에는 브라우저 Origin과 세션의 CSRF 토큰도 필요합니다.

세션 발급은 원격 바인드와 같이 데이터 평면 인증이 필요한 경우에는 항상 비활성화됩니다. 원격 운영자는 원시 관리자 토큰으로 인증해야 하며, 루프백 방식의 GUI 세션은 발급되지 않습니다.

아래의 모든 엔드포인트 행은 이 경계 오류를 상속합니다. “주요 오류” 열에는 이 표를 반복하지 않고 경로별로 추가되는 결과만 적습니다.

상태 유형 또는 코드 의미
401 opencodex admin token required 관리자 토큰 또는 GUI 세션이 없거나, 잘못되었거나, 만료되었거나, origin이 일치하지 않거나, CSRF 증거가 없습니다
403 cross-origin request blocked 요청 origin이 management allowlist 밖에 있습니다
404 not_found method와 path에 맞는 management route가 없습니다
413 request body too large POST, PUT, PATCH 본문이 management 2 MiB 제한을 초과했습니다
503 management API unavailable 관리자 자격 증명 초기화 또는 hardening을 사용할 수 없습니다
503 oauth_mutation_busy 다른 OAuth 자격 증명 변경이 writer를 점유하고 있습니다. 응답에는 Retry-After: 1이 포함됩니다
503 catalog_busy catalog 수집이 이미 최대치입니다. 응답에는 Retry-After: 1이 포함됩니다
Method and path 목적 주요 오류
GET, PUT /api/v2 native multi-agent v2 모드와 thread 설정을 읽거나 변경합니다 400 잘못된 설정; 502 전환 또는 영속화 실패
GET, PUT /api/injection-model 주입된 sub-agent 모델, effort, prompt, guidance 설정을 읽거나 설정합니다 400 잘못된 모델, effort, 또는 본문
GET, PUT /api/effort-caps 전역 및 sub-agent reasoning-effort 상한을 읽거나 설정합니다 400 잘못된 ladder 값
GET, PUT /api/subagent-models sub-agent에 광고되는 모델을 읽거나 순서를 조정합니다 400 잘못된 목록 또는 모델 5개 초과
GET, PUT /api/subagent-model-fallback 정렬된 fallback 체인과 poll interval을 읽거나 설정합니다 400 잘못된 목록 또는 poll interval
GET /api/grok Grok 관리 구성 상태와 후보 모델을 읽습니다 400 상태 읽기 실패
PUT /api/grok/selection 제외할 Grok 모델을 영속화합니다 400 잘못되었거나 너무 큰 선택
POST /api/grok/apply 관리형 동기화를 통해 영속화된 Grok 구성을 적용합니다 409 grok_apply_busy; 400/500 적용 실패
GET, PUT /api/claude-desktop Claude Desktop 라우팅/네이티브 프로필을 읽거나 저장합니다 400 잘못되었거나 사용할 수 없는 할당
POST /api/claude-desktop/apply 저장된 프로필을 Claude Desktop의 관리형 구성에 기록합니다 400/500 기록 실패
GET /api/claude-desktop/status 저장된 프로필과 적용된 프로필, Desktop 상태를 확인합니다 400 상태 읽기 실패
GET, PUT /api/claude-code Claude Code gateway, auth-mode, model-map, context, agent, sidecar 설정을 읽거나 갱신합니다 400 잘못된 필드 또는 형태

모델 목록과 암호화된 worker-task 동작의 개념은 Sub-agent Surface를 참고하십시오.

Method and path 목적 주요 오류
GET /api/combos 정규화된 combo와 공개 model id를 나열합니다 catalog 작업이 catalog_busy를 반환할 수 있습니다
PUT /api/combos 하나의 combo를 생성, 대체, 또는 이름 변경합니다 400 잘못된 id, target, config, rename, 또는 일반 충돌; 409 Codex-account namespace 충돌
DELETE /api/combos?id=... 하나의 combo를 삭제하고 선택/cooldown 상태를 지웁니다 400 id 누락; 404 알 수 없는 combo

대상 전략, cooldown, alias, 라우팅 실패는 Combos를 참고하십시오.

Method and path 목적 주요 오류
GET /api/config redacted된 management-safe configuration DTO를 반환합니다
PUT /api/config 전체 구성 교체 방지 기능이 비활성화되어 있습니다 405; 대신 집중된 엔드포인트를 사용하십시오
GET, PUT /api/settings 런타임/시작 설정을 읽거나 auto-start, stream mode, 앱 소유 memory budget을 업데이트합니다 400 잘못되었거나 비어 있는 업데이트
GET /api/startup-health 캐시된 서비스/shim 시작 상태를 읽습니다
POST /api/startup-action 서비스 또는 Codex shim을 설치하거나 복구합니다 400 잘못된 작업; 500 작업 실패
GET, POST /api/windows-tray Windows tray 상태를 읽거나 설치, 시작, 중지, 제거합니다 400 지원되지 않는 플랫폼/작업; 500 작업 실패
GET /api/diagnostics/project-config 캐시된 프로젝트 구성 경고를 읽습니다
POST /api/sync 현재 model catalog를 Codex에 동기화합니다 500 동기화 실패
GET /api/update/check latest 또는 preview 업데이트 채널을 확인합니다 400 잘못된 태그
POST /api/update/run 선택적으로 restart를 뒤따르게 할 수 있는 업데이트 작업을 시작합니다 400 잘못된 본문; 작업별 충돌/오류 상태
GET /api/update/status id로 업데이트 작업을 조회합니다 404 알 수 없는 작업
GET, PUT /api/sidecar-settings web-search 및 vision sidecar 모델/backend 설정을 읽거나 업데이트합니다 400 잘못된 형태, backend, 또는 한도
GET, PUT /api/shadow-call-settings shadow-call interception 설정을 읽거나 업데이트합니다 400 잘못된 형태 또는 값
Method and path 목적 주요 오류
GET /api/logs 필터링된 인메모리 요청 로그를 조회합니다
GET, PUT /api/debug debug 플래그를 읽거나, capture 범주를 설정, 해제, 초기화합니다 400 잘못되었거나 비어 있는 업데이트
GET /api/debug/logs 제한된 provider/debug 로그 항목을 읽습니다
GET /api/debug/usage-logs 제한된 usage-debug 항목을 읽습니다
GET /api/debug/injection-logs 제한된 guidance-injection debug 항목을 읽습니다
GET /api/claude/inbound-debug Claude inbound debug 상태와 항목을 읽습니다
GET /api/usage 범위와 클라이언트 surface별 사용량을 요약합니다 저장소를 읽을 수 없으면 error: "read_failed" 요약을 반환합니다
GET /api/storage bucket별 Codex 저장소 사용량을 검사합니다 검사 실패 시 error: "scan_failed" payload를 반환합니다
POST /api/storage/cleanup/preview archived-session cleanup을 미리 보고 binding digest를 반환합니다 400 invalid_json 또는 invalid_percent
POST /api/storage/cleanup 미리 본 archived set을 격리하거나 영구적으로 제거합니다 400 잘못된 입력; 409 오래되었음/바쁨/참조됨 상태; 500 파일 시스템/데이터베이스 실패
GET /api/storage/trash 격리된 cleanup 항목을 나열합니다 500 trash_list_failed
POST /api/storage/trash/restore 격리된 항목 하나를 복원합니다 400 잘못된 id; 404 trash 없음; 409 busy/대상 충돌; 500 복원 실패
GET /api/storage/trash/restore/test-stream 테스트 전용 restore stream 훅입니다 테스트 훅이 꺼져 있으면 404 not_available
GET, PUT /api/storage/cleanup-policy 예약된 cleanup policy와 작업 상태를 읽거나 업데이트합니다 400 잘못된 policy
POST /api/storage/cleanup-policy/run 수동 cleanup-policy 실행을 시작합니다 409 already_running; 500 cleanup_failed
GET /api/storage/cleanup-policy/test-stream 테스트 전용 policy stream 훅입니다 사용할 수 없으면 404 not_found
Method and path 목적 주요 오류
GET /api/catalog 설치된 Codex catalog 문서를 반환합니다 404 catalog 없음
GET /api/models 대시보드/CLI model 행을 반환합니다 수집이 포화 상태이면 catalog_busy
GET /api/client-config?client=... 읽기 전용 OpenCode 또는 Pi client-config 문서를 만듭니다 400 지원되지 않는 client; 503 catalog 사용 불가
PUT /api/disabled-models 공유 disabled-model 목록을 교체합니다 400 잘못된 JSON
PUT /api/model-visibility provider 또는 model 수준의 visibility를 원자적으로 변경합니다 400 잘못된 provider, scope, target, 또는 본문
GET, POST /api/custom-models custom model을 나열하거나 하나를 추가합니다 400 잘못된 필드; 404 provider 없음; 409 중복 model
PUT, DELETE /api/custom-models/{id} custom model 하나를 수정하거나 삭제합니다 400 잘못된 id/필드; 404 찾을 수 없음; 409 중복 model
GET, PUT /api/selected-models provider allowlist와 가용성을 읽거나 allowlist 하나를 교체합니다 400 provider/body 누락; 404 알 수 없는 provider

OAuth 계정, provider key, 데이터 평면 키

섹션 제목: “OAuth 계정, provider key, 데이터 평면 키”
Method and path 목적 주요 오류
GET /api/oauth/providers 공개 OAuth 로그인 흐름이 있는 provider를 나열합니다
GET /api/key-providers API-key 로그인으로 구성된 provider를 나열합니다
POST /api/oauth/login OAuth 로그인 또는 계정 추가 흐름을 시작합니다 400 알 수 없거나 잘못된 provider; oauth_mutation_busy
POST /api/oauth/login/code 수동 callback URL 또는 authorization code를 제출합니다 400 잘못된 provider/code; oauth_mutation_busy
POST /api/oauth/login/cancel 공개적으로 진행 중인 OAuth 흐름을 취소합니다 400 알 수 없는 provider
GET /api/oauth/status 하나의 provider OAuth 흐름을 조회합니다 400 알 수 없는 provider
POST /api/oauth/logout 선택된 provider 자격 증명을 제거합니다 400 알 수 없는 provider; oauth_mutation_busy
GET, DELETE /api/oauth/accounts 마스킹된 계정을 나열하거나 계정 하나를 제거합니다 400 잘못된 provider/id; 404 계정 없음; oauth_mutation_busy
PUT /api/oauth/accounts/active 활성 OAuth 계정을 선택합니다 400 잘못된 provider/account; oauth_mutation_busy
GET, PUT, PATCH /api/oauth/accounts/pool Anthropic OAuth pool policy를 읽거나 업데이트합니다 400 Anthropic이 아닌 provider 또는 잘못된 policy
POST /api/oauth/accounts/clear-cooldown OAuth 계정 하나의 런타임 cooldown을 지웁니다 400 잘못된 provider/account
PUT /api/oauth/accounts/alias OAuth 계정 alias를 설정하거나 지웁니다 400 잘못된 provider/account/alias
GET, POST, DELETE /api/providers/keys 마스킹된 provider key를 나열, 추가/활성화, 또는 제거합니다 400 잘못된 입력; 404 provider/key 없음
PUT /api/providers/keys/active provider의 활성 key를 선택합니다 400 잘못된 입력; 404 provider/key 없음
PUT /api/providers/keys/alias provider-key alias를 설정하거나 지웁니다 400 잘못된 입력; 404 provider/key 없음
GET, POST, PATCH, DELETE /api/keys 데이터 평면 admission key를 나열, 생성, 수정, 또는 삭제합니다 400 잘못된 본문/id; 404 key 없음

자격 증명 목록 응답은 의도적으로 마스킹됩니다. OAuth access token과 완전한 provider API key는 대시보드 클라이언트에 반환되지 않습니다.

Method and path 목적 주요 오류
GET /api/providers redacted된 provider 구성과 discovery 상태를 나열합니다
POST /api/providers 검증된 provider 하나를 추가하거나 교체하고, 선택적으로 기본 provider로 설정합니다 400 잘못되었거나 위험한 대상 또는 구성; 409 namespace 충돌
PATCH /api/providers?name=... 허용된 provider 필드, enabled/default 상태, 또는 OpenAI account mode를 업데이트합니다 400 잘못된 필드 또는 전환; 404 알 수 없는 provider
DELETE /api/providers?name=... provider를 삭제하고, 가능하면 기본 provider를 재지정합니다 404 알 수 없는 provider; 409 last_provider; 409 provider_has_dependent_combos
POST /api/providers/test?name=... 제한된 live provider connectivity/model-discovery 탐색을 수행합니다 404 알 수 없는 provider; 실패는 보통 ok: false 증거로 반환됩니다
GET /api/provider-quotas provider quota 보고서를 읽습니다. refresh=1은 새로 고침을 강제합니다
GET, PUT /api/provider-context-caps 전역, 모든 provider, 또는 하나의 provider context cap을 읽거나 업데이트합니다 400 잘못된 요청; 404 알 수 없는 provider
GET /api/provider-presets 런타임 registry에서 파생된 GUI provider preset을 반환합니다

provider_has_dependent_combos는 안전 장치입니다. provider를 삭제하기 전에 종속된 combo를 제거하거나 수정하십시오.

사이드바 및 동의가 필요한 작업

섹션 제목: “사이드바 및 동의가 필요한 작업”
Method and path 목적 주요 오류
GET /api/github/star 사용자의 gh 세션을 통해 저장소 star 상태를 읽습니다 상태별 고정 결과 코드
POST /api/github/star 인증된 사람의 작업에서만 저장소를 star합니다 대시보드 세션 증거가 없는 agent-driven 호출에는 403 agent_consent_required
GET /api/update/badge 저렴한 sidebar update-badge 상태를 읽습니다
Method and path 목적 주요 오류
GET /api/system/memory 프로세스, heap, stream, response-state, watchdog, active-turn의 스칼라 메트릭을 반환합니다
POST /api/system/restart 클라이언트 injection을 제거하지 않고 drain-aware 프로세스 재시작을 시작합니다 202 반환; 반복 호출은 기존 drain을 보고합니다
POST /api/stop 서비스를 중지하고, native Codex를 복원하며, 관리형 Grok injection을 제거하고, 프록시를 drain합니다 409 서비스 소유권 충돌

루트 management dispatcher는 모든 /api/codex-auth/* 요청을 Codex account manager에 위임합니다. 해당 route는 다음과 같습니다.

Method and path 목적 주요 오류
GET, POST, DELETE /api/codex-auth/accounts Codex account를 나열/갱신, 선택적으로 가져오기, 또는 삭제합니다 400 잘못된 입력; 수동 가져오기를 비활성화할 수 있음
PUT /api/codex-auth/accounts/alias 계정 alias를 설정하거나 지웁니다 400 잘못된 account/alias
PUT /api/codex-auth/accounts/pause 계정 하나를 일시 중지하거나 재개합니다 400 잘못된 account/state; 404 누락된 account
PUT /api/codex-auth/accounts/pause-exhausted quota가 소진된 account를 일시 중지합니다 mutation-lock 실패는 503이 됩니다
POST /api/codex-auth/accounts/clear-cooldown account 하나 또는 모든 account의 runtime cooldown을 지웁니다 400 잘못된 id
GET, PUT /api/codex-auth/active 활성 account를 읽거나 선택합니다 400 잘못되었거나 누락된 account; 409 paused/legacy-row 충돌
PUT /api/codex-auth/auto-switch 자동 account 전환을 위한 quota threshold를 설정합니다 400 잘못된 threshold
PUT, PATCH /api/codex-auth/pool-strategy Codex account-pool 선택 전략을 업데이트합니다 400 잘못된 전략/구성
PUT /api/codex-auth/failover account failover threshold를 설정합니다 400 잘못된 threshold
GET /api/codex-auth/quota 계정별 캐시된 quota 상태를 읽습니다
GET /api/codex-auth/reset-credits 계정의 reset-credit 자격을 확인합니다 400 누락된 account id; upstream 상태 전달; 500 조회 실패
POST /api/codex-auth/reset-credits/consume 사용할 수 있는 reset credit을 소비합니다 400 누락된 account id; upstream 상태 전달; 503 server_busy; 500 소비 실패
POST /api/codex-auth/login Codex 로그인 또는 재인증을 시작합니다 400 잘못된 요청; 충돌/바쁨 로그인 상태
POST /api/codex-auth/login/code Codex 로그인 흐름용 수동 코드를 제출합니다 400 잘못된 흐름/code
POST /api/codex-auth/login/cancel Codex 로그인 흐름을 취소합니다
GET /api/codex-auth/login-status 흐름 또는 account 로그인 상태를 조회합니다 알 수 없는 흐름은 expired로 보고되며, 활성 흐름이 없으면 idle로 보고됩니다

이 위임된 계열에서 configuration-writer 또는 credential-refresh lock timeout이 발생하면 HTTP 503과 CONFIG_MUTATION_LOCK_UNAVAILABLE 코드가 반환됩니다. 클라이언트는 이를 영구적인 계정 실패로 보지 말고 곧바로 다시 시도해야 합니다.

일반적인 관리 작업에는 Web Dashboard가 가장 안전한 안내형 워크플로를 제공합니다. 헤드리스 호스트와 자동화에는 대응하는 ocx 명령을 사용하십시오. 이 명령들은 동일한 실시간 API를 호출하며, 프록시에 접근할 수 없거나 작업이 실패하면 0이 아닌 결과를 반환합니다. 직접 HTTP는 위의 정확한 엔드포인트 계약이 필요한 통합에 가장 유용합니다.