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

# wan2.7-image-pro

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

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

En modell som lager bilder fra en tekstbeskrivelse. Produsenten tilbyr styring av fargepaletten og oppløsning opptil 4K ved vanlig tekstbasert generering.

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

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-Pro er en modell fra Alibaba som lager bilder fra tekst. Det nåværende Ailoot-kortet oppgir tekst som inndata og et bilde som resultat. Produsenten tilbyr også redigering, sammensetting av referanser og lokale endringer; disse metodene krever egen støtte for bilder som inndata og tilbys ikke i kortets nåværende metode.

I produsentens referansemodus kan opptil ni kildebilder sendes inn, med en beskrivelse av hvilke elementer fra hvert bilde som skal brukes. Ved redigering bevarer modellen hovedobjektet, endrer valgte detaljer eller lager en ny komposisjon av flere materialer. For mer presis styring kan opptil to rektangulære områder markeres på ett inndatabilde.

#### Palett og kompleks beskrivelse

Utenfor fortløpende serier kan en palett med 3–10 farger angis. Resonneringsmodus er ment for vanlig tekstbasert generering uten referanser og uten en fortløpende serie: modellen analyserer scenebeskrivelsen på forhånd.

I Alibabas spesifikasjon gir vanlig utdata fra ett til fire bilder. I en fortellende serie kan den øvre grensen settes til 12; modellen velger det faktiske antallet ut fra beskrivelsen. Serien kan bruke tekst og referanser for felles figurtrekk og sammenhengende utvikling av historien. Palett og resonnering brukes ikke i denne modusen.

#### Oppløsningen avhenger av modusen

4K støttes ved vanlig tekstbasert generering uten referanser og uten en fortløpende serie. Redigering fra bilder og fortløpende serier er begrenset til 2K. Betegnelsene beskriver pikselareal, ikke en lik lengde på hver side. Bildeformatet kan velges fra 1:8 til 8:1; ved redigering med forhåndsvalgt oppløsning følger sideforholdet den siste referansen. Resultatene lagres i PNG.

For metoder med bilder som inndata tillater Alibaba JPEG, JPG, PNG uten gjennomsiktighet, BMP og WEBP. Grensene er 20 MB per fil, fra 240 til 8000 piksler per side og et sideforhold fra 1:8 til 8:1. Tekstbeskrivelsen støtter kinesisk og engelsk, med maksimalt 5000 tegn; overskytende tekst fjernes. Negativ beskrivelse og utvidelse av oppgaven er ikke tilgjengelig i denne versjonen. En tilfeldig startverdi bidrar til likhet mellom varianter, men sikrer ikke nøyaktig gjentakelse.

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

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

Alibaba /`wan2.7-image-pro`

Modell-ID

- `wan2.7-image-pro`
- `wan-image`
- `wan-image-latest`

### Start

En modell som lager bilder fra en tekstbeskrivelse. Produsenten tilbyr styring av fargepaletten og oppløsning opptil 4K ved vanlig tekstbasert generering.

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-pro | 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,075 USD *per bilde i 1K*

Utdata

0,075 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-pro

#### Priser etter konfigurasjon

| Konfigurasjon | Faktureringsvilkår | Kostnad |
| --- | --- | --- |
| Konfigurasjonwan2.7-image-pro · Standardkonfigurasjon | FaktureringsvilkårStandardkonfigurasjon | Kostnad Inndata · Inndata **0,00 USD** per kall Utdata · Utdata **0,16 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-pro", "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-pro', '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-pro", "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-pro`](https://ailoot.ai/models/nb/#m=wan2.7-image-pro&route=Core&caller=wan2.7-image-pro&fmt=images), [`wan-image`](https://ailoot.ai/models/nb/#m=wan2.7-image-pro&route=Core&caller=wan-image&fmt=images), [`wan-image-latest`](https://ailoot.ai/models/nb/#m=wan2.7-image-pro&route=Core&caller=wan-image-latest&fmt=images)

#### Aliaser for metodestier

Bruk metodestiene som vises ovenfor.

#### Tilknyttede anroper-ID-er

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

**Ailoot · Bilder** `POST /v1/images/generations` `wan-image`

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

Alibaba /`wan-image`

Modell-ID

- `wan2.7-image-pro`
- `wan-image`
- `wan-image-latest`

### Start

En modell som lager bilder fra en tekstbeskrivelse. Produsenten tilbyr styring av fargepaletten og oppløsning opptil 4K ved vanlig tekstbasert generering.

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 wan-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,075 USD *per bilde i 1K*

Utdata

0,075 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-pro

#### Priser etter konfigurasjon

| Konfigurasjon | Faktureringsvilkår | Kostnad |
| --- | --- | --- |
| Konfigurasjonwan2.7-image-pro · Standardkonfigurasjon | FaktureringsvilkårStandardkonfigurasjon | Kostnad Inndata · Inndata **0,00 USD** per kall Utdata · Utdata **0,16 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": "wan-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': 'wan-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": "wan-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-pro`](https://ailoot.ai/models/nb/#m=wan2.7-image-pro&route=Core&caller=wan2.7-image-pro&fmt=images), [`wan-image`](https://ailoot.ai/models/nb/#m=wan2.7-image-pro&route=Core&caller=wan-image&fmt=images), [`wan-image-latest`](https://ailoot.ai/models/nb/#m=wan2.7-image-pro&route=Core&caller=wan-image-latest&fmt=images)

#### Aliaser for metodestier

Bruk metodestiene som vises ovenfor.

#### Tilknyttede anroper-ID-er

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

**Ailoot · Bilder** `POST /v1/images/generations` `wan-image-latest`

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

Alibaba /`wan-image-latest`

Modell-ID

- `wan2.7-image-pro`
- `wan-image`
- `wan-image-latest`

### Start

En modell som lager bilder fra en tekstbeskrivelse. Produsenten tilbyr styring av fargepaletten og oppløsning opptil 4K ved vanlig tekstbasert generering.

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 wan-image-latest | 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,075 USD *per bilde i 1K*

Utdata

0,075 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-pro

#### Priser etter konfigurasjon

| Konfigurasjon | Faktureringsvilkår | Kostnad |
| --- | --- | --- |
| Konfigurasjonwan2.7-image-pro · Standardkonfigurasjon | FaktureringsvilkårStandardkonfigurasjon | Kostnad Inndata · Inndata **0,00 USD** per kall Utdata · Utdata **0,16 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": "wan-image-latest", "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': 'wan-image-latest', '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": "wan-image-latest", "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-pro`](https://ailoot.ai/models/nb/#m=wan2.7-image-pro&route=Core&caller=wan2.7-image-pro&fmt=images), [`wan-image`](https://ailoot.ai/models/nb/#m=wan2.7-image-pro&route=Core&caller=wan-image&fmt=images), [`wan-image-latest`](https://ailoot.ai/models/nb/#m=wan2.7-image-pro&route=Core&caller=wan-image-latest&fmt=images)

#### Aliaser for metodestier

Bruk metodestiene som vises ovenfor.

#### Tilknyttede anroper-ID-er

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

FAQ · wan2.7-image-pro

Hvilke inndata og resultater er tilgjengelige?

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

Hvilke felt bruker forespørselen?

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

Hvilke grenser gjelder?

`POST /v1/images/generations` · `wan2.7-image-pro`: `n.minimum`: `1` `POST /v1/images/generations` · `wan-image`: `n.minimum`: `1` `POST /v1/images/generations` · `wan-image-latest`: `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.
