OmniHuman v1.5 API: Programmatische Avatar Video Generatie
Een ontwikkelaarshandleiding voor de OmniHuman v1.5 API op Arteza. Leer over eindpuntstructuur, authenticatie, verzoekparameters, responsverwerking, webhookintegratie en best practices voor het bouwen van geautomatiseerde avatar videowerkstromen.

OmniHuman v1.5 uitvoeren via de Arteza UI is geweldig voor eenmalige creaties. Voor workflows met hoog volume - persoonlijke verkoopsberichten, meertalige implementaties, CMS-gestuurde videogeneratie, geautomatiseerde nieuwssamenvattingen - wil je de API. Deze gids behandelt authenticatie, endpoints, aanvraagstructuur, webhook-afhandeling en productiepatronen. Elke generatie kost hetzelfde 960 credits ($9,60) of je deze nu via UI of API oproept.
Samengevat
- Genereer OmniHuman v1.5-video's programmatisch via de Arteza REST API
- Dezelfde $9,60 per generatie prijsstelling als de UI - geen API-toeslag
- Asynchrone generatie met webhook of polling-gebaseerde resultaatopvraging
- Ideaal voor persoonlijke verkoopvideo's, geautomatiseerde trainingsbiblioteken, meertalige rollouts
- Authenticatie via API-sleutel van je Arteza-dashboard
Waarom de API gebruiken
De API maakt automatiseringspatronen mogelijk die de UI niet kan matchen:
- Batchgeneratie. Voer 100+ video's uit in een enkele pipelinerun.
- Dynamische personalisatie. Trek gegevens uit een CRM en genereer een video per prospect.
- Geplande workflows. Dagelijkse nieuwssamenvatting, wekelijkse samenvattingsvideo's, getriggerde updates.
- Integratie met bestaande stacks. Node.js, Python, Go, Ruby - elke taal met HTTP kan het aanroepen.
- Reproduceerbare productie. Versiebeheerde scripts in plaats van handmatige UI-klikken.
Als je usecase meer dan 10 video's met dezelfde structuur inhoudt, is het opzetten van de API de moeite waard.
Maak nu je AI-presentator
Zet één foto + audio om in een levensechte sprekende video. $9,60 per video, betaalbare abonnementplannen.
Probeer OmniHuman gratis5 gratis generaties · Geen creditcard nodig
Authenticatie
Arteza API-verzoeken worden geverifieerd via een API-sleutel die in de Authorization-header wordt doorgegeven als een Bearer-token.
Je API-sleutel ophalen
- Meld je aan bij arteza.ai
- Navigeer naar je accountinstellingen
- Zoek de API-sectie
- Genereer een nieuwe API-sleutel
- Bewaar deze veilig - behandel het als een wachtwoord
Commit je API-sleutel nooit naar broncodebeheer. Gebruik omgevingsvariabelen:
export SEEDANCE_API_KEY="your_api_key_here"
Authenticatie-header
Elk verzoek bevat:
Authorization: Bearer YOUR_SEEDANCE_API_KEY
Content-Type: application/json
Endpoint-structuur
De OmniHuman v1.5 API volgt standaard async generatiepatronen:
- POST om een generatietaak aan 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 | Dien een nieuwe generatietaak in |
GET | /jobs/{job_id} | Poll op taakstatus en resultaat |
POST | /webhooks | Configureer webhook-eindpunten |
Raadpleeg de live Arteza API-documentatie voor exacte eindpuntpaden, aangezien deze 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 | Openbaar toegankelijke URL naar referentiefoto |
audio_url | string | Ja | Openbaar toegankelijke URL naar audiobestand |
prompt | string | Ja | Scènebeschrijving voor achtergrond, verlichting, framing |
resolution | string | Nee | "720p" of "1080p" (standaard: "720p") |
turbo_mode | boolean | Nee | Snellere generatie inschakelen (standaard: false) |
webhook_url | string | Nee | URL om asynchrone voltooiingsmelding te ontvangen |
Vereisten voor invoerbestanden
Afbeelding:
- Formaten: JPEG, PNG
- Resolutie: minimaal 512x512, 1024x1024+ aanbevolen
- Toegankelijk via openbare HTTPS-URL
Audio:
- Formaten: MP3, WAV, M4A
- Duur: ≤60s voor 720p, ≤30s voor 1080p
- Toegankelijk via openbare HTTPS-URL
Als je bestanden nog niet openbaar worden gehost, upload ze naar S3, Cloudflare R2, Google Cloud Storage of vergelijkbare diensten 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"Job submitted: {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 error: ${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(`Job submitted: ${job.job_id}`);
Antwoordformaat
{
"job_id": "job_abc123xyz",
"status": "queued",
"created_at": "2026-04-10T14:23:00Z",
"estimated_credits": 960
}
De job_id is wat je gebruikt voor polling of correlatie van webhook-leveringen.
Resultaten opvragen
Als je geen webhooks gebruikt, poll je het taakstatusendpoint totdat de taak is voltooid.
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"Generation failed: {data.get('error')}")
time.sleep(poll_interval)
raise TimeoutError("Job did not complete within timeout")
video_url = wait_for_video(job["job_id"])
print(f"Video ready: {video_url}")
Taakstatuswaarden
| Status | Betekenis |
|---|---|
queued | Wacht om te starten |
processing | Generatie in uitvoering |
completed | Video gereed, URL beschikbaar |
failed | Generatie mislukt, controleer foutveld |
Webhooks gebruiken (aanbevolen voor productie)
Webhooks elimineren polling en stellen je in staat om event-driven pipelines te bouwen.
Een webhook configureren
Geef webhook_url door in je generatieverzoek. Seedance POSTED naar die URL wanneer de taak klaar is.
Webhook-payload
{
"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": 960,
"completed_at": "2026-04-10T14:26:45Z"
}
Voorbeeld van 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"]
# Your business logic: download video, notify users,
# trigger downstream workflows, etc.
handle_completed_video(job_id, video_url)
return jsonify({"received": True}), 200
Webhookbeveiliging
Verifieer webhook-handtekeningen als Arteza een ondertekeningsgeheim verstrekt. Valideer altijd dat webhooks van Arteza afkomstig zijn voordat je erop handelt.
Klaar om OmniHuman v1.5 uit te proberen? Begin gratis met creëren →

