Pro API: create characters for Multi-Ref Video

A character is a sheet of five views of the same person (or creature), made from one photo and stored under a character_id. It is what Multi-Ref Video uses to recognise someone in a clip: the five views carry the likeness, with no training.

The characters you made in the app are already there: same licence, same list (see Characters from the app).

The five views

RoleView
1Bust, front, neutral expression
2Bust, three-quarter, the character looks towards the right of the image, light smile
3Bust, three-quarter, the character looks towards the left of the image, neutral
4Full body, front
5Full body, back

Every view is generated on its own: none is obtained by flipping another.

Create a character

POST /characters (permission images). The work is asynchronous.

json
{ "name": "Lea", "kind": "woman", "image_b64": "<the photo>", "photo_role": "bust" }
FieldTypeWhat it does
namestring, 1 to 40 charactersThe character's first name
kindstringwoman, man, or a creature described in English (baby dragon). It sets the pronouns of the instructions, never "they".
image_b64base64The photo: sharp, one person only, at least 1024 px on the long side, 12 MB at most, JPEG, PNG or WebP
photo_rolebust (default) or full_bodyThe photo is a bust (it becomes view 1) or a full-body shot (view 4)
outfitEnglish text, optionalAn outfit to put on first (a red leather jacket and black jeans)

The answer, 202, is the character with status pending and cost_estimate. The photo becomes the view of its role, and the server generates the other four, in 1 to 3 minutes.

Price: one credit per generated view, so 4 credits, plus 1 with outfit (the outfit is put on first, as a separate step). A view that fails is not charged. POST /characters/quote gives the price beforehand (outfit optional).

Follow, check, redo

GET /characters/{id} gives its state:

statusMeaning
pendingThe views are being made
readyThe five views are there
partialSome views are missing or failed
failed, emptyNo usable view
json
{
  "character_id": "chr_8f3a...",
  "name": "Lea",
  "kind": "woman",
  "origin": "api",
  "status": "ready",
  "progress": { "ready": 5, "total": 5 },
  "views": [
    { "role": 1, "name": "bust_front", "status": "ready", "file_url": "https://api.tendre.ai/pro/v1/characters/chr_8f3a.../views/1/file" }
  ],
  "expires_at": "2026-10-19T18:02:11.000Z"
}
  • Check the views before the first render. GET /characters/{id}/views/{role}/file returns the image. A failed view, or one that looks the wrong way, spoils the likeness in every video.
  • Redo a view: POST /characters/{id}/views/{role}/redo, 1 credit. The view that came from the original photo cannot be redone (vue_photo).
  • List: GET /characters returns your characters, the app's included, and the cap max.
  • Delete: DELETE /characters/{id} erases the character and its views.

Characters from the app

A character created in the app's My characters screen appears in GET /characters with origin app, and plays in Multi-Ref Video like any other. In the app, a character can have several sheets (outfits, moods): sheet_id says which one is served (the most recent by default), sheets lists them, and ?sheet=<id> asks for another on the read, on a view's file and on a redone view. In a Multi-Ref clip, characters[].sheet_id picks the sheet. To redo a view of an app character, give its kind in the body.

Storage

The views are encrypted (one key per file) and tied to your licence. 50 characters at most with the Pro licence, the app's included. A character left unused for 15 days is erased (expires_at): every Multi-Ref render and every read of a view pushes the date back. The photo you send is kept as the view of its role, encrypted, like the generated views.

Through an agent (MCP)

With the MCP server, you just ask: "make a character from this photo". The agent uses tendre_character_create (the photo comes through an upload link, a file attached in ChatGPT, an image rendered in the conversation or a public address), shows you the five views, and redoes a failed one with tendre_character_redo_view. tendre_character_get, tendre_character_list and tendre_character_delete cover the rest, and tendre_quote gives the price first.

Then cast the character: see Multi-Ref Video.

Windows · Mac · Cloud or local

Generate privately. Tonight.

Download tendre.AI, activate once, and run it forever, fully offline, on your own GPU.

OS Windows 10/11GPU NVIDIA 8GB+VRAM 12GB recommendedDisk 20GB

Mac: Apple silicon (M1 or later), macOS 13 or later. Intel Macs are not supported.

Local image generation on Mac needs an M4 with 24 GB of memory, or an M2 or M3 Pro, Max or Ultra with 24 GB. Below that, everything runs online with credits. Retouching and video run online on Mac for now.

Everything about tendre.AI for Mac

No NVIDIA GPU? Start 100% in the cloud: 10 free images every day, then 1 credit per image. An NVIDIA card (8GB+) unlocks unlimited local generation.