Skip to content

Characters

A character is a reusable identity trained from your photos (a DreamBooth-style LoRA). Train once (~10–15 minutes, $0.75), then generate that person in any scene by passing character to POST /v1/images/generations — likeness is far stronger and more consistent than single-image methods like face-id.

Train

4–30 photos of one person — varied angles, lighting and expressions, one face per photo. 5–15 good photos beat 30 mediocre ones. You must have the rights to the photos you upload (see the AUP). Pick the base_model lineup you plan to generate on: the character works on models of that family only.

POST /v1/characters
curl https://api.fastgencloud.com/v1/characters \
  -H "Authorization: Bearer $FASTGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Mia",
    "class": "woman",
    "base_model": "general-image",
    "images": [
      "https://example.com/mia-1.jpg",
      "https://example.com/mia-2.jpg",
      "https://example.com/mia-3.jpg",
      "https://example.com/mia-4.jpg",
      "https://example.com/mia-5.jpg"
    ]
  }'

# → 202 { "character": { "id": "chr_9f2c31ab04d1", "status": "training", … },
#          "job": { "id": "…", "kind": "character.train", "status": "processing" } }

Training is a job like any other: poll GET /v1/characters/{id} (or the returned job id), or put a webhook_url on the request and receive job.succeeded when it’s ready. Failures are refunded automatically.

GET /v1/characters/{id}
curl https://api.fastgencloud.com/v1/characters/chr_9f2c31ab04d1 \
  -H "Authorization: Bearer $FASTGEN_API_KEY"

# → { "status": "training", "progress": { "step": 420, "total": 1000, "pct": 42, "eta_s": 340 } }
# → { "status": "ready", "compatible_models": ["general-image"], … }

Generate

Reference the character by id — strength defaults to 1.0 (0.1–1.5). Describe the scene, outfit and framing in the prompt; the identity comes from the character.

POST /v1/images/generations with a character
curl https://api.fastgencloud.com/v1/images/generations \
  -H "Authorization: Bearer $FASTGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "general-image",
    "prompt": "she reads a paperback in a sunlit cafe, candid, 35mm",
    "character": { "id": "chr_9f2c31ab04d1" }
  }'

Slots & packages

Every account has 2 free character slots. Need more? Monthly packages, billed from your prepaid balance: 10 for $10, 100 for $39, 500 for $129. Upgrades charge the pro-rated difference immediately; downgrades apply at the end of the paid period. If a renewal can’t be covered, over-quota characters are archived after a 14-day grace (training photos are kept, so you can retrain) and deleted for good after 90 days. Deleting a character frees its slot immediately.

POST /v1/characters/package
curl https://api.fastgencloud.com/v1/characters/package \
  -H "Authorization: Bearer $FASTGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "package": "100" }'

Tips

  • Photos: front-facing and three-quarter views, neutral and smiling, indoor and outdoor light. Avoid sunglasses, heavy filters, group shots and duplicate near-identical frames.
  • Send photos as public https URLs. Inline data URIs work, but the request body is capped at ~4 MB total — a few compressed JPEGs at most.
  • One training runs at a time per account; each takes ~10–15 minutes on a dedicated GPU.
  • steps defaults to 1000. Small photo sets (4–6) can overfit above ~1200 steps; large varied sets can take 1500–2000.
  • Characters trained on general-image don’t transfer to anime/cartoon — train per lineup if you need both.
  • For a one-off likeness without training, use face-id ($0.012/image, instant).