OmniHuman v1.5 API: Programmatisk avatarvideogenerering
En udviklervejledning til OmniHuman v1.5 API på Arteza. Lær om endpointstruktur, autentificering, anmodningsparametre, responshåndtering, webhook-integration og bedste praksis til at bygge automatiserede avatarvideo-arbejdsgange.

At køre OmniHuman v1.5 gennem Arteza-brugerfladen er perfekt til enkeltoprettelser. Til arbejdsgange med høj volumen, som personaliseret salgsopsøgning, flersprogede udrullninger, CMS-drevet videogenerering og automatiserede nyhedsdigest, vil du bruge API'et. Denne guide gennemgår godkendelse, endpoints, anmodningsstruktur, webhook-håndtering og produktionsmønstre. Hver generering koster de samme 3-72 credits ($0,30-$7,20), uanset om du bruger brugerfladen eller API'et.
TL;DR
- Generer OmniHuman v1.5-videoer programmatisk via Arteza REST API'et
- Samme $0,30-$7,20 pr. generering som brugerfladen, ingen API-tillægspris
- Asynkron generering med webhook- eller polling-baseret resultathentering
- Ideel til personaliserede salgsvideoer, automatiserede træningsbiblioteker og flersprogede udrullninger
- Godkendelse via API-nøgle fra dit Arteza-dashboard
Hvorfor bruge API'et
API'et åbner for automatiseringsmønstre, som brugerfladen ikke kan matche:
- Batch-generering. Kør 100+ videoer i en enkelt pipeline.
- Dynamisk personalisering. Hent data fra et CRM og generer en video pr. emne.
- Planlagte arbejdsgange. Daglige nyhedsdigest, ugentlige opsummeringsvideoer, udløste opdateringer.
- Integration med eksisterende systemer. Node.js, Python, Go, Ruby, ethvert sprog med HTTP kan kalde det.
- Reproducerbar produktion. Versionsstyrede scripts i stedet for manuelle klik i brugerfladen.
Hvis din use case involverer mere end 10 videoer med lignende struktur, er API'et værd at sætte op.
Opret din AI-præsentant nu
Gør ét foto og én lydfil til en naturtro talende video. $7,20 pr. 30-sekunders video på planer fra $5 om måneden.
Prøv OmniHuman gratis5 gratis generationer · Intet kreditkort påkrævet
Godkendelse
Arteza API-anmodninger godkendes via en API-nøgle, der sendes i Authorization-headeren som et Bearer-token.
Sådan får du din API-nøgle
- Log ind på arteza.ai
- Gå til dine kontoindstillinger
- Find API-sektionen
- Generer en ny API-nøgle
- Opbevar den sikkert, behandl den som et kodeord
Commit aldrig din API-nøgle til kildekontrol. Brug miljøvariabler:
export SEEDANCE_API_KEY="your_api_key_here"
Godkendelses-header
Hver anmodning indeholder:
Authorization: Bearer YOUR_SEEDANCE_API_KEY
Content-Type: application/json
Endpoint-struktur
OmniHuman v1.5 API'et følger standard asynkrone genereringsmønstre:
- POST for at oprette et genereringsjob
- GET for at poll for status og resultater
- Webhook til asynkron levering (anbefales til produktion)
Basis-URL
https://api.arteza.ai/v1
Vigtige endpoints
| Metode | Sti | Formål |
|---|---|---|
POST | /omnihuman/generate | Indsend et nyt genereringsjob |
GET | /jobs/{job_id} | Poll for jobstatus og resultat |
POST | /webhooks | Konfigurer webhook-endpoints |
Se den aktuelle Arteza API-dokumentation for præcise endpoint-stier, da stier kan ændre sig.
Indsendelse af et genereringsjob
Anmodningsstruktur
{
"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"
}
Parameterreference
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
model | streng | Ja | Skal være "omnihuman-v1.5" |
image_url | streng | Ja | Offentligt tilgængeligt URL til referenceportræt |
audio_url | streng | Ja | Offentligt tilgængeligt URL til lydfil |
prompt | streng | Ja | Scenebeskrivelse for baggrund, belysning og indramning |
resolution | streng | Nej | "720p" eller "1080p" (standard: "720p") |
turbo_mode | boolesk | Nej | Aktiver hurtigere generering (standard: false) |
webhook_url | streng | Nej | URL til at modtage asynkron fuldførelsesbeskæftigelse |
Krav til inputfiler
Billede:
- Formater: JPEG, PNG
- Opløsning: minimum 512x512, 1024x1024+ anbefalet
- Tilgængeligt via offentligt HTTPS URL
Lyd:
- Formater: MP3, WAV, M4A
- Varighed: maks. 60 sekunder for 720p, maks. 30 sekunder for 1080p
- Tilgængeligt via offentligt HTTPS URL
Hvis dine filer ikke allerede er offentligt hostet, skal du uploade dem til S3, Cloudflare R2, Google Cloud Storage eller lignende, inden du foretager API-kaldet.
Eksempel på anmodning i 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 indsendt: {job['job_id']}")
Eksempel på anmodning i 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-fejl: ${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 indsendt: ${job.job_id}`);
Svarformat
{
"job_id": "job_abc123xyz",
"status": "queued",
"created_at": "2026-04-10T14:23:00Z",
"estimated_credits": 46
}
job_id er det, du bruger til polling eller til at korrelere webhook-leveringer.
Polling for resultater
Hvis du ikke bruger webhooks, skal du polle jobstatus-endpointet, indtil jobbet er færdigt.
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"Generering mislykkedes: {data.get('error')}")
time.sleep(poll_interval)
raise TimeoutError("Jobbet blev ikke færdigt inden for timeout")
video_url = wait_for_video(job["job_id"])
print(f"Video klar: {video_url}")
Jobstatusværdier
| Status | Betydning |
|---|---|
queued | Venter på at starte |
processing | Generering i gang |
completed | Video klar, URL tilgængeligt |
failed | Generering mislykkedes, tjek fejlfeltet |
Brug af webhooks (anbefales til produktion)
Webhooks eliminerer polling og lader dig bygge hændelsesdrevne pipelines.
Konfiguration af en webhook
Send webhook_url i din genereringsanmodning. Seedance sender en POST til det URL, når jobbet er færdigt.
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": 46,
"completed_at": "2026-04-10T14:26:45Z"
}
Eksempel på webhook-handler
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"]
# Din forretningslogik: download video, underret brugere,
# udløs downstream-arbejdsgange osv.
handle_completed_video(job_id, video_url)
return jsonify({"received": True}), 200
Webhook-sikkerhed
Verificer webhook-signaturer, hvis Arteza tilbyder en signeringshemmelighed. Valider altid, at webhooks kommer fra Arteza, inden du handler på dem.
Klar til at prøve OmniHuman v1.5? Begynd at skabe gratis →

Vil du have en præsentant som denne? Prøv OmniHuman gratis →
Produktionsmønstre
Mønster 1: Personaliseret salgsvideo-pipeline
Generer én video pr. emne med dynamiske scriptvariable.
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)
Se guide til salgsvideoer for scripting og distribution.
Mønster 2: Flersproget indholdsudrulning
Generer den samme besked på flere sprog med det samme 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"]))
Se flersproglig guide for tips til stemme og oversættelse.
Mønster 3: Automatisering af daglig nyhedsdigest
Planlagt pipeline, der henter overskrifter, genererer TTS og producerer en daglig video.
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"]
# Planlæg via cron, Airflow eller dit workflow-værktøj
daily_news_digest()
Mønster 4: CMS-udløst videogenerering
Når et nyt blogindlæg eller produkt udgives, genereres en tilhørende 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}
Bedste praksis for fejlhåndtering
Forsøg igen med eksponentiel backoff
Netværksfejl og forbigående fejl bør udløse genforsøg, ikke øjeblikkelig afbrydelse.
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
Valider input inden indsendelse
Spar credits ved at validere inden hvert API-kald:
- Billed-URL returnerer 200 og content-type image/*
- Lyd-URL returnerer 200 og content-type audio/*
- Lydvarighed er inden for grænsen for den valgte opløsning
- Prompt er ikke tom
Håndter hastighedsbegrænsninger
API'et håndhæver hastighedsbegrænsninger. Respekter 429-svar og tilbage af passende.
Overvåg credit-saldo
Tjek din credit-saldo inden store batch-kørsler. Det er undgåeligt at løbe tør for credits midt i en batch.
Omkostningsstyring
En API-genereret video koster 2,4 credits pr. sekund lyd, 72 credits ($7,20) for 30 sekunder. De samme credits, der driver brugerfladen, driver API'et:
| Plan | Pris | Credits pr. måned | Effektiv pris pr. 30-sekunders kald |
|---|---|---|---|
| Starter | $5 | 60 | ~$3,83 |
| Creator | $25 | 300 | ~$3,83 |
| Pro | $50 | 700 | ~$3,29 |
| Studio | $120 | 1.800 | ~$3,07 |
Ved tunge API-arbejdsbyrder giver Studio-planen den bedste effektive pris pr. generering. Se prissætningsguide for detaljer.
Estimering af projektomkostninger
Inden du starter en batch-kørsel, beregn de samlede omkostninger:
total_cost = number_of_videos * 4.60
En batch med 1.000 videoer på 30 sekunder koster $7.200 til basisprisen og langt mindre på en månedlig plan. Budgetter derefter.
API-pris = UI-pris. Ingen tillæg.
Ingen pr.-sæde-gebyrer og ingen API-niveaulåsning. Start en batch, når du har brug for det, og stop igen, når du ikke har.
Hent din API-nøgleObserverbarhed
Til produktionsarbejdsgange skal du spore disse målinger:
- Succesrate - andel af jobs, der fuldføres korrekt
- Gennemsnitlig genereringstid - til kapacitetsplanlægning
- Forbrugte credits - løbende totaler til budgetsporing
- Webhook-leveringsrate - registrer webhook-leveringsfejl
- Fejlkategorisering - grupper fejl efter årsag
Log job-ID'er sammen med dine interne korrelations-ID'er til fejlfinding.
Bedste sikkerhedspraksis
- Eksponér aldrig din API-nøgle på klientsiden. Kald altid API'et fra din backend.
- Brug miljøvariabler eller en hemmeligheds-manager. Commit aldrig nøgler til kildekontrol.
- Roter nøgler regelmæssigt. Behandl dem som enhver anden legitimationsoplysning.
- Valider webhook-signaturer, når det er muligt.
- Brug HTTPS til alle billed- og lyd-URL'er, du sender til API'et.
- Afgræns webhook-endpoints, så kun legitime Arteza-payloads behandles.
Kom i gang med API'et
- Tilmeld dig Arteza og indsaml dine 10 gratis credits
- Abonnér på mindst Starter-planen ($5/måned) for at have nok til en testgenerering
- Generer din API-nøgle i dashboardet
- Klargør et testbillede og en lydfil, og upload til et offentligt URL
- Foretag dit første API-kald ved hjælp af eksemplerne ovenfor
- Poll eller vent på webhook for at hente video-URL'et
- Byg din produktionspipeline
For relateret læsning, se komplet guide til OmniHuman v1.5, prisoversigt, guide til salgsvideoer og flersproglig guide.
Klar til at prøve OmniHuman v1.5? Begynd at skabe gratis →
Prøv OmniHuman v1.5 - Lige nu
Upload dit referencebillede på opret-siden.
5 gratis generationer · Intet kreditkort påkrævet