---
title: 벌크 실행
description: 모비두가 실제로 쏜 시트 기반 POST /v1/formats/mobidoo/live-commerce/bulk-runs — 봉투, 원본 item 본문, 큐 폴링 방법.
---

모비두는 라이브 커머스를 두 가지 방식으로 돌립니다.
[라이브 커머스 API](/enterprise/mobidoo/live-commerce) 페이지는 단일 실행,
클립 타입 경로를 다룹니다. `POST …/runs` 한 번,
`opening[]` / `middle[]` / `closing[]`이 담긴 receipt, 그리고 스레드 기반 클립
재시도입니다.

이 페이지는 다른 쪽, **시트 기반 배치**를 다룹니다. 방송 시트의 한 행이 item
하나가 되고, 시트 전체가 `POST …/bulk-runs` 한 번이 되며, 스키마는 배치가 실제로
쓰는 필드 하나 — `full_video` — 로 줄어듭니다. 2026-08-28 HBS No.45–65 배치에서
쓴 모양 그대로이며, 백엔드가 같은 본문을 만들 수 있도록 축약 없이 실었습니다.

클립 스키마를 대체하지 않습니다. 타입 있는 클립과 씬 단위 재시도가 필요하면
`mobidoo/live-commerce/v1`을 계속 쓰세요.

## 워크스페이스 키