Wil je een presentator zoals deze? Probeer OmniHuman gratis →
Productiepatronen
Patroon 1: Persoonlijke verkoopvideoPipeline
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 verkoopsvideo's voor scripten en distributie.
Patroon 2: Meertalige contentuitrol
Genereer hetzelfde bericht in meerdere talen, 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 stem- en vertaaltips.
Patroon 3: Automatisering van dagelijkse nieuwssamenvatting
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"]
# Schedule via cron, Airflow, or your workflow tool
daily_news_digest()
Zie de nieuwsanker gids.
Patroon 4: CMS-getriggerde videogeneratie
Wanneer een nieuw blogbericht of product wordt gepubliceerd, 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}
Aanbevolen procedures voor foutafhandeling
Opnieuw proberen met exponentieel terugtrekken
Netwerkfouten en voorbijgaande mislukkingen moeten opnieuw proberen activeren, niet onmiddellijke abandonnering.
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 voordat deze wordt ingediend
Bespaar credits door vóór elke API-aanroep te valideren:
- Afbeeldings-URL geeft 200 terug en content-type image/*
- Audio-URL geeft 200 terug en content-type audio/*
- Audioduur ligt binnen de limiet voor de gekozen resolutie
- Prompt is niet leeg
Snelheidslimieten verwerken
De API dwingt snelheidslimieten af. Respecteer 429-reacties en trek je op passende wijze terug.
Controleer saldoeq
Controleer je creditsaldo vóór grote batchruns. Het op raken van credits halverwege een batch is vermijdbaar.
Kostenbeheer
Elke API-gegenereerde video kost 960 credits ($9,60). Dezelfde creditpakket die de UI aandrijft, drijft ook de API aan:
| Tier | Prijs | Credits | Effectieve kosten per API-aanroep |
|---|---|---|---|
| Starter | $10 | 1.050 | ~$9,14 |
| Popular | $25 | 2.750 | ~$8,73 |
| Pro | $50 | 5.750 | ~$8,35 |
| Max | $100 | 12.000 | ~$8,00 |
Voor zware API-werklasten geeft de Max tier je de beste effectieve kosten per generatie. Zie de prijsgids voor details.
Projectkosten ramen
Voordat je een batchrun start, bereken je de totale kosten:
total_cost = number_of_videos * 9.60
Een batch van 1.000 video's: $9.600 basistarief, ~$8.000 op Max tier. Budget dienovereenkomstig.
API-prijsstelling = UI-prijsstelling. Geen opslag.
Geen licentiegebouwen per zitting, geen API-tierslot, geen maandelijkse minimum. Start een batch wanneer je deze nodig hebt, ga weg wanneer je klaar bent.
Haal je API-sleutel opWaarneembaarheid
Voor productiewerkstromen volg je deze metrieke:
- Slagingstarief - % van taken die succesvol worden voltooid
- Gemiddelde generatietijd - voor capaciteitsplanning
- Verbruikte credits - voortschrijdende totalen voor budgettracking
- Webhooklevering tarief - detecteer webhooklevering mislukkingen
- Foutcategorisering - groepsfouten naar oorzaak
Log taak-ID's naast je interne correlatie-ID's voor foutopsporing.
Aanbevolen procedures voor beveiliging
- Geef je API-sleutel nooit bloot aan de clientzijde. Roep de API altijd aan vanuit je backend.
- Gebruik omgevingsvariabelen of een geheimenbeheerder. Commit sleutels nooit naar broncodebeheer.
- **Draai sleutels regelmatig.**Behandel ze zoals elke andere referentie.
- Valideer webhookhandtekeningen indien beschikbaar.
- Gebruik HTTPS voor alle afbeeldings- en audio-URL's die je aan de API doorgeeft.
- Bereik webhoekaheindpunten zodat alleen legitieme Arteza-payloads worden verwerkt.
Aan de slag met de API
- Meld je aan voor Arteza en verzamel je 50 gratis credits
- Koop minstens een Starter pack ($10) om voldoende te hebben voor een testgeneratie
- Genereer je API-sleutel in het dashboard
- Bereid een test-afbeelding en audiobestand voor, upload naar een openbare URL
- Maak je eerste API-aanroep met behulp van de bovenstaande voorbeelden
- Poll of wacht op webhook om de video-URL op te halen
- Bouw je productie-pipeline
Voor gerelateerde lectuur, zie de complete gids voor OmniHuman v1.5, prijsoverzicht, gids voor verkoopsvideo's, en meertalige gids.
Klaar om OmniHuman v1.5 uit te proberen? Begin gratis met creëren →
Try OmniHuman v1.5 - Right Now
Upload your reference image on the create page.
5 free generations · No credit card needed