modellen

wan2.7-image-pro

Markdown · JSON

wan2.7-image-pro

Een model om afbeeldingen te maken op basis van een tekstuele opdracht. De fabrikant biedt sturing van het kleurenpalet en resolutie tot 4K voor gewone tekst-naar-beeldgeneratie.

Over het model

Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.

Wan2.7-Image-Pro is een model van Alibaba om afbeeldingen uit tekst te maken. De huidige Ailoot-kaart publiceert tekstinvoer en een resultaat als afbeelding. De fabrikant voorziet ook in bewerking, het combineren van referenties en lokale wijzigingen; die werkwijzen vereisen afzonderlijke ondersteuning voor invoerafbeeldingen en worden niet aangeboden door de huidige methode van de kaart.

In de referentiemodus van de fabrikant kunnen maximaal negen bronafbeeldingen worden aangeleverd met een beschrijving van welke elementen uit elk moeten worden gebruikt. Bij bewerking behoudt het model het hoofdonderwerp, verandert het geselecteerde details of bouwt het een nieuwe compositie uit meerdere materialen. Om wijzigingen nauwkeuriger te sturen, kunnen maximaal twee rechthoekige gebieden op één invoerafbeelding worden gemarkeerd.

Het palet en een complexe opdracht

Buiten opeenvolgende reeksen kan een palet van 3–10 kleuren worden opgegeven. De redeneermodus is bedoeld voor gewone beeldgeneratie op basis van tekst zonder referenties en zonder opeenvolgende reeks: het model analyseert vooraf de scènebeschrijving.

In de specificatie van Alibaba bevat de gewone uitvoer één tot vier afbeeldingen. Voor een verhalende reeks kan een bovengrens tot 12 worden ingesteld; het model kiest het feitelijke aantal op basis van de opdracht. De reeks kan tekst en referenties gebruiken om personagekenmerken te delen en het verhaal samenhangend te laten ontwikkelen. Het palet en redeneren worden in deze modus niet toegepast.

De resolutie hangt af van de modus

4K wordt ondersteund bij gewone beeldgeneratie op basis van tekst zonder referenties en zonder opeenvolgende reeks. Bewerking op basis van afbeeldingen en opeenvolgende reeksen zijn beperkt tot 2K. Deze aanduidingen bepalen het pixeloppervlak, niet een gelijke lengte voor elke zijde. Het beeldformaat kan worden gekozen van 1:8 tot 8:1; bij bewerking met een vooraf ingestelde resolutie volgt de beeldverhouding de laatste referentie. De resultaten worden opgeslagen als PNG.

Voor werkwijzen met invoerafbeeldingen accepteert Alibaba JPEG, JPG, PNG zonder transparantie, BMP en WEBP. De grenzen zijn 20 MB per bestand, 240 tot 8000 pixels per zijde en een verhouding van 1:8 tot 8:1. De tekstuele opdracht ondersteunt Chinees en Engels; het maximum is 5000 tekens en het overtollige deel wordt verwijderd. Een negatieve beschrijving en uitbreiding van de opdracht zijn niet voorzien voor deze versie. Een willekeurige seed helpt de gelijkenis tussen varianten te behouden, maar zorgt niet voor een exacte herhaling.

Ailoot · Afbeeldingen POST /v1/images/generations wan2.7-image-pro

wan2.7-image-pro

Alibaba /wan2.7-image-pro
Model-ID
  • wan2.7-image-pro
  • wan-image
  • wan-image-latest

Aan de slag

Een model om afbeeldingen te maken op basis van een tekstuele opdracht. De fabrikant biedt sturing van het kleurenpalet en resolutie tot 4K voor gewone tekst-naar-beeldgeneratie.

Toegestane invoer
Tekst
Resultaten
Afbeeldingen

Beschikbaar in Ailoot · invoer en methoden

