OmniHuman v1.5 API: programmatische avatarvideogeneratie
Een ontwikkelaarsgids voor de OmniHuman v1.5 API op Arteza. Leer over endpointstructuur, authenticatie, aanvraagparameters, responsafhandeling, webhookintegratie en best practices voor het bouwen van geautomatiseerde avatarvideoworkflows.

OmniHuman v1.5 uitvoeren via de Arteza UI is ideaal voor eenmalige creaties. Voor workflows met hoog volume, zoals gepersonaliseerde verkoopoutreach, meertalige uitrollingen, CMS-gestuurde videogeneratie en geautomatiseerde nieuwssamenvattingen, wil je de API gebruiken. Deze gids behandelt authenticatie, endpoints, aanvraagstructuur, webhookverwerking en productiepatronen. Elke generatie kost hetzelfde 3-72 credits ($0,30-$7,20), of je nu via de UI of de API werkt.
Samenvatting
- Genereer OmniHuman v1.5-video's programmatisch via de Arteza REST API
- Dezelfde $0,30-$7,20 per generatie als de UI, geen API-toeslag
- Asynchrone generatie met webhook of op polling gebaseerd resultaatbeheer
- Ideaal voor gepersonaliseerde verkoopvideo's, geautomatiseerde trainingsbibliotheken en meertalige uitrollingen
- Authenticatie via een API-sleutel uit je Arteza-dashboard
Waarom de API gebruiken
De API maakt automatiseringspatronen mogelijk die de UI niet kan bieden:
- Batchgeneratie. Voer 100+ video's uit in één pipelinerun.
- Dynamische personalisatie. Haal data op uit een CRM en genereer een video per prospect.
- Geplande workflows. Dagelijkse nieuwssamenvattingen, wekelijkse samenvattingsvideo's en getriggerde updates.
- Integratie met bestaande stacks. Node.js, Python, Go, Ruby: elke taal met HTTP kan de API aanroepen.
- Reproduceerbare productie. Versiebeheerde scripts in plaats van handmatige UI-klikken.
Als jouw gebruik meer dan 10 video's met een vergelijkbare structuur omvat, is het de moeite waard om de API in te stellen.
Maak nu je AI-presentator
Zet één foto en audio om in een levensechte pratvideo. $7,20 per video van 30 seconden op abonnementen vanaf $5 per maand.
Probeer OmniHuman gratis5 gratis generaties · Geen creditcard nodig
Authenticatie
Arteza API-verzoeken authenticeren via een API-sleutel die in de Authorization-header wordt meegegeven als Bearer-token.
Je API-sleutel ophalen
- Meld je aan op arteza.ai
- Ga naar je accountinstellingen
- Zoek de API-sectie op
- Genereer een nieuwe API-sleutel
- Bewaar deze veilig, behandel hem als een wachtwoord
Sla je API-sleutel nooit op in versiebeheer. Gebruik omgevingsvariabelen:
export SEEDANCE_API_KEY="your_api_key_here"
Authenticatieheader
Elk verzoek bevat:
Authorization: Bearer YOUR_SEEDANCE_API_KEY
Content-Type: application/json
Endpointstructuur
De OmniHuman v1.5 API volgt standaard asynchrone generatiepatronen:
- POST om een generatietaak te maken
- GET om de status en resultaten op te vragen
- Webhook voor asynchrone levering (aanbevolen voor productie)
Basis-URL
https://api.arteza.ai/v1
Belangrijkste endpoints
| Methode | Pad | Doel |
|---|---|---|
POST | /omnihuman/generate | Een nieuwe generatietaak indienen |
GET | /jobs/{job_id} | Taakstatus en resultaat opvragen |
POST | /webhooks | Webhook-endpoints configureren |
Raadpleeg de actuele Arteza API-documentatie voor exacte endpointpaden, omdat paden kunnen veranderen.
Een generatietaak indienen
Aanvraagstructuur
{
"model": "omnihuman-v1.5",
"image_url": "https://example.com/portrait.jpg",
"audio_url": "https://example.com/speech.mp3",
"prompt": "Modern corporate office with soft natural lighting, medium close-up framing head and shoulders, professional broadcast style",
"resolution": "1080p",
"turbo_mode": false,
"webhook_url": "https://yourapp.com/webhooks/seedance"
}
Parameterreferentie
| Parameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
model | string | Ja | Moet "omnihuman-v1.5" zijn |
image_url | string | Ja | Publiek toegankelijke URL naar het referentieportret |
audio_url | string | Ja | Publiek toegankelijke URL naar het audiobestand |
prompt | string | Ja | Scènebeschrijving voor achtergrond, belichting en kadrering |
resolution | string | Nee | "720p" of "1080p" (standaard: "720p") |
turbo_mode | boolean | Nee | Snellere generatie inschakelen (standaard: false) |
webhook_url | string | Nee | URL voor asynchrone voltooiingsmelding |
Vereisten voor invoerbestanden
Afbeelding:
- Formaten: JPEG, PNG
- Resolutie: minimaal 512x512, 1024x1024 of hoger aanbevolen
- Toegankelijk via een publieke HTTPS-URL
Audio:
- Formaten: MP3, WAV, M4A
- Duur: maximaal 60s voor 720p, maximaal 30s voor 1080p
- Toegankelijk via een publieke HTTPS-URL
Als je bestanden nog niet publiek gehost zijn, upload ze dan naar S3, Cloudflare R2, Google Cloud Storage of een vergelijkbare dienst voordat je de API aanroept.
Voorbeeldverzoek in Python
import os
import requests
SEEDANCE_API_KEY = os.environ["SEEDANCE_API_KEY"]
BASE_URL = "https://api.arteza.ai/v1"
def create_omnihuman_video(image_url, audio_url, prompt,
resolution="1080p", turbo=False):
headers = {
"Authorization": f"Bearer {SEEDANCE_API_KEY}",
"Content-Type": "application/json",
}
payload = {
"model": "omnihuman-v1.5",
"image_url": image_url,
"audio_url": audio_url,
"prompt": prompt,
"resolution": resolution,
"turbo_mode": turbo,
}
response = requests.post(
f"{BASE_URL}/omnihuman/generate",
json=payload,
headers=headers,
)
response.raise_for_status()
return response.json()
job = create_omnihuman_video(
image_url="https://cdn.example.com/ceo.jpg",
audio_url="https://cdn.example.com/weekly-update.mp3",
prompt="Corporate office with warm lighting, medium close-up, professional style",
)
print(f"Taak ingediend: {job['job_id']}")
Voorbeeldverzoek in Node.js
import fetch from "node-fetch";
const SEEDANCE_API_KEY = process.env.SEEDANCE_API_KEY;
const BASE_URL = "https://api.arteza.ai/v1";
async function createOmnihumanVideo({
imageUrl,
audioUrl,
prompt,
resolution = "1080p",
turbo = false,
}) {
const response = await fetch(`${BASE_URL}/omnihuman/generate`, {
method: "POST",
headers: {
Authorization: `Bearer ${SEEDANCE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "omnihuman-v1.5",
image_url: imageUrl,
audio_url: audioUrl,
prompt,
resolution,
turbo_mode: turbo,
}),
});
if (!response.ok) {
throw new Error(`Arteza API-fout: ${response.status}`);
}
return response.json();
}
const job = await createOmnihumanVideo({
imageUrl: "https://cdn.example.com/ceo.jpg",
audioUrl: "https://cdn.example.com/update.mp3",
prompt: "Modern office, soft lighting, medium close-up",
});
console.log(`Taak ingediend: ${job.job_id}`);
Responsformaat
{
"job_id": "job_abc123xyz",
"status": "queued",
"created_at": "2026-04-10T14:23:00Z",
"estimated_credits": 46
}
De job_id gebruik je voor polling of om webhookleveringen te koppelen.
Resultaten opvragen via polling
Als je geen webhooks gebruikt, vraag je de taakstatus op totdat de taak voltooid is.
import time
def wait_for_video(job_id, timeout_seconds=600, poll_interval=5):
headers = {"Authorization": f"Bearer {SEEDANCE_API_KEY}"}
deadline = time.time() + timeout_seconds
while time.time() < deadline:
response = requests.get(
f"{BASE_URL}/jobs/{job_id}",
headers=headers,
)
response.raise_for_status()
data = response.json()
status = data["status"]
if status == "completed":
return data["result"]["video_url"]
if status == "failed":
raise Exception(f"Generatie mislukt: {data.get('error')}")
time.sleep(poll_interval)
raise TimeoutError("Taak niet voltooid binnen de tijdslimiet")
video_url = wait_for_video(job["job_id"])
print(f"Video klaar: {video_url}")
Taakstatuswaarden
| Status | Betekenis |
|---|---|
queued | Wacht op start |
processing | Generatie bezig |
completed | Video klaar, URL beschikbaar |
failed | Generatie mislukt, controleer het foutveld |
Webhooks gebruiken (aanbevolen voor productie)
Webhooks elimineren polling en laten je event-driven pipelines bouwen.
Een webhook configureren
Geef webhook_url mee in je generatieverzoek. Seedance stuurt dan een POST-verzoek naar die URL wanneer de taak voltooid is.
Webhookpayload
{
"event": "job.completed",
"job_id": "job_abc123xyz",
"status": "completed",
"result": {
"video_url": "https://cdn.arteza.ai/outputs/video_abc123.mp4",
"resolution": "1080p",
"duration_seconds": 28.5
},
"credits_used": 46,
"completed_at": "2026-04-10T14:26:45Z"
}
Voorbeeld van een webhookhandler
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/webhooks/seedance", methods=["POST"])
def seedance_webhook():
payload = request.get_json()
if payload.get("event") == "job.completed":
job_id = payload["job_id"]
video_url = payload["result"]["video_url"]
# Jouw bedrijfslogica: video downloaden, gebruikers informeren,
# vervolgworkflows starten, enzovoort.
handle_completed_video(job_id, video_url)
return jsonify({"received": True}), 200
Webhookbeveiliging
Verifieer webhookhandtekeningen als Arteza een signeersecret biedt. Valideer altijd dat webhooks afkomstig zijn van Arteza voordat je er actie op onderneemt.
Klaar om OmniHuman v1.5 te proberen? Gratis beginnen met maken →

Wil je een presentator zoals deze? OmniHuman gratis proberen →
Productiepatronen
Patroon 1: gepersonaliseerde verkoopvideo-pipeline
Genereer één video per prospect met dynamische scriptvariabelen.
def generate_sales_video_for_prospect(prospect):
script = render_template("sales_template.txt", {
"first_name": prospect["first_name"],
"company": prospect["company"],
"trigger": prospect["trigger_event"],
})
audio_url = generate_tts(script)
job = create_omnihuman_video(
image_url=YOUR_SDR_PHOTO_URL,
audio_url=audio_url,
prompt=STANDARD_SCENE_PROMPT,
resolution="1080p",
)
return job["job_id"]
prospects = load_prospects_from_crm()
for prospect in prospects:
generate_sales_video_for_prospect(prospect)
Zie de gids voor verkoopvideo's voor scripting en distributie.
Patroon 2: meertalige contentroutering
Genereer hetzelfde bericht in meerdere talen met dezelfde foto.
languages = [
("en", "english_audio.mp3"),
("es", "spanish_audio.mp3"),
("pt", "portuguese_audio.mp3"),
("fr", "french_audio.mp3"),
("de", "german_audio.mp3"),
]
jobs = []
for lang_code, audio_file in languages:
audio_url = upload_to_cdn(audio_file)
job = create_omnihuman_video(
image_url=SPOKESPERSON_PHOTO_URL,
audio_url=audio_url,
prompt=STANDARD_PROMPT,
)
jobs.append((lang_code, job["job_id"]))
Zie de meertalige gids voor tips over stemmen en vertaling.
Patroon 3: automatisering van dagelijkse nieuwssamenvattingen
Geplande pipeline die koppen ophaalt, TTS genereert en een dagelijkse video produceert.
from datetime import datetime
def daily_news_digest():
headlines = fetch_top_headlines()
script = format_headlines_as_script(headlines)
audio_url = generate_tts(script, voice="broadcast_news")
job = create_omnihuman_video(
image_url=NEWS_ANCHOR_PHOTO_URL,
audio_url=audio_url,
prompt="Professional news studio, broadcast style, medium close-up",
resolution="720p",
)
return job["job_id"]
# Plan via cron, Airflow of je workflowtool
daily_news_digest()
Zie de gids voor nieuwslezers.
Patroon 4: CMS-getriggerde videogeneratie
Wanneer een nieuw blogbericht of product gepubliceerd wordt, genereer je een bijbehorende video.
@app.route("/cms/published", methods=["POST"])
def on_content_published():
content = request.get_json()
script = summarize_content(content["body"])
audio_url = generate_tts(script)
job = create_omnihuman_video(
image_url=BRAND_SPOKESPERSON_PHOTO,
audio_url=audio_url,
prompt=BRAND_SCENE_PROMPT,
webhook_url="https://yourapp.com/webhooks/seedance",
)
store_job_mapping(content["id"], job["job_id"])
return {"ok": True}
Beste praktijken voor foutafhandeling
Opnieuw proberen met exponentieel uitstel
Netwerkfouten en tijdelijke storingen moeten nieuwe pogingen triggeren, niet direct worden opgegeven.
import time
def create_with_retry(params, max_retries=3):
delay = 2
for attempt in range(max_retries):
try:
return create_omnihuman_video(**params)
except requests.RequestException as e:
if attempt == max_retries - 1:
raise
time.sleep(delay)
delay *= 2
Invoer valideren voor het indienen
Bespaar credits door vóór elke API-aanroep te valideren:
- De afbeelding-URL geeft 200 terug en het contenttype is image/*
- De audio-URL geeft 200 terug en het contenttype is audio/*
- De audioduur valt binnen de limiet voor de gekozen resolutie
- De prompt is niet leeg
Snelheidslimieten verwerken
De API hanteert snelheidslimieten. Houd rekening met 429-reacties en wacht de juiste tijd.
Creditssaldo bewaken
Controleer je creditssaldo vóór grote batchruns. Opraken van credits halverwege een batch is te voorkomen.
Kostenbeheer
Een via de API gegenereerde video kost 2,4 credits per seconde audio, ofwel 72 credits ($7,20) voor 30 seconden. Dezelfde credits die de UI aandrijven, drijven ook de API aan:
| Abonnement | Prijs | Credits per maand | Effectieve kosten per aanroep van 30 seconden |
|---|---|---|---|
| Starter | $5 | 60 | ~$3,83 |
| Creator | $25 | 300 | ~$3,83 |
| Pro | $50 | 700 | ~$3,29 |
| Studio | $120 | 1.800 | ~$3,07 |
Voor intensief API-gebruik geeft het Studio-abonnement je de beste effectieve kosten per generatie. Zie de prijzengids voor meer informatie.
Projectkosten schatten
Bereken de totale kosten vóór een batchrun:
total_cost = number_of_videos * 4.60
Een batch van 1.000 video's van 30 seconden: $7.200 tegen het basistarief, en veel minder met een maandabonnement. Plan je budget dienovereenkomstig.
API-prijs = UI-prijs. Geen toeslag.
Geen kosten per gebruiker en geen vergrendeling op een API-tier. Start een batch wanneer je die nodig hebt, stop wanneer je klaar bent.
Haal je API-sleutel opObserveerbaarheid
Volg voor productionele workflows deze statistieken:
- Slagingspercentage - percentage taken dat succesvol voltooid wordt
- Gemiddelde generatietijd - voor capaciteitsplanning
- Verbruikte credits - lopende totalen voor budgetbeheer
- Webhookleveringspercentage - detecteer mislukte webhookleveringen
- Foutcategorisering - groepeer mislukkingen op oorzaak
Log taak-ID's naast je interne correlatie-ID's voor debuggen.
Beste praktijken voor beveiliging
- Stel je API-sleutel nooit bloot aan de client-side. Roep de API altijd aan vanuit je backend.
- Gebruik omgevingsvariabelen of een secrets manager. Sla sleutels nooit op in versiebeheer.
- Roteer sleutels regelmatig. Behandel ze als andere inloggegevens.
- Valideer webhookhandtekeningen wanneer beschikbaar.
- Gebruik HTTPS voor alle afbeeldings- en audio-URL's die je aan de API doorgeeft.
- Beperk webhookendpoints zodat alleen legitieme Arteza-payloads worden verwerkt.
Aan de slag met de API
- Aanmelden voor Arteza en ontvang je 10 gratis credits
- Neem minimaal het Starter-abonnement ($5/maand) zodat je genoeg hebt voor een testgeneratie
- Genereer je API-sleutel in het dashboard
- Bereid een testafbeelding en een audiobestand voor en upload ze naar een publieke URL
- Doe je eerste API-aanroep met de bovenstaande voorbeelden
- Vraag via polling of wacht op de webhook om de video-URL op te halen
- Bouw je productiepipeline
Voor aanverwante informatie, zie de volledige OmniHuman v1.5-gids, prijsoverzicht, gids voor verkoopvideo's en meertalige gids.
Klaar om OmniHuman v1.5 te proberen? Gratis beginnen met maken →
OmniHuman v1.5 uitproberen - Nu!
Upload je referentieafbeelding op de aanmaakpagina.
5 gratis generaties · Geen creditcard nodig