> ## Documentation Index
> Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API-er for videogenerering

> Velg CometAPI-videoruter for arbeidsflyter med Seedance, HappyHorse, MiniMax H3, Flux 3, Sora 2, Veo 3, Wan, xAI, Vidu, Omni, Kling og Runway.

Bruk dokumentasjonen for CometAPI-videomodeller ved å velge leverandørarbeidsflyten som passer til jobbtypen din. De fleste videoendepunkter oppretter asynkrone oppgaver, så lagre oppgave-ID-en og bruk polling for å hente resultater. Legg bare til callbacks når den modellspesifikke siden dokumenterer støtte for callbacks.

## Velg en video-API

<CardGroup cols={2}>
  <Card title="Opprett en Seedance-video" icon="sparkles" href="/api/video/seedance/create">
    Opprett Seedance-videooppgaver.
  </Card>

  <Card title="Opprett en HappyHorse-video" icon="sparkles" href="/api/video/happyhorse/create">
    Opprett HappyHorse-tekst-til-video-jobber.
  </Card>

  <Card title="Opprett en MiniMax H3-video" icon="film" href="/api/video/minimax-h3/create">
    Opprett MiniMax H3-tekst-til-video-oppgaver eller videooppgaver med referansebilder.
  </Card>

  <Card title="Opprett en Flux 3-video" icon="film" href="/api/video/flux-3/create">
    Opprett Flux 3-tekst-til-video-oppgaver eller bilde-til-video-oppgaver.
  </Card>

  <Card title="Opprett en Sora 2-video" icon="film" href="/api/video/sora-2/create">
    Opprett Sora 2-videojobber.
  </Card>

  <Card title="Hent en Sora 2-video" icon="refresh" href="/api/video/sora-2/retrieve">
    Spørr Sora-videojobber.
  </Card>

  <Card title="Opprett en Veo 3-video" icon="film" href="/api/video/veo3/create">
    Opprett Veo-videojobber.
  </Card>

  <Card title="Opprett en Wan-video" icon="sparkles" href="/api/video/wan/create">
    Opprett Wan-tekst-til-video-jobber eller bilde-til-video-jobber.
  </Card>

  <Card title="Opprett en xAI-video" icon="film" href="/api/video/xai/video-generation">
    Generer xAI-videojobber.
  </Card>

  <Card title="Opprett en Vidu-video" icon="sparkles" href="/api/video/vidu/create">
    Opprett Vidu-tekst-til-video-jobber eller bilde-til-video-jobber.
  </Card>

  <Card title="Opprett en Omni-video (Beta)" icon="sparkles" href="/api/video/omni/create">
    Opprett Omni-videojobber i beta.
  </Card>

  <Card title="Opprett en Kling-tekst-til-video-oppgave" icon="film" href="/api/video/kling/text-to-video">
    Generer Kling-videoer fra tekstprompter.
  </Card>

  <Card title="Bruk Runway-modeller" icon="film" href="/api/video/runway/overview">
    Velg en Runway-modell for bilde-, video- eller lydoppgaver.
  </Card>
</CardGroup>

## Opprett og hent status for en videooppgave

Bruk en modell-ID som støtter video, fra [Models-siden](/no/overview/models) eller [modellkatalogen](https://www.cometapi.com/models/). Eksemplene nedenfor oppretter en videooppgave med `POST /v1/videos` og henter deretter status for den returnerte oppgave-ID-en til oppgaven når en sluttilstand.

<Note>
  Disse eksemplene bruker plassholderen `your-video-model-id`. Erstatt den med en tilgjengelig video-modell-ID fra [Models-siden](/no/overview/models) eller [modellkatalogen](https://www.cometapi.com/models/) før du kjører forespørselen.
</Note>

<Tip>
  Åpne [Opprett en Seedance-video](/no/api/video/seedance/create) og [Hent en Seedance-video](/no/api/video/seedance/query) for å bruke API-lekeplassene og endepunktsskjemaene.
</Tip>

<CodeGroup>
  ```python Python theme={null}
  import os
  import time
  import requests

  headers = {"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]}

  create_response = requests.post(
      "https://api.cometapi.com/v1/videos",
      headers=headers,
      data={
          "model": "your-video-model-id",
          "prompt": "A calm camera move across a desk with a paper airplane",
      },
      timeout=30,
  )
  create_response.raise_for_status()
  task = create_response.json()
  task_id = task["id"]

  terminal_statuses = {"completed", "failed", "error"}

  while True:
      poll_response = requests.get(
          f"https://api.cometapi.com/v1/videos/{task_id}",
          headers=headers,
          timeout=30,
      )
      poll_response.raise_for_status()
      result = poll_response.json()
      print(result["status"], result.get("progress"))

      if result["status"] in terminal_statuses:
          print(result.get("video_url"))
          break

      time.sleep(10)
  ```

  ```javascript Node.js theme={null}
  const form = new FormData();
  form.append("model", "your-video-model-id");
  form.append("prompt", "A calm camera move across a desk with a paper airplane");

  const createResponse = await fetch("https://api.cometapi.com/v1/videos", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
    },
    body: form,
  });

  if (!createResponse.ok) {
    throw new Error(await createResponse.text());
  }

  const task = await createResponse.json();
  const terminalStatuses = new Set(["completed", "failed", "error"]);

  while (true) {
    const pollResponse = await fetch(
      `https://api.cometapi.com/v1/videos/${task.id}`,
      {
        headers: {
          Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
        },
      },
    );

    if (!pollResponse.ok) {
      throw new Error(await pollResponse.text());
    }

    const result = await pollResponse.json();
    console.log(result.status, result.progress);

    if (terminalStatuses.has(result.status)) {
      console.log(result.video_url);
      break;
    }

    await new Promise((resolve) => setTimeout(resolve, 10_000));
  }
  ```
</CodeGroup>

Opprett oppgaven med én direkte forespørsel:

```bash theme={null}
curl https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=your-video-model-id" \
  -F "prompt=A calm camera move across a desk with a paper airplane"