Ailoot · Afbeeldingen POST /v1/images/generations
Invoertypen
text
Uitvoertypen
image
Uitvoerformaat
Afbeeldingsbestand
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
wan2.7-image-pro
Standaard—
VeldpromptTypestringVereisteVereistWaarden en limieten
Minimumlengte: 1
Standaard—
VeldnTypeintegerVereisteOptioneelWaarden en limieten
Minimum: 1
Standaard1
Veldresponse_formatTypestringVereisteOptioneelWaarden en limieten
url, b64_json
Standaard—
VeldstreamTypebooleanVereisteOptioneelWaarden en limietenStandaardfalse
VeldsizeTypestringVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldpartial_imagesTypeintegerVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldimages[].image_urlTypestringVereisteNiet ondersteundWaarden en limieten
Maximumaantal gedecodeerde bytes: 20.971.520
MIME-typen: image/png, image/jpeg
Maximumaantal afbeeldingen per array: 9
Voorwaarden: Eén daadwerkelijke URL per images[]-object. Het aantal items in de array staat los van deze afzonderlijke tekenreekswaarde.
Geldt wanneer: Alleen JSON images/edits; JSON images/generations parseert geen afbeeldingsreferenties.
Standaard—
VeldimageTypefileVereisteOptioneelWaarden en limieten
Maximumaantal gedecodeerde bytes: 20.971.520
MIME-typen: image/png, image/jpeg
Geldt wanneer: generatie met multipart/form-data
Standaard—
Veldimage[]Typefile[]VereisteOptioneelWaarden en limieten
Maximumaantal items: 9
Maximumaantal gedecodeerde bytes: 20.971.520
MIME-typen: image/png, image/jpeg
Geldt wanneer: generatie met multipart/form-data
Standaard—
Combinaties van invoermaterialen

Tekst naar afbeelding · Vereist: prompt

reference_images_generation · Vereist: prompt

Methodeparameters en levenscyclus
ParameterContract
Parametermaterial_typesContracttext
ParameterrequiredContractmodel, prompt
Parameteroptional_controlsContractnull
Parametercontent_typeContractapplication/json

Levenscyclus: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · de daadwerkelijk geretourneerde task_id of het record in de mediabibliotheek

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.

Tarieven

Ailoot-methodetarieven

Ailoot AfbeeldingenPOST /v1/images/generations
Uitvoer
US$ 0,075 per 1K-afbeelding
Uitvoer
US$ 0,075 per 2K-afbeelding

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Details van het referentietarief

Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.

wan2.7-image-pro

Prijzen per configuratie

ConfiguratieFactureringsvoorwaardenKosten
Configuratiewan2.7-image-pro · StandaardconfiguratieFactureringsvoorwaardenStandaardconfiguratieKosten
Invoer · Invoer US$ 0,00 per aanroep
Uitvoer · Uitvoer US$ 0,16 per aanroep

Voorbeeldverzoeken

Ailoot · Afbeeldingen

curlPython SDKNode.js SDK
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
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])
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");

Resultaten ophalen en opslaan

Ailoot · Afbeeldingen

Download elke teruggegeven afbeelding of sla de Base64-inhoud ervan op

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Alle voltooide resultaten bewaren

Sla elke voltooide afbeelding op; haal elke teruggegeven URL op of decodeer de bijbehorende Base64-inhoud.

Sla elk data-item op. Decodeer elke b64_json of haal elk bestand op via elke geretourneerde ondertekende URL. Kies een bestandsextensie op basis van de daadwerkelijke MIME/bytes.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Als het resultaat van een afbeeldingsgeneratie of -bewerking moet worden gecontroleerd, bewaar dan de oorspronkelijke operation_id/X-Client-Request-ID en de geretourneerde resultaatinformatie. Haal bestaande eigen resultaten terug via de mediabibliotheek met de daadwerkelijke task_id- of asset_id-waarden. Dien de generatie-/bewerkingsaanvraag niet opnieuw in en bouw geen polling-URL op basis van operation_id.

Antwoordvelden
VeldType
VeldcreatedTypeinteger
Velddata[].urlTypestring
Velddata[].b64_jsonTypebase64 string
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.
Antwoordserver_errorVoorwaardeHet geretourneerde antwoord geeft aan dat de bewerking of het resultaat moet worden gecontroleerdVolgende stapBewaar de oorspronkelijk geretourneerde bewerkings-/taak-ID, de aanvraagheaders en het antwoord; blijf de ondersteunde leesacties voor die oorspronkelijke bewerking uitvoeren. Dien de aanmaakaanvraag niet opnieuw in.

