> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Referenser och resurser

> **Note**
>
> **Gör så här-guide** · Förutsätter att du har slutfört [snabbstarten för Bild och video](/docs/sv/eleven-api/guides/cookbooks/image-and-video).

## Översikt

De flesta Bild och video-modeller accepterar medier tillsammans med prompten: en första bildruta för en video, bilder att
redigera eller ljud att läppsynka mot. Varje mediefält i API:et tar emot ett referensobjekt i stället för
råa byte i ett fast format, och varje referens är märkt med en `type` som anger var
mediet kommer ifrån.

| `type`          | Pekar på                                                                  | Fält                          |
| --------------- | ------------------------------------------------------------------------- | ----------------------------- |
| `generation`    | Resultatet från en annan generering, slutförd eller fortfarande pågående. | `generation_id`               |
| `asset`         | En fil som laddats upp till resurs-API:et.                                | `asset_id`                    |
| `inline_base64` | Medier kodade direkt i begärandetexten.                                   | `content_base64`, `mime_type` |

De tre typerna kan användas omväxlande överallt där en referens accepteras, så samma fält kan ta emot en
generering i en begäran och en uppladdad resurs i nästa.

## Koppla en generering till nästa

En `generation`-referens behöver inte peka på en generering som har slutförts. Skicka bilden,
ta ID:t från svaret och skicka det direkt i videobegäran utan att vänta: API:et köar videon efter bilden och startar den när bilden är klar.
Inget laddas upp mellan de två anropen.

Ange `webhook` för den sista genereringen i kedjan så behöver du inte vänta alls. Båda anropen
returnerar så snart deras generering har köats, hela grafen körs på servern och din slutpunkt
anropas när den sista genereringen når en slutstatus.

```python maxLines=0
from elevenlabs import (
    ImageGenerationRequest_Gemini3ProImage,
    ImageReference_Generation,
    VideoGenerationRequest_Veo31FastGenerate001,
    WebhookTarget_All,
)

still = elevenlabs.flows.image.create(
    request=ImageGenerationRequest_Gemini3ProImage(
        prompt="A lighthouse on a cliff at dawn, heavy fog rolling in from the sea",
        aspect_ratio="16:9",
    )
)

# `still` is still pending here. Submitting now queues the video behind it.
clip = elevenlabs.flows.video.create(
    request=VideoGenerationRequest_Veo31FastGenerate001(
        prompt="The fog thickens and the beam sweeps across the water",
        start_frame=ImageReference_Generation(generation_id=still.id),
        duration_secs=8,
        webhook=WebhookTarget_All(),
    )
)

print(clip.id)
```

```typescript maxLines=0
const still = await elevenlabs.flows.image.create({
  modelId: "gemini-3-pro-image",
  prompt: "A lighthouse on a cliff at dawn, heavy fog rolling in from the sea",
  aspectRatio: "16:9",
});

// `still` is still pending here. Submitting now queues the video behind it.
const clip = await elevenlabs.flows.video.create({
  modelId: "veo-3.1-fast-generate-001",
  prompt: "The fog thickens and the beam sweeps across the water",
  startFrame: { type: "generation", generationId: still.id },
  durationSecs: 8,
  webhook: { type: "all" },
});

console.log(clip.id);
```

Endast den sista genereringen behöver `webhook`. Om du även anger det för bilden skickas en händelse för
mellanresultatet, vilket är användbart för att rapportera förloppet men inte behövs för att driva
kedjan. Precis som på andra ställen kräver fältet en webhook som prenumererar på genereringshändelser. Se [webhooks för Bild och video](/docs/sv/eleven-api/guides/how-to/image-and-video/webhooks) för att konfigurera en.

