Tutoriale
Come si usa l'API Recraft Crisp Upscale? Un solo campo per ingrandire 2 volte
Ingrandimento 2x fedele senza prompt, con un solo campo image_url, a $0.004 per immagine: esempi curl/Python e note sui limiti.
TL;DR
- Recraft Crisp Upscale (
recraft/crisp-upscale) fa una sola cosa: raddoppia larghezza e altezza dell'immagine, rendendo bordi e texture più nitidi, mantenendo intatti contenuto e testo.Nessun prompt, il body della richiesta contiene solo unimage_url.Apri la pagina del modello, carica un'immagine e provalo: i nuovi utenti ricevono 200 crediti alla registrazione. - $0.004 per immagine: 1.000 immagini a $4.00, con $10 se ne ottengono circa 2.500; la dimensione dell'immagine di input non influisce sul prezzo (prezzi completi nella pagina dei prezzi).
- La chiamata passa dall'interfaccia
/v1/tasksdi HiAPI: invia il task e ottienitaskId, poi interroga il risultato e, in caso di successo, scarica daoutput[0].url(JPEG, senza canale alfa).
Cosa sa fare
- Ingrandimento fedele, non ridisegno: texture del quadrante, rughe della pelle, scritte piccole dei poster diventano più chiare, ma contenuto, composizione e testo non cambiano di una virgola: i materiali con testo non vengono «trasformati in un'altra immagine».
- Si controlla con un solo campo: in
image_urlpassi un indirizzo pubblico (JPEG / PNG / WebP, ≤10 MB), senza prompt e senza opzioni di fattore di scala. - Adatto a immagini prodotto, poster con testo, materiali di design: qualsiasi scenario in cui «l'originale è già giusto, solo la risoluzione non basta».
- Anche gli scenari non adatti sono chiari: se vuoi dettagli ridisegnati a livello 4K o vuoi cambiare anche il contenuto, usa il ridisegno generativo (vedi anche la guida in inglese per aumentare la risoluzione con modelli image-to-image); Crisp Upscale ingrandisce solo di 2 volte, senza ridisegnare il contenuto.
- Restituisce 1 JPEG; per un risultato trasparente prima ingrandisci, poi rimuovi lo sfondo (per l'uso della rimozione sfondo vedi la guida in inglese sulla rimozione dello sfondo).
Ecco una coppia reale «originale → 2x»:
| Originale 640×640 | Risultato ingrandito 1280×1280 |
|---|---|
![]() |
![]() |
recraft/crisp-upscale, 640×640 → 1280×1280, $0.004. La ghiglioscé del quadrante, la cassa in acciaio spazzolato e le scritte piccole del quadrante restano nitide anche al doppio delle dimensioni.
Apri la pagina del modello e caricane una per provare →
Due percorsi per iniziare
Browser in 3 passi: apri la pagina del modello → carica l'immagine → clicca ingrandisci, $0.004 per immagine.
API in 3 passi: invia con POST /v1/tasks → ottieni taskId → interroga con GET /v1/tasks/<taskId> e, dopo success, scarica. Per il batch basta ripetere questi tre passi, un task per immagine.
curl: la prima immagine
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: your-unique-key-001" \
-d '{
"model": "recraft/crisp-upscale",
"input": {
"image_url": "https://static.hiapi.ai/gallery/2026/10/4fdfd6b43b638849.jpg"
}
}'
Il body della richiesta è tutto qui: qualsiasi campo in più (come prompt, scale) restituisce direttamente un 400.
Python: invio, polling, download
import time, uuid, requests
BASE = "https://api.hiapi.ai/v1/tasks"
HEADERS = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
}
payload = {
"model": "recraft/crisp-upscale",
"input": {
"image_url": "https://example.com/your-image.jpg",
},
}
resp = requests.post(
BASE,
headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
json=payload,
timeout=30,
)
resp.raise_for_status()
task_id = resp.json()["taskId"]
while True:
task = requests.get(f"{BASE}/{task_id}", headers=HEADERS, timeout=30).json()
print(task["status"])
if task["status"] in ("success", "fail"):
break
time.sleep(5)
if task["status"] == "success":
image_url = task["output"][0]["url"] # indirizzo temporaneo, scarica e salva al più presto
img = requests.get(image_url, timeout=60)
with open("upscaled.jpg", "wb") as f:
f.write(img.content)
print("saved upscaled.jpg")
Tabella dei parametri
| Campo | Obbligatorio | Valori | Descrizione |
|---|---|---|---|
image_url |
Sì | Indirizzo http/https pubblico | JPEG / PNG / WebP, singola ≤10 MB |
Solo questo campo. Il fattore di ingrandimento è fisso a 2x in larghezza e altezza, non selezionabile; niente prompt, niente parametri per il formato di output.
Gli errori che incontrerai
| Codice di stato | Significato | Come risolvere |
|---|---|---|
| 400 INVALID_REQUEST | image_url mancante, non è un indirizzo http/https, oppure sono stati passati campi inesistenti come prompt / scale |
Lascia nel body della richiesta solo image_url |
| 402 INSUFFICIENT_QUOTA | Saldo insufficiente (nessun addebito) | Ricarica e riprova |
| 429 RATE_LIMITED | Limite di frequenza raggiunto | Riduci la frequenza di invio |
| 409 / 422 IDEMPOTENCY_KEY_* | Invio duplicato con la stessa chiave di idempotenza | Usa un nuovo Idempotency-Key |
In caso di fallimento allo stato finale ci sono anche codici come TASK_FAILED, TASK_TIMEOUT; i fallimenti non comportano addebiti.
Da sapere prima della messa in produzione
- Callback: passa al livello superiore del body
"callback": {"url": "https://..."}per ricevere la notifica automatica allo stato finale. - Salva subito:
output[0].urlè un indirizzo temporaneo, scarica appena lo ricevi. - Durata: di solito da 10 secondi a circa 1 minuto per immagine, non impostare intervalli di polling troppo brevi.
- Canale alfa: l'output è JPEG senza trasparenza; per materiali con sfondo trasparente prima ingrandisci, poi rimuovi lo sfondo (se inverti l'ordine, i bordi del ritaglio risultano sfocati).
- Il conto per i batch è semplice: ingrandire tutte e cinque le immagini di un SKU costa $0.02; un ciclo su 1.000 materiali dell'intero negozio costa $4.00, basta inviare in batch, ogni immagine ha il proprio tempo di elaborazione.
- La qualità dell'originale determina il limite: l'ingrandimento 2x rende i bordi più nitidi, ma le parti sfocate dell'originale non generano dettagli dal nulla; per i materiali critici fai prima una prova con un'immagine e poi procedi in batch.
Domande frequenti
È davvero solo 2x?
Sì. Larghezza e altezza raddoppiano (640×640 → 1280×1280, 480×640 → 960×1280), il fattore è fisso, non esiste l'opzione 4x; se serve più grande, ingrandisci di nuovo il risultato.
Il testo nell'immagine cambia?
No. Nei poster con testo i caratteri restano identici dopo l'ingrandimento: nessuna riscrittura, nessun testo aggiunto.
Quanto costa un'immagine?
$0.004 per immagine, 1.000 immagini a $4.00; la dimensione dell'immagine di input non influisce sul prezzo. I fallimenti non comportano addebiti e gli errori di validazione dei parametri non entrano nella fatturazione.
Si può passare base64?
No. image_url richiede un indirizzo http/https pubblico; per i file locali prima caricali sul tuo storage e poi fornisci l'indirizzo.
Quanto tempo serve per un'immagine?
Di solito da 10 secondi a circa 1 minuto; i task in batch vengono messi in coda in base al numero di immagini, se hai fretta invia a lotti.
Passo successivo: prendi un'immagine del tuo prodotto e ingrandiscila sulla pagina del modello per vedere l'effetto; cinque coppie reali «originale → 2x» sono nella pagina dei casi; il confronto con il ridisegno generativo sulla stessa immagine originale è nella pagina di confronto.
Articoli correlati
Vedi tutti gli articoli →-
Tutoriale
Come chiamare hailuo-2.3-fast/image-to-video tramite l'API HiAPI: pratica con curl e Python
La prima richiesta funzionante per il livello image-to-video veloce ed economico — dall'ID del modello al download di un MP4
-
Tutoriale
Come chiamare hailuo-2.3/text-to-video tramite l'API HiAPI: curl, Python ed esempi di richiesta eseguibili
-
Tutoriale
Utilizzare Kandinsky 6.0 Pro su HiAPI per la generazione di video da testo: tutorial con curl e Python
Dimostrazione pratica guidata dalla richiesta: costruire la chiamata da prompt a clip video, inviare la richiesta, monitorare lo stato di completamento e scaricare il risultato