```

Spør etter oppgaven én gang med den returnerte ID-en:

```bash theme={null}
curl "https://api.cometapi.com/v1/videos/<task_id>" \
  -H "Authorization: Bearer $COMETAPI_KEY"
```

## Eksempler på svar

Et vellykket opprettelsessvar kan se slik ut. Lagre oppgave-ID-en før du henter status:

```json theme={null}
{
  "id": "task_example",
  "task_id": "task_example",
  "object": "video",
  "model": "your-video-model-id",
  "status": "queued",
  "progress": 0,
  "created_at": 1779872000
}
```

Et vellykket svar ved statushenting kan se slik ut. Fullførte svar kan inneholde `video_url`; enkelte leverandørformater bruker modellspesifikke resultatfelt eller ruten for videoinnhold når denne ruten er dokumentert:

```json theme={null}
{
  "id": "task_example",
  "object": "video",
  "model": "your-video-model-id",
  "status": "completed",
  "progress": 100,
  "completed_at": 1779872300,
  "video_url": "https://example.com/generated-video.mp4"
}
```

## Eksempel på modellposter

<Info>
  Dette eksempelsvaret for modellkatalogen viser `/api/models`-konvolutten og strukturen til én videomodellpost. Det er ikke en fullstendig modelliste.
</Info>

```bash cURL theme={null}
curl https://api.cometapi.com/api/models
```

```json theme={null}
{
  "success": true,
  "page": 1,
  "page_size": 20,
  "total": 302,
  "data": [
    {
      "created": 1767529753,
      "id": "your-video-model-id",
      "code": "your-video-model-id",
      "provider": "ExampleProvider",
      "provider_code": "example",
      "name": "Example video model",
      "model_type": "video",
      "features": [
        "text-to-video"
      ],
      "endpoints": "{\n  \"seedance\": {\n    \"path\": \"/v1/videos\",\n    \"method\": \"POST\"\n  }\n}",
      "pricing": {
        "currency": "USD / M Tokens",
        "input": null,
        "output": null,
        "per_request": null,
        "per_second": 0.024
      }
    }
  ]
}
```

## Vanlige feil

<AccordionGroup>
  <Accordion title="Manglende oppgave-ID">
    Lagre ID-en fra opprettelsessvaret før du returnerer fra jobbbehandleren.
  </Accordion>

  <Accordion title="Polling for raskt">
    Legg til forsinkelse og backoff mellom statuskontroller.
  </Accordion>

  <Accordion title="Ikke-støttet varighet eller størrelse">
    Bruk feltene for varighet og oppløsning som er dokumentert for det valgte videoendepunktet.
  </Accordion>

  <Accordion title="Manglende video_url">
    Behandle `video_url` som valgfritt, og fall tilbake til modellspesifikke resultatfelt eller innholdsruten når den er tilgjengelig.
  </Accordion>

  <Accordion title="Callback ikke mottatt">
    Bruk polling som fasit, og kontroller at callback-URL-en din godtar POST-forespørsler.
  </Accordion>
</AccordionGroup>

## Feilkoder og strategi for nye forsøk

<AccordionGroup>
  <Accordion title="400">
    Ikke prøv på nytt før feltene for prompt, filer, varighet eller størrelse er rettet.
  </Accordion>

  <Accordion title="401">
    Ikke prøv på nytt før API-nøkkelen finnes og er gyldig.
  </Accordion>

  <Accordion title="404">
    Kontroller oppgave-ID-en, basis-URL-en, banen og modell-ID-en før du prøver på nytt.
  </Accordion>

  <Accordion title="413">
    Reduser opplastingsstørrelsen før du prøver på nytt.
  </Accordion>

  <Accordion title="429">
    Prøv på nytt med eksponentiell backoff, og reduser samtidigheten for opprettelse eller polling.
  </Accordion>

  <Accordion title="500 eller 503">
    Prøv å opprette oppgaven på nytt med backoff; fortsett å polle eksisterende oppgaver med mindre oppgaven når en terminal feil.
  </Accordion>
</AccordionGroup>

<Tip>
  Se følgende for implementeringsmønstre: [Feilkoder og strategi for nye forsøk](/no/guides/error-codes-and-retry-strategy), [Hastighetsgrenser og samtidighet](/no/guides/rate-limits-and-concurrency), og [Webhook og polling for videogenerering](/no/guides/webhook-and-polling-for-video-generation).
</Tip>

## Priser og modellkatalog

<CardGroup cols={3}>
  <Card title="Modellsiden" icon="list" href="/overview/models">
    Les om hvordan CometAPI eksponerer modell-ID-er i dokumentasjonen.
  </Card>

  <Card title="Modellkatalog" icon="puzzle-piece" href="https://www.cometapi.com/models/">
    Se tilgjengelighet og funksjoner for modeller.
  </Card>

  <Card title="Priser" icon="tag" href="https://www.cometapi.com/pricing/">
    Sjekk prisene før du kaller en modell.
  </Card>
</CardGroup>
