FaceNinja

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 που φτιάχνει το κεφάλι που φέρνετε μέσα σε αυτά.

Στείλτε. Ενημερωθείτε. Κατεβάστε.

  1. Στείλτε.

    POST /v1/heads με 1 έως 15 φωτογραφίες ενός ανθρώπου, ως αρχεία multipart ή ως ids που ανεβάσατε πρώτα. Προσθέστε ένα Idempotency-Key και μια επανάληψη δεν φτιάχνει ούτε χρεώνει ποτέ δεύτερο κεφάλι.

  2. Ενημερωθείτε.

    Επιλέξτε πώς: ένα υπογεγραμμένο webhook στον server σας, μια ροή server-sent events ή ένα long poll ?wait=60 για scripts.

  3. Κατεβάστε.

    Ζητήστε 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"])

Συντομευμένο για ευκολότερη ανάγνωση. Η τεκμηρίωση EN έχει ολόκληρο το αίτημα, τον έλεγχο της υπογραφής και κάθε σφάλμα.

Μια ομάδα κεφαλιών από φάκελο, που τρέχει με ασφάλεια δύο φορές.

Μια παρτίδα είναι πολλές μεμονωμένες δημιουργίες. Δώστε σε καθεμία ένα κλειδί idempotency που προκύπτει από τα δικά σας δεδομένα, όπως το όνομα του φακέλου, και μπορείτε να ξανατρέξετε ολόκληρο το script μετά από κατάρρευση χωρίς να φτιάξετε ή να πληρώσετε ένα κεφάλι δύο φορές. Μετά αφήστε τα webhooks να σας πουν ποια κεφάλια είναι έτοιμα.

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}"})
  • Ρυθμός: έως 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 σας.

Prompt pipeline
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: η ανακατασκευή από αρκετές φωτογραφίες μιας συνεδρίας λήψης επιστρέφει επίσης τη θέση της κάμερας και την εστιακή απόσταση κάθε φωτογραφίας. Γράψτε μας αν θέλετε να το δοκιμάσετε με το δικό σας σετ λήψεων.

Το πρώτο σας κεφάλι απέχει μία κλήση API.