Seedance Dance Generation

Zaawansowana synteza tańca z obsługą choreografii wieloosobowej. Twórz zsynchronizowane filmy taneczne na podstawie materiałów referencyjnych.

✓ Synteza tańca

✓ Wiele osób

✓ Choreografia

✓ Na podstawie referencji

Uwierzytelnianie

Aby uzyskać dostęp do Seedance przez Doitong API, użyj swojego klucza API. Dołącz go do mutacji GraphQL lub nagłówków REST API.

Ważne: Dbaj o bezpieczeństwo swojego klucza API Doitong i nigdy nie udostępniaj go w kodzie po stronie klienta. Zawsze wykonuj połączenia API ze swojego serwera backendowego.
// GraphQL Header
{
  "Authorization": "Bearer YOUR_API_KEY"
}

// REST Header
"X-API-Key": "YOUR_API_KEY"

Szybki start

Zacznij korzystać z Seedance API w zaledwie kilka minut. Wykonaj te proste kroki, aby wygenerować swój pierwszy text to video.

Krok 1: Uzyskaj klucz API

Zarejestruj się w Doitong i przejdź do panelu sterowania, aby wygenerować klucz API.

Krok 2: Wykonaj pierwsze zapytanie

Użyj jednego z poniższych przykładów kodu, aby wykonać swoje pierwsze połączenie API.

curl -X POST https://api.doitong.com/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: unique-request-id-123" \
  -d '{
    "query": "mutation Generate($input: GenerateInput!) { generate(input: $input) { id status type provider url metadata creditCost } }",
    "variables": {
      "input": {
        "type": "VIDEO",
        "provider": "seedance",
        "input": {
          "text": "A serene landscape with mountains and a lake at sunset"
        },
        "options": {
          "duration": 5,
          "aspectRatio": "16:9"
        }
      }
    }
  }'
const response = await fetch('https://api.doitong.com/graphql', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY',
    'Idempotency-Key': 'unique-request-id-123'
  },
  body: JSON.stringify({
    query: `
      mutation Generate($input: GenerateInput!) {
        generate(input: $input) {
          id
          status
          type
          provider
          url
          metadata
          creditCost
        }
      }
    `,
    variables: {
      input: {
        type: 'VIDEO',
        provider: 'seedance',
        input: {
          text: 'A serene landscape with mountains and a lake at sunset'
        },
        options: {
          duration: 5,
          aspectRatio: '16:9'
        }
      }
    }
  })
});

const data = await response.json();
console.log('Result:', data.data.generate);
import requests
import json

url = "https://api.doitong.com/graphql"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
}

query = """
mutation Generate($input: GenerateInput!) {
  generate(input: $input) {
    id
    status
    type
    provider
    url
    metadata
    creditCost
  }
}
"""

variables = {
    "input": {
        "type": "VIDEO",
        "provider": "seedance",
        "input": {
            "text": "A serene landscape with mountains and a lake at sunset"
        },
        "options": {
            "duration": 5,
            "aspectRatio": "16:9"
        }
    }
}

response = requests.post(url, json={
    "query": query,
    "variables": variables
}, headers=headers)

data = response.json()
print("Result:", data["data"]["generate"])
mutation Generate($input: GenerateInput!) {
  generate(input: $input) {
    id
    status
    type
    provider
    url
    metadata
    creditCost
    createdAt
  }
}

# Variables
{
  "input": {
    "type": "VIDEO",
    "provider": "seedance",
    "input": {
      "text": "A serene landscape with mountains and a lake at sunset"
    },
    "options": {
      "duration": 5,
      "aspectRatio": "16:9",
      "version": "1.0-pro",
      "quality": "high"
    }
  }
}

Cennik

Seedance API korzysta z modelu opartego na kredytach. Kredyty są pobierane w zależności od złożoności i czasu trwania generowanej treści.

Funkcja Kredyty Opis
Tryb standardowy 100-200 Kredyty Wideo 5-10 s w standardowej jakości
Tryb Pro 300-500 Kredyty Wideo 5-10 s w profesjonalnej jakości

Endpointy API

Seedance API jest dostępny za pośrednictwem naszego ujednoliconego punktu końcowego GraphQL.

Endpoint GraphQL

POST https://api.doitong.com/graphql

Endpoint REST

POST https://api.doitong.com/v1/text_to_video

Parametry

Dostępne parametry dla zapytań Seedance API:

