# 크리처

> REST API로 동물과 크리처를 만들고 관리합니다. 대표 이미지와 앵글, 포즈, 변형, 모션 클립을 생성하고 크리처에 보이스를 지정할 수 있습니다.

Source: https://nodaro.ai/ko/docs/developers/api/creatures

**크리처 API**는 반려동물, 드래곤, 마스코트처럼 모습이 고정된 동물과 인간이 아닌 존재를 관리합니다. 크리처에는 승인된 대표 이미지, 작성된 설명, 변형 이미지가 있으며, 이미지 노드와 동영상 노드가 이를 재사용하므로 크리처가 모든 샷에서 같은 모습으로 나옵니다. 크리처는 [오브젝트](https://nodaro.ai/docs/developers/api/objects)처럼 작동하며, 자유 텍스트 `species`, 이름이 붙은 보드, 선택 사항인 보이스 세 가지가 추가됩니다.

이 라우트는 모든 에디션에서 작동하며 Bearer 토큰을 사용합니다. 개인 API 토큰(`ndr_…`), OAuth 앱 토큰(`ndr_app_…`), 또는 Community Edition에서는 세션 토큰을 보내세요. [인증](https://nodaro.ai/docs/developers/api/authentication)을 참조하세요. CLI에는 크리처 명령이 없으므로 REST, SDK, MCP를 사용하세요.

## 엔드포인트
| 메서드 | 경로 | 설명 |
| --- | --- | --- |
| `GET` | `/v1/creatures` | 내 크리처 목록을 가져옵니다. |
| `GET` | `/v1/creatures/:id` | 크리처 하나를 진행 중인 작업과 함께 가져옵니다. |
| `POST` | `/v1/creatures` | 크리처를 만듭니다. 본문에 `id`가 있으면 해당 크리처를 수정합니다. |
| `DELETE` | `/v1/creatures/:id` | 크리처를 보관합니다. 보관한 크리처는 복원할 수 있습니다. |
| `DELETE` | `/v1/creatures/:id?permanent=true` | 보관한 크리처와 그 파일을 영구 삭제합니다. |
| `POST` | `/v1/creatures/:id/restore` | 보관한 크리처를 복원합니다. |
| `POST` | `/v1/generate-creature` | 대표 이미지 후보를 1~10개 생성합니다. |
| `POST` | `/v1/generate-creature-asset` | 앵글, 포즈, 변형, 사용자 지정 변형 중 하나를 생성합니다. |
| `POST` | `/v1/generate-creature-motion` | 대표 이미지에 움직임을 입혀 모션 클립을 만듭니다. |
| `POST` | `/v1/creatures/:id/approve-main-image` | 후보를 대표 이미지로 승인하고 크리처의 설명을 작성합니다. |
| `POST` | `/v1/creatures/:id/llm-caption` | 현재 대표 이미지로 설명을 다시 작성합니다. |

## 크리처에 담기는 정보
| 필드 | 내용 |
| --- | --- |
| `id`, `name`, `description` | 식별자, 표시 이름, 정체성 메모입니다. |
| `species` | 자유 텍스트입니다. 예: `dragon`, `wolf`, `tabby cat`. 대표 이미지 프롬프트의 주제가 됩니다. |
| `category`, `style` | 자유 텍스트 카테고리와 시각 스타일입니다. 스타일은 `realistic`, `anime`, `3d-pixar`, `illustration` 중 하나입니다. |
| `sourceImageUrl` | 기준 대표 이미지로, 후보를 승인하면 설정됩니다. |
| `canonicalDescription` | 대표 이미지를 승인할 때 Nodaro가 작성하는 80~120단어 정도의 시각적 설명입니다. |
| `styleLock` | 변형을 대표 이미지에서 생성할지 여부입니다. 기본값은 `true`입니다. |
| `angles`, `poses`, `variations`, `motionClips` | 에셋 버킷입니다. 각 항목은 `{ name, url }`이며, `motionClips`에는 동영상이 담깁니다. |
| `boards` | 이름이 붙은 보드를 최대 24개 담습니다. 보드는 모습이나 분위기마다 하나씩 만드는 촘촘한 레퍼런스 시트입니다. |
| `voice` | 크리처의 보이스 또는 `null`입니다. |
| `referencePhotos` | 최대 20장의 무드 보드 사진이며, 각각 `{ kind, url }`입니다. `kind`는 `front`, `side`, `detail`, `context`, `moodBoard`, `other` 중 하나입니다. |
| `pendingJobs` | `GET /v1/creatures/:id`에만 있습니다. 아직 실행 중인 변형 작업입니다. |

## 크리처 목록과 읽기
`GET /v1/creatures`는 내 활성 크리처를 반환합니다. 오브젝트 목록과 같은 매개변수인 `archived=true`, `projectId`, `q`, 그리고 선택 사항인 `limit`(최대 500)과 `cursor`를 받습니다. `q`는 이름이나 설명에 그 단어가 모두 들어 있는 크리처만 남기며, 대소문자는 구분하지 않습니다. [캐릭터](https://nodaro.ai/docs/developers/api/characters#search)와 같은 검색입니다. `limit`이 없으면 전체 목록을 받습니다. `limit`이 있으면 한 페이지와 `nextCursor`를 받으며, `nextCursor`가 `null`이 될 때까지 다시 보내세요.

`GET /v1/creatures/:id`는 크리처 하나를 반환합니다. 보관된 크리처는 `404 not_found`를 반환합니다.

**curl**

```bash
curl "https://app.nodaro.ai/v1/creatures?limit=50" \
  -H "Authorization: Bearer $NODARO_API_KEY"
```

**TypeScript SDK**

```ts

const client = createClient({
baseUrl: 'https://app.nodaro.ai',
auth: new StaticTokenAuth(process.env.NODARO_API_KEY!),
})

const { creatures, nextCursor } = await client.creatures.list({ limit: 50 })
const { creatures: archived } = await client.creatures.listArchived()
```

## 크리처 만들기 또는 수정
`POST /v1/creatures`는 본문에 `id`가 없으면 크리처를 만들고, 있으면 수정합니다. 만들 때는 `nodeId`와 `name`이 필요합니다. 캔버스 노드가 없으면 `nodeId`에 `"scripted"` 같은 아무 라벨이나 사용하세요. 만들면 `{ id }`를, 수정하면 `{ id, updatedAt }`을 반환합니다.

수정할 때는 보낸 필드만 기록됩니다. 에셋 버킷은 수정으로 기록되지 않지만, `boards`는 직접 설정할 수 있습니다. 교체하려면 전체 목록을 보내세요. `expectedUpdatedAt`을 보내면, 내가 읽은 뒤 누군가 크리처를 변경한 경우 수정이 `409 concurrent_modification`으로 거부됩니다.

**curl**

```bash
curl -X POST https://app.nodaro.ai/v1/creatures \
  -H "Authorization: Bearer $NODARO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
"nodeId": "scripted",
"name": "Ember",
"species": "red dragon",
"description": "Young dragon with copper scales and a chipped left horn",
"style": "realistic"
}'
```

**TypeScript SDK**

```ts
const { id } = await client.creatures.create({
nodeId: 'scripted',
name: 'Ember',
species: 'red dragon',
description: 'Young dragon with copper scales and a chipped left horn',
style: 'realistic',
})

await client.creatures.update(id, {
voice: { voiceId: 'Callum', voiceName: 'Callum', traits: 'gravelly, slow', voiceType: 'premade' },
})
```

<TypeTable
type={{
id: { type: 'string (uuid)', description: '수정할 크리처입니다. 크리처를 만들 때는 생략하세요.' },
nodeId: { type: 'string', description: '만들 때 필수입니다. 크리처가 속한 캔버스 노드이며, 노드가 없으면 아무 라벨이나 사용합니다.' },
name: { type: 'string', description: '만들 때 필수입니다.' },
species: { type: 'string', description: '크리처가 무엇인지를 자유 텍스트로 씁니다.' },
description: { type: 'string', description: '크리처를 구별하는 특징입니다.' },
category: { type: 'string', description: '자유 텍스트입니다.' },
style: { type: 'string', description: 'realistic, anime, 3d-pixar, illustration 중 하나입니다.' },
styleLock: { type: 'boolean', description: '승인된 대표 이미지에서 변형을 생성합니다.', default: 'true' },
referencePhotos: { type: 'array', description: '최대 20장의 { kind, url } 무드 보드 사진입니다.' },
voice: { type: 'object | null', description: '형식은 { voiceId, voiceName, traits, voiceType?, ttsProvider? }입니다. 수정할 때 null을 보내면 보이스가 지워집니다.' },
boards: { type: 'array', description: '수정할 때만 씁니다. 최대 24개의 { name, url } 보드입니다. 전체 목록을 교체합니다.' },
canonicalDescription: { type: 'string', description: '작성된 설명을 바꿉니다.' },
projectId: { type: 'string (uuid)', description: '크리처를 넣을 프로젝트입니다.' },
expectedUpdatedAt: { type: 'string (ISO 8601)', description: '수정할 때 씁니다. 이 시각 이후 크리처가 변경되었으면 쓰기를 409로 거부합니다.' },
}}
/>

### 보드
보드는 한 가지 모습이나 분위기에 대한 크리처의 촘촘한 레퍼런스 시트입니다. [**이미지 생성**](https://nodaro.ai/docs/nodes/image/generate-image)의 `generate-image/creature-board` 프리셋으로 보드를 만든 다음, 그 URL을 `boards`에 저장하세요. [프리셋](https://nodaro.ai/docs/developers/api/presets)과 [레퍼런스 보드](https://nodaro.ai/docs/guides/reference-boards)를 참조하세요.

## 대표 이미지와 변형 생성
`POST /v1/generate-creature`는 후보마다 작업을 하나씩 시작하고 `jobIds`를 반환합니다. 후보가 하나인 요청은 `jobId`도 반환합니다. `attachToCreatureId`를 보내고 `count`가 1이면, 작업이 완료될 때 결과가 대표 이미지가 됩니다. 후보가 여러 개이면 아무것도 연결되지 않으므로, 마음에 드는 후보를 승인하세요.

`POST /v1/generate-creature-asset`은 변형 하나를 생성하고 `{ jobId }`를 반환합니다. `assetType`은 `angles`, `poses`, `variations`, `custom` 중 하나입니다. 결과를 버킷에 추가하려면 `attachToCreatureId`, `attachToColumn`(`angles`, `poses`, `variations` 중 하나), `attachName`을 보내세요. `custom` 변형은 열을 지정해야 합니다.

**curl**

```bash
curl -X POST https://app.nodaro.ai/v1/generate-creature \
  -H "Authorization: Bearer $NODARO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
"name": "Ember",
"species": "red dragon",
"count": 1,
"attachToCreatureId": "0b8d6f4a-2c1e-4b9d-8f3a-7e5c1d9b3f2a"
}'

curl -X POST https://app.nodaro.ai/v1/generate-creature-asset \
  -H "Authorization: Bearer $NODARO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
"name": "Ember",
"assetType": "poses",
"variant": "wings spread",
"attachToCreatureId": "0b8d6f4a-2c1e-4b9d-8f3a-7e5c1d9b3f2a",
"attachToColumn": "poses",
"attachName": "wings spread"
}'
```

**TypeScript SDK**

```ts
const { jobIds } = await client.creatures.generate({
name: 'Ember',
species: 'red dragon',
count: 4,
})

await client.creatures.generateAsset({
name: 'Ember',
assetType: 'poses',
variant: 'wings spread',
attachToCreatureId: id,
attachToColumn: 'poses',
attachName: 'wings spread',
})
```

| 필드 | 라우트 | 설명 |
| --- | --- | --- |
| `name` | 둘 다 | 필수입니다. 크리처 이름입니다. |
| `species`, `description`, `category`, `style` | 둘 다 | 크리처의 정체성입니다. |
| `count` | 대표 이미지 | 생성할 후보 수로, 1~10입니다. 기본값은 1입니다. |
| `assetType`, `variant` | 변형 | 필수입니다. 변형의 종류와 이름입니다. |
| `provider` | 둘 다 | 이미지 모델 id입니다. 생략하면 기본 모델을 사용합니다. |
| `sourceImageUrl` | 둘 다 | 시작하거나 변형할 이미지입니다. |
| `seedPromptHint` | 둘 다 | 프롬프트에 넣을 프롬프트 조각입니다. 예: [**동물**](https://nodaro.ai/docs/nodes/creative-controls/animal) 피커에서 고른 값. |

## 대표 이미지 애니메이션 만들기
`POST /v1/generate-creature-motion`은 크리처 이미지를 대기 루프, 어슬렁거리는 걸음, 공격 같은 클립으로 바꾸고 `{ jobId }`를 반환합니다. `sourceImageUrl`은 필수입니다. `attachToCreatureId`와 `attachName`을 보내면 클립이 `motionClips`에 추가됩니다.

**curl**

```bash
curl -X POST https://app.nodaro.ai/v1/generate-creature-motion \
  -H "Authorization: Bearer $NODARO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
"name": "Ember",
"motionPrompt": "slow idle breathing, tail sways, smoke curls from the nostrils",
"sourceImageUrl": "https://cdn.nodaro.ai/creatures/ember-main.png",
"attachToCreatureId": "0b8d6f4a-2c1e-4b9d-8f3a-7e5c1d9b3f2a",
"attachName": "idle"
}'
```

**TypeScript SDK**

```ts
await client.creatures.generateMotion({
name: 'Ember',
motionPrompt: 'slow idle breathing, tail sways, smoke curls from the nostrils',
sourceImageUrl: ember.sourceImageUrl!,
provider: 'kling-turbo',
duration: 5,
attachToCreatureId: id,
attachName: 'idle',
})
```

| 필드 | 설명 |
| --- | --- |
| `name`, `motionPrompt`, `sourceImageUrl` | 필수입니다. 크리처 이름, 움직임, 시작 프레임입니다. |
| `provider` | `kling-turbo`(기본값), `kling`, `kling-3.0`, `minimax`, `hailuo-2.3`, `wan-i2v`, `seedance`, `bytedance-lite` 중 하나입니다. |
| `duration` | 클립 길이(초)입니다. 모델이 제공하는 길이여야 하며, 생략하면 모델의 기본값을 사용합니다. |
| `aspectRatio` | `1:1`(기본값), `3:4`, `16:9`, `9:16`, `4:3` 중 하나입니다. |
| `refineFromVideoUrl` | 이미지에서 다시 시작하지 않고 새 프롬프트로 다듬을 기존 클립입니다. |
| `attachToCreatureId`, `attachName` | 크리처와 `motionClips`에 들어갈 클립 이름입니다. |

| Model | Maker | Modes | Credits | Details |
| --- | --- | --- | --- | --- |
| [Kling 2.5 Turbo Pro](https://nodaro.ai/docs/models/video/kling-2-5-turbo-pro) | Kuaishou | Image to video, Text to video | 121부터 | Faster Kling — good quality at lower cost. Supports end frame. |
| [Kling 2.6](https://nodaro.ai/docs/models/video/kling-2-6) | Kuaishou | Image to video, Text to video | 152부터 | Kling 2.6 I2V — strong motion realism. 5s/10s, optional native audio. |
| [Kling 3.0](https://nodaro.ai/docs/models/video/kling-3-0) | Kuaishou | Image to video, Text to video | 297부터 | Premium Kling 3.0 — variable 3-15s duration, native audio, 720P/1080P. |
| [Hailuo 02 I2V Pro](https://nodaro.ai/docs/models/video/hailuo-02-i2v-pro) | MiniMax | Image to video, Text to video | 158 | Hailuo 02 Pro — strong photoreal motion, fixed 5-second clips. Supports end frame. |
| [Hailuo 2.3 Standard](https://nodaro.ai/docs/models/video/hailuo-2-3-standard) | MiniMax | Image to video | 83부터 | Cheaper Hailuo 2.3 tier — good baseline quality. |
| [Wan 2.6 I2V](https://nodaro.ai/docs/models/video/wan-2-6-i2v) | Alibaba | Image to video | 193부터 | Wan 2.6 image-to-video — 5/10/15s at 720p/1080p. |
| [Bytedance Lite I2V](https://nodaro.ai/docs/models/video/bytedance-lite-i2v) | Bytedance | Image to video, Text to video | 63 | Cheapest Bytedance video tier with end-frame support. |

`seedance`(Seedance 1.5 Pro)는 이전 모델입니다. 라우트는 여전히 이 값을 받지만, 모델 카탈로그(`GET /v1/models`)에 더 이상 나오지 않으므로 표에 행이 없습니다.

## 대표 이미지 승인
`POST /v1/creatures/:id/approve-main-image`에 `{ candidateJobId, expectedUpdatedAt? }`을 보내면, 완료된 후보가 대표 이미지로 설정되고 같은 호출에서 `canonicalDescription`이 작성됩니다. 응답은 `{ sourceImageUrl, canonicalDescription }`입니다. 설명을 작성하지 못해도 대표 이미지는 설정되며 설명은 비어 있습니다. 이때 SDK는 `null`을 반환합니다.

`POST /v1/creatures/:id/llm-caption`은 설명을 다시 작성하고 `{ canonicalDescription }`을 반환합니다. 설명을 작성할 수 없으면 `502`를, 아직 대표 이미지가 없으면 `400 main_image_required`를 반환합니다. 두 라우트 모두 반복해서 호출해도 안전합니다. 승인은 무료입니다. llm-caption은 호출 1회에 8크레딧이 들며, 실패한 호출(`502`)은 환불됩니다.

**curl**

```bash
curl -X POST https://app.nodaro.ai/v1/creatures/0b8d6f4a-2c1e-4b9d-8f3a-7e5c1d9b3f2a/approve-main-image \
  -H "Authorization: Bearer $NODARO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "candidateJobId": "1c9e7a5b-3d2f-4c8e-9a4b-8f6d2e1a4c3b" }'
```

**TypeScript SDK**

```ts
const ember = await client.creatures.get(id)
const approved = await client.creatures.approveMainImage(id, jobIds[0], ember.updatedAt)
if (approved.canonicalDescription === null) await client.creatures.recaption(id)
```

## 크리처 보관, 복원, 삭제
| 동작 | curl | TypeScript SDK |
| --- | --- | --- |
| 보관 | `DELETE /v1/creatures/:id` | `client.creatures.delete(id)` |
| 복원 | `POST /v1/creatures/:id/restore` | `client.creatures.restore(id)` |
| 영구 삭제 | `DELETE /v1/creatures/:id?permanent=true` | `client.creatures.permanentDelete(id)` |

보관은 `{ success: true, archived: true }`를 반환하며, 반복해도 달라지는 것은 없습니다. 복원은 `{ id, name }`을 반환하며, 같은 이름의 활성 크리처가 있으면 `(restored)` 접미사가 붙습니다. 영구 삭제는 보관된 크리처에만 작동하며(그렇지 않으면 `400 not_archived`), 크리처와 크리처가 참조하는 파일 중 내 파일을 모두 제거합니다. 다른 사용자의 생성 작업이 만든 파일이나, 다른 사용자의 업로드 폴더 또는 라이브러리에 있는 파일은 저장소에 남으며, 내 저장 용량에 포함된 적이 없습니다.

## 크리처가 말하게 하기
크리처 전용 라우트는 필요하지 않습니다. 크리처의 보이스로 음성을 만든 다음, 대표 이미지에 립싱크하세요.

### 음성 만들기
크리처의 `voice.voiceId`를 `voice`로 넣고, `voice.ttsProvider`와 `voice.voiceType`이 설정되어 있으면 함께 넣어 [**텍스트 음성 변환**](https://nodaro.ai/docs/nodes/audio/text-to-speech)을 실행하세요.

### 대표 이미지 립싱크
크리처의 `sourceImageUrl`을 `imageUrl`로, 음성을 `audioUrl`로 넣어 [**립싱크**](https://nodaro.ai/docs/nodes/video/lip-sync)를 실행하세요.

```ts
const speech = await client.nodes.runAndWait('text-to-speech', {
text: 'I knocked the vase off the shelf. I regret nothing.',
voice: ember.voice!.voiceId,
provider: ember.voice!.ttsProvider,
voiceType: ember.voice!.voiceType,
})

const clip = await client.nodes.runAndWait('lip-sync', {
imageUrl: ember.sourceImageUrl!,
audioUrl: speech.audioUrl,
provider: 'kling-avatar',
})
```

`nodes.runAndWait`와 원시 `POST /v1/<node-type>` 라우트는 [단일 노드 실행](https://nodaro.ai/docs/developers/api/nodes)을 참조하세요.

## 크리처를 샷에 넣기
[**이미지 생성**](https://nodaro.ai/docs/nodes/image/generate-image)에서 크리처를 `source: "wired-creature"`인 구조화된 레퍼런스로 전달하세요. 크리처는 해부 구조, 무늬, 색을 유지하는 문구와 함께 자동으로 첨부됩니다. 프롬프트에서 크리처 이름을 부를 수도 있습니다. `@ember:1`을 입력하면 입력한 위치에 크리처가 배치됩니다. 역할로 이미지에서 무엇을 가져올지 고를 수 있습니다. 예: `@ember:1:markings`. 역할은 `creature`, `anatomy`, `markings`, `pose`, `color`, `style`입니다.

```json
{
"prompt": "a wide shot of @ember:1 landing on the castle wall",
"connectedReferences": [
{ "id": "cr-1", "defaultName": "Ember", "source": "wired-creature", "url": "https://cdn.nodaro.ai/creatures/ember-main.png" }
]
}
```

워크플로에서는 대신 [**동물/크리처 에셋**](https://nodaro.ai/docs/nodes/assets/creature) 노드를 이미지 노드나 동영상 노드에 연결하세요.

## MCP에서 사용
| 도구 | 설명 |
| --- | --- |
| `list_creatures`, `get_creature` | 크리처를 찾고 변형 URL과 보이스를 읽습니다. |
| `generate_creature` | 대표 이미지(`kind: "main"`) 또는 변형(`kind: "asset"`)을 생성합니다. |
| `approve_creature_main_image`, `recaption_creature` | 대표 이미지를 승인하거나 설명을 다시 작성합니다. |
| `generate_creature_motion` | 대표 이미지 애니메이션을 만듭니다. |

[MCP 도구 레퍼런스](https://nodaro.ai/docs/mcp/tools)를 참조하세요.

## 크레딧
Nodaro Cloud에서 대표 이미지 요청은 이미지 모델 가격에 `count`를 곱한 값이며, 첫 작업이 시작되기 전에 예약됩니다. 변형은 이미지 모델 가격이고, 모션 클립은 동영상 모델로 이미지에서 동영상을 만드는 가격입니다. 승인과 승인 시 작성되는 설명은 무료입니다. llm-caption은 호출 1회에 8크레딧이 들며, 실패한 호출은 환불됩니다.

## 오류
| 상태 | 코드 | 의미 |
| --- | --- | --- |
| `400` | `validation_error` | 필드가 없거나 잘못되었거나, `duration`이 모델이 제공하는 길이가 아닙니다. |
| `400` | `not_archived` | 보관되지 않은 크리처에 영구 삭제를 보냈습니다. |
| `400` | `main_image_required` | 크리처에 대표 이미지가 생기기 전에 `llm-caption`을 호출했습니다. |
| `401` | `unauthorized` | 토큰이 없거나, 잘못되었거나, 취소되었습니다. |
| `402` | `insufficient_credits` | Nodaro Cloud 전용입니다. 계정 잔액으로 예약 금액을 충당할 수 없습니다. |
| `404` | `not_found` | 해당 id의 활성 크리처가 내 소유로 존재하지 않습니다. |
| `409` | `concurrent_modification` | `expectedUpdatedAt`이 더 이상 일치하지 않습니다. 크리처를 다시 읽고, 병합한 뒤 다시 시도하세요. |
| `502` | — | 기준 설명을 작성하지 못했습니다. 다시 시도하세요. |

## 자주 묻는 질문

### 크리처와 오브젝트는 어떻게 다른가요?

크리처는 동물이나 인간이 아닌 존재입니다. 자유 텍스트로 쓰는 종, 재질 대신 포즈 버킷, 이름이 붙은 보드, 선택 사항인 보이스가 있습니다. 그 밖에는 오브젝트처럼 작동하며, 만들기, 생성, 승인, 보관에 쓰는 라우트도 같습니다.

### 크리처가 말하게 하려면 어떻게 하나요?

크리처에 보이스를 지정하고, 그 보이스로 텍스트 음성 변환 노드에서 음성을 만든 다음, 크리처의 대표 이미지와 음성으로 립싱크를 실행하세요. 크리처 전용 라우트는 필요하지 않습니다.

### 크리처 애니메이션을 만들 수 있는 모델은 무엇인가요?

오브젝트와 같은 8가지 동영상 모델이며, 공급자 id는 kling-turbo(기본값), kling, kling-3.0, minimax, hailuo-2.3, wan-i2v, seedance, bytedance-lite입니다. 클립 1개의 가격은 해당 모델로 이미지에서 동영상을 만드는 가격입니다.

### 크리처용 CLI 명령이 있나요?

아니요. REST 라우트, TypeScript SDK(client.creatures), 또는 MCP의 크리처 도구를 사용하세요.
