# יצורים

> יצירה וניהול של חיות ויצורים ב-REST API: תמונות ראשיות, וריאנטים של זוויות, תנוחות ווריאציות, קליפי תנועה, וקול לכל יצור.

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

**ה-API של היצורים** מנהל חיות ויצורים אחרים שהם לא בני אדם, עם מראה נעול: חיית מחמד, דרקון, קמע. לכל יצור יש תמונה ראשית מאושרת, תיאור כתוב ותמונות של וריאנטים, ורכיבי תמונה ווידאו משתמשים בו שוב ושוב, ולכן היצור נראה זהה בכל שוט. יצורים עובדים כמו [אובייקטים](https://nodaro.ai/docs/developers/api/objects), עם שלוש תוספות: השדה `species` בטקסט חופשי, לוחות עם שם וקול אופציונלי.

הנתיבים עובדים בכל המהדורות. הם מקבלים אסימון Bearer: אסימון API אישי (`ndr_…`), אסימון של אפליקציית OAuth (`ndr_app_…`), או אסימון הסשן שלכם במהדורת Community. ראו את דף ה-API [אימות](https://nodaro.ai/docs/developers/api/authentication). ל-CLI אין פקודות ליצורים; השתמשו ב-REST API, ב-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` | תיאור חזותי של בין 80 ל-120 מילים בערך, ש-Nodaro כותב כשהתמונה הראשית מאושרת. |
| `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` נשארים רק היצורים שהשם או התיאור שלהם כוללים את כל המילים שב-`q`, בלי הבדל בין אותיות גדולות לקטנות: אותו חיפוש כמו בדף ה-API [דמויות](https://nodaro.ai/docs/developers/api/characters#search). בלי `limit` מקבלים את הרשימה המלאה; עם `limit` מקבלים עמוד אחד ו-`nextCursor`, ששולחים בחזרה עד שהוא `null`.

הנתיב `GET /v1/creatures/:id` מחזיר יצור אחד. על יצור שבארכיון, הנתיב מחזיר `404 not_found`. כל רשומה, ברשימה ובקריאה לפי מזהה, כוללת גם את המצב שלה על המדף של [Nodaro Keepers](https://nodaro.ai/docs/developers/api/community#keepers): `catalog`, `catalogSort` ו-`catalogCategory`. ברשומות שלכם ובכל עותק, הערכים שלהם הם `false`, `0` ו-`null`.

**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` בגוף הבקשה, ומעדכן את היצור כשיש בו `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: 'ערך שמחליף את התיאור ש-Nodaro כתב.' },
projectId: { type: 'string (uuid)', description: 'הפרויקט שבו לשמור את היצור.' },
expectedUpdatedAt: { type: 'string (ISO 8601)', description: 'בעדכון: הכתיבה נדחית עם 409 אם היצור השתנה מאז חותמת הזמן הזו.' },
}}
/>

### לוחות
לוח הוא גיליון ייחוס צפוף של היצור, למראה אחד או למצב־רוח אחד. רנדרו לוח עם הערכה `generate-image/creature-board` של רכיב [יצירת תמונה](https://nodaro.ai/docs/nodes/image/generate-image), ואז שמרו את הכתובת שלו ב-`boards`. ראו את דף ה-API [ערכות](https://nodaro.ai/docs/developers/api/presets) ואת המדריך [לוחות ייחוס](https://nodaro.ai/docs/guides/reference-boards).

## יצירת תמונות ראשיות ווריאנטים
הנתיב `POST /v1/generate-creature` מתחיל משימה אחת לכל מועמד ומחזיר `jobIds`; בקשה עם מועמד אחד מחזירה גם `jobId`. עם `attachToCreatureId` ו-`count` של 1, התוצאה הופכת לתמונה הראשית כשהמשימה מסתיימת. כשיש כמה מועמדים, שום דבר לא מצורף ליצור; אשרו את המועמד שאתם מעדיפים. שדה `subject` אופציונלי של מזהי בוררים מתאר מי מופיע בתמונה, כמו ב-[`POST /v1/generate-character`](https://nodaro.ai/docs/developers/api/characters#subject).

הנתיב `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` | שניהם | המזהה של מודל התמונה. השמיטו אותו כדי להשתמש במודל ברירת המחדל. |
| `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-2-mini` או `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. |
| [Seedance 2 Mini](https://nodaro.ai/docs/models/video/seedance-2-mini) | Bytedance | Image to video, Text to video | החל מ-132 | Budget Seedance 2 tier — 480p/720p only, per-second pricing by resolution. |
| [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-2-mini` הוא [Seedance 2 Mini](https://nodaro.ai/docs/models/video/seedance-2-mini). Seedance 1.5 הוצא משימוש באוקטובר 2026: בקשה שעדיין מציינת `seedance` רצה ומתומחרת כמו `seedance-2-mini`.

## אישור תמונה ראשית
הנתיב `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` כשעדיין אין תמונה ראשית. אפשר לחזור על הקריאה לשני הנתיבים בלי חשש. האישור עצמו לא עולה קרדיטים. כתיבת התיאור היא קריאה למודל הראייה Claude Sonnet 4.6, שמחויבת לפי הטוקנים שהיא השתמשה בהם, בתעריף של המודל הזה. ראו את הסעיף [איך מחויבות קריאות LLM](https://nodaro.ai/docs/concepts/credits#llm-calls) בדף קרדיטים. אישור אף פעם לא נדחה בגלל קרדיטים. כשהיתרה לא מספיקה לתיאור, התמונה בכל זאת מאושרת, התיאור לא נכתב, והנתיב `llm-caption` יכול לכתוב אותו מאוחר יותר. על תיאור שהספק חייב עליו משלמים, גם כשהוא חוזר ריק. על תיאור שהספק לא חייב עליו, הקרדיטים מוחזרים.

**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)
```

גם הנתיב `approve-main-image` וגם הנתיב `llm-caption` משנים את היצור. עם אסימון של אפליקציית OAuth, הם דורשים את ההרשאה `assets:write`. אסימון בלי ההרשאה הזאת נדחה עם `403 insufficient_scope`. אסימון הסשן שלכם ואסימוני API אישיים לא צריכים הרשאה.

## העברה לארכיון, שחזור ומחיקה של יצור
| פעולה | curl | SDK ל-TypeScript |
| --- | --- | --- |
| העברה לארכיון | `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`), והיא מסירה את היצור ואת כל הקבצים שלכם שהוא מצביע עליהם. קובץ שנוצר ביצירה של משתמש אחר, או שנמצא בתיקיית ההעלאות או בספרייה של משתמש אחר, נשאר באחסון, ומעולם לא נספר במכסת האחסון שלכם.

## יצור שמדבר
לא צריך נתיב מיוחד ליצורים. רנדרו דיבור בקול של היצור, ואז סנכרנו אותו לתמונה הראשית בעזרת סנכרון שפתיים:

### רינדור הדיבור
הריצו את רכיב [טקסט לדיבור](https://nodaro.ai/docs/nodes/audio/text-to-speech) עם `voice.voiceId` של היצור בתור `voice`, ועם `voice.ttsProvider` ו-`voice.voiceType` שלו כשהם מוגדרים.

### סנכרון שפתיים לתמונה הראשית
הריצו את רכיב [סנכרון שפתיים](https://nodaro.ai/docs/nodes/video/lip-sync) עם `sourceImageUrl` של היצור בתור `imageUrl` ועם הדיבור בתור `audioUrl`.

```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',
})
```

ראו את דף ה-API [הרצת רכיב יחיד](https://nodaro.ai/docs/developers/api/nodes) לפרטים על `nodes.runAndWait` ועל הנתיבים הגולמיים `POST /v1/<node-type>`.

## הכנסת יצור לשוט
ברכיב [יצירת תמונה](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` | מציאת יצור וקריאת הקול שלו והכתובות של הווריאנטים שלו. |
| `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, היא קריאה למודל הראייה Claude Sonnet 4.6, שמחויבת לפי הטוקנים שהיא השתמשה בהם. אישור אף פעם לא נדחה בגלל קרדיטים: כשהיתרה לא מספיקה, התיאור לא נכתב.

## שגיאות
| סטטוס | קוד | משמעות |
| --- | --- | --- |
| `400` | `validation_error` | שדה חסר או לא תקין, או שהערך של `duration` הוא לא אורך שהמודל מציע. |
| `400` | `not_archived` | נשלחה בקשה למחיקה לצמיתות של יצור שלא נמצא בארכיון. |
| `400` | `main_image_required` | הקריאה ל-`llm-caption` נשלחה לפני שהייתה ליצור הזה תמונה ראשית. |
| `401` | `unauthorized` | האסימון חסר, לא תקין או מבוטל. |
| `402` | `insufficient_credits` | ב-Nodaro Cloud בלבד. אין בחשבון מספיק קרדיטים לשריון. |
| `404` | `not_found` | אין לכם יצור פעיל עם המזהה הזה. |
| `409` | `concurrent_modification` | הערך `expectedUpdatedAt` כבר לא תואם. קבלו את היצור שוב, מזגו את השינויים ונסו שוב. |
| `502` | — | לא היה אפשר לכתוב את התיאור הקנוני. נסו שוב. |

## שאלות נפוצות

### מה ההבדל בין יצור לאובייקט?

יצור הוא חיה או יצור שהוא לא אדם. יש לו מין בטקסט חופשי, קבוצת תנוחות במקום קבוצת חומרים, לוחות עם שם וקול אופציונלי. מלבד זאת, יצורים עובדים כמו אובייקטים, עם אותם נתיבים ליצירה, ליצירת תמונות, לאישור ולהעברה לארכיון.

### איך יוצרים יצור שמדבר?

כדי שיצור ידבר, שמרו קול בשדה voice של היצור, רנדרו דיבור עם רכיב טקסט לדיבור בקול הזה, ואז הריצו את רכיב סנכרון שפתיים עם התמונה הראשית של היצור ועם הדיבור. לא צריך נתיב מיוחד ליצורים.

### אילו מודלים יכולים להנפיש יצור?

אותם שמונה מודלי וידאו כמו באובייקטים, לפי מזהה הספק: kling-turbo (ברירת המחדל), kling, kling-3.0, minimax, hailuo-2.3, wan-i2v, seedance-2-mini ו-bytedance-lite. כל קליפ עולה כמו יצירה מתמונה לווידאו באותו מודל.

### האם יש פקודת CLI ליצורים?

לא. השתמשו בנתיבי ה-REST, ב-SDK ל-TypeScript (client.creatures) או בכלי היצורים דרך MCP.
