Geliştiriciler · REST API
Toplu işler için tasarlanmış MetaHuman kafa API'si.
Bir kişinin fotoğraflarını gönderin, kafa bittiğinde haber alın, ihtiyacınız olan biçimi indirin. Aynı çağrı bir kafa da yapar, beş yüz de. Her kafa tamamlanmıştır: 4K cilt, groom önerileri, kişiye uyarlanmış bir boyun ve 52 ARKit şekli. Bir kafa yaklaşık 4 dakika sürer; bu yüzden API tasarım gereği eşzamansızdır.
- REST + JSON
- Bearer anahtarları
- İmzalı webhook'lar
- Idempotency anahtarı
- OpenAPI 3.1
- llms.txt
Epic'in Unreal Engine içinde çalışan MetaHuman Python ve C++ API'leriyle karıştırılmamalıdır. FaceNinja, onlara getireceğiniz kafayı üreten bir web API'sidir.
POST /v1/headsbir kişinin fotoğrafları- kafa kimliği
head.completediş bitince imzalı webhookPOST /v1/heads/{id}/filesbiçim- kısa ömürlü imzalı bağlantı
Gönderin. Haber alın. İndirin.
Gönderin.
Tek bir kişiye ait 1 ila 15 fotoğrafla, multipart dosyalar ya da önceden yüklediğiniz kimliklerle
POST /v1/heads. BirIdempotency-Keyekleyin; yeniden deneme asla ikinci bir kafa üretmez ya da faturalandırmaz.Haber alın.
Yöntemi seçin: sunucunuza imzalı bir webhook, bir server-sent event akışı ya da betikler için
?wait=60long poll.İndirin.
glb,fbx,obj,stl,plyya dametahuman_zipisteyin; ARKit şekilleriyle veya şekilsiz. Anahtar gerektirmeyen imzalı bir bağlantı alırsınız. Bağlantıyı değil, kafa kimliğini saklayın. Her biçimde ne var
Başarısız bir kafanın kredileri otomatik olarak geri döner ve error.code nedenini söyler.
Arka ucunuzun ihtiyacı olan tek şey bir webhook.
Kafayı oluşturun, kimliğini saklayın ve biz sizi aradığımızda harekete geçin. Entegrasyonun tamamı bu, Python ile.
# 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);
});Okumak için kısaltılmıştır. Referansta EN tam istek, imza kontrolü ve her hata bulunur.
Bir klasörden kadro; iki kez çalıştırması güvenli.
Toplu iş, birçok tekil oluşturmadır. Her birine kendi verinizden, örneğin klasör adından türettiğiniz bir idempotency anahtarı verin; böylece betiğin tamamını bir çökmeden sonra, bir kafayı iki kez üretmeden ya da ödemeden yeniden çalıştırabilirsiniz. Sonra hangi kafaların bittiğini webhook'ların söylemesine izin verin.
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}"})- Hız: hesap başına dakikada en çok 30 kafa oluşturma.
429alırsanızRetry-Aftersaniye bekleyin ve aynı anahtarı yeniden gönderin. - Önce kontrol:
?dry_runbir oluşturmayı kontrol eder ve kafa üretmeden bir fiyat teklifi döndürür.GET /v1/accountbakiyeyi gösterir. - İzleme:
GET /v1/headskafalarınızı durumlarıyla birlikte sayfa sayfa listeler. - Biri başarısız olur, hepsi değil: başarısız olan kafa kendi
error.codedeğerini bildirir ve kredileri döner. Toplu işin geri kalanı sürer.
Ya da entegrasyonu ajanınız yazsın.
API referansı, OpenAPI dosyası ve llms.txt hem insanlar hem dil modelleri için yazılmıştır. Ajanınıza skill'i verin; sizin için doğrudan kafa üretebilir ya da teknoloji yığınınıza uygun işlem hattı betiğini yazıp test edebilir.
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.Bu istemi İngilizce bırakın: ajanınızın web adresini tam yazıldığı gibi alması gerekir. Sonrasında onunla kendi dilinizde konuşabilirsiniz.
Yeniden denemeler, kuyruklar ve kötü fotoğraflar için tasarlandı.
Idempotent oluşturma
24 saat içinde aynı Idempotency-Key, aynı kafayı döndürür; ikinci bir ücret asla alınmaz.
İmzalı webhook'lar
head.completed ve head.failed, FaceNinja-Signature içinde bir HMAC imzasıyla.
Dürüst kuyruk
Beklerken bir kafa, sıradaki yerini ve bir tahmini bildirir.
Kodunuzun ayırt edebileceği hatalar
Sabit error.code değerleri (no_face, not_same_person, content_rejected, …) ve bir hint.
Destek talebi açmadan iade
Krediler oluşturma anında ayrılır, tamamlanınca tahsil edilir; başarısızlıkta ya da silmede serbest bırakılır.
İstediğinizde silme
Bir kafayı ve fotoğraflarını istediğiniz zaman silin. Dosyalar, kafa tamamlandıktan 30 gün sonra sona erer.
Tasarımda dikkate alınacak sayılar.
| Kafa başına fotoğraf | 1 ila 15, tek kişi; JPEG, PNG, WebP, HEIC/HEIF veya AVIF, her biri en çok 25 MiB |
|---|---|
| Kafa başına süre | Yaklaşık 4 dakika, artı varsa kuyruk |
| Long poll | Çağrı başına en fazla 60 s ?wait |
| İndirme bağlantıları | 60 s içinde başlamalı; başlamış bir indirme tamamlanır |
| İstek sınırları | Hesap başına dakikada 600 istek; dakikada 30 kafa oluşturma |
| Saklama | Fotoğraflar ve dosyalar, kafa tamamlandıktan 30 gün sonrasına kadar |
| Fiyat | Kafa başına 1.500 kredi ($15), tüm biçimler dahil |
Referans doğruluk kaynağıdır. Buradaki bir sayı farklıysa referans geçerlidir.
Kayıt dosyasının ilk gününde oyuncunun yüzü.
Oyuncuların kendi yüzlerini getirmesine izin verin ya da onay veren oyunculardan bir NPC kadrosu kurun. Her kafa, farklı bir yüze sahip aynı mesh'tir; bu yüzden tek bir rig, tek bir materyal ve tek bir animasyon seti hepsine uyar. 52 ARKit şekli dudak senkronunu ya da oyuncunun kamerasını alır.
Beklemeyi planlayın. Bir kafa milisaniye değil, yaklaşık 4 dakika sürer. Onu erken başlatın; oyuna giriş ya da öğretici sırasında, bir yer tutucu gösterin ve webhook geldiğinde kafayı değiştirin.
Unity, Godot ve web için GLB; Unreal için FBX ve MetaHuman ZIP. Unreal otomasyonu erken erişimdedir: erişim isteyin.
Koşullarımız, fotoğraftaki kişiden izin alınmasını şart koşar ve çocukların fotoğraflarını yasaklar. Aynı kuralı kendi akışınıza da yerleştirin.




