Vývojáři · REST API
API pro hlavy MetaHuman, postavené pro dávky.
Pošlete fotky jednoho člověka, ozveme se, až bude 3D hlava hotová, a vy si stáhnete formát, který potřebujete. Stejné volání vytvoří jednu hlavu i pět set. Každá hlava je hotová: pleť ve 4K, doporučené groomy (vlasy MetaHuman), přiléhavý krk a 52 blendshapů ARKit. Hlava trvá asi 4 minuty, takže API je záměrně asynchronní.
- REST + JSON
- Klíče Bearer
- Podepsané webhooky
- Klíče idempotence
- OpenAPI 3.1
- llms.txt
Nezaměňovat s Python a C++ API od Epicu pro MetaHuman, která běží uvnitř Unreal Engine. FaceNinja je webové API, které vytvoří hlavu, již do nich přinesete.
POST /v1/headsfotky jedné osoby- id hlavy
head.completedpodepsaný webhook, až bude hotovoPOST /v1/heads/{id}/filesformát- krátkodobý podepsaný odkaz
Odešlete. Počkejte na odpověď. Stáhněte.
Odešlete.
POST /v1/headss 1 až 15 fotkami jednoho člověka, jako soubory multipart nebo id, která jste nahráli předem. PřidejteIdempotency-Keya opakování nikdy nevytvoří ani neúčtuje druhou hlavu.Počkejte na odpověď.
Vyberte jak: podepsaný webhook na váš server, proud server-sent událostí, nebo dlouhý poll
?wait=60pro skripty.Stáhněte.
Požádejte o
glb,fbx,obj,stl,plynebometahuman_zip, s tvary ARKit nebo bez nich. Dostanete podepsaný odkaz, který klíč nepotřebuje. Ukládejte id hlavy, ne odkaz. Co který formát obsahuje
Kredity za nezdařenou hlavu se vrátí automaticky a error.code řekne proč.
Váš backend potřebuje jen webhook.
Vytvořte hlavu, uložte její id a jednejte, až se vám ozveme. To je celá integrace, v Pythonu.
# when the user confirms their photos
head = api.post("/v1/heads", files=photos,
data={"webhook_url": "https://you.example/hooks/faceninja"},
headers={"Idempotency-Key": str(uuid4())}).json()
save(user, head["id"])
# later, FaceNinja calls you
@app.post("/hooks/faceninja")
def on_head(event = verified(request)): # check FaceNinja-Signature first
if event["type"] == "head.completed":
link = api.post(f"/v1/heads/{event['data']['id']}/files",
json={"format": "glb", "arkit": True}).json()
store_on_your_cdn(link["url"])// when the user confirms their photos
const form = new FormData();
for (const p of photos) form.append("photos", p);
form.append("webhook_url", "https://you.example/hooks/faceninja");
const head = await api.post("/v1/heads", form,
{ headers: { "Idempotency-Key": crypto.randomUUID() } });
await save(user, head.id);
// later, FaceNinja calls you
app.post("/hooks/faceninja", async (req, res) => {
const event = verified(req); // check FaceNinja-Signature first
if (event.type === "head.completed") {
const link = await api.post(`/v1/heads/${event.data.id}/files`,
{ format: "glb", arkit: true });
await storeOnYourCdn(link.url);
}
res.sendStatus(204);
});Zkráceno kvůli čitelnosti. Reference EN obsahuje celý požadavek, ověření podpisu i všechny chyby.
Obsazení ze složky, bezpečné spustit dvakrát.
Dávka je mnoho jednotlivých vytvoření. Dejte každému klíč idempotence odvozený z vašich dat, například z názvu složky, a celý skript můžete po pádu spustit znovu, aniž byste hlavu vytvořili nebo zaplatili dvakrát. Pak nechte webhooky, ať vám řeknou, které hlavy jsou hotové.
for person in sorted(Path("cast").iterdir()): # one folder per person
photos = [("photos", open(p, "rb")) for p in sorted(person.glob("*.jpg"))]
api.post("/v1/heads", files=photos,
data={"name": person.name, "webhook_url": HOOK},
headers={"Idempotency-Key": f"cast-2026-10/{person.name}"})- Tempo: až 30 vytvoření hlav za minutu na účet. Při
429počkejteRetry-Aftersekund a pošlete stejný klíč znovu. - Nejdřív zkontrolujte:
?dry_runzkontroluje vytvoření a vrátí cenovou nabídku, aniž vytvoří hlavu.GET /v1/accountukáže zůstatek. - Sledujte:
GET /v1/headsvypíše vaše hlavy, stránku po stránce, s jejich stavem. - Selže jedna, ne všechny: hlava, která selže, hlásí vlastní
error.codea její kredity se vrátí. Zbytek dávky pokračuje.
Nebo nechte svého agenta napsat integraci.
Reference API, soubor OpenAPI a llms.txt jsou psané pro lidi i pro jazykové modely. Dejte agentovi skill a může vám hlavy vytvářet přímo, nebo napsat a otestovat skript pipeline pro váš stack.
Read https://faceninja.net/llms.txt and https://faceninja.net/skill/SKILL.md. Write a Python script for our pipeline: for each new folder in ./incoming, create one FaceNinja head from its photos with an Idempotency-Key derived from the folder name and a webhook_url I give you. Add a small web handler that checks the FaceNinja-Signature header, and on head.completed downloads the FBX to ./heads/<folder name>; on head.failed it logs error.code. Read the API key from FACENINJA_API_KEY. Don't run anything against my account until I say so.Ponechte tento prompt v angličtině: váš agent potřebuje webovou adresu přesně tak, jak je napsaná. Pak s ním můžete mluvit svým jazykem.
Postaveno pro opakování, fronty a špatné fotky.
Idempotentní vytvoření
Stejný Idempotency-Key do 24 hodin vrátí stejnou hlavu, nikdy druhou platbu.
Podepsané webhooky
head.completed a head.failed, s podpisem HMAC v FaceNinja-Signature.
Poctivá fronta
Čekající hlava hlásí své pořadí ve frontě a odhad.
Chyby, podle kterých lze větvit kód
Stabilní hodnoty error.code (no_face, not_same_person, content_rejected, …) a hint.
Vrácení bez tiketů
Kredity se při vytvoření zadrží, při dokončení účtují a při selhání nebo smazání uvolní.
Smazání na požádání
Smažte hlavu i její fotky, kdykoli chcete. Soubory vyprší 30 dní po dokončení hlavy.
Čísla, kolem kterých navrhovat.
| Fotky na hlavu | 1 až 15, jedna osoba; JPEG, PNG, WebP, HEIC/HEIF nebo AVIF, každá do 25 MiB |
|---|---|
| Doba na hlavu | Asi 4 minuty, plus případná fronta |
| Dlouhý poll | ?wait až 60 s na volání |
| Odkazy ke stažení | Začněte do 60 s; zahájené stahování se dokončí |
| Limity rychlosti | 600 požadavků za minutu na účet; 30 vytvoření hlav za minutu |
| Uchovávání | Fotky a soubory 30 dní po dokončení hlavy |
| Cena | 1 500 kreditů (15 US$) za hlavu, všechny formáty v ceně |
Rozhodující je reference. Pokud se zde číslo liší, platí reference.
Obličej hráče od prvního dne jeho uložené hry.
Nechte hráče přinést vlastní obličej, nebo postavte obsazení NPC ze souhlasících herců. Každá hlava je stejná síť s jiným obličejem, takže jeden rig, jeden materiál a jedna sada animací sedí na všechny. 52 blendshapů ARKit zvládne lip sync nebo kameru hráče.
Počítejte s čekáním. Hlava trvá asi 4 minuty, ne milisekundy. Spusťte ji včas, při úvodu nebo v tutoriálu, zobrazte zástupnou hlavu a po příchodu webhooku hlavu vyměňte.
GLB pro Unity, Godot a web; FBX a MetaHuman ZIP pro Unreal. Automatizace pro Unreal je v předběžném přístupu: požádejte o ni.
Naše podmínky vyžadují svolení osoby na fotce a zakazují fotky dětí. Stejné pravidlo zabudujte do svého postupu.




