본문으로 건너뛰기

로그 목록

워크스페이스의 잡 로그 항목과 API 요청 로그 항목을 최신순으로 돌려줍니다

GET /v1/logs

인증

방식허용조건
API 키 (Authorization: Bearer xci_live_…)가능키 권한 read (run 키도 가능)
콘솔 세션 쿠키가능조직 역할 owner, admin, developer
  • 잡 항목은 잡 표에서, 요청 항목은 서버가 API 키 요청마다 남긴 기록(시각, 키, 메서드, 경로, 상태, 지연, request_id)에서 옵니다, 요청 기록은 30일 보존됩니다
  • 콘솔 세션은 workspace_id를 꼭 보냅니다

매개변수

이름위치타입필수설명
workspace_id쿼리string콘솔 세션은 워크스페이스가 필요한 곳에서 필수, API 키는 생략하거나 키의 워크스페이스와 같아야 합니다
kind쿼리all | job | requestall, job, request, 기본 "all"
status쿼리stringok, error, 잡 상태 값(잡 항목만), 2xx부터 5xx 또는 정확한 HTTP 상태(요청 항목만)
from쿼리stringUTC 날짜(포함) 또는 RFC 3339 시각
to쿼리stringUTC 날짜(포함) 또는 RFC 3339 시각(미포함)
api_key_id쿼리string이 키의 잡만
source쿼리cli | mcp | github_action | api | playground | batch잡 항목만, 지정하면 요청 항목은 빠집니다
q쿼리string잡 ID, 저장소, 오류 코드 또는 요청 ID, 경로의 대소문자 구분 없는 부분 문자열, 200자 이하
limit쿼리integer한 페이지 크기, 최소 1, 최대 100, 기본 20
cursor쿼리string이전 응답의 next_cursor

응답

200

필드타입항상설명
dataarray<object>항상항목 배열
data[].idstring항상잡 항목은 job…, 요청 항목은 req…
data[].kindjob | request항상job 또는 request
data[].attimestamp항상시각
data[].statusstring항상잡은 잡 상태, 요청은 HTTP 상태 문자열
data[].okboolean항상잡은 실패 계열이 아닌지, 요청은 HTTP 400 미만인지
data[].workspace_idstring항상워크스페이스 ID
data[].api_key_idstringAPI 키 ID, null 가능
data[].sourcecli | mcp | github_action | api | playground | batch잡 항목만, 제출 경로, null 가능
data[].summarystring항상한 줄 요약
data[].jobobject잡 항목의 상세, null 가능
data[].job.job_idstring잡 ID
data[].job.statusqueued | preparing | running | succeeded | failed | cancelled | credit_exhausted | platform_error | timed_outqueued(대기), preparing(VM 준비), running(실행 중), succeeded(성공), failed(실패), cancelled(취소), creditexhausted(잔액 소진 중단), platformerror(플랫폼 오류), timed_out(제한 시간 초과)
data[].job.source_kindstring제출 경로
data[].job.repositorystringowner/name, null 가능
data[].job.xcodestringXcode 버전, null 가능
data[].job.batch_idstring배치 ID, null 가능
data[].job.recipe_idstring레시피 ID, null 가능
data[].job.created_attimestamp만든 시각
data[].job.started_atstring시작 시각
data[].job.ended_atstring끝난 시각
data[].job.run_secondsinteger실행 초, null 가능
data[].job.billed_minutesinteger과금 분, null 가능
data[].job.amount_micro_usdinteger금액(µUSD 정수), 최소 0
data[].job.amount_usdstring같은 금액의 USD 문자열(소수 6자리), 형식 ^-?[0-9]+\.[0-9]{6}$
data[].job.error_codestring오류 코드, null 가능
data[].job.exit_codeinteger종료 코드, null 가능
data[].job.log_urlstring로그 URL
data[].requestobject요청 항목의 상세, null 가능
data[].request.request_idstring요청 ID
data[].request.methodstring결제 수단
data[].request.pathstring경로만, 쿼리 문자열은 저장하지 않습니다
data[].request.http_statusintegerHTTP 상태
data[].request.latency_msinteger지연(ms), 최소 0
next_cursorstring항상다음 페이지 커서, 마지막이면 null, null 가능
retention_daysinteger항상요청 항목 보존 일수, 30
{
  "data": [
    {
      "id": "job_2Qm7Xp9Lk4",
      "kind": "job",
      "at": "2026-10-12T03:11:05Z",
      "status": "succeeded",
      "ok": true,
      "workspace_id": "wrk_3fK9Qm2Zp8",
      "api_key_id": "key_8Pz4Nk1Rt6",
      "source": "cli",
      "summary": "acme/ios-app bash ci.sh 3분 $0.1188",
      "job": {
        "job_id": "job_2Qm7Xp9Lk4",
        "status": "succeeded",
        "source_kind": "cli",
        "repository": "acme/ios-app",
        "xcode": "27.0",
        "batch_id": null,
        "recipe_id": null,
        "created_at": "2026-10-12T03:11:05Z",
        "started_at": "…",
        "ended_at": "…",
        "run_seconds": 125,
        "billed_minutes": 3,
        "amount_micro_usd": 118800,
        "amount_usd": "0.118800",
        "error_code": null,
        "exit_code": 0,
        "log_url": "…"
      },
      "request": null
    }
  ],
  "next_cursor": "…",
  "retention_days": 30
}

오류

HTTP코드다시 시도뜻
400invalid_request아니오본문이나 쿼리가 검증에 실패했습니다, error.details.fields에 문제 필드가 있습니다
401api_key_required아니오API 키 엔드포인트에 Authorization: Bearer 헤더가 없습니다
401api_key_revoked_leaked아니오공개 유출 신고로 자동 폐기된 키입니다, 새 키를 발급하세요
401invalid_api_key아니오모르는 키이거나 폐기, 만료, 체크섬 불일치입니다(종료된 xeno_ 접두사 포함)
401session_required아니오콘솔 엔드포인트를 유효한 콘솔 세션 쿠키 없이 불렀습니다
403insufficient_permission아니오역할이나 키 권한(run/read)이 이 요청을 허용하지 않습니다
404not_found아니오자원이 없거나 이 호출자에게 보이지 않습니다
429rate_limited가능이 키 또는 조직의 요청이 너무 많습니다, retryafters만큼 기다리세요
500internal_error가능예상하지 못한 오류입니다, 다시 시도하고 반복되면 request_id와 함께 알려 주세요

오류 봉투 모양과 전체 코드 표는 오류 코드에 있습니다

예시

curl "https://xenoci.com/api/runner/v1/logs?kind=job&status=error&limit=20" \
  -H "Authorization: Bearer $XENOCI_API_KEY"

다음 단계