Source: https://ailoot.ai/models/nb/wan2-7-image/
Canonical: https://ailoot.ai/models/nb/wan2-7-image/
Language: nb

# wan2.7-image

[Markdown](https://ailoot.ai/models/nb/wan2-7-image/index.md) · [JSON](https://ailoot.ai/models/nb/wan2-7-image/facts.json)

## [wan2.7-image](https://ailoot.ai/models/nb/wan2-7-image/)

En modell som genererer bilder fra tekst for designvarianter og illustrasjoner. Ifølge Alibaba er denne versjonen rettet mot raskere bildegenerering.

- [**Ailoot · Bilder** `POST /v1/images/generations` `wan2.7-image`](https://ailoot.ai/models/nb/wan2-7-image/#method-0)

Om modellen

Denne beskrivelsen dekker modellens funksjoner. Tilgjengelige inndata, utdata og alternativer i Ailoot er oppført nedenfor for den valgte metoden.

Wan2.7-Image lager bilder fra en tekstbeskrivelse. Det nåværende Ailoot-kortet tilbyr nettopp tekst som inndata og et bilde som resultat. Ifølge Alibaba er denne versjonen rettet mot raskere fremstilling av varianter. Produsentens spesifikasjon omfatter også redigering, kombinasjon av referanser og lokale endringer; disse krever egen støtte for bilder som inndata og tilbys ikke i kortets nåværende metode.

#### Moduser beskrevet av Alibaba

I referansemodus kan oppgaven hos Alibaba inneholde opptil ni kildebilder. De gir grunnlag for objektets utseende, komposisjon og detaljer. Modellen kan samle flere materialer i en ny scene eller endre kildebildet med hovedmotivet bevart. Målrettet redigering bruker eksplisitt angitte områder: opptil to rektangulære områder kan markeres på ett bilde.

I Alibabas spesifikasjon gir vanlig modus fra ett til fire resultater. En fortløpende serie kan be om opptil 12 bilder som er knyttet sammen av en historie eller felles figurtrekk. Dette er en øvre grense for serien: modellen bestemmer selv hvor mange bilder som trengs og kan returnere færre. Beskrivelsen og kildematerialet bidrar til å bevare en felles handlingslinje.

Vanlig tekstbasert generering uten referanser og uten en fortløpende serie har en resonneringsmodus. Der analyserer modellen en kompleks beskrivelse grundigere før bildet lages. Modusen brukes ikke ved redigering fra bilder eller i en fortløpende serie. En angitt palett med 3–10 farger er tilgjengelig utenfor fortløpende serier.

#### Inndata og resultat

I produsentens moduser med kildebilder støttes JPEG, JPG, PNG uten gjennomsiktighet, BMP og WEBP. Hver side kan være fra 240 til 8000 piksler, filstørrelsen opptil 20 MB og sideforholdet fra 1:8 til 8:1.

Tekstbeskrivelsen støtter kinesisk og engelsk og er begrenset til 5000 tegn; overskytende tekst fjernes. Denne versjonen tilbyr verken negativ beskrivelse eller ekstra utvidelse av oppgaven.

Utdataformatet er PNG, med oppløsning opptil 2K. Betegnelsen gjelder det samlede pikselarealet, ikke en fast maksimal sidelengde; formen kan velges fra 1:8 til 8:1. Ved redigering med forhåndsvalgt oppløsning beholder resultatet sideforholdet til den siste referansen. Samme tilfeldige startverdi bidrar til lignende varianter, men garanterer ikke fullstendig samsvar.

**Ailoot · Bilder** `POST /v1/images/generations` `wan2.7-image`

[`wan2.7-image`](https://ailoot.ai/models/nb/#m=wan2.7-image&route=Core&caller=wan2.7-image&fmt=images)

Alibaba /`wan2.7-image`

### Start

En modell som genererer bilder fra tekst for designvarianter og illustrasjoner. Ifølge Alibaba er denne versjonen rettet mot raskere bildegenerering.

Godkjente inndata

Tekst

Resultater

Bilder

### Tilgjengelig i Ailoot · inndata & metoder

**Ailoot · Bilder** `POST /v1/images/generations`

Inndatatyper

`text`

Utdatatyper

`image`

Utdataformat

Bildefil

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser wan2.7-image | Standard— |
| Felt`prompt` | Type`string` | KravPåkrevd | Verdier & grenser Minste lengde: 1 | Standard— |
| Felt`n` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 1 | Standard1 |
| Felt`response_format` | Type`string` | KravValgfritt | Verdier & grenser url, b64\_json | Standard— |
| Felt`stream` | Type`boolean` | KravValgfritt | Verdier & grenser | Standardfalse |
| Felt`size` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`partial_images` | Type`integer` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`images[].image_url` | Type`string` | KravStøttes ikke | Verdier & grenser Maksimalt antall dekodede byte: 20 971 520 MIME-typer: image/png, image/jpeg Maksimalt antall bilder per matrise: 9 Vilkår: Én faktisk URL per images\[\]-objekt. Antallet i matrisen er noe annet enn dette strengfeltet på nederste nivå. Gjelder når: Bare JSON images/edits; JSON images/generations tolker ikke bildereferanser. | Standard— |
| Felt`image` | Type`file` | KravValgfritt | Verdier & grenser Maksimalt antall dekodede byte: 20 971 520 MIME-typer: image/png, image/jpeg Gjelder når: Generering med multipart/form-data | Standard— |
| Felt`image[]` | Type`file[]` | KravValgfritt | Verdier & grenser Maksimalt antall elementer: 9 Maksimalt antall dekodede byte: 20 971 520 MIME-typer: image/png, image/jpeg Gjelder når: Generering med multipart/form-data | Standard— |

Kombinasjoner av inngående materialer

**Tekst til bilde** · Påkrevd: prompt

**reference\_images\_generation** · Påkrevd: prompt

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`material_types` | Avtaletext |
| Parameter`required` | Avtalemodel, prompt |
| Parameter`optional_controls` | Avtalenull |
| Parameter`content_type` | Avtaleapplication/json |

Livssyklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · faktisk returnert task\_id eller oppføring i mediebiblioteket

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

Metodestrukturer og ID-er er eksakte; leverandørens evne er adskilt fra godkjenning av forespørselen.

### Priser

#### Satser for Ailoot-metoder

Utdata

0,03 USD *per bilde i 1K*

Utdata

0,03 USD *per bilde i 2K*

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

#### Detaljer om referansetariffen

Referanseprisplaner på modellnivå endrer ikke metodevalg, prisoverslag eller kostnader. Aktive kostnader bruker satsene til den valgte Ailoot-metoden.

wan2.7-image

#### Priser etter konfigurasjon

| Konfigurasjon | Faktureringsvilkår | Kostnad |
| --- | --- | --- |
| Konfigurasjonwan2.7-image · Standardkonfigurasjon | FaktureringsvilkårStandardkonfigurasjon | Kostnad Inndata · Inndata **0,00 USD** per kall Utdata · Utdata **0,06 USD** per kall |

### Eksempelforespørsler

#### Ailoot · Bilder

curlPython SDKNode.js SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "wan2.7-image", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
```

```python
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'wan2.7-image', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
```

```js
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "wan2.7-image", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");
```

### Motta og lagre resultater

#### Ailoot · Bilder

Last ned hvert returnerte bilde eller lagre Base64-innholdet

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

##### Behold alle ferdige resultater

Lagre hvert ferdige bilde; hent hver returnerte URL eller dekod Base64-innholdet.

Lagre hvert dataelement. Dekod hver b64\_json, eller hent hver returnerte signerte URL. Velg filendelse ut fra faktisk MIME-type/byteinnhold.

##### Hvis det opprinnelige svaret må kontrolleres

Hvis et resultat fra bildegenerering eller bilderedigering må kontrolleres, bevar opprinnelig operation\_id/X-Client-Request-ID og den returnerte resultatinformasjonen. Hent eksisterende resultater du eier via mediebiblioteket, ved hjelp av faktiske task\_id- eller asset\_id-verdier. Ikke send genererings-/redigeringsforespørselen på nytt, og ikke konstruer en URL for statusavlesning fra operation\_id.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`created` | Typeinteger |
| Felt`data[].url` | Typestring |
| Felt`data[].b64_json` | Typebase64 string |
| Felt`usage` | Typeobject |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |
| Svar`server_error` | VilkårDet returnerte svaret angir at operasjonen eller resultatet må kontrolleres | Neste trinnBevar den opprinnelige returnerte operasjons-/oppgave-ID-en, forespørselshodene og svaret; fortsett å lese den opprinnelige operasjonen på de støttede måtene. Ikke send opprettelsesforespørselen på nytt. |

### Aliaser

#### Modellaliaser

**Ailoot** [`wan2.7-image`](https://ailoot.ai/models/nb/#m=wan2.7-image&route=Core&caller=wan2.7-image&fmt=images)

#### Aliaser for metodestier

Bruk metodestiene som vises ovenfor.

#### Tilknyttede anroper-ID-er

[`wan2.7-image`](https://ailoot.ai/models/nb/#m=wan2.7-image&route=Core&caller=wan2.7-image&fmt=images)

FAQ · wan2.7-image

Hvilke inndata og resultater er tilgjengelige?

`POST /v1/images/generations` · `wan2.7-image`: `text` → `image`

Hvilke felt bruker forespørselen?

`POST /v1/images/generations` · `wan2.7-image`: `model`, `prompt`, `n`, `response_format`, `stream`, `image`, `image[]`

Hvilke grenser gjelder?

`POST /v1/images/generations` · `wan2.7-image`: `n.minimum`: `1`

Koble Ailoot til Claude Code, OpenCode, Hermes eller egen applikasjon.

## Selskapet og dets prosjektportefølje

Selskapet og dets prosjektportefølje: millioner av kunder; månedlig salg for milliarder.

## Kjøp tokener med rabatt.

Abonnementsrabatt for jevnlig bruk. Kampanjekoder gir opptil 50% på tokenkjøp.

Abonnement

Velg et rabattabonnement for faste forespørsler.

Kampanjekode opptil 50%

Oppgi kode ved kjøp. Prisen beregnes på nytt etter gjeldende kampanje.

Kostnader i historikken

Modell, tokener og beløp lagres for hver forespørsel.

[Velg abonnement](https://ailoot.ai/docs/nb/billing/subscriptions/) · [Se modellpriser](https://ailoot.ai/models/nb/)

## Koble API-et til produktet du selger.

SaaS, apper og boter etter Ailoots offentlige tilbud og lisensavtale. Be om forhandlerlisens for videresalg.

Kommersiell applikasjon

Bygg tekst-, bilde-, video- og lydgenerering inn i betalte funksjoner i tjenesten.

Forhandlerlisens

Send prosjektbeskrivelse og tilgangsopplegg. Be om skriftlige vilkår for bruk og videresalg.

Dokumenter på nettstedet

Offentlig tilbud, lisensavtale og retningslinjer for databehandling er tilgjengelige før tilkobling.

[Be om forhandlerlisens](mailto:support@ailoot.ai) · [Offentlig tilbud og lisensavtale](https://ailoot.ai/legal/offer?lang=nb)

## Ailoot · Selskapet og dets prosjektportefølje





Ailoot bygger på etablert driftserfaring, en stor kundebase, stabil tjeneste og løpende KPI-kontroll.





Selskapet og dets prosjektportefølje: millioner av kunder; månedlig salg for milliarder.





Ailoot bruker denne driftserfaringen til API-tilgang til AI-funksjoner i kundenes produkter, agenter, applikasjoner og automatiseringer.