Aliasnamen

Modelaliasnamen

Ailoot wan2.7-image-pro, wan-image, wan-image-latest

Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

Gerelateerde aanroeper-ID’s

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

Ailoot · Afbeeldingen POST /v1/images/generations wan-image

wan-image

Alibaba /wan-image
Model-ID
  • wan2.7-image-pro
  • wan-image
  • wan-image-latest

Aan de slag

Een model om afbeeldingen te maken op basis van een tekstuele opdracht. De fabrikant biedt sturing van het kleurenpalet en resolutie tot 4K voor gewone tekst-naar-beeldgeneratie.

Toegestane invoer
Tekst
Resultaten
Afbeeldingen

Beschikbaar in Ailoot · invoer en methoden

Ailoot · Afbeeldingen POST /v1/images/generations
Invoertypen
text
Uitvoertypen
image
Uitvoerformaat
Afbeeldingsbestand
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
wan-image
Standaard—
VeldpromptTypestringVereisteVereistWaarden en limieten
Minimumlengte: 1
Standaard—
VeldnTypeintegerVereisteOptioneelWaarden en limieten
Minimum: 1
Standaard1
Veldresponse_formatTypestringVereisteOptioneelWaarden en limieten
url, b64_json
Standaard—
VeldstreamTypebooleanVereisteOptioneelWaarden en limietenStandaardfalse
VeldsizeTypestringVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldpartial_imagesTypeintegerVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldimages[].image_urlTypestringVereisteNiet ondersteundWaarden en limieten
Maximumaantal gedecodeerde bytes: 20.971.520
MIME-typen: image/png, image/jpeg
Maximumaantal afbeeldingen per array: 9
Voorwaarden: Eén daadwerkelijke URL per images[]-object. Het aantal items in de array staat los van deze afzonderlijke tekenreekswaarde.
Geldt wanneer: Alleen JSON images/edits; JSON images/generations parseert geen afbeeldingsreferenties.
Standaard—
VeldimageTypefileVereisteOptioneelWaarden en limieten
Maximumaantal gedecodeerde bytes: 20.971.520
MIME-typen: image/png, image/jpeg
Geldt wanneer: generatie met multipart/form-data
Standaard—
Veldimage[]Typefile[]VereisteOptioneelWaarden en limieten
Maximumaantal items: 9
Maximumaantal gedecodeerde bytes: 20.971.520
MIME-typen: image/png, image/jpeg
Geldt wanneer: generatie met multipart/form-data
Standaard—
Combinaties van invoermaterialen

Tekst naar afbeelding · Vereist: prompt

reference_images_generation · Vereist: prompt

Methodeparameters en levenscyclus
ParameterContract
Parametermaterial_typesContracttext
ParameterrequiredContractmodel, prompt
Parameteroptional_controlsContractnull
Parametercontent_typeContractapplication/json

Levenscyclus: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · de daadwerkelijk geretourneerde task_id of het record in de mediabibliotheek

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.

Tarieven

Ailoot-methodetarieven

Ailoot AfbeeldingenPOST /v1/images/generations
Uitvoer
US$ 0,075 per 1K-afbeelding
Uitvoer
US$ 0,075 per 2K-afbeelding

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Details van het referentietarief

Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.

wan2.7-image-pro

Prijzen per configuratie

ConfiguratieFactureringsvoorwaardenKosten
Configuratiewan2.7-image-pro · StandaardconfiguratieFactureringsvoorwaardenStandaardconfiguratieKosten
Invoer · Invoer US$ 0,00 per aanroep
Uitvoer · Uitvoer US$ 0,16 per aanroep

Voorbeeldverzoeken

Ailoot · Afbeeldingen

curlPython SDKNode.js SDK
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
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])
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");

Resultaten ophalen en opslaan

Ailoot · Afbeeldingen

Download elke teruggegeven afbeelding of sla de Base64-inhoud ervan op

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Alle voltooide resultaten bewaren

Sla elke voltooide afbeelding op; haal elke teruggegeven URL op of decodeer de bijbehorende Base64-inhoud.

Sla elk data-item op. Decodeer elke b64_json of haal elk bestand op via elke geretourneerde ondertekende URL. Kies een bestandsextensie op basis van de daadwerkelijke MIME/bytes.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Als het resultaat van een afbeeldingsgeneratie of -bewerking moet worden gecontroleerd, bewaar dan de oorspronkelijke operation_id/X-Client-Request-ID en de geretourneerde resultaatinformatie. Haal bestaande eigen resultaten terug via de mediabibliotheek met de daadwerkelijke task_id- of asset_id-waarden. Dien de generatie-/bewerkingsaanvraag niet opnieuw in en bouw geen polling-URL op basis van operation_id.

Antwoordvelden
VeldType
VeldcreatedTypeinteger
Velddata[].urlTypestring
Velddata[].b64_jsonTypebase64 string
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.
Antwoordserver_errorVoorwaardeHet geretourneerde antwoord geeft aan dat de bewerking of het resultaat moet worden gecontroleerdVolgende stapBewaar de oorspronkelijk geretourneerde bewerkings-/taak-ID, de aanvraagheaders en het antwoord; blijf de ondersteunde leesacties voor die oorspronkelijke bewerking uitvoeren. Dien de aanmaakaanvraag niet opnieuw in.

Aliasnamen

Modelaliasnamen

Ailoot wan2.7-image-pro, wan-image, wan-image-latest

Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

Gerelateerde aanroeper-ID’s

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

Ailoot · Afbeeldingen POST /v1/images/generations wan-image-latest

wan-image-latest

Alibaba /wan-image-latest
Model-ID
  • wan2.7-image-pro
  • wan-image
  • wan-image-latest

Aan de slag

Een model om afbeeldingen te maken op basis van een tekstuele opdracht. De fabrikant biedt sturing van het kleurenpalet en resolutie tot 4K voor gewone tekst-naar-beeldgeneratie.

Toegestane invoer
Tekst
Resultaten
Afbeeldingen

Beschikbaar in Ailoot · invoer en methoden

Ailoot · Afbeeldingen POST /v1/images/generations
Invoertypen
text
Uitvoertypen
image
Uitvoerformaat
Afbeeldingsbestand
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
wan-image-latest
Standaard—
VeldpromptTypestringVereisteVereistWaarden en limieten
Minimumlengte: 1
Standaard—
VeldnTypeintegerVereisteOptioneelWaarden en limieten
Minimum: 1
Standaard1
Veldresponse_formatTypestringVereisteOptioneelWaarden en limieten
url, b64_json
Standaard—
VeldstreamTypebooleanVereisteOptioneelWaarden en limietenStandaardfalse
VeldsizeTypestringVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldpartial_imagesTypeintegerVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldimages[].image_urlTypestringVereisteNiet ondersteundWaarden en limieten
Maximumaantal gedecodeerde bytes: 20.971.520
MIME-typen: image/png, image/jpeg
Maximumaantal afbeeldingen per array: 9
Voorwaarden: Eén daadwerkelijke URL per images[]-object. Het aantal items in de array staat los van deze afzonderlijke tekenreekswaarde.
Geldt wanneer: Alleen JSON images/edits; JSON images/generations parseert geen afbeeldingsreferenties.
Standaard—
VeldimageTypefileVereisteOptioneelWaarden en limieten
Maximumaantal gedecodeerde bytes: 20.971.520
MIME-typen: image/png, image/jpeg
Geldt wanneer: generatie met multipart/form-data
Standaard—
Veldimage[]Typefile[]VereisteOptioneelWaarden en limieten
Maximumaantal items: 9
Maximumaantal gedecodeerde bytes: 20.971.520
MIME-typen: image/png, image/jpeg
Geldt wanneer: generatie met multipart/form-data
Standaard—
Combinaties van invoermaterialen

Tekst naar afbeelding · Vereist: prompt

reference_images_generation · Vereist: prompt

Methodeparameters en levenscyclus
ParameterContract
Parametermaterial_typesContracttext
ParameterrequiredContractmodel, prompt
Parameteroptional_controlsContractnull
Parametercontent_typeContractapplication/json

Levenscyclus: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · de daadwerkelijk geretourneerde task_id of het record in de mediabibliotheek

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.

Tarieven

Ailoot-methodetarieven

Ailoot AfbeeldingenPOST /v1/images/generations
Uitvoer
US$ 0,075 per 1K-afbeelding
Uitvoer
US$ 0,075 per 2K-afbeelding

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Details van het referentietarief

Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.

wan2.7-image-pro

Prijzen per configuratie

ConfiguratieFactureringsvoorwaardenKosten
Configuratiewan2.7-image-pro · StandaardconfiguratieFactureringsvoorwaardenStandaardconfiguratieKosten
Invoer · Invoer US$ 0,00 per aanroep
Uitvoer · Uitvoer US$ 0,16 per aanroep

Voorbeeldverzoeken

Ailoot · Afbeeldingen

curlPython SDKNode.js SDK
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
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])
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");

Resultaten ophalen en opslaan

Ailoot · Afbeeldingen

Download elke teruggegeven afbeelding of sla de Base64-inhoud ervan op

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Alle voltooide resultaten bewaren

Sla elke voltooide afbeelding op; haal elke teruggegeven URL op of decodeer de bijbehorende Base64-inhoud.

Sla elk data-item op. Decodeer elke b64_json of haal elk bestand op via elke geretourneerde ondertekende URL. Kies een bestandsextensie op basis van de daadwerkelijke MIME/bytes.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Als het resultaat van een afbeeldingsgeneratie of -bewerking moet worden gecontroleerd, bewaar dan de oorspronkelijke operation_id/X-Client-Request-ID en de geretourneerde resultaatinformatie. Haal bestaande eigen resultaten terug via de mediabibliotheek met de daadwerkelijke task_id- of asset_id-waarden. Dien de generatie-/bewerkingsaanvraag niet opnieuw in en bouw geen polling-URL op basis van operation_id.

Antwoordvelden
VeldType
VeldcreatedTypeinteger
Velddata[].urlTypestring
Velddata[].b64_jsonTypebase64 string
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.
Antwoordserver_errorVoorwaardeHet geretourneerde antwoord geeft aan dat de bewerking of het resultaat moet worden gecontroleerdVolgende stapBewaar de oorspronkelijk geretourneerde bewerkings-/taak-ID, de aanvraagheaders en het antwoord; blijf de ondersteunde leesacties voor die oorspronkelijke bewerking uitvoeren. Dien de aanmaakaanvraag niet opnieuw in.

Aliasnamen

Modelaliasnamen

Ailoot wan2.7-image-pro, wan-image, wan-image-latest

Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

Gerelateerde aanroeper-ID’s

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

FAQ · wan2.7-image-pro
Welke invoer en resultaten zijn beschikbaar?

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

Welke velden gebruikt het verzoek?

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[]

Welke limieten gelden?

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

Meer details

Verbind Ailoot met Claude Code, OpenCode, Hermes of je eigen applicatie.

Het bedrijf en zijn projectenportefeuille

Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.

Koop tokens met korting.

Abonnementsvoordeel voor regelmatig gebruik. Promotiecodes geven tot 50% korting op tokens.

Abonnement
Kies een abonnement met korting voor je terugkerende verzoeken.
Promotiecode tot 50%
Vul de code bij aankoop in. De prijs wordt volgens de lopende actie herberekend.
Kosten in de geschiedenis
Model, tokens en bedrag worden per verzoek bewaard.

Kies een abonnement · Bekijk modelprijzen

Verbind de API met het product dat je verkoopt.

SaaS, apps en bots volgens de openbare aanbodvoorwaarden en licentieovereenkomst van Ailoot. Vraag voor doorverkoop een resellerlicentie aan.

Commerciële applicatie
Voeg tekst-, beeld-, video- en geluidsgeneratie aan betaalde functies van je service toe.
Resellerlicentie
Stuur een projectbeschrijving en toegangsschema. Vraag schriftelijke voorwaarden voor gebruik en doorverkoop.
Documenten op de site
Aanbodvoorwaarden, licentieovereenkomst en gegevensbeleid zijn vóór het verbinden beschikbaar.

Vraag een resellerlicentie aan · Aanbodvoorwaarden en licentieovereenkomst