FaceNinja

Kehittäjät · REST API

API MetaHuman-päille, tehty erille.

Lähetä henkilön valokuvat, saa ilmoitus, kun 3D-pää on valmis, ja hae tarvitsemasi tiedostomuoto. Sama kutsu tekee yhden 3D-pään tai viisisataa. Jokainen 3D-pää on valmis: 4K-iho, groom-suositukset (MetaHuman-hiukset), sovitettu kaula ja 52 ARKit-muotoa. 3D-pää kestää noin 4 minuuttia, joten API on suunnittelultaan asynkroninen.

  • REST + JSON
  • Bearer-avaimet
  • Webhook-allekirjoitus
  • Idempotenssiavaimet
  • OpenAPI 3.1
  • llms.txt

Ei pidä sekoittaa Epicin MetaHuman-API:ihin (Python ja C++), jotka toimivat Unreal Engine -ohjelman sisällä. FaceNinja on verkko-API, joka tekee 3D-pään, jonka viet niihin.

Lähetä. Saa ilmoitus. Hae.

  1. Lähetä.

    POST /v1/heads ja 1–15 valokuvaa yhdestä henkilöstä, multipart-tiedostoina tai ensin lataamiesi tiedostojen id-tunnuksina. Lisää Idempotency-Key, niin uudelleenyritys ei koskaan tee eikä veloita toista 3D-päätä.

  2. Saa ilmoitus.

    Valitse tapa: allekirjoitettu webhook palvelimellesi, palvelimen lähettämien tapahtumien virta tai skripteille ?wait=60 (long poll).

  3. Hae.

    Pyydä muotoa glb, fbx, obj, stl, ply tai metahuman_zip, ARKit-muotojen kanssa tai ilman. Saat allekirjoitetun linkin, joka ei tarvitse avainta. Tallenna 3D-pään id, ei linkkiä. Mitä kukin tiedostomuoto sisältää

Epäonnistuneen 3D-pään krediitit palautuvat automaattisesti, ja error.code kertoo syyn.

Backendisi tarvitsee vain webhookin.

Luo 3D-pää, tallenna sen id ja toimi, kun kutsumme sinua. Tämä on koko integraatio Pythonilla.

Koodi
# 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"])

Lyhennetty luettavuuden vuoksi. Koko pyyntö, allekirjoituksen tarkistus ja jokainen virhe ovat täällä: API-viite EN

Hahmosto kansiosta, turvallinen ajaa kahdesti.

Erä on monta yksittäistä luontia. Anna jokaiselle idempotenssiavain, jonka johdat omasta datastasi, esimerkiksi kansion nimestä, niin voit ajaa koko skriptin uudelleen kaatumisen jälkeen tekemättä tai maksamatta 3D-päätä kahdesti. Anna sitten webhookien kertoa, mitkä 3D-päät ovat valmiita.

Python
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}"})
  • Tahti: enintään 30 3D-pään luontia minuutissa tiliä kohden. Jos saat 429, odota Retry-After sekuntia ja lähetä sama avain uudelleen.
  • Tarkista ensin: ?dry_run tarkistaa luonnin ja palauttaa hintatarjouksen tekemättä 3D-päätä. GET /v1/account näyttää saldon.
  • Seuraa: GET /v1/heads listaa 3D-päätäsi sivu kerrallaan tilatietoineen.
  • Yksi epäonnistuu, ei kaikki: epäonnistuva 3D-pää ilmoittaa oman error.code-arvonsa, ja sen krediitit palautuvat. Muu erä jatkaa.

Tai anna agenttisi kirjoittaa integraatio.

API-viite, OpenAPI-tiedosto ja llms.txt on kirjoitettu ihmisille ja kielimalleille. Anna agentillesi skill, niin se voi tehdä 3D-päitä puolestasi suoraan tai kirjoittaa ja testata putken skriptin omalle teknologiapinollesi.

Putken kehote
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.

Pidä tämä kehote englanniksi: agenttisi tarvitsee verkko-osoitteen täsmälleen kirjoitetussa muodossa. Sen jälkeen voit puhua sille omalla kielelläsi.

Tehty uudelleenyrityksille, jonoille ja huonoille valokuville.

Idempotentit luonnit

Sama Idempotency-Key 24 tunnin sisällä palauttaa saman 3D-pään, ei koskaan toista veloitusta.

Allekirjoitetut webhookit

head.completed ja head.failed, HMAC-allekirjoituksella otsakkeessa FaceNinja-Signature.

Rehellinen jono

Odottaessaan 3D-pää ilmoittaa paikkansa jonossa ja arvion.

Virheet, joiden mukaan voi haarautua

Vakaat error.code-arvot (no_face, not_same_person, content_rejected, …) ja hint.

Hyvitykset ilman tukipyyntöjä

Krediitit varataan luonnissa, veloitetaan valmistuessa ja vapautetaan epäonnistuessa tai poistettaessa.