Už používáte jiné API z fotky na MetaHuman?
Pokud vaše integrace už vytváří hlavu, čeká na ni a stahuje soubor, zachová si tady svůj tvar. Cesty, názvy polí a krok se souborem se liší a průvodce migrací je mapuje volání po volání.
Otázky vývojářů.
- 01Je k dispozici sandbox?
- Přidejte
?dry_runk volání vytvoření. Zkontroluje požadavek a vrátí cenovou nabídku, aniž by vytvořilo hlavu nebo vám cokoli účtovalo. - 02Mohu to volat z prohlížeče nebo mobilní aplikace?
- Ne. Klíč držte na svém serveru. Podepsané odkazy pro nahrání a stažení klíč nepotřebují, takže klient může nahrávat nebo stahovat přímo.
- 03Jaké jsou k dispozici SDK?
- Čisté HTTP a soubor OpenAPI 3.1, z něhož můžete vygenerovat klienta. Reference má příklady v curl, Node a Pythonu. CLI skillu pro agenty je také jediný soubor v Pythonu, který si můžete přečíst a volat ze skriptů.
- 04Kolik hlav mohu vytvořit najednou?
- Až 30 vytvoření hlav za minutu na účet a každé běží ve frontě. Pro více než 1 000 hlav napište nám kvůli fakturaci a kapacitě.
- 05Je to API MetaHuman od Epicu?
- Ne. API MetaHuman od Epicu skriptují MetaHuman Creator uvnitř Unreal Engine. FaceNinja vytvoří hlavu z fotek jako webová služba a předá vám soubory a MetaHuman ZIP, které si vezmete do Unrealu.
- 06Dokáže vytvořit hlavu ze sady fotek?
- Ano, v režimu Beta: rekonstrukce z několika fotek jedné relace vrací také polohu kamery a ohniskovou vzdálenost každé fotky. Napište nám, pokud to chcete vyzkoušet na své sadě snímků.