Om du inte har en slutpunkt som kan ta emot återanrop kan du utelämna `webhook` och polla slutet av kedjan i stället. Den
mellanliggande bilden behöver fortfarande inte pollas separat – vänta en gång på den sista genereringen, med
intervallet för dess modalitet, vilket för video är högst en gång var tionde sekund. Se [riktlinjer för pollning](/docs/sv/eleven-api/guides/cookbooks/image-and-video#polling-guidelines).

```python
import time

while True:
    result = elevenlabs.flows.video.get(clip.id)
    if result.status in ("completed", "failed"):
        break
    time.sleep(10)
```

```typescript
let result = await elevenlabs.flows.video.get(clip.id);
while (result.status === "pending" || result.status === "generating") {
  await new Promise((resolve) => setTimeout(resolve, 10000));
  result = await elevenlabs.flows.video.get(clip.id);
}
```

En generering som refererar till oavslutat arbete skapas omedelbart och har status `pending` tills
allt den refererar till är klart. Du behöver inte göra något mer för att starta den. Kedjor
kan ha valfritt djup och bredd – en generering kan vänta på flera referenser som var och en fortfarande
väntar – så du kan skicka in en hel graf i ett svep och bara hämta resultaten vid dess löv. Tid
som spenderas i kö räknas inte mot genereringens timeout.

Om en refererad generering misslyckas körs aldrig den beroende genereringen: den misslyckas med anledningen `dependency_failed`
och tar med sig allt som köats efter den. Ingenting i den avbrutna kedjan debiteras – en
generering som redan har betalats återbetalas, och en vars pris beror på en refererad
utdata som ännu inte finns, exempelvis en läppsynkning vars pris beror på längden på en väntande ljudgenerering,
debiteras först när den startar. Ett `generation_id` som inte finns i din arbetsyta
avvisas redan i create-anropet, så ett skrivfel visas direkt i stället för som en misslyckad
generering.

## Ladda upp medier som en resurs

Ladda upp en fil till resurs-API:et när mediet kommer utanför ElevenLabs och du vill återanvända
den i flera genereringar. Resurser tillhör arbetsytan och finns kvar tills du tar bort dem.

```python
from elevenlabs import ImageReference_Asset, VideoGenerationRequest_Veo31FastGenerate001

with open("lighthouse.png", "rb") as f:
    asset = elevenlabs.assets.create(asset=f, name="lighthouse.png")

print(asset.asset_id)

clip = elevenlabs.flows.video.create(
    request=VideoGenerationRequest_Veo31FastGenerate001(
        prompt="The beam sweeps across the water as the fog thickens",
        start_frame=ImageReference_Asset(asset_id=asset.asset_id),
    )
)
```

```typescript
import { createReadStream } from "fs";

const asset = await elevenlabs.assets.create({
  asset: createReadStream("lighthouse.png"),
  name: "lighthouse.png",
});

console.log(asset.assetId);

const clip = await elevenlabs.flows.video.create({
  modelId: "veo-3.1-fast-generate-001",
  prompt: "The beam sweeps across the water as the fog thickens",
  startFrame: { type: "asset", assetId: asset.assetId },
});
```

Uppladdningssvaret beskriver den lagrade resursen:

```json
{
  "asset_id": "5xM2KqOnZyce22SPZ9d4",
  "name": "lighthouse.png",
  "mime_type": "image/png",
  "created_at_unix": 1721520000,
  "content_url": "https://storage.googleapis.com/assets/5xM2KqOnZyce22SPZ9d4"
}
```

`content_url` är en signerad URL som är giltig i ungefär en timme och har värdet `null` medan uppladdningen fortfarande
bearbetas. Hämta resursen igen för en ny URL.

> **Warning**
>
> Åtkomst till resurs-API:et med en API-nyckel kräver Pro-abonnemang eller högre, samma nivå som
> genereringsslutpunkterna.

### Lagringsgränser

Uppladdade resurser räknas mot en sammanlagd lagringsgräns för arbetsytan, som beror på ditt abonnemang:

| Abonnemang | Resurslagring |
| ---------- | ------------- |
| Pro        | 11 GB         |
| Scale      | 33 GB         |
| Business   | 111 GB        |
| Enterprise | 333 GB        |

Endast filer som du laddar upp räknas mot gränsen; genererade utdata gör det inte. En uppladdning som skulle
överskrida arbetsytans gräns avvisas med felet `asset_storage_limit_exceeded` innan
filen läses. Ta bort resurser du inte längre behöver för att frigöra utrymme, eller kontakta supporten för att höja
gränsen.

### Hantera resurser

Lista resurser med de nyaste först, filtrera eventuellt efter namn och bläddra igenom resultat med markören
från föregående svar. `page_size` accepterar 1 till 100 och har standardvärdet 30.

```python
page = elevenlabs.assets.list(page_size=20, search="lighthouse")

for asset in page.assets:
    print(asset.asset_id, asset.name, asset.mime_type)

if page.has_more:
    page = elevenlabs.assets.list(page_size=20, search="lighthouse", cursor=page.next_cursor)
```

```typescript
let page = await elevenlabs.assets.list({ pageSize: 20, search: "lighthouse" });

for (const asset of page.assets) {
  console.log(asset.assetId, asset.name, asset.mimeType);
}

if (page.hasMore) {
  page = await elevenlabs.assets.list({
    pageSize: 20,
    search: "lighthouse",
    cursor: page.nextCursor,
  });
}
```

Hämta eller ta bort en enskild resurs efter ID. Om du tar bort en resurs påverkas inte genereringar som redan
har använt den.

```python
asset = elevenlabs.assets.get("5xM2KqOnZyce22SPZ9d4")
elevenlabs.assets.delete("5xM2KqOnZyce22SPZ9d4")
```

```typescript
const asset = await elevenlabs.assets.get("5xM2KqOnZyce22SPZ9d4");
await elevenlabs.assets.delete("5xM2KqOnZyce22SPZ9d4");
```

## Skicka medier integrerat

En `inline_base64`-referens bär mediet i begärandetexten, vilket undviker en separat uppladdning
för engångsindata. Koda filen med standardalfabetet för base64 och ange dess MIME-typ.

```python
import base64

from elevenlabs import ImageGenerationRequest_GptImage2, ImageReference_InlineBase64

with open("headshot.jpg", "rb") as f:
    encoded = base64.b64encode(f.read()).decode()

generation = elevenlabs.flows.image.create(
    request=ImageGenerationRequest_GptImage2(
        prompt="Replace the background with a softly lit studio backdrop",
        images=[
            ImageReference_InlineBase64(
                content_base64=encoded,
                mime_type="image/jpeg",
            )
        ],
    )
)
```

```typescript
import { readFile } from "fs/promises";

const encoded = (await readFile("headshot.jpg")).toString("base64");

const generation = await elevenlabs.flows.image.create({
  modelId: "gpt-image-2",
  prompt: "Replace the background with a softly lit studio backdrop",
  images: [
    {
      type: "inline_base64",
      contentBase64: encoded,
      mimeType: "image/jpeg",
    },
  ],
});
```

> **Warning**
>
> Integrerade medier lagras som en tillfällig resurs utan garanti för lagringstid och kan tas bort när
> genereringen är klar. Ladda i stället upp filen till resurs-API:et när du behöver referera till samma
> indata mer än en gång.

Integrerat innehåll är begränsat till 25 MB per referens efter avkodning. Större filer hör hemma i resurs-
API:et, som accepterar mycket större uppladdningar och inte har base64-storleksbegränsningen. Varje modalitet
accepterar en fast uppsättning MIME-typer:

| Referens | Accepterad `mime_type`                                              |
| -------- | ------------------------------------------------------------------- |
| Bild     | `image/jpeg`, `image/png`, `image/webp`, `image/heic`, `image/heif` |
| Ljud     | `audio/mpeg`, `audio/wav`                                           |
| Video    | `video/mp4`, `video/quicktime`, `video/webm`                        |

## Referensfält per modell

Referensfält namnges efter den roll mediet spelar. `start_frame` och `end_frame` är enskilda
bilder som avgränsar en video, `image` och `audio` är de obligatoriska indata för en läppsynkningsmodell och
pluralerna `images`, `videos` och `audios` är fritt referensmaterial som modellen använder.

Vilka fält en modell accepterar och vilka kombinationer som är giltiga varierar mellan modeller. En `end_frame`
kräver alltid en `start_frame`. Ett brott mot en begränsning ger ett valideringsfel som anger det
berörda fältet, så genereringen startar aldrig och debiteras aldrig.

### Veo 3.1

Båda Veo-modellerna accepterar `start_frame`, `end_frame` och upp till tre poster i `images`. Till skillnad från andra
modeller omsluter varje post i `images` referensen tillsammans med rollen den spelar:

```json
{
  "images": [
    {
      "image": { "type": "asset", "asset_id": "5xM2KqOnZyce22SPZ9d4" },
      "role": "subject"
    },
    {
      "image": { "type": "asset", "asset_id": "7pQ4LnBvXkR2mT9wYcHd" },
      "role": "style"
    }
  ]
}
```

En `subject`-referens placerar bildens motiv eller scenelement i videon; en `style`-
referens överför dess visuella stil. Referensbilder kan inte kombineras med `start_frame` eller
`end_frame` och kräver en längd på åtta sekunder.

### Seedance

> **Warning**
>
> ByteDance-modeller är inaktiverade som standard och kräver uttryckligt godkännande innan de kan användas. Enterprise-
> kunder kan kontakta supporten för att begära åtkomst.

De tre Seedance 2.0-nivåerna accepterar `start_frame`, `end_frame`, upp till 9 `images`, upp till 3 `videos`
och upp till 3 `audios`, med följande begränsningar:

* Referenser kan inte kombineras med `start_frame` eller `end_frame`.
* Referensljud kräver minst en referensbild eller -video, till exempel för att driva läppsynkning.
* Det sammanlagda antalet referensfiler får inte överstiga 12.

Seedance 2.5 höjer gränserna till 30 `images`, 10 `videos` och 10 `audios` utan någon sammanlagd gräns,
och tar bort regeln att referensljud behöver en tillhörande bild eller video, så endast ljud som indata
accepteras. Referenser kan fortfarande inte kombineras med `start_frame` eller `end_frame`.

### GPT Image

GPT Image-modellerna accepterar en `mask` tillsammans med `images`. Helt transparenta områden i masken anger
var den första referensbilden får redigeras. En mask utan referensbilder avvisas.

## Nästa steg

#### [Webhooks](/docs/sv/eleven-api/guides/how-to/image-and-video/webhooks)

Ta emot resultatet av en generering i stället för att polla efter det.

#### [Översikt över Bild och video](/docs/sv/overview/capabilities/image-video)

Jämför modellfunktioner, format som stöds och tillgänglighet.

#### [API-referens](/docs/sv/api-reference/flows/image/create)

Utforska slutpunkterna för bilder, videor och resurser.