Text zu Video
Beginnen Sie mit einem Textprompt, wenn keine Ausgangsmedien nötig sind. Wählen Sie seedance-2.0 oder seedance-2.5 und prüfen Sie die modellspezifischen Ausgabeeinstellungen.
Video-APIs
Vergleichen Sie Seedance-Video-APIs für Text-zu-Video und referenzbasierte Abläufe. Prüfen Sie Eingaben, Preise, Statusabfragen und den Abruf fertiger Videos.
Aktuelle Seedance-Modelle werden nach Completion-Token abgerechnet. Die Dauer beeinflusst die Nutzungsschätzung, ist aber keine Abrechnungseinheit. Bewahren Sie die Aufgaben-ID für Ergebnisabruf oder Fehlermeldung auf.
Für eine bestimmte Aufgabe
Beginnen Sie mit einem Textprompt, wenn keine Ausgangsmedien nötig sind. Wählen Sie seedance-2.0 oder seedance-2.5 und prüfen Sie die modellspezifischen Ausgabeeinstellungen.
Animieren Sie ein Startbild mit einer Bewegungsanweisung. Verwenden Sie die Bild-zu-Video-Anleitung des gewählten Modells, ohne Felder anderer Eingabemodi zu mischen.
Geben Sie ein erstes und bei Bedarf ein letztes Bild vor, um Anfang und Ende der Szene zu steuern. Prüfen Sie Bildrollen und Medienanforderungen in der Modellanleitung.
Kombinieren Sie Referenzen mit den dokumentierten Bild-, Video- und Audiorollen. Mindestens eine Bild- oder Videoreferenz ist erforderlich; Audio allein genügt nicht.
Abrechnungseinheit
USD je Million Completion-Token. Der Tarif hängt vom Modell, der Ausgabeauflösung und den Videoreferenzbedingungen ab.
Betriebsgrenzen
Integrationsanleitungen
Aktuelle Katalogabdeckung
Vergleichen Sie API-IDs, Vorgänge, Anbieter und Preise. Prüfen Sie vor der Kostenschätzung Katalogdatum und Abrechnungseinheit jedes Vorgangs.
Videos mit Seedance 2.0 generieren.
POST /v1/video/seedance Videoaufgabe einreichen: Dokumentation GET /v1/jobs/{id} Aufgabenstatus abfragen: Dokumentation 480p · Mit Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 5%
480p · Ohne Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 5%
720p · Mit Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 5%
720p · Ohne Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 5%
1080p · Mit Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 5%
1080p · Ohne Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 5%
4k · Mit Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 5%
4k · Ohne Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 5%
Referenzpreis – nicht unabhängig geprüft. Prüfen Sie vor einem Kostenvergleich die aktuellen Tarife, Abrechnungseinheiten und geltenden Bedingungen des Anbieters.
Videos mit Seedance 2.5 generieren.
POST /v1/video/seedance Videoaufgabe einreichen: Dokumentation GET /v1/jobs/{id} Aufgabenstatus abfragen: Dokumentation 480p · Mit Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 2%
480p · Ohne Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 2%
720p · Mit Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 2%
720p · Ohne Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 2%
1080p · Mit Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 2%
1080p · Ohne Videoreferenz
Offizieller Preis
API Hop-Preis Sparen 2%
Referenzpreis – nicht unabhängig geprüft. Prüfen Sie vor einem Kostenvergleich die aktuellen Tarife, Abrechnungseinheiten und geltenden Bedingungen des Anbieters.
Anfragebeispiel
Diese Beispiele senden eine Seedance-2.5-Text-zu-Video-Aufgabe, speichern jobId und fragen GET /v1/jobs/{jobId} mit Zeitlimit ab. Rufen Sie outputResult erst nach COMPLETED ab; behandeln Sie FAILED und CANCELLED separat. Es sind Integrationsbeispiele, keine Videodemonstrationen.
# Requires bash, curl and jq. A polling timeout does not cancel the job.
set -euo pipefail
BASE_URL="https://api.apihop.ai"
API_KEY='YOUR_API_KEY'
created=$(curl --fail-with-body --silent --show-error --max-time 30 \
"$BASE_URL/v1/video/seedance" \
-H "Authorization: Bearer $API_KEY" -H 'Content-Type: application/json' \
--data '{"model":"seedance-2.5","prompt":"A calm city street at dawn","duration":5,"resolution":"720p"}')
job_id=$(printf '%s' "$created" | jq -er '.data.jobId | select(. != null) | tostring')
deadline=$((SECONDS + 600))
while (( SECONDS < deadline )); do
job=$(curl --fail-with-body --silent --show-error --max-time 30 \
"$BASE_URL/v1/jobs/$job_id" -H "Authorization: Bearer $API_KEY")
status=$(printf '%s' "$job" | jq -er '.data.status')
case "$status" in
COMPLETED) printf '%s' "$job" | jq -e '.data.outputResult'; exit 0 ;;
FAILED|CANCELLED) printf 'Job %s: %s\n' "$job_id" "$status" >&2; exit 1 ;;
esac
sleep 5
done
printf 'Polling timed out; retain jobId for a later status check: %s\n' "$job_id" >&2
exit 1const baseUrl = "https://api.apihop.ai";
const headers = { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' };
async function request(path, options = {}) {
const response = await fetch(baseUrl + path, { ...options, headers, signal: AbortSignal.timeout(30000) });
if (!response.ok) throw new Error('HTTP ' + response.status);
const result = await response.json();
if (result.success === false) throw new Error(JSON.stringify(result.error));
return result.data;
}
const created = await request('/v1/video/seedance', { method: 'POST', body: JSON.stringify({"model":"seedance-2.5","prompt":"A calm city street at dawn","duration":5,"resolution":"720p"}) });
if (!created?.jobId) throw new Error('Missing data.jobId');
const deadline = Date.now() + 10 * 60 * 1000;
let completed = false;
while (Date.now() < deadline) {
const job = await request('/v1/jobs/' + encodeURIComponent(created.jobId));
if (job.status === 'COMPLETED') {
if (job.outputResult == null) throw new Error('Completed job has no outputResult');
console.log(job.outputResult);
completed = true;
break;
}
if (['FAILED', 'CANCELLED'].includes(job.status)) throw new Error('Job ' + job.status);
await new Promise(resolve => setTimeout(resolve, 5000));
}
if (!completed) throw new Error('Polling timed out; retain jobId for a later status check: ' + created.jobId);import json
import time
import urllib.request
base_url = "https://api.apihop.ai"
headers = {'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json'}
def request(path, body=None):
data = json.dumps(body).encode() if body is not None else None
req = urllib.request.Request(base_url + path, data=data, headers=headers)
with urllib.request.urlopen(req, timeout=30) as response:
result = json.load(response)
if result.get('success') is False:
raise RuntimeError(result.get('error'))
return result['data']
created = request('/v1/video/seedance', json.loads("{\"model\":\"seedance-2.5\",\"prompt\":\"A calm city street at dawn\",\"duration\":5,\"resolution\":\"720p\"}"))
job_id = str(created['jobId'])
deadline = time.monotonic() + 600
while time.monotonic() < deadline:
job = request('/v1/jobs/' + job_id)
if job['status'] == 'COMPLETED':
if job.get('outputResult') is None:
raise RuntimeError('Completed job has no outputResult')
print(job['outputResult'])
break
if job['status'] in ('FAILED', 'CANCELLED'):
raise RuntimeError('Job ' + job['status'])
time.sleep(5)
else:
raise TimeoutError('Polling timed out; retain jobId for a later status check: ' + job_id) Verwenden Sie die API-Basis-URL aus Ihrer Kontodokumentation und ersetzen Sie die Platzhalter. Senden Sie den API-Schlüssel im Authorization-Header, niemals in einer URL oder eingecheckten Datei.