Poisto pyydettäessä

Poista 3D-pää ja sen valokuvat milloin haluat. Tiedostot vanhenevat 30 päivää 3D-pään valmistumisen jälkeen.

Luvut, joiden ympärille suunnitella.

Rajat
Valokuvia per 3D-pää1–15, yksi henkilö; JPEG, PNG, WebP, HEIC/HEIF tai AVIF, enintään 25 MiB kukin
Aika per 3D-pääNoin 4 minuuttia plus mahdollinen jono
Long poll?wait enintään 60 s per kutsu
LatauslinkitAloita 60 s sisällä; aloitettu lataus valmistuu loppuun
Pyyntörajat600 pyyntöä minuutissa tiliä kohden; 30 3D-pään luontia minuutissa
SäilytysaikaValokuvat ja tiedostot 30 päivää 3D-pään valmistumisen jälkeen
Hinta1 500 krediittiä (15 $) per 3D-pää, kaikki tiedostomuodot mukana

Viite on ensisijainen lähde. Jos tämän sivun luku poikkeaa siitä, viite on oikeassa.

Pelaajan kasvot pelitallennuksen ensimmäisestä päivästä lähtien.

Anna pelaajien tuoda oma kasvonsa tai rakenna NPC-hahmosto suostuvista näyttelijöistä. Jokainen 3D-pää on sama mesh eri kasvoilla, joten yksi rigi, yksi materiaali ja yksi animaatiosarja sopivat kaikkiin. 52 ARKit-muotoa ottavat vastaan huulisynkronoinnin tai pelaajan kameran.

Varaudu odotukseen. 3D-pää kestää noin 4 minuuttia, ei millisekunteja. Aloita se ajoissa, perehdytyksen tai opetusosuuden aikana, näytä väliaikainen korvike ja vaihda 3D-pää tilalle, kun webhook saapuu.

GLB: Unity, Godot ja verkko; FBX ja MetaHuman ZIP: Unreal. Unreal-automaatio on ennakkokäytössä: pyydä sitä.

Käyttöehtomme edellyttävät valokuvassa olevan henkilön lupaa ja kieltävät lasten valokuvat. Rakenna sama sääntö omaan työnkulkuusi.

Synteettinen valokuva vanhasta miehestä kovassa oranssissa valossaSynteettinen valokuva nauravasta naisesta silmälasit päässäSynteettinen valokuva parrakkaasta miehestä pää kääntyneenäSynteettinen valokuva naisesta, jonka pitkät hiukset peittävät korvat
Neljä synteettistä testihenkilöä, yksi topologia.

Käytätkö jo toista API:a, joka tekee valokuvista MetaHuman-päitä?

Jos integraatiosi jo luo 3D-pään, odottaa sitä ja lataa tiedoston, se säilyttää muotonsa täällä. Polut, kenttien nimet ja tiedostovaihe eroavat, ja siirto-opas yhdistää ne kutsu kerrallaan.

Kehittäjien kysymykset.

01Onko sandbox-ympäristöä?
Lisää ?dry_run luontikutsuun. Se tarkistaa pyynnön ja palauttaa hintatarjouksen tekemättä 3D-päätä tai veloittamatta sinua.
02Voinko kutsua sitä selaimesta tai mobiilisovelluksesta?
Ei. Pidä avain palvelimellasi. Allekirjoitetut lähetys- ja latauslinkit eivät tarvitse avainta, joten asiakas voi lähettää ja ladata suoraan.
03Mitä SDK:ita on?
Pelkkä HTTP ja OpenAPI 3.1 -tiedosto, josta voit generoida asiakasohjelman. Viitteessä on curl-, Node- ja Python-esimerkkejä. Agentin skillin komentorivityökalu on myös yksi Python-tiedosto, jonka voi lukea ja kutsua skripteistä.
04Montako 3D-päätä voin tehdä kerralla?
Enintään 30 3D-pään luontia minuutissa tiliä kohden, ja kukin ajetaan jonossa. Jos 3D-päitä on yli 1 000, kirjoita meille laskutuksesta ja kapasiteetista.
05Onko tämä Epicin MetaHuman-API?
Ei. Epicin MetaHuman-API:t ohjaavat MetaHuman Creator -työkalua skripteillä Unreal Engine -ohjelman sisällä. FaceNinja tekee 3D-pään valokuvista verkkopalveluna ja antaa sinulle tiedostot ja MetaHuman ZIP -tiedoston vietäväksi Unrealiin.
06Voiko se rakentaa 3D-pään valokuvasarjasta?
Kyllä, Beta-vaiheessa: usean valokuvan rekonstruktio yhdestä kuvauskerrasta palauttaa myös kunkin valokuvan kameran sijainnin ja polttovälin. Kirjoita meille, jos haluat kokeilla sitä omalla kuvasarjallasi.

Ensimmäinen 3D-pääsi on yhden API-kutsun päässä.