Sume API 상태 값 정리: Job, 실행, 큐, 웹훅
Sume API 상태 값을 한곳에 모았습니다. Job, /v1/videos, Format·Agent 실행, 대량 실행 큐, 웹훅 전달, 사용량 행, 공유 권한, 잔액까지 다룹니다.

Sume API의 생성 Job은 queued, processing, completed, failed, canceled 상태를 거치고, Format과 Action 실행에는 skipped가 더해지며, POST /v1/videos는 같은 수명주기를 pending, in_progress, completed, failed, cancelled로 표기합니다. 대량 실행 큐, 웹훅 전달, 사용량 행, 공유 권한, 잔액에는 각각 고유한 값이 있으며, 아래에 정리했습니다.
모든 값은 Job과 결과 (영문), 실행과 결과 (영문), 오류와 요청 한도 (영문) 같은 Sume 문서나 라이브 OpenAPI 레퍼런스에서 가져왔으며, 2026-09-27에 확인했습니다. 각 표의 캡션에 출처 페이지를 적었습니다. Job과 실행이 어떻게 다른지는 Sume Job과 실행의 차이를 참고하세요.
Job과 실행은 어떤 상태 값을 쓰나요?
각 행에는 해당 객체를 자세히 설명하는 글을 링크했습니다.
| 객체 | 필드 | 값 | 참고 |
|---|---|---|---|
| 생성 Job | status | queued, processing, completed, failed, canceled | 뒤의 세 값이 종료 상태 |
| Job 상태 페이로드 | status | IN_QUEUE, IN_PROGRESS, COMPLETED, FAILED, CANCELED | 같은 페이로드의 sume_status와 일대일 대응. 둘을 섞어 쓰지 말 것 |
| 영상 생성 Job | status | pending, in_progress, completed, failed, cancelled | 같은 Job을 GET /v1/jobs/{id}/status에서도 읽을 수 있음 |
| Format 또는 Action 실행 | status | queued, processing, completed, failed, canceled, skipped | skipped는 실행되지 않았다는 뜻. 다른 실행이 진행 중이었음 |
| Agent Completion 실행 | status | queued, processing, completed, failed, canceled | 문서상 Action 실행과 같은 값 |
| 모든 실행 | next_action | poll_status, retry_later, none | skipped 실행에는 retry_later, completed·failed·canceled에는 none |
| 대기 중인 실행 | queue.state | waiting, runtime_unavailable, processing, done | runtime_unavailable: 평소 실행이 시작되는 시간을 넘겨서도 대기 중 |
| Format 실행 이벤트 | status | pending, running, done, warning, error, skipped | 항목마다 preparing, running, finalizing 중 하나의 단계를 표시 |
| Format 실행 취소 | cancel_effect | canceled, no_op | no_op: 실행이 이미 끝난 상태였음 |
큐, 웹훅, 과금은 어떤 상태 값을 쓰나요?
다음 객체들은 Job과 실행 안에 있지 않고, 그 주변에 있습니다.
| 객체 | 필드 | 값 | 참고 |
|---|---|---|---|
| 대량 실행 큐 | status | queued, running, completed | completed는 모든 항목이 종료됐다는 뜻이지, 전부 성공했다는 뜻이 아님 |
| 대량 실행 큐 항목 | status | queued, running, completed, failed, canceled | skipped인 자식 실행은 failed로 기록됨 |
| Job 웹훅 전달 | status | pending, delivering, delivered, retrying, failed, exhausted | Job의 결과가 아닌 전달 상태 |
실행의 webhook_delivery | status | not_armed, pending, retrying, delivered, failed, exhausted | not_armed: URL은 저장됐고 실행은 아직 진행 중 |
| 웹훅 봉투 | status | OK, ERROR | 실패하거나 취소된 Job은 ERROR를 보냄. 실행은 완료 시 OK, 실패 시 ERROR |
| 실행 웹훅 봉투 | outcome | ok, degraded, error | 아래 참고 |
| 사용량 원장 행 | status | reserved, captured, refunded | refunded: 확정 전 실패나 취소 뒤 예약이 해제됨 |
| 리소스 조회 | resource_status | processing, ready, failed, canceled, archived | 아바타와 아바타 영상 목록은 status=ready를 완료된 Job의 별칭으로 받음 |
| Format 또는 Action | status | active, inactive | inactive는 API 실행을 409로 거부함. 단, API로 한 번도 실행하지 않은 Format은 inactive로 읽혀도 실행될 수 있음 |
| Format 공유 권한 | status | pending, accepted | pending은 초대받은 워크스페이스의 관리자가 수락하기 전까지 아무 권한도 주지 않음 |
| 잔액 | state | funded, empty | empty: 쓸 수 있는 USD 잔액이 없거나, 아직 잔액 행이 없음 |
canceled인가요, cancelled인가요?
POST /v1/videos를 제외하면 모두 l이 하나입니다. Job, 실행, 대량 실행 항목, 리소스는 canceled로 쓰고, OpenRouter 형태의 영상 경로는 cancelled로 답하며, queued 대신 pending을, processing 대신 in_progress를 씁니다. 하나의 enum을 공유하지 말고 표면별로 문자열을 비교하세요.
Scheduled 실행을 보면 그 이유를 알 수 있습니다. 이 실행의 상태는 내부 상태를 다시 매핑한 값입니다. done은 completed로, error는 failed로, cancelled는 canceled로 노출되며, 문서는 Job 쪽 상태 문자열이 그대로 통한다고 가정하지 말라고 경고합니다.
어떤 값이 종료 상태이고, 어떤 값에서 웹훅이 가나요?
Job은 completed, failed, canceled에서, 실행은 이 세 값이나 skipped에서 폴링을 멈추세요. 다만 종료 상태라고 해서 웹훅이 전달되는 것은 아닙니다.
- Job 웹훅은 세 가지 종료 상태 모두에서
job.completed,job.failed,job.canceled로 전송됩니다. - 실행 웹훅은
completed나failed일 때 한 번 전송됩니다.canceled나skipped실행은 웹훅을 보내지 않으므로, 대신 취소 응답이나 생성 응답을 읽으세요. - 건너뛴 Scheduled 실행에는
skip_reason: previous_run_active가 담깁니다. 언제 이렇게 되는지는 중복 실행 막기에서 다룹니다. - 대량 실행 큐가
completed여도counts.failed와counts.canceled는 따로 확인해야 합니다.
outcome은 웹훅의 status에 무엇을 더하나요?
실행 웹훅의 status는 값이 두 가지뿐입니다. outcome은 쓸 수 있는 출력을 받았는지에 답합니다. ok는 출력과 함께 완료된 실행, error는 완료되지 못한 실행, degraded는 완료되고 과금됐지만 영수증에 여전히 output_error가 담긴 실행입니다. 예를 들어 output_extraction_failed가 details.reason: harvest_unavailable을 보고하면 완료된 영수증에도 output_error가 담깁니다. 이때 투영은 실행되지 못했고, status는 completed로 남으며, 다음 읽기에서 영수증이 채워집니다.
API에서는 결과가 output_schema에 맞지 않으면 실행이 실패합니다. status는 failed가 되고, error에는 output_error와 같은 사유가 담깁니다. 이 실행은 status: "ERROR", outcome: "error"로 도착합니다. 쓸 수 있는 출력을 받았는지가 궁금하다면 outcome으로 분기하세요.
출처
관련 글
개발자 카테고리의 다른 글
- Sume Job 타입과 동시성: 슬롯을 차지하는 호출
Sume 엔드포인트별 Job 타입과 슬롯 사용 여부입니다. 트림과 Timeline을 포함한 모든 생성 Job은 동시성 슬롯을 차지하고, 프레임과 검사는 차지하지 않습니다.
- Sume API 미디어 URL 규칙: 엔드포인트별 허용 URL
Sume 생성 엔드포인트는 공개 HTTPS 미디어 URL을 가져옵니다. 트림, 필터, 프레임, 검사, Timeline은 워크스페이스에 있는 media.sume.com URL만 받습니다.
- 웹훅 URL이 유효하지 않다고 거부되나요? Sume 웹훅 URL 규칙
웹훅 URL이 공개 HTTPS가 아니면 Sume는 400 invalid_request로 응답합니다. 스킴, 호스트, 포트, 자격 증명 규칙과 전달 시점의 검사를 정리했습니다.
- Claude Code·Cursor·Codex를 호스팅 MCP로 Sume에 연결
mcp.sume.com/mcp의 Sume 호스팅 MCP 서버를 쓰면 코딩 에이전트가 이미지, 영상, 오디오, 아바타를 생성할 수 있습니다. 설정 방법, OAuth 스코프, 지출 게이트를 정리했습니다.
작성자 Sume