Source: https://ailoot.ai/docs/ko/api/video-music/
Canonical: https://ailoot.ai/docs/ko/api/video-music/
Language: ko

[API](https://ailoot.ai/docs/ko/) 

# 영상과 음악

[Markdown](https://ailoot.ai/docs/ko/api/video-music/index.md)

영상·음악 생성: 요청으로 작업을 만들고 작업 식별자로 결과를 가져옵니다.

POST`https://api.ailoot.ai/v1/videos`

영상과 음악

```bash
# Request ID를 보관하세요. 지원팀이 이 ID로 요청을 찾습니다.
# 작업은 한 번만 생성하세요. 아래 반복문은 상태만 조회합니다.
curl --fail-with-body --max-time 120 -D video-create-headers-v1.txt \
  https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"grok-imagine-video-1.5","prompt":"잔잔한 호수","seconds":"8","size":"1280x720"}' \
  -o video-create-v1.json || exit 1
VIDEO_ID=$(jq -er '.id // .request_id' video-create-v1.json) || exit 1
VIDEO_STATUS=""
# 이 반복문은 원래 작업만 조회합니다. 생성 요청을 다시 전송하지 않습니다.
for ATTEMPT in $(seq 1 60); do
  curl --fail-with-body --max-time 30 \
    "https://api.ailoot.ai/v1/videos/$VIDEO_ID" \
    -H "Authorization: Bearer $AILOOT_API_KEY" \
    -o video-status-v1.json || exit 1
  VIDEO_STATUS=$(jq -r '.status // empty' video-status-v1.json)
  # result_pending_check: true (status는 in_progress로 유지): 결과를 확인 중입니다. 중단하고 작업을 다시 생성하지 마세요.
  if jq -e '.result_pending_check == true' video-status-v1.json >/dev/null; then
    cat video-status-v1.json
    echo "The result is being checked. Do not create the job again: check GET /v1/videos/$VIDEO_ID later or contact support with the Request ID." >&2
    exit 1
  fi
  case "$VIDEO_STATUS" in
    done|completed) break ;;
    queued|in_progress|pending|processing) sleep 5 ;;
    # failed 또는 그 밖의 상태: 상태를 표시하고 중단하세요. 작업을 다시 생성하지 마세요.
    *) cat video-status-v1.json; exit 1 ;;
  esac
done
case "$VIDEO_STATUS" in
  done|completed) ;;
  *) echo "The job is not finished yet (status: ${VIDEO_STATUS:-none}). Check it later: GET /v1/videos/$VIDEO_ID" >&2; exit 1 ;;
esac
curl --fail-with-body --max-time 120 -L --max-redirs 3 \
  "https://api.ailoot.ai/v1/videos/$VIDEO_ID/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video-v1.mp4
# 생성 요청이 시간 초과되면 이 스크립트를 다시 실행하기 전에 사용 내역에서 Request ID를 확인하세요.
```

```bash
curl https://api.ailoot.ai/v1/music/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "google/lyria", "prompt": "잔잔한 피아노와 첼로, 보컬 없이"}' 
```

응답 · 축약

```json
// 작업 식별자는 id 또는 request_id 필드에 있습니다
{ "id": "…", … }

// 형식은 모델마다 다릅니다. 작업 생성 응답의 식별자를
// 받은 그대로 사용하세요.
```

## 인증

| 매개변수 | 유형 | 필수 | 설명 |
| --- | --- | --- | --- |
| `Authorization` | header | 필수 | 키 형식: `Bearer sk-…`. 다음 헤더도 사용할 수 있습니다: `x-api-key` 또는 `x-goog-api-key`. |

## 영상: 요청 본문

| 매개변수 | 유형 | 필수 | 설명 |
| --- | --- | --- | --- |
| `model` | string | 필수 | 영상 모델: `google/omni-1.1-flash`, `grok-imagine-video`, `happyhorse-1.1-t2v`, `MiniMax-Hailuo-2.3`, `grok-imagine-video-1.5`, `happyhorse-1.1-r2v`, `grok-imagine-video-1.5-preview`, `happyhorse-1.1-i2v`. |
| `prompt` | string | 필수 | 영상 설명입니다. |
| `duration / seconds` | integer / string | 선택 사항 | 모델군별로 다릅니다. Grok 1~15초, MiniMax 6/10초(768P) 또는 6초(1080P), HappyHorse 3~15초, Google Omni 4/6/8/10초. 한 모델군의 필드를 다른 모델군에 사용하지 마세요. |
| `resolution / size` | string | 선택 사항 | Grok: 480p/720p/1080p(1080p는 video-1.5에서 지원) 또는 size 1280x720/720x1280/1920x1080/1080x1920. MiniMax: 768P/1080P. HappyHorse: 480P/720P/1080P. Google Omni: 360p/720p. |
| `image / first_frame_image / image_urls` | string / array | 선택 사항 | 원본 이미지 필드는 모델군과 모드에 따라 다릅니다. MiniMax Fast에는 first\_frame\_image가 필요합니다. HappyHorse t2v는 images 없이, i2v는 ratio 없이 이미지 정확히 하나, r2v는 이미지 1~9개를 사용합니다. |

응답에 작업 식별자가 포함됩니다(필드 `id` 또는 `request_id`). 형식은 모델마다 다르므로 파싱하지 말고 그대로 사용하세요. 상태 및 완성 파일:

GET`https://api.ailoot.ai/v1/videos/{id}`

GET`https://api.ailoot.ai/v1/videos/{id}/content`

동일 주소는 다음 접두사로도 사용할 수 있습니다: `/v1/videos/generations/{id}`. 작업 완료 상태와 응답 필드는 모델마다 다릅니다. 상태 필드를 확인하고 다음으로 파일을 가져오세요: `/content`.

## 생성 → 상태 → 다운로드

생성 응답과 Request ID를 저장하세요. MiniMax/HappyHorse 완료 상태: `status: completed`, 응답에 포함되는 필드: `content_url`, `data[]` 및 usage. Grok의 경우: `status: done` 및 `video.url`. Google Omni는 202 queued, 이후 Retry-After가 포함된 in\_progress, completed 또는 partial/content\_revoked를 반환합니다. 모든 200 응답을 완성 영상으로 취급하지 마세요. 상태 응답에 `result_pending_check: true` (`status` 가 있으면서 `in_progress`인 경우) 결과를 확인 중입니다. 작업을 다시 만들지 마세요. 나중에 GET /v1/videos/{id}로 확인하거나 Request ID와 함께 지원팀에 문의하세요.

`/content` — MP4를 직접 반환하거나 서명된 파일로 redirect할 수 있습니다. 응답의 `data[]`에 결과가 여러 개라면 각각 저장하세요. 전달된 결과는 모두 과금됩니다. API로 영상 작업을 취소하거나 삭제할 수 없습니다. 완성 파일 삭제는 파일 접근만 차단하며 생성을 취소하지 않습니다.

카탈로그에 따라 선택한 해상도의 완성 영상 초 단위 또는 영상 한 편 단위로 결제됩니다. 작업 생성 시 전체 비용을 예약합니다.

## 음악

POST`https://api.ailoot.ai/v1/music/generations`

| 매개변수 | 유형 | 필수 | 설명 |
| --- | --- | --- | --- |
| `model` | string | 필수 | `google/lyria`, `google/lyria-3-clip-preview`. |
| `prompt` | string | 필수 | 트랙 설명: 장르, 악기, 분위기. |

응답의 `data[]` — 완성 클립 링크입니다. 한 요청에서 여러 클립을 반환할 수 있으며 전달된 클립마다 과금됩니다.

연결이 끊겼다고 영상·음악 요청을 다시 보내지 마세요. 작업이 이미 시작됐을 수 있습니다. 먼저 식별자로 상태를 확인하거나 Request ID와 함께 지원팀에 문의하세요.

궁금한 점이 남았나요? Request ID와 설명을 보내 주시면 해결을 도와드리겠습니다.[지원팀에 문의](mailto:support@ailoot.ai)

## Ailoot · 회사와 그 프로젝트 포트폴리오





Ailoot는 축적된 운영 경험, 폭넓은 고객 기반, 안정적인 서비스, 지속적인 KPI 관리를 바탕으로 합니다.





회사와 그 프로젝트 포트폴리오: 수백만 고객, 매월 수십억 규모의 매출.





Ailoot는 이러한 운영 경험을 고객의 제품, 에이전트, 애플리케이션, 자동화에서 AI 기능을 이용할 수 있는 API 접근에 활용합니다.
