modelli

wan2.7-image

Markdown · JSON

wan2.7-image

Modello per generare immagini da testo e preparare varianti di design e illustrazioni. Secondo Alibaba, questa versione è orientata a una generazione più rapida delle immagini.

Informazioni sul modello

Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.

Wan2.7-Image crea immagini da un'istruzione testuale. L'attuale scheda Ailoot presenta precisamente input testuale e un risultato sotto forma di immagine. Secondo Alibaba, questa versione è orientata a ottenere varianti più rapidamente. Le specifiche del produttore prevedono anche modifica, combinazione di riferimenti e interventi locali; richiedono un supporto separato delle immagini in ingresso, non rappresentato dal metodo attuale della scheda.

Le modalità descritte da Alibaba

Per la modalità con riferimenti, Alibaba prevede fino a nove immagini iniziali nell'istruzione. Servono da base per l'aspetto dell'oggetto, la composizione e i dettagli. Il modello può riunire più materiali in una nuova scena oppure modificare l'immagine originale conservando l'oggetto principale. Per la modifica mirata sono previste aree indicate esplicitamente: in un'immagine si possono individuare fino a due regioni rettangolari.

Nelle specifiche di Alibaba, la modalità ordinaria produce da uno a quattro risultati. Una serie sequenziale permette di richiedere fino a 12 immagini collegate da una storia o da caratteristiche comuni dei personaggi. Per la serie è un limite superiore: il modello determina autonomamente il numero necessario di fotogrammi e può restituirne meno. L'istruzione e il materiale iniziale aiutano a mantenere una trama comune.

Per la normale generazione da testo, senza riferimenti né una serie sequenziale, è prevista una modalità di ragionamento. Il modello analizza così più a fondo una descrizione complessa prima di creare l'immagine. Questa modalità non si applica alla modifica basata su immagini né alle serie sequenziali. Una palette definita di 3–10 colori è disponibile al di fuori delle serie sequenziali.

Input e risultato

Nelle modalità con immagini iniziali, presso il produttore sono supportati JPEG, JPG, PNG senza trasparenza, BMP e WEBP. Ogni lato può avere da 240 a 8000 pixel, il file può arrivare a 20 MB e le proporzioni vanno da 1:8 a 8:1.

L'istruzione testuale supporta cinese e inglese ed è limitata a 5000 caratteri; la parte in eccesso viene scartata. Questa versione non prevede una descrizione negativa né un'ulteriore espansione dell'istruzione.

Il formato di uscita è PNG, con risoluzione fino al livello 2K. L'indicazione riguarda l'area complessiva in pixel, non una lunghezza massima fissa del lato; la forma può essere scelta nell'intervallo da 1:8 a 8:1. Nella modifica con una risoluzione preimpostata, il risultato mantiene le proporzioni dell'ultimo riferimento. Lo stesso seme casuale iniziale aiuta a ottenere varianti simili, ma non garantisce una corrispondenza completa.

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

wan2.7-image

Alibaba /wan2.7-image

Introduzione

Modello per generare immagini da testo e preparare varianti di design e illustrazioni. Secondo Alibaba, questa versione è orientata a una generazione più rapida delle immagini.

Input accettati
Testo
Risultati
Immagini

Disponibile in Ailoot · input e metodi

Ailoot · Immagini POST /v1/images/generations
Tipi di input
text
Tipi di output
image
Formato di output
File immagine
CampoTipoRequisitoValori e limitiPredefinito
CampomodelTipostringRequisitoObbligatorioValori e limiti
wan2.7-image
Predefinito—
CampopromptTipostringRequisitoObbligatorioValori e limiti
Lunghezza minima: 1
Predefinito—
CamponTipointegerRequisitoFacoltativoValori e limiti
Minimo: 1
Predefinito1
Camporesponse_formatTipostringRequisitoFacoltativoValori e limiti
url, b64_json
Predefinito—
CampostreamTipobooleanRequisitoFacoltativoValori e limitiPredefinitofalse
CamposizeTipostringRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Campopartial_imagesTipointegerRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Campoimages[].image_urlTipostringRequisitoNon supportatoValori e limiti
Numero massimo di byte decodificati: 20.971.520
Tipi MIME: image/png, image/jpeg
Numero massimo di immagini per array: 9
Condizioni: Un URL effettivo per ogni oggetto images[]. Il numero di elementi dell'array è distinto da questo nodo foglia di tipo stringa.
Si applica quando: Solo JSON images/edits; JSON images/generations non analizza i riferimenti images.
Predefinito—
CampoimageTipofileRequisitoFacoltativoValori e limiti
Numero massimo di byte decodificati: 20.971.520
Tipi MIME: image/png, image/jpeg
Si applica quando: generazione con multipart/form-data
Predefinito—
Campoimage[]Tipofile[]RequisitoFacoltativoValori e limiti
Numero massimo di elementi: 9
Numero massimo di byte decodificati: 20.971.520
Tipi MIME: image/png, image/jpeg
Si applica quando: generazione con multipart/form-data
Predefinito—
Combinazioni di materiali in input

Da testo a immagine · Obbligatorio: prompt

reference_images_generation · Obbligatorio: prompt

Parametri e ciclo di vita del metodo
ParametroContratto
Parametromaterial_typesContrattotext
ParametrorequiredContrattomodel, prompt
Parametrooptional_controlsContrattonull
Parametrocontent_typeContrattoapplication/json

Ciclo di vita: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · task_id effettivamente restituito o record della libreria multimediale

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Le strutture dei metodi e gli ID sono esatti; la capacità del fornitore è distinta dall’ammissione delle richieste.

Tariffe

Tariffe dei metodi Ailoot

Ailoot ImmaginiPOST /v1/images/generations
Output
0,03 USD per immagine 1K
Output
0,03 USD per immagine 2K

Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. Come funzionano la prenotazione e l’addebito finale →

Dettagli della tariffa di riferimento

I listini di riferimento del modello non modificano la selezione del metodo, i preventivi o gli addebiti. Gli addebiti attivi usano le tariffe del metodo Ailoot selezionato.

wan2.7-image

Prezzi per configurazione

ConfigurazioneCondizioni di fatturazioneCosto
Configurazionewan2.7-image · Configurazione predefinitaCondizioni di fatturazioneConfigurazione predefinitaCosto
Input · Input 0,00 USD per chiamata
Output · Output 0,06 USD per chiamata

Esempi di richieste

Ailoot · Immagini

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", "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', '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", "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");

Ricevi e salva i risultati

Ailoot · Immagini

Scarica ogni immagine restituita o salvane il contenuto Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Conserva tutti i risultati completati

Salva ogni immagine completata; recupera ogni URL restituito oppure decodificane il contenuto Base64.

Salva ogni elemento data. Decodifica ogni b64_json o recupera ogni URL firmato restituito. Scegli l'estensione del nome del file in base al MIME e ai byte effettivi.

Se occorre verificare la risposta originale

Se il risultato di una generazione o modifica di immagini richiede una verifica, conserva operation_id/X-Client-Request-ID originale e le informazioni sul risultato restituito. Recupera i risultati esistenti che ti appartengono tramite la libreria multimediale usando i valori effettivi di task_id o asset_id. Non reinviare la richiesta di generazione/modifica e non costruire un URL di polling a partire da operation_id.

Campi della risposta
CampoTipo
CampocreatedTipointeger
Campodata[].urlTipostring
Campodata[].b64_jsonTipobase64 string
CampousageTipoobject
Errori e passaggi successivi
RispostaCondizionePassaggio successivo
Risposta400 · invalid_request_errorCondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validiPassaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione.
Rispostaserver_errorCondizioneLa risposta restituita indica che l'operazione o il risultato richiede una verificaPassaggio successivoConserva l'ID originale di operazione/task restituito, gli header della richiesta e la risposta; continua a leggere l'operazione originale tramite le modalità supportate. Non reinviare la richiesta di creazione.

Alias

Alias del modello

Ailoot wan2.7-image

Alias dei percorsi dei metodi

Usa i percorsi dei metodi indicati sopra.

ID di chiamata correlati

wan2.7-image

FAQ · wan2.7-image
Quali input e risultati sono disponibili?

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

Quali campi usa la richiesta?

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

Quali limiti si applicano?

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

Maggiori dettagli

Collega Ailoot a Claude Code, OpenCode, Hermes o alla tua applicazione.

L’azienda e il suo portafoglio di progetti

L’azienda e il suo portafoglio di progetti: milioni di clienti; vendite nell’ordine dei miliardi ogni mese.

Acquista token con uno sconto.

Sconto con abbonamento per lavoro regolare. Codici fino al 50% sull’acquisto di token.

Abbonamento
Scegli un piano scontato per richieste regolari.
Codice fino al 50%
Inserisci il codice all’acquisto. Il prezzo si aggiorna secondo la promozione.
Spese nella cronologia
Modello, token e importo sono salvati per ogni richiesta.

Scegli abbonamento · Consulta prezzi dei modelli

Collega l’API al prodotto che vendi.

SaaS, app e bot secondo offerta e accordo di licenza Ailoot. Per rivendere, richiedi una licenza reseller.

Applicazione commerciale
Integra generazione di testo, immagini, video e suono nelle funzioni a pagamento.
Licenza reseller
Invia descrizione del progetto e schema di accesso. Richiedi condizioni scritte per uso e rivendita.
Documenti sul sito
Offerta, accordo di licenza e politica sui dati sono disponibili prima della connessione.

Richiedi licenza reseller · Offerta e accordo di licenza