다른 모비두 Format 호출과 같은 규칙입니다. **모비두 팀 워크스페이스** API 키(개인
키가 아니라 모비두 팀에서 만든 키)를 쓰세요. 개인 키로
`mobidoo/live-commerce`를 호출하면 `403 workspace_key_required`로 실패합니다 —
[팀 Format에는 팀 키가 필요합니다](/formats/call#팀-format에는-팀-키가-필요합니다)를
참고하세요.

큐를 만들려면 `formats:write`, 폴링하려면 `formats:read`가 필요합니다. 기존 키에
스코프를 추가할 수 없으니 새 키를 만드세요.

모비두 워크스페이스에 아직 초대되지 않았다면 Slack에서 **허채원 (Chase Huh)** 에게
요청하거나 [chase@sume.com](mailto:chase@sume.com) 으로 요청하세요 —
[워크스페이스 접근 권한](/enterprise/mobidoo#워크스페이스-접근-권한)을 참고하세요.

## 호출

본문은 파일로 두세요. 행마다 VO가 붙으면 셸 heredoc으로 감당할 크기가 아닙니다.

```bash
export SUME_MOBIDOO_API_KEY="sume_live_..."   # 모비두 팀 워크스페이스 키

curl -sS -X POST "https://api.sume.com/v1/formats/mobidoo/live-commerce/bulk-runs" \
  -H "Authorization: Bearer $SUME_MOBIDOO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d @bulk-runs-body.json
```

배치마다 **새** `Idempotency-Key`를 만드세요(`$(uuidgen)`). 이미 쓴 키를 다시
보내면 새 큐가 아니라 **예전** 큐가 `202`로 돌아옵니다.

## 봉투

`bulk-runs-body.json`은 키 두 개입니다. 나머지는 전부 각 item 안에 있습니다.

```json
{
  "concurrency": 2,
  "items": ["{/* 시트 행마다 Format run 본문 하나 — item 0 전문은 아래 */}"]
}
```

2026-08-28 배치는 **`concurrency: 2`** 와 **item 20개**를 보냈습니다. HBS
No.45부터 No.65까지이며, **No.50은 제외**했습니다. 그 행에는 완성된 초안이
없었기 때문입니다. 이런 행은 클라이언트에서 건너뛰세요 — 보낼 "빈 item"은
없습니다. 순서는 제출한 순서 그대로이고 receipt의 `items[i].index`가 그 위치이니,
시트 행 ↔ index 매핑은 직접 들고 계세요.

create는 `frq_…` 큐와 함께 `202`를 반환하고, 첫 `concurrency`개는 이미 실행
중입니다. 위 배치의 출처: 큐 `frq_cfd22d14-68db-4aeb-9816-404a79f0badf`,
`live-commerce` v38, create 시점 counts 20 total / 2 running / 18 queued. 그 큐는
만든 키의 소유이므로 여러분 키로는 `GET` 할 수 없습니다.

봉투 계약 전체, 한도(`concurrency` 1–16, `items` 1–100), 큐 receipt 모양, 모든
오류 코드: [대량 실행](/formats/bulk-runs).

## Item 0 — 원본 본문

각 item은 단일 `POST …/runs`의 본문 그대로입니다. 아래는 item 0(시트 No.45)
그대로이며, `communication.webhook_url`만 플레이스홀더로 바꿨습니다. 나머지 19개도
같은 키 여섯 개에 각자 행의 데이터가 들어갑니다.

```json
{
  "instruction": "@mobidoo/live-commerce\n\n아바타는  https://d3hevm4kz2l106.cloudfront.net/ai-showhost/common/avatar/AVATAR_CHAERIN/thumbnail.png 이걸로 생성해줘\n\n9월 3일(목)\t8시\t\tLiving&Leisure\t스포츠/유아동\t4438469916\t나이키 NSW 클럽 프렌치테리 맨투맨 BV2666\thttps://item.gmarket.co.kr/Item?goodsCode=4438469916\t나이키\t30900\t24810\t20%\t🍁 가을 특가 라이브! 나이키 데일리 맨투맨\t매일 편하게 입기 좋은 나이키 맨투맨,\n클럽 프렌치테리로 데일리룩을 완성해보세요!\n\n✔ 나이키 NSW 클럽 프렌치테리 맨투맨\n✔ 부드럽고 편안한 프렌치테리 소재\n✔ 데일리룩부터 가벼운 외출까지 활용도 UP\n✔ 깔끔한 나이키 로고 포인트로 부담 없이 코디\n\n지마켓 AI라이브에서 만나보세요 🖤\n\n*생성형 AI를 활용하여 제작된 영상으로, 실제와 차이가 있을 수 있습니다.\t* 한가위빅세일 12% 쿠폰+카드할인10%\n최대 할인 혜택가!\n30,900원 -> 24,810원\n\n0. S~XL 다양한 사이즈 구성으로 취향에 맞게 선택\n1. 나이키 대표 데일리 기본템\n2. 부드럽고 편안한 프렌치테리 소재\n3. 깔끔한 라운드넥 디자인\n4. 나이키 스우시 로고 포인트\thttps://drive.google.com/drive/folders/1Egr9qJurH0wLL5kAdnbQMneLWKKOKMzd\t채린\nhttps://gdimg.gmarket.co.kr/4438469916/still/800?ver=178779\n\"나이키 엔에스더블유 클럽 프렌치테리 맨투맨을 오늘 라이브에서 이만 사천팔백십원에 구매하실 수 있습니다. 나이키 병행 수입 정품으로 준비된 상품이라 소재부터 디테일까지 믿고 선택하실 수 있어요. 색상은 블랙, 그레이, 카키, 베이지, 그린, 블루까지 총 여섯 가지로 준비되어 있어서 원하는 톤으로 골라보실 수 있어요. 무난한 다크 컬러부터 포인트가 되는 컬러까지 폭넓게 갖춰져 있습니다. 어떤 색상이 마음에 드시는지 소재와 함께 하나씩 살펴보세요.\n\n환절기에는 가볍게 걸치면서도 포근함을 챙길 수 있는 맨투맨 하나가 꼭 필요합니다. 이 맨투맨은 프렌치테리 소재로 만들어져 안쪽에 기모가 들어가 있어서 포근하게 입으실 수 있어요. 신축성과 두께감, 비침 모두 중간 정도로 설계되어서 어느 계절에나 부담 없이 걸치기 좋습니다. 너무 얇지도 두껍지도 않은 두께라 실내에서도, 가벼운 외투 안에 받쳐 입을 때도 편하게 활용할 수 있어요. 디자인적으로는 가슴 왼쪽에 나이키 스우시 로고가 자수로 장식되어 있어서 심플하면서도 브랜드 특유의 포인트를 살려줍니다. 목 부분은 깔끔한 라운드넥으로 마무리되어 있어서 캐주얼한 룩에 자연스럽게 녹아드는 디자인이에요. 소재의 편안함과 깔끔한 라운드넥, 은은한 로고 포인트까지 더해지면서 전체적으로 정돈된 느낌을 줍니다.\n\n나이키 엔에스더블유 클럽 프렌치테리 맨투맨은 정상가 삼만 구백원입니다. 오늘 라이브에서 할인율 이십 퍼센트가 적용되어 이만 사천팔백십원까지 가격이 내려갑니다. 이런 할인율은 흔치 않습니다. 지금이 가장 좋은 조건으로 구매할 수 있는 타이밍이에요.\n\n카키 컬러를 선택하실 때 해당 컬러의 원단 특성 한가지를 확인해두시면 좋습니다. 카키 컬러는 금색 잡사가 섞여있는 원단으로 제작됩니다. 이 금색 잡사는 불량이 아니라 정상적인 제품 특성이에요. 원단 특유의 자연스러운 색감 차이라고 이해하시면 됩니다. 사이즈는 에스부터 엑스라지까지 다양하게 준비되어 있어서 본인 체형이나 즐겨 입는 핏에 맞게 선택하실 수 있어요. 여유 있게 입고 싶으시다면 한 사이즈 크게, 슬림하게 입고 싶으시다면 평소 사이즈로 선택하시면 됩니다.\n\n편하게 걸치기만 해도 완성되는 옷이라서 데일리룩으로 활용하기 좋아요. 청바지나 편한 팬츠에 매치하면 주말 나들이나 가벼운 외출 룩이 완성됩니다. 특별히 신경 쓰지 않아도 캐주얼한 분위기를 만들어주기 때문에 등하교 길이나 카페를 갈 때, 가까운 산책에도 무리 없이 소화할 수 있어요. 위에 아우터를 걸치거나 아래에 트레이닝 팬츠를 매치하는 식으로 계절과 상황에 맞춰 다양하게 응용할 수 있습니다. 가슴에 자리한 스우시 로고는 화려하지 않으면서도 브랜드 특유의 분위기를 살려줘서 과하지 않은 포인트가 됩니다. 로고 하나로 심심할 수 있는 맨투맨에 힘을 실어주면서도 코디 전체를 부담스럽게 만들지 않아요.\n\n나이키 엔에스더블유 클럽 프렌치테리 맨투맨, 부드러운 소재와 깔끔한 디자인으로 데일리로 편하게 입기 좋은 맨투맨입니다. 정상가 삼만 구백원에서 최종 할인가는 이만 사천팔백십원입니다.\n\n여섯 가지 컬러와 에스부터 엑스라지까지 사이즈 구성도 폭넓게 준비되어 있으니, 오늘 라이브에서 가장 좋은 조건으로 만나보실 수 있습니다.\"\n\n배너 규격 한번 더 상하 여백 체크 잘해주고, End to End로 진행해줘",
  "input": {
    "sheet_no": 45,
    "product_url": "https://item.gmarket.co.kr/Item?goodsCode=4438469916",
    "product_name": "나이키 NSW 클럽 프렌치테리 맨투맨 BV2666",
    "brand_name": "나이키",
    "on_card_name": "🍁 가을 특가 라이브! 나이키 데일리 맨투맨",
    "live_title": "🍁 가을 특가 라이브! 나이키 데일리 맨투맨",
    "live_intro": "매일 편하게 입기 좋은 나이키 맨투맨,\n클럽 프렌치테리로 데일리룩을 완성해보세요!\n\n✔ 나이키 NSW 클럽 프렌치테리 맨투맨\n✔ 부드럽고 편안한 프렌치테리 소재\n✔ 데일리룩부터 가벼운 외출까지 활용도 UP\n✔ 깔끔한 나이키 로고 포인트로 부담 없이 코디\n\n지마켓 AI라이브에서 만나보세요 🖤\n\n*생성형 AI를 활용하여 제작된 영상으로, 실제와 차이가 있을 수 있습니다.",
    "highlights": [
      "* 한가위빅세일 12% 쿠폰+카드할인10%",
      "최대 할인 혜택가!",
      "30,900원 -> 24,810원",
      "0. S~XL 다양한 사이즈 구성으로 취향에 맞게 선택",
      "1. 나이키 대표 데일리 기본템",
      "2. 부드럽고 편안한 프렌치테리 소재",
      "3. 깔끔한 라운드넥 디자인",
      "4. 나이키 스우시 로고 포인트"
    ],
    "product_image_urls": [
      "https://gdimg.gmarket.co.kr/4438469916/still/800?ver=178779"
    ],
    "host_image_url": "https://d3hevm4kz2l106.cloudfront.net/ai-showhost/common/avatar/AVATAR_CHAERIN/thumbnail.png",
    "vo_language": "ko",
    "script": {
      "segments": [
        "나이키 엔에스더블유 클럽 프렌치테리 맨투맨을 오늘 라이브에서 이만 사천팔백십원에 구매하실 수 있습니다. 나이키 병행 수입 정품으로 준비된 상품이라 소재부터 디테일까지 믿고 선택하실 수 있어요. 색상은 블랙, 그레이, 카키, 베이지, 그린, 블루까지 총 여섯 가지로 준비되어 있어서 원하는 톤으로 골라보실 수 있어요. 무난한 다크 컬러부터 포인트가 되는 컬러까지 폭넓게 갖춰져 있습니다. 어떤 색상이 마음에 드시는지 소재와 함께 하나씩 살펴보세요.\n\n환절기에는 가볍게 걸치면서도 포근함을 챙길 수 있는 맨투맨 하나가 꼭 필요합니다. 이 맨투맨은 프렌치테리 소재로 만들어져 안쪽에 기모가 들어가 있어서 포근하게 입으실 수 있어요. 신축성과 두께감, 비침 모두 중간 정도로 설계되어서 어느 계절에나 부담 없이 걸치기 좋습니다. 너무 얇지도 두껍지도 않은 두께라 실내에서도, 가벼운 외투 안에 받쳐 입을 때도 편하게 활용할 수 있어요. 디자인적으로는 가슴 왼쪽에 나이키 스우시 로고가 자수로 장식되어 있어서 심플하면서도 브랜드 특유의 포인트를 살려줍니다. 목 부분은 깔끔한 라운드넥으로 마무리되어 있어서 캐주얼한 룩에 자연스럽게 녹아드는 디자인이에요. 소재의 편안함과 깔끔한 라운드넥, 은은한 로고 포인트까지 더해지면서 전체적으로 정돈된 느낌을 줍니다.\n\n나이키 엔에스더블유 클럽 프렌치테리 맨투맨은 정상가 삼만 구백원입니다. 오늘 라이브에서 할인율 이십 퍼센트가 적용되어 이만 사천팔백십원까지 가격이 내려갑니다. 이런 할인율은 흔치 않습니다. 지금이 가장 좋은 조건으로 구매할 수 있는 타이밍이에요.\n\n카키 컬러를 선택하실 때 해당 컬러의 원단 특성 한가지를 확인해두시면 좋습니다. 카키 컬러는 금색 잡사가 섞여있는 원단으로 제작됩니다. 이 금색 잡사는 불량이 아니라 정상적인 제품 특성이에요. 원단 특유의 자연스러운 색감 차이라고 이해하시면 됩니다. 사이즈는 에스부터 엑스라지까지 다양하게 준비되어 있어서 본인 체형이나 즐겨 입는 핏에 맞게 선택하실 수 있어요. 여유 있게 입고 싶으시다면 한 사이즈 크게, 슬림하게 입고 싶으시다면 평소 사이즈로 선택하시면 됩니다.\n\n편하게 걸치기만 해도 완성되는 옷이라서 데일리룩으로 활용하기 좋아요. 청바지나 편한 팬츠에 매치하면 주말 나들이나 가벼운 외출 룩이 완성됩니다. 특별히 신경 쓰지 않아도 캐주얼한 분위기를 만들어주기 때문에 등하교 길이나 카페를 갈 때, 가까운 산책에도 무리 없이 소화할 수 있어요. 위에 아우터를 걸치거나 아래에 트레이닝 팬츠를 매치하는 식으로 계절과 상황에 맞춰 다양하게 응용할 수 있습니다. 가슴에 자리한 스우시 로고는 화려하지 않으면서도 브랜드 특유의 분위기를 살려줘서 과하지 않은 포인트가 됩니다. 로고 하나로 심심할 수 있는 맨투맨에 힘을 실어주면서도 코디 전체를 부담스럽게 만들지 않아요.\n\n나이키 엔에스더블유 클럽 프렌치테리 맨투맨, 부드러운 소재와 깔끔한 디자인으로 데일리로 편하게 입기 좋은 맨투맨입니다. 정상가 삼만 구백원에서 최종 할인가는 이만 사천팔백십원입니다.\n\n여섯 가지 컬러와 에스부터 엑스라지까지 사이즈 구성도 폭넓게 준비되어 있으니, 오늘 라이브에서 가장 좋은 조건으로 만나보실 수 있습니다."
      ]
    },
    "price": {
      "currency": "KRW",
      "list": 30900,
      "sale": 24810,
      "discount_label": "20%"
    }
  },
  "output_schema": {
    "name": "mobidoo/live-commerce/desk-iamdry/v1",
    "strict": false,
    "schema": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "full_video"
      ],
      "properties": {
        "full_video": {
          "$ref": "SumeMediaFile#"
        }
      }
    }
  },
  "primary_output_key": "full_video",
  "generation_spend_cap_usd": 120,
  "communication": {
    "mode": "webhook",
    "webhook_url": "https://example.com/hooks/format-run"
  }
}
```

### 각 키가 하는 일

| Key | Notes |
| --- | --- |
| `instruction` | 산문 + 원본 시트 행. 탭으로 구분된 블록은 시트 줄을 그대로 복사한 것이고, 따옴표 블록은 승인된 VO 전문입니다. 미리 파싱하지 않습니다 — Format이 읽습니다. |
| `input` | 같은 행을 구조화 JSON으로 한 번 더. 백엔드가 Format의 TSV 재파싱에 의존하지 않게 합니다. `script.segments`는 VO를 컷 단위 객체가 아니라 **긴 블록 하나**로 담습니다. |
| `output_schema` | `mobidoo/live-commerce/desk-iamdry/v1`, `strict: false`, 필수 필드는 `full_video` 하나(`SumeMediaFile#`)입니다. 완성 컷만 발행하는 배치라면 읽지도 않을 클립 배열을 요구할 이유가 없습니다. |
| `primary_output_key` | `"full_video"`. |
| `generation_spend_cap_usd` | item당 `120` — 큐 전체가 아니라 자식 run 하나의 상한입니다. item 20개는 상한 20개를 쓸 수 있습니다. |
| `communication` | item별 종료 웹훅. 여기서는 `https://example.com/hooks/format-run` 플레이스홀더로 실었습니다. 여러분 엔드포인트로 바꾸세요. |

`desk-iamdry/v1`은 요청 단위 스키마 이름이지 새 파트너 계약이 아닙니다. 바인딩하면
그 run의 반환 형태만 바뀌고, `mobidoo/live-commerce/v1`은 그대로입니다.

`instruction`과 `input`이 행을 두 번 담는 건 의도적입니다. `instruction`은 지침,
`input`은 데이터입니다 —
[Format 호출하기 — 요청 본문](/formats/call#요청-본문)을 보고,
[크기: 한계가 두 개고, 알려주는 쪽은 하나뿐입니다](/enterprise/mobidoo/live-commerce#크기-한계가-두-개고-알려주는-쪽은-하나뿐입니다)의
한도를 기억하세요. `input`은 UTF-8 8 192바이트를 넘으면 거절되고, 각 필드는 약
4 000자까지만 run으로 실려 갑니다. 조용히 잘립니다.

## 202 이후

- **큐에는 웹훅이 없습니다.** `communication.webhook_url`은 item별이고, 큐 단위
  콜백은 없습니다. 진행 상황은 `status_url`
  (`GET /v1/format-run-queues/{queue_id}`)로 폴링하세요.
- **큐 `completed`는 "전부 성공"이 아닙니다.** 모든 item이 종료됐다는 뜻입니다.
  `counts.failed`와 `counts.canceled`로 분기하세요.
- **실패 원인은 자식에서 읽으세요.** `items[i].run_id`로
  `GET /v1/format-runs/{run_id}`를 부르세요. 큐 item에는 거친
  `format_run_failed`만 있습니다.
- 자식은 평범한 Format run이라서 약한 행 하나는 `previous_run_id`로 자기 스레드에서
  손볼 수 있습니다. 단 클립 스키마를 바인딩한 본문일 때만입니다. `full_video`
  하나만 받으면 지목할 씬 id가 없습니다.

## 다음

- [대량 실행](/formats/bulk-runs) — 플랫폼 큐 계약, 폴링, 오류
- [라이브 커머스 API](/enterprise/mobidoo/live-commerce) — 단일 실행, 클립 스키마,
  클립 재시도
- [모범 사례](/enterprise/mobidoo/best-practices) — 하나의 스레드에서 create →
  receipt → clip-retry
- [구조화 출력](/formats/structured-output) — 스키마 바인딩 규칙