Parametr Typ Wymagane Opis
service String Yes Identyfikator usługi: "seedance"
prompt String Yes Opis tekstowy tego, co ma zostać wygenerowane
duration Integer No Czas trwania wideo w sekundach (domyślnie: 5)
aspectRatio String No Proporcje obrazu: "16:9", "9:16", "1:1" (domyślnie: "16:9")
version String No Model version: "1.0-lite", "1.0-pro"
webhookUrl String No URL do odbierania powiadomień o ukończeniu

Format odpowiedzi

Wszystkie odpowiedzi API mają spójny format:

Odpowiedź sukcesu

{
  "data": {
    "generatevideo": {
      "id": "abc123xyz",
      "status": "processing",
      "url": null,
      "webhookUrl": "https://your-webhook.com/callback",
      "createdAt": "2024-01-01T00:00:00Z"
    }
  }
}

Odpowiedź ukończenia

{
  "data": {
    "generatevideo": {
      "id": "abc123xyz",
      "status": "completed",
      "url": "https://cdn.doitong.com/outputs/abc123xyz.mp4",
      "duration": 5,
      "createdAt": "2024-01-01T00:00:00Z"
    }
  }
}

Obsługa błędów

API korzysta ze standardowych kodów statusu HTTP i zwraca szczegółowe komunikaty o błędach.

Częste kody błędów

Kod statusu Typ błędu Opis
400 Bad Request Invalid parameters or malformed request
401 Unauthorized Missing or invalid API key
402 Payment Required Insufficient credits
429 Too Many Requests Rate limit exceeded
500 Internal Server Error Server error, please retry

Format odpowiedzi błędu

{
  "errors": [
    {
      "message": "Insufficient credits for this operation",
      "extensions": {
        "code": "INSUFFICIENT_CREDITS",
        "creditsRequired": 100,
        "creditsAvailable": 50
      }
    }
  ]
}

Webhooki

Otrzymuj powiadomienia w czasie rzeczywistym po zakończeniu generowania text to video.

Konfiguracja webhooków

Include a <code>webhookUrl</code> parameter in your request to receive a POST notification when processing is complete.

Payload webhooka

{
  "id": "abc123xyz",
  "status": "completed",
  "url": "https://cdn.doitong.com/outputs/abc123xyz.mp4",
  "service": "seedance",
  "createdAt": "2024-01-01T00:00:00Z",
  "completedAt": "2024-01-01T00:01:00Z",
  "metadata": {
    "duration": 5,
    "width": 1920,
    "height": 1080
  }
}

Bezpieczeństwo webhooków

Wszystkie żądania webhook zawierają nagłówek z sygnaturą do weryfikacji:

X-Doitong-Signature: sha256=abc123...

Limity zapytań

Aby zapewnić sprawiedliwe użytkowanie i stabilność systemu, obowiązują następujące limity:

Plan Zapytania/minutę Równoległe zadania Limit dzienny
Bezpłatny 10 1 100
Starter 30 3 1,000
Pro 60 10 10,000
Enterprise Niestandardowy Niestandardowy Bez limitu
Nagłówki limitów: Sprawdź nagłówki odpowiedzi, aby poznać aktualny status limitów:
  • X-RateLimit-Limit: Maximum requests per window
  • X-RateLimit-Remaining: Requests remaining
  • X-RateLimit-Reset: Window reset timestamp

Dobre praktyki

1. Optymalizuj prompty

Twórz jasne i opisowe prompty, aby uzyskać najlepsze wyniki:

  • Be specific about visual elements, style, and mood
  • Include details about lighting, camera angles, and composition
  • Avoid contradictory or impossible requests

2. Obsługuj przetwarzanie asynchroniczne

Generowanie odbywa się asynchronicznie. Zaimplementuj odpowiednie odpytywanie (polling) lub webhooki:

// Polling example
async function pollStatus(jobId) {
  let status = 'processing';
  while (status === 'processing') {
    await sleep(2000); // Wait 2 seconds
    const result = await checkJobStatus(jobId);
    status = result.status;
  }
  return result;
}

3. Obsługa błędów i ponawianie

Zaimplementuj logikę ponawiania prób z wykładniczym czasem oczekiwania (exponential backoff):

async function retryWithBackoff(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (i === maxRetries - 1) throw error;
      await sleep(Math.pow(2, i) * 1000);
    }
  }
}

4. Monitoruj zużycie kredytów

Śledź zużycie kredytów, aby uniknąć przerw w działaniu usługi:

  • Check credit balance before large batch operations
  • Set up alerts for low credit thresholds
  • Implement credit-aware request queuing

Gotowy, by zacząć?

Dołącz do tysięcy programistów używających Seedance API do tworzenia niesamowitych treści

Uzyskaj klucz API Sprawdź cennik