Developers · REST API
Το API κεφαλιών MetaHuman, φτιαγμένο για παρτίδες.
Στείλτε φωτογραφίες ενός ανθρώπου, ενημερωθείτε όταν το κεφάλι είναι έτοιμο, κατεβάστε τη μορφή που χρειάζεστε. Η ίδια κλήση φτιάχνει ένα κεφάλι ή πεντακόσια. Κάθε κεφάλι είναι έτοιμο: δέρμα 4K, προτάσεις groom (μαλλιά MetaHuman), λαιμός που ταιριάζει και 52 ARKit blendshapes. Ένα κεφάλι χρειάζεται περίπου 4 λεπτά, οπότε το API είναι ασύγχρονο εκ σχεδιασμού.
- REST + JSON
- Κλειδιά Bearer
- Υπογεγραμμένα webhooks
- Κλειδιά idempotency
- OpenAPI 3.1
- llms.txt
Να μη συγχέεται με τα APIs MetaHuman της Epic σε Python και C++, που τρέχουν μέσα στο Unreal Engine. Το FaceNinja είναι ένα web API που φτιάχνει το κεφάλι που φέρνετε μέσα σε αυτά.
POST /v1/headsφωτογραφίες ενός ανθρώπου- id κεφαλιού
head.completedυπογεγραμμένο webhook όταν ολοκληρωθείPOST /v1/heads/{id}/filesμορφή- υπογεγραμμένος σύνδεσμος μικρής διάρκειας
Στείλτε. Ενημερωθείτε. Κατεβάστε.
Στείλτε.
POST /v1/headsμε 1 έως 15 φωτογραφίες ενός ανθρώπου, ως αρχεία multipart ή ως ids που ανεβάσατε πρώτα. Προσθέστε έναIdempotency-Keyκαι μια επανάληψη δεν φτιάχνει ούτε χρεώνει ποτέ δεύτερο κεφάλι.Ενημερωθείτε.
Επιλέξτε πώς: ένα υπογεγραμμένο webhook στον server σας, μια ροή server-sent events ή ένα long poll
?wait=60για scripts.Κατεβάστε.
Ζητήστε
glb,fbx,obj,stl,plyήmetahuman_zip, με ή χωρίς ARKit blendshapes. Παίρνετε έναν υπογεγραμμένο σύνδεσμο που δεν χρειάζεται κλειδί. Αποθηκεύστε το id του κεφαλιού, όχι τον σύνδεσμο. Τι περιέχει κάθε μορφή
Τα credits ενός αποτυχημένου κεφαλιού επιστρέφονται αυτόματα και το error.code λέει γιατί.
Ένα webhook είναι όλα όσα χρειάζεται το backend σας.
Δημιουργήστε το κεφάλι, αποθηκεύστε το id του και δράστε όταν σας καλέσουμε. Αυτή είναι ολόκληρη η ενσωμάτωση, σε Python.
# 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);
});Συντομευμένο για ευκολότερη ανάγνωση. Η τεκμηρίωση EN έχει ολόκληρο το αίτημα, τον έλεγχο της υπογραφής και κάθε σφάλμα.
Μια ομάδα κεφαλιών από φάκελο, που τρέχει με ασφάλεια δύο φορές.
Μια παρτίδα είναι πολλές μεμονωμένες δημιουργίες. Δώστε σε καθεμία ένα κλειδί idempotency που προκύπτει από τα δικά σας δεδομένα, όπως το όνομα του φακέλου, και μπορείτε να ξανατρέξετε ολόκληρο το script μετά από κατάρρευση χωρίς να φτιάξετε ή να πληρώσετε ένα κεφάλι δύο φορές. Μετά αφήστε τα webhooks να σας πουν ποια κεφάλια είναι έτοιμα.
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}"})- Ρυθμός: έως 30 δημιουργίες κεφαλιών το λεπτό ανά λογαριασμό. Σε
429, περιμένετεRetry-Afterδευτερόλεπτα και στείλτε ξανά το ίδιο κλειδί. - Έλεγχος πρώτα: Το
?dry_runελέγχει μια δημιουργία και επιστρέφει προσφορά τιμής χωρίς να φτιάξει κεφάλι. ΤοGET /v1/accountδείχνει το υπόλοιπο. - Παρακολούθηση: Το
GET /v1/headsπαραθέτει τα κεφάλια σας, σελίδα σελίδα, με την κατάστασή τους. - Αποτυγχάνει ένα, όχι όλα: ένα κεφάλι που αποτυγχάνει αναφέρει το δικό του
error.codeκαι τα credits του επιστρέφουν. Η υπόλοιπη παρτίδα συνεχίζει.
Ή αφήστε τον agent σας να γράψει την ενσωμάτωση.
Η τεκμηρίωση API, το αρχείο OpenAPI και το llms.txt είναι γραμμένα για ανθρώπους και για γλωσσικά μοντέλα. Δώστε στον agent σας το skill και μπορεί να φτιάχνει κεφάλια για εσάς απευθείας ή να γράψει και να δοκιμάσει το script pipeline για το 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.Αφήστε αυτό το prompt στα αγγλικά: ο agent σας χρειάζεται τη διεύθυνση ακριβώς όπως είναι γραμμένη. Μετά μπορείτε να του μιλάτε στη γλώσσα σας.
Φτιαγμένο για επαναλήψεις, ουρές και κακές φωτογραφίες.
Idempotent δημιουργίες
Το ίδιο Idempotency-Key μέσα σε 24 ώρες επιστρέφει το ίδιο κεφάλι, ποτέ δεύτερη χρέωση.
Υπογεγραμμένα webhooks
head.completed και head.failed, με υπογραφή HMAC στο FaceNinja-Signature.
Ειλικρινής ουρά
Όσο περιμένει, ένα κεφάλι αναφέρει τη θέση του στην ουρά και μια εκτίμηση.
Σφάλματα που μπορείτε να χειριστείτε με κώδικα
Σταθερές τιμές error.code (no_face, not_same_person, content_rejected, …) και ένα hint.
Επιστροφές χωρίς αιτήματα υποστήριξης
Τα credits δεσμεύονται κατά τη δημιουργία, χρεώνονται κατά την ολοκλήρωση και αποδεσμεύονται σε αποτυχία ή διαγραφή.
Διαγραφή όποτε θέλετε
Διαγράψτε ένα κεφάλι και τις φωτογραφίες του όποτε θέλετε. Τα αρχεία λήγουν 30 ημέρες αφού ολοκληρωθεί το κεφάλι.
Οι αριθμοί που πρέπει να έχετε υπόψη στον σχεδιασμό.
| Φωτογραφίες ανά κεφάλι | 1 έως 15, ένας άνθρωπος· JPEG, PNG, WebP, HEIC/HEIF ή AVIF, έως 25 MiB η καθεμία |
|---|---|
| Χρόνος ανά κεφάλι | Περίπου 4 λεπτά, συν τυχόν ουρά |
| Long poll | ?wait έως 60 s ανά κλήση |
| Σύνδεσμοι λήψης | Ξεκινήστε εντός 60 s· μια λήψη που έχει ξεκινήσει ολοκληρώνεται |
| Όρια ρυθμού | 600 αιτήματα το λεπτό ανά λογαριασμό· 30 δημιουργίες κεφαλιών το λεπτό |
| Διατήρηση | Φωτογραφίες και αρχεία: 30 ημέρες μετά την ολοκλήρωση του κεφαλιού |
| Τιμή | 1.500 credits (15 $) ανά κεφάλι, όλες οι μορφές περιλαμβάνονται |
Η τεκμηρίωση είναι η πηγή αλήθειας. Αν ένας αριθμός εδώ διαφέρει, υπερισχύει η τεκμηρίωση.
Το πρόσωπο του παίκτη από την πρώτη μέρα του αρχείου αποθήκευσης.
Αφήστε τους παίκτες να φέρουν το δικό τους πρόσωπο ή φτιάξτε μια ομάδα NPC από ηθοποιούς που συναινούν. Κάθε κεφάλι είναι το ίδιο πλέγμα με διαφορετικό πρόσωπο, οπότε ένα rig, ένα υλικό και ένα σετ animation ταιριάζουν σε όλα. Τα 52 ARKit blendshapes δέχονται lip sync ή την κάμερα του παίκτη.
Υπολογίστε την αναμονή. Ένα κεφάλι χρειάζεται περίπου 4 λεπτά, όχι χιλιοστά του δευτερολέπτου. Ξεκινήστε το νωρίς, στο onboarding ή σε ένα tutorial, δείξτε ένα προσωρινό κεφάλι και αντικαταστήστε το όταν φτάσει το webhook.
GLB για Unity, Godot και το web· FBX και το MetaHuman ZIP για το Unreal. Η αυτοματοποίηση Unreal βρίσκεται σε πρώιμη πρόσβαση: ζητήστε την.
Οι όροι μας απαιτούν την άδεια του ανθρώπου που εικονίζεται στη φωτογραφία και απαγορεύουν φωτογραφίες παιδιών. Ενσωματώστε τον ίδιο κανόνα στη ροή σας.




Χρησιμοποιείτε ήδη άλλο API από φωτογραφία σε MetaHuman;
Αν η ενσωμάτωσή σας ήδη δημιουργεί ένα κεφάλι, περιμένει και κατεβάζει ένα αρχείο, διατηρεί το σχήμα της και εδώ. Οι διαδρομές, τα ονόματα πεδίων και το βήμα του αρχείου διαφέρουν, και ο οδηγός μετάβασης τα αντιστοιχίζει κλήση προς κλήση.
Ερωτήσεις των developers.
- 01Υπάρχει sandbox;
- Προσθέστε
?dry_runσε μια κλήση δημιουργίας. Ελέγχει το αίτημα και επιστρέφει προσφορά τιμής χωρίς να φτιάξει κεφάλι ούτε να σας χρεώσει. - 02Μπορώ να το καλέσω από browser ή από εφαρμογή κινητού;
- Όχι. Κρατήστε το κλειδί στον server σας. Οι υπογεγραμμένοι σύνδεσμοι ανεβάσματος και λήψης δεν χρειάζονται κλειδί, οπότε ένας client μπορεί να ανεβάσει ή να κατεβάσει απευθείας.
- 03Τι SDKs υπάρχουν;
- Απλό HTTP και ένα αρχείο OpenAPI 3.1 από το οποίο μπορείτε να δημιουργήσετε client. Η τεκμηρίωση έχει παραδείγματα με curl, Node και Python. Το CLI του skill για agents είναι επίσης ένα ενιαίο αρχείο Python που μπορείτε να διαβάσετε και να καλέσετε από scripts.
- 04Πόσα κεφάλια μπορώ να φτιάξω ταυτόχρονα;
- Έως 30 δημιουργίες κεφαλιών το λεπτό ανά λογαριασμό, και καθεμία τρέχει στην ουρά. Για περισσότερα από 1.000 κεφάλια, γράψτε μας για τιμολόγηση και χωρητικότητα.
- 05Είναι αυτό το MetaHuman API της Epic;
- Όχι. Τα APIs MetaHuman της Epic αυτοματοποιούν το MetaHuman Creator μέσα στο Unreal Engine. Το FaceNinja φτιάχνει το κεφάλι από φωτογραφίες, ως web υπηρεσία, και σας δίνει τα αρχεία και το MetaHuman ZIP για να τα πάρετε στο Unreal.
- 06Μπορεί να φτιάξει ένα κεφάλι από ένα σύνολο φωτογραφιών;
- Ναι, σε Beta: η ανακατασκευή από αρκετές φωτογραφίες μιας συνεδρίας λήψης επιστρέφει επίσης τη θέση της κάμερας και την εστιακή απόσταση κάθε φωτογραφίας. Γράψτε μας αν θέλετε να το δοκιμάσετε με το δικό σας σετ λήψεων.