Zaten başka bir fotoğraftan MetaHuman API'si mi kullanıyorsunuz?
Entegrasyonunuz zaten bir kafa oluşturuyor, onu bekliyor ve bir dosya indiriyorsa, burada da aynı yapıyı korur. Yollar, alan adları ve dosya adımı farklıdır; geçiş kılavuzu bunları çağrı çağrı eşleştirir.
Geliştirici soruları.
- 01Bir test ortamı (sandbox) var mı?
- Bir oluşturma çağrısına
?dry_runekleyin. İsteği kontrol eder ve kafa üretmeden ya da sizden ücret almadan bir fiyat teklifi döndürür. - 02Bir tarayıcıdan ya da mobil uygulamadan çağırabilir miyim?
- Hayır. Anahtarı sunucunuzda tutun. İmzalı yükleme ve indirme bağlantıları anahtar gerektirmez; bu yüzden bir istemci doğrudan yükleyebilir veya indirebilir.
- 03Hangi SDK'lar var?
- Düz HTTP ve bir istemci üretebileceğiniz OpenAPI 3.1 dosyası. Referansta curl, Node ve Python örnekleri vardır. Ajan skill'inin CLI'ı da okuyup betiklerden çağırabileceğiniz tek bir Python dosyasıdır.
- 04Aynı anda kaç kafa üretebilirim?
- Hesap başına dakikada 30 kafa oluşturmaya kadar; her biri kuyrukta çalışır. 1.000 kafadan fazlası için faturalandırma ve kapasite hakkında bize yazın.
- 05Bu, Epic'in MetaHuman API'si mi?
- Hayır. Epic'in MetaHuman API'leri, Unreal Engine içindeki MetaHuman Creator'ı betiklerle yönetmek içindir. FaceNinja ise kafayı fotoğraflardan bir web servisi olarak üretir ve Unreal'a götürmeniz için size dosyaları ve MetaHuman ZIP'i verir.
- 06Bir fotoğraf setinden kafa üretebilir mi?
- Evet, beta olarak: tek bir oturumun birkaç fotoğrafından yeniden oluşturma, her fotoğrafın kamera konumunu ve odak uzaklığını da döndürür. Çekim setinizle denemek isterseniz bize yazın.