Recraft: Recraft V4
Recraft V4 genera immagini raster 1K con attenzione a composizione, relazioni cromatiche e direzione creativa dettagliata. Copre illustrazione, scene fotorealistiche e concept di design grafico, con input stilistici facoltativi e un flusso image-to-image separato.
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.
Recraft V4 è il modello raster standard della generazione V4 di Recraft. Il produttore sottolinea il giudizio progettuale: composizione equilibrata, relazioni cromatiche coerenti e dettaglio al servizio dell’intento visivo. Può lavorare con illustrazioni stilizzate, scene fotografiche e concept di design grafico. Usalo quando il brief richiede un’immagine che combini scelte estetiche e accuratezza rispetto al prompt, esplorando un’atmosfera da una breve direzione o specificando in dettaglio un layout intenzionale.
Il codice esatto del modello è recraftv4. Il riferimento del produttore elenca output raster 1K in WebP senza perdita o PNG. Un’immagine quadrata è 1024 × 1024 pixel, 16:9 è 1344 × 768 e 2:3 è 832 × 1280; altri rapporti supportati usano dimensioni proprie. V4 Pro è l’edizione raster 2K separata, mentre V4 Vector e Pro Vector restituiscono SVG modificabili. Seleziona la variante V4 esatta per la consegna prevista anziché combinare queste proprietà d’output diverse.
La guida del produttore distingue prompt interpretativi brevi e direzione creativa strutturata. Una frase breve può lasciare spazio a esplorare forma, atmosfera e inquadratura. Un brief strutturato può nominare soggetto, ambientazione, posa, materiale, elementi secondari, illuminazione e gerarchia visiva. Per un’illustrazione narrativa, descrivi un ciclista che attraversa un piccolo ponte, forme semplificate audaci, colori caldi attenuati e un movimento chiaro da sinistra a destra. Queste decisioni di contenuto e composizione sono più concrete di un lungo elenco di aggettivi stilistici scollegati.
La gamma V4 include illustrazione, immagini dimensionali e visuali fotorealistiche. La guida consiglia di descrivere la logica del disegno per l’illustrazione e materiale, luce, camera e profondità per un’immagine dall’aspetto 3D. Quest’ultima resta una visuale raster anziché una mesh modificabile. Per un concept di poster o packaging, indica quali parole sono principali, dove vanno collocate e come immagine e tipografia interagiscono. Il produttore evidenzia testo breve e medio leggibile; ispeziona testo e disposizione effettivi nell’immagine restituita prima di usarla.
La generazione supporta prompt fino a 10.000 caratteri, un seed casuale, da uno a sei output, colori preferiti e un colore di sfondo desiderato. Stili personalizzati compatibili e immagini di riferimento facoltativi possono guidare il trattamento visivo tramite corrispondenza flessibile o precisa. Scegli un riferimento pulito o un insieme che appartenga a un solo mondo visivo, poi lascia che il prompt descriva il nuovo soggetto e la scena. La corrispondenza cromatica fra riferimento e output non è garantita, quindi mantieni esplicita la tavolozza richiesta e confronta il risultato con essa. Per la generazione con stile di riferimento, usa da una a dieci immagini PNG, JPG o WebP, non oltre 64 MB in totale e meno di 20 MB ciascuna. Ogni riferimento deve avere lato più corto di almeno 256 pixel, lato più lungo non oltre 4.096 pixel e risoluzione non oltre 16 megapixel. Usa questi riferimenti oppure uno stile salvato compatibile, anziché entrambi.
L’operazione image-to-image documentata combina un’immagine esistente e un prompt, con intensità da 0 a 1 che determina quanto il nuovo output si allontani dalla sorgente. Non accetta controlli di stile V4 in tale operazione. L’attuale riferimento di generazione esclude anche nomi di stili curati, negative_prompt, text_layout, artistic_level e no_text. Prepara una descrizione positiva del risultato desiderato e valuta la risorsa nella composizione di destinazione. V4 standard offre un’interpretazione mirata di design raster, con edizione, formato e dimensioni d’output specifici. Per image-to-image, fornisci PNG, JPG, WebP o SVG sotto 20 MB, non oltre 16 megapixel, con entrambi i lati fra 256 e 4.096 pixel.
Ailoot Ultra · Immagini POST /v1/images/generations recraft/recraft-v4
recraft/recraft-v4Introduzione
Recraft V4 genera immagini raster 1K con attenzione a composizione, relazioni cromatiche e direzione creativa dettagliata. Copre illustrazione, scene fotorealistiche e concept di design grafico, con input stilistici facoltativi e un flusso image-to-image separato.
- Input accettati
- Testo · Immagini
- Risultati
- Immagini
Disponibile in Ailoot · input e metodi
Ailoot Ultra · Immagini POST /v1/images/generations
- Tipi di input
text,image- Tipi di output
image- Formato di output
- File immagine
| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObbligatorio | Valori e limiti recraft/recraft-v4 | Predefinito— |
Campoprompt | Tipostring | RequisitoObbligatorio | Valori e limiti Lunghezza minima: 1 | Predefinito— |
Campon | Tipointeger | RequisitoFacoltativo | Valori e limiti Minimo: 1 Massimo: 6 | Predefinito— |
Campoaspect_ratio | Tipostring | RequisitoFacoltativo | Valori e limiti 1:1, 4:3, 3:4, 16:9, 9:16, auto | Predefinito— |
Campoinput_references | Tipoarray | RequisitoFacoltativo | Valori e limiti Numero minimo di elementi: 0 Numero massimo di elementi: 1 | Predefinito— |
Combinazioni di materiali in input
Da testo a immagine · Obbligatorio: prompt
reference_guided_image · Obbligatorio: prompt, actual image reference
Parametri e ciclo di vita del metodo
| Parametro | Contratto |
|---|---|
Parametrocontent_type | Contrattoapplication/json |
Parametrorequired | Contrattomodel, prompt |
Parametromaterial_types | Contrattotext, image |
Parametrooptional_controls | Contratton, aspect_ratio, input_references |
Parametron | Contratto{"minimum":1,"maximum":6} |
Parametroreference_images | Contratto{"minimum":0,"maximum":1,"source":"materiale reale fornito dal cliente"} |
Parametroprovider_specific_options | ContrattoSolo style/controls/text_layout esatti presenti nell'elenco salvato di quelli ammessi dall'endpoint; nessuna struttura ipotizzata. |
Alias del metodo: /v1/images
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}
L'esempio con il solo prompt conserva la struttura ufficiale ImageGenerationRequest.
Conserva ogni immagine restituita e la risposta completa; la quantità dei risultati è quella effettiva, non n richiesto.
Tariffe
Calcolo del costo finale
Le tariffe visualizzate stimano il costo prima della generazione. L'addebito finale viene calcolato in base al costo registrato per la generazione originale. La durata misurata dell'output e le quantità previste non costituiscono la quantità finale fatturabile.
Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.
- Modalità rapida
- Non specificato Quando è selezionata la modalità rapida
- Modalità flex
- Non specificato Quando è selezionata la modalità flex
- Sforzo massimo di ragionamento
- Non specificato Quando lo sforzo massimo di ragionamento usa l'adeguamento predefinito (default)
Tariffe stimate per il confronto
Prezzi per configurazione
Associa ogni costo alle condizioni indicate. Usa una sola tariffa per ogni insieme di configurazioni alternative.
| Configurazione | Listino delle tariffe | Quantità prevista | Unità di fatturazione | Costo |
|---|---|---|---|---|
| ConfigurazioneTariffe base dei token | Listino delle tariffeTariffa base | Quantità prevista— | Unità di fatturazione— | Costo Input · Token in input · Stima solo a fini di confronto — / 1K token Output · Token in output · Stima solo a fini di confronto — / 1K token Input · Lettura dalla cache · Stima solo a fini di confronto — / 1K token Input · Scrittura nella cache · Stima solo a fini di confronto — / 1K token Input · Scrittura nella cache, 1 ora · Stima solo a fini di confronto — / 1K token |
| ConfigurazioneUltra | Listino delle tariffe— | Quantità prevista— | Unità di fatturazioneper immagine in output | Costo Output · immagine in uscita · Stima solo a fini di confronto $0.08 per immagine in output |
| ConfigurazioneCosto stimato della generazione | Listino delle tariffe— | Quantità previstastima per una generazione | Unità di fatturazione— | Costo Output · Costo di generazione stimato · Stima solo a fini di confronto $0.08 stima prima della generazione Questa stima non è un addebito aggiuntivo né una tariffa fissa per la generazione completata. |
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.
Configurazioni tariffarie per le immagini
Prezzi per configurazione
| Configurazione | Condizioni di fatturazione | Costo |
|---|---|---|
| ConfigurazioneImmagine in uscita | Condizioni di fatturazioneNon è dichiarata alcuna variante tariffaria. | Costo Output · Immagine in uscita $0.08 per immagine Le voci equivalenti descrivono lo stesso addebito; non aggiungono un secondo costo. |
Esempi di richieste
Ailoot Ultra · Immagini
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'recraft/recraft-v4', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
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")
request={'model': 'recraft/recraft-v4', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
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": "recraft/recraft-v4", "prompt": "a red panda astronaut floating in space, studio lighting"};
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 Ultra · Immagini
Scarica ogni immagine restituita o salvane il contenuto Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Conserva tutti i risultati completati
Salva ogni immagine completata; recupera ogni URL restituito oppure decodificane il contenuto Base64.
Conserva ogni elemento di dati e tutti i dati di utilizzo; acquisisci e salva tutte le immagini effettivamente restituite come risorse di tua proprietà. Nessun URL o ID inventato.
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
| Campo | Tipo |
|---|---|
Campocreated | Tipointeger |
Campodata[].url | Tipostring |
Campodata[].b64_json | Tipobase64 string |
Campousage | Tipoobject |
Errori e passaggi successivi
| Risposta | Condizione | Passaggio successivo |
|---|---|---|
Risposta400 · invalid_request_error | CondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validi | Passaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione. |
Rispostaserver_error | CondizioneLa risposta restituita indica che l'operazione o il risultato richiede una verifica | Passaggio 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 Ultra recraft/recraft-v4
Alias dei percorsi dei metodi
/v1/images
ID di chiamata correlati
FAQ · Recraft: Recraft V4
- Quali input e risultati sono disponibili?
POST /v1/images/generations·recraft/recraft-v4:text,image→image- Quali campi usa la richiesta?
POST /v1/images/generations·recraft/recraft-v4:model,prompt,n,aspect_ratio,input_references- Quali limiti si applicano?
POST /v1/images/generations·recraft/recraft-v4:n.minimum:1;n.maximum:6