NodaroAccount
Nodaro Docs
DocumentationNode ReferenceModelsTemplatesAI Agents (MCP)DevelopersSelf-hostingResearchCompare
Tools reference

Characters

Create characters from an AI assistant, generate and approve their portraits, add expressions, poses, angles and motion clips, and reuse them as references.

The character tools let an assistant build and use the characters in your Character Studio library: people or figures with a locked look that stay the same in every image and video. The assistant creates a character, generates and approves its portrait, adds variants such as expressions, poses, angles and lighting, animates it into motion clips, and passes its pictures as references to other generations. Read Character Studio for the same work in the app.

The character lifecycle

Create the character

create_character saves the name and the identity: description, gender, style, outfit. The character has no portrait yet.

Generate and approve a portrait

generate_character with kind: "main" makes a portrait. Run it until you like one, then pass that job to approve_portrait. The approved portrait anchors the character, and a vision model writes its canonical description.

Add variants

generate_character with kind: "asset" and attach_to_character_id makes expressions, poses, head and body angles and lighting variants from the approved portrait, and saves each one on the character.

Animate and reuse

generate_character_motion turns the character into motion clips. get_character returns every picture and clip, ready to pass as references to generate_image or generate_video.

list_characters

Lists your characters, most recently updated first, with their name, description, portrait, the number of variants of each kind, and their identity text. Archived characters are left out. Without search, it returns only the first page, so search when the user names a character.

Permission: assets:read. Credits: free.

ParameterTypeNotes
searchstringUp to 5 words, up to 200 characters. Every word must appear in the character's name or description, in any case. A blank value means no search.
limitintegerFrom 1 to 100. Default 50.

Returns: the characters. Call get_character for the picture URLs.

get_character

Returns one character in full: every expression, pose, motion, head angle, body angle and lighting variant with its name and URL, the reference photos, and real-life reference URLs where a variant has them.

Permission: assets:read. Credits: free.

ParameterTypeNotes
idstringRequired. The character id from list_characters.

Returns: the character, including updatedAt for update_character. An error when the character does not exist or is not yours.

On Nodaro Cloud, the character also carries training: the state of its high-fidelity training, as { status, error, trainedAt, imageCount }. status is one of untrained, queued, training, succeeded, failed or cancelled. Read it to follow a train_character run.

create_character

Creates a character with its identity. It has no portrait yet: generate one with generate_character next.

Permission: assets:write. Credits: free.

ParameterTypeNotes
namestringRequired. The display name, such as Kira, up to 200 characters. It must be unique among your active characters; a duplicate returns name_taken.
descriptionstringWho the character is, up to 2,000 characters.
genderstringUp to 50 characters.
stylestringThe visual style, such as realistic, anime, 3d-pixar or illustration.
base_outfitstringThe default clothes, up to 1,000 characters.
seed_promptstringA short prompt that shapes the first portrait, up to 4,000 characters.
identity_lockstringHow strictly Character Studio keeps the face in generated variants: off (default), soft or strict.

Returns: the new character's id.

update_character

Changes a character's identity. Only the fields you pass are written.

Permission: assets:write. Credits: free.

ParameterTypeNotes
idstringRequired. The character id.
name, description, gender, style, base_outfit, seed_prompt, identity_lockAs on create_character.
expected_updated_atstringThe updatedAt from get_character. The change is refused when the character changed since you read it.

Returns: a confirmation, or a conflict error when expected_updated_at is out of date.

approve_portrait

Makes a finished generate_character result the character's portrait, and has a vision model describe it to fill the character's canonical description.

Permission: assets:write. Credits: one Claude Sonnet 4.6 vision call for the description, charged for the tokens it used (how LLM calls are charged). The approval is never refused for credits. When your balance is too low for the description, the image is still approved and the description is skipped. Run recaption_character later to write it.

ParameterTypeNotes
character_idstringRequired. The character.
candidate_job_idstringRequired. A completed generate_character job of yours.

Returns: the portrait URL and the description. When the description fails, the portrait is still set and the description is empty; run recaption_character.

recaption_character

Has the vision model describe the current portrait again, and saves the new canonical description. Use it after a portrait change, or when the description is not right.

Permission: assets:write. Credits: one Claude Sonnet 4.6 vision call, charged for the tokens it used, like the approval's description.

ParameterTypeNotes
idstringRequired. The character.

Returns: the new description. 400 no_portrait when the character has no portrait.

generate_character

Generates a character portrait (kind: "main") or a variant of the character (kind: "asset").

Permission: workflows:execute. Credits: the price of the image model.

ParameterTypeNotes
namestringRequired. The character's name.
kindstringmain (default) for a portrait, or asset for a variant.
description, gender, style, base_outfitstringThe identity, for a portrait.
modelstringThe image model. Default gpt-image-2.
asset_typestringRequired for asset: expressions, poses, lighting, headAngles, bodyAngles or custom. angles is an older name for headAngles.
variantstringRequired for asset: the variant, such as smile or angry for expressions, front, 3/4 left, left profile, right profile, 3/4 right or back for angles, standing or walking for poses, and daylight, night or dramatic for lighting.
attach_to_character_idstringSaves the result on this character and uses its approved portrait as the source. Without an approved portrait, the call returns portrait_required.
attach_to_columnstringRequired with attach_to_character_id for a custom variant: where to save it, such as expressions, poses, angles, body_angles, lighting_variations, sheets, detail_closeups, outfit_variations or boards.
attach_namestringThe name of the saved variant. Default: the variant.
source_image_urlstringA source picture, when you do not attach to a character.

Returns: a job id. For a portrait, pass the job to approve_portrait when you like the result.

generate_character_motion

Animates a character into a short motion clip, from one of its pictures.

Permission: workflows:execute. Credits: the price of the video model.

ParameterTypeNotes
motion_promptstringRequired. What moves and how, up to 2,000 characters, for example "slow head turn left, eyes track the camera, soft smile".
namestringRequired. The character's name.
attach_to_character_idstringPicks the source picture from the character and saves the clip in its motions.
source_image_urlstringA source picture of your choice. Required without attach_to_character_id.
providerstringkling (default), kling-turbo, kling-3.0, wan-i2v or wan-2.7-i2v.
attach_namestringThe name of the saved motion, such as walking.
description, motion_description, gender, style, base_outfitstringOptional identity and motion details.

With attach_to_character_id, the source picture is chosen in this order: your source_image_url, the character's front body angle, any other body angle, then the portrait. A full-body picture moves much better than a head portrait, so generate body angles first.

Returns: a job id. The card plays the clip when it is ready.

train_character

Trains a high-fidelity model of a saved character on the character's own images. A Generate Image node whose prompt @-mentions that one character then keeps the character's identity closely. Read Character training for the same feature in the app.

Permission: workflows:execute and assets:write. Credits: 1,650 per training. Nodaro Cloud only.

ParameterTypeNotes
idstringRequired. The character id from list_characters.
selected_image_urlsarrayTrain on these images of the character only, at least 4 distinct ones. Default: every eligible image.

The character needs at least 4 distinct images: its portrait, reference photos, expressions, poses, angles and lighting variations count.

Returns: at once, with jobId, trainingId and triggerWord. The training takes about 15 minutes. Follow it with get_character, in the training field.

  • Refusals. The tool answers already_training_or_not_found while a training of the character is in progress, and insufficient_training_images with fewer than 4 images.
  • Credits. The credits are refunded when the training fails or is cancelled. Training a trained character again costs the same again.
  • Removing a trained model. No MCP tool removes it, because removal destroys a paid training and cannot be undone. Use DELETE /v1/characters/:id/lora, client.characters.deleteLora(id) in the SDK, or nodaro characters delete-lora <id> in the CLI. See Character training.

Frequently asked questions

How does an assistant create a consistent character in Nodaro?

It calls create_character with a name and a description, generates a portrait with generate_character, and approves the best one with approve_portrait. The approved portrait then anchors every variant and motion clip of the character.

How do I use a saved character in an image or a video?

Find it with list_characters, read its pictures with get_character, and pass the right portrait, expression or pose URL in reference_image_urls of generate_image, image_to_image or generate_video.

Why does a variant fail with portrait_required?

Variants reuse the approved portrait as their source. Generate a portrait with kind main and approve it with approve_portrait first.

Which picture should a motion clip start from?

A full-body picture moves much better than a head portrait. Generate the character's body angles first; generate_character_motion then uses the front body angle automatically.

Can an assistant train a character model through MCP?

Yes, on Nodaro Cloud. train_character trains a high-fidelity model of a saved character with at least 4 distinct images. It costs 1,650 credits, refunded if the training fails or is cancelled.

Last updated on

On this page