Recraft: Recraft V4.1 Flash
Recraft V4.1 Flash genera immagini raster 1K da testo per una rapida iterazione visiva. Supporta fotografia, ritratti, scene complesse e concept di logo, con output PNG o WebP senza perdita e preferenze cromatiche esplicite.
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.1 Flash è il modello text-to-image di Recraft per iterazione rapida e lavoro visivo ad alto volume. Il produttore identifica fotografia, ritratti, atmosfera, scene complesse, tecniche miste e concept di logo come ambiti di particolare efficacia. Un brief scritto diventa un’immagine raster confrontabile con altre direzioni creative prima di sviluppare una risorsa finale. Flash è un membro specifico della famiglia V4.1, con proprie dimensioni d’output e controlli supportati.
L’output nativo appartiene alla classe raster 1K di Recraft. Scegli il canvas in base alla collocazione prevista: un’illustrazione orizzontale per l’intestazione di pagina, un ritratto verticale o una visuale quadrata per una scheda compatta. I formati d’output sono WebP senza perdita e PNG.
Inizia il brief con soggetto principale e scopo visivo, poi descrivi inquadratura, ambientazione, illuminazione e tecnica. Per un concept di prodotto, un’istruzione utile è: “Una radio compatta color crema su una scrivania di noce, vista frontale di tre quarti, luce morbida da finestra, fotografia editoriale calma, ampio spazio vuoto a sinistra.” Per un’illustrazione, identifica linguaggio delle forme, tavolozza e relazione fra gli elementi. Mantieni espliciti i dettagli che definiscono l’idea invece di aggiungere aggettivi scollegati. Il limite documentato del prompt Flash è fino a 10.000 caratteri, quindi una scena dettagliata può essere descritta quando necessario.
I controlli del produttore includono colori preferiti e un colore di sfondo desiderato. Si può fornire un seed per risultati riproducibili e l’interfaccia di generazione documenta da una a sei immagini per richiesta. Questi controlli supportano un confronto utile: mantieni stabili soggetto e composizione, varia una direzione visiva e controlla le immagini risultanti per il layout desiderato. Le preferenze cromatiche descrivono il risultato richiesto; confronta i colori importanti della marca con la risorsa finita prima di combinarla con un sistema di design esistente.
Flash produce grafica raster. Un concept di logo può aiutare a scegliere sagoma, atmosfera o disposizione, mentre i tracciati modificabili appartengono ai modelli Vector denominati separatamente. Flash non ha inoltre una variante Pro. La linea V4.1 completa offre quelle scelte separate quando modifica vettoriale o dettaglio a maggiore risoluzione sono centrali alla consegna. Il produttore descrive un passaggio successivo di affinamento per portare una bozza scelta verso un’immagine più dettagliata; tale passaggio è un’operazione distinta anziché una diversa dimensione nativa d’output Flash.
Questa edizione non supporta input image-to-image, stili personalizzati, identificatori di stile, corrispondenza di stile o immagini di riferimento stilistico. L’interfaccia documentata esclude inoltre prompt negativi e controlli espliciti di layout del testo. Inserisci aspetto e composizione richiesti nel brief positivo. Quando le scritte fanno parte di un concept, cita il testo desiderato e ispeziona i caratteri resi; usa una fase separata di layout quando tipografia e collocazione esatte sono essenziali.
Un risultato pratico di Flash è una direzione visiva selezionata con brief chiaro, rapporto d’aspetto appropriato e file raster utilizzabile. Confronta soggetto, inquadratura, sfondo e dettagli importanti alle dimensioni in cui apparirà l’immagine. Conserva insieme prompt riuscito e file scelto, così il passo creativo successivo segue la direzione selezionata. L’iterazione rapida aiuta a esplorare il design; output vettoriale nativo, corrispondenza di stile da riferimenti e risoluzione di un’altra edizione V4.1 restano scelte di modello separate.
Ailoot Ultra · Immagini POST /v1/images/generations recraft/recraft-v4.1-flash
recraft/recraft-v4.1-flashIntroduzione
Recraft V4.1 Flash genera immagini raster 1K da testo per una rapida iterazione visiva. Supporta fotografia, ritratti, scene complesse e concept di logo, con output PNG o WebP senza perdita e preferenze cromatiche esplicite.
- Input accettati
- Testo
- Risultati
- Immagini
Disponibile in Ailoot · input e metodi
Ailoot Ultra · Immagini POST /v1/images/generations
- Tipi di input
text- Tipi di output
image- Formato di output
- File immagine
- Numero di output
- 1 output
| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObbligatorio | Valori e limiti recraft/recraft-v4.1-flash | Predefinito— |
Campoprompt | Tipostring | RequisitoObbligatorio | Valori e limiti Lunghezza minima: 1 Condizioni: Prompt UTF8 non vuoto. Non viene inventato alcun limite di caratteri valido per tutti i modelli del produttore. | Predefinito— |
Campon | Tipointeger | RequisitoFacoltativo | Valori e limiti 1 | Predefinito1 |
Camporesponse_format | Tipostring | RequisitoFacoltativo | Valori e limiti url, b64_json | Predefinito— |
Campostream | Tipoboolean | RequisitoFacoltativo | Valori e limiti false | Predefinitofalse |
Combinazioni di materiali in input
Da testo a immagine · Obbligatorio: prompt
Parametri e ciclo di vita del metodo
| Parametro | Contratto |
|---|---|
Parametrocontent_type | Contrattoapplication/json |
Parametrorequired | Contrattomodel, prompt |
Parametromaterial_types | Contrattotext |
Parametrooptional | Contratton, response_format, stream |
Parametron | Contratto1 |
Parametrostream | Contrattofalse |
Parametroresponse_format | Contrattourl, b64_json |
Parametroreference_images | Contrattofalse |
Parametroedit | Contrattofalse |
Parametrooutput_format_optional | Contratto |
Parametroresolution_control | Contrattonull |
Parametroaspect_ratio_control | Contrattonull |
Parametroother_fields | Contrattorifiutato salvo l'instradamento interno esatto del fornitore fissato |
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}
Genera un'immagine dal prompt.
Salva ogni elemento di dati; url/b64_json sono codifiche del risultato.
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.014 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.014 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.014 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=json.loads('{"model": "recraft/recraft-v4.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"}')
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.1-flash', 'prompt': 'A lighthouse on a cliff, watercolor', 'n': 1, 'response_format': 'b64_json'}
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.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"};
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.
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
| 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.1-flash
Alias dei percorsi dei metodi
Usa i percorsi dei metodi indicati sopra.
ID di chiamata correlati
FAQ · Recraft: Recraft V4.1 Flash
- Quali input e risultati sono disponibili?
POST /v1/images/generations·recraft/recraft-v4.1-flash:text→image- Quali campi usa la richiesta?
POST /v1/images/generations·recraft/recraft-v4.1-flash:model,prompt,n,response_format,stream