Vai al contenuto principale

Documentation Index

Fetch the complete documentation index at: https://docs.sunra.ai/llms.txt

Use this file to discover all available pages before exploring further.

Per le richieste che richiedono più di qualche secondo, tipiche nelle applicazioni di intelligenza artificiale, abbiamo sviluppato un sistema di code. Questo sistema ti offre un controllo granulare per gestire i picchi di traffico, annullare le richieste se necessario e monitorare lo stato della tua richiesta in coda. Elimina anche la necessità di gestire richieste HTTP a lunga esecuzione.

Endpoint della coda

Puoi accedere a tutte le funzionalità della coda tramite i seguenti endpoint:
EndpointMetodoDescrizione
api.sunra.ai/v1/queue/{id-modello}POSTAggiunge una richiesta alla coda
api.sunra.ai/v1/queue/requests/{id-richiesta}/statusGETRecupera lo stato di una richiesta
api.sunra.ai/v1/queue/requests/{id-richiesta}/status/streamGETTrasmette lo stato in streaming fino al completamento
api.sunra.ai/v1/queue/requests/{id-richiesta}GETRecupera la risposta di una richiesta
api.sunra.ai/v1/queue/requests/{id-richiesta}/cancelPUTAnnulla una richiesta
Ad esempio, per inviare una richiesta utilizzando curl e aggiungerla alla coda:
curl -X POST \
  https://api.sunra.ai/v1/queue/black-forest-labs/flux-1.1-pro/text-to-image \
  -H "Authorization: Key $SUNRA_KEY" \
  -d '{"prompt": "Una città di mare ispirata allo Studio Ghibli con case colorate, panni stesi e gatti che dormono sui davanzali."}'
Ecco una risposta di esempio che include il request_id:
{
  "request_id": "pd_vXW7VwPN2MbTwT8bzpWrYU5Y",
  "response_url": "https://api.sunra.ai/v1/queue/requests/pd_vXW7VwPN2MbTwT8bzpWrYU5Y",
  "status_url": "https://api.sunra.ai/v1/queue/requests/pd_vXW7VwPN2MbTwT8bzpWrYU5Y/status",
  "cancel_url": "https://api.sunra.ai/v1/queue/requests/pd_vXW7VwPN2MbTwT8bzpWrYU5Y/cancel"
}
Il payload include il request_id e fornisce URL per controllare lo stato, annullare o recuperare la risposta, semplificando il flusso di lavoro senza ulteriore sviluppo di endpoint.

Stato della richiesta

Per monitorare l’avanzamento della tua richiesta, utilizza l’endpoint fornito con il tuo ID richiesta univoco. Ciò ti consente di tenere traccia dello stato, della posizione in coda o di recuperare la risposta una volta pronta.

Utilizzo dell’endpoint

curl -X GET https://api.sunra.ai/v1/queue/requests/{request_id}/status

Risposta di esempio

Quando la tua richiesta è in coda, riceverai una risposta come questa:
{
  "status": "IN_QUEUE",
  "metrics": {},
  "queue_position": 0,
  "response_url": "https://api.sunra.ai/v1/queue/requests/pd_hvTNHJPSZj4KgtzytfTGsySf",
  "status_url": "https://api.sunra.ai/v1/queue/requests/pd_hvTNHJPSZj4KgtzytfTGsySf/status",
  "cancel_url": "https://api.sunra.ai/v1/queue/requests/pd_hvTNHJPSZj4KgtzytfTGsySf/cancel"
}

Stati possibili

La tua richiesta può trovarsi in uno dei tre stati seguenti:
  • IN_QUEUE: indica che la richiesta è in attesa di essere elaborata.
    • queue_position: mostra la tua posizione nella coda.
    • response_url: URL per recuperare la risposta una volta completata l’elaborazione.
  • IN_PROGRESS: la richiesta è attualmente in fase di elaborazione.
    • logs: log dettagliati (se abilitati) che mostrano i passaggi di elaborazione.
    • response_url: dove sarà disponibile la risposta finale.
  • COMPLETED: l’elaborazione è terminata.
    • logs: log che descrivono in dettaglio l’intero processo.
    • response_url: link diretto alla tua risposta completata.

Abilitazione dei log

I log forniscono informazioni dettagliate sull’elaborazione delle richieste. Sono disabilitati per impostazione predefinita ma possono essere abilitati con un parametro di query:
curl -X GET https://api.sunra.ai/v1/queue/requests/{request_id}/status?logs=1
Ogni voce di log include:
  • message: descrizione dell’evento.
  • level: gravità (ad esempio, INFO, ERROR).
  • source: origine del log.
  • timestamp: ora in cui è stato generato il log.

Monitoraggio in tempo reale

Per aggiornamenti continui, utilizza l’endpoint di streaming:
curl -X GET https://api.sunra.ai/v1/queue/requests/{request_id}/status/stream
Ciò fornisce aggiornamenti di stato in tempo reale in formato text/event-stream fino al completamento della richiesta.

Webhooks

Se preferisci essere notificato invece di fare polling, passa un parametro di query webhook al momento dell’invio della richiesta. Sunra eseguirà un POST con il risultato finale a quell’URL non appena la richiesta raggiunge uno stato terminale, quindi non è necessario mantenere una connessione aperta o pianificare il polling.

Abilitazione dei Webhooks

Aggiungi un parametro di query webhook codificato come URL all’endpoint di invio:
curl -X POST \
  "https://api.sunra.ai/v1/queue/black-forest-labs/flux-1.1-pro/text-to-image?webhook=https%3A%2F%2Fexample.com%2Fsunra-webhook" \
  -H "Authorization: Key $SUNRA_KEY" \
  -d '{"prompt": "Una città balneare ispirata allo Studio Ghibli con case colorate, panni stesi al vento e gatti che dormono sui davanzali."}'
Codifica l’URL del webhook come URL (es. https%3A%2F%2F...) e assicurati che Sunra possa raggiungerlo; HTTPS è fortemente consigliato. La risposta di invio rimane invariata — ricevi sempre un request_id e gli stessi URL di status/cancel/response.

Quando viene attivato il Webhook

Sunra chiama il tuo webhook solo per eventi terminali:
  • succeeded — la richiesta è stata completata e l’output è incluso nel payload.
  • failed — la richiesta è fallita e i dettagli dell’errore sono inclusi nel payload.
Gli stati intermedi (IN_QUEUE, IN_PROGRESS) non attivano un webhook. Se hai bisogno anche di aggiornamenti di avanzamento, combina il webhook con gli endpoint di streaming o polling descritti sopra.

Formato della Richiesta

Sunra invia una richiesta POST al tuo URL webhook con:
HeaderValue
Content-Typeapplication/json
User-AgentSunra-AI-Webhook/1.0
Il tuo endpoint deve rispondere con un codice di stato 2xx entro 5 secondi. Conferma rapidamente e delega il lavoro pesante a un job in background — risposte lente vengono trattate come fallimenti e attivano i tentativi.

Payload

Un evento di successo:
{
  "id": "pd_vXW7VwPN2MbTwT8bzpWrYU5Y",
  "object": "prediction",
  "model": "black-forest-labs/flux-1.1-pro",
  "model_endpoint": "text-to-image",
  "status": "succeeded",
  "input": {
    "prompt": "Una città balneare ispirata allo Studio Ghibli..."
  },
  "output": {
    "images": [
      { "url": "https://..." }
    ]
  },
  "created_at": "2026-04-28T12:00:00.000Z",
  "completed_at": "2026-04-28T12:00:08.123Z"
}
Un evento di fallimento sostituisce output con error. Il contenuto esatto di error varia a seconda del tipo di fallimento — l’esempio seguente mostra una forma comune:
{
  "id": "pd_vXW7VwPN2MbTwT8bzpWrYU5Y",
  "object": "prediction",
  "model": "black-forest-labs/flux-1.1-pro",
  "model_endpoint": "text-to-image",
  "status": "failed",
  "input": {
    "prompt": "Una città balneare ispirata allo Studio Ghibli..."
  },
  "error": {
    "code": "EXAMPLE_ERROR_CODE",
    "message": "Messaggio di errore leggibile"
  },
  "created_at": "2026-04-28T12:00:00.000Z",
  "completed_at": "2026-04-28T12:00:08.123Z"
}
CampoDescrizione
idIl request_id restituito al momento dell’invio. Usalo per deduplicare i tentativi.
objectSempre "prediction".
modelProprietario e nome del modello (es. black-forest-labs/flux-1.1-pro).
model_endpointSlug dell’endpoint (es. text-to-image).
status"succeeded" o "failed".
inputIl corpo della richiesta originale che hai inviato.
outputPresente in caso di succeeded. Lo stesso corpo di risposta restituito dall’endpoint dei risultati.
errorPresente in caso di failed. Un oggetto che descrive il fallimento; la struttura dipende dal tipo di fallimento.
created_atTimestamp ISO 8601 di creazione della richiesta.
completed_atTimestamp ISO 8601 di quando la richiesta ha raggiunto lo stato terminale.

Comportamento dei Tentativi

La consegna del webhook è almeno-una-volta. Se il tuo endpoint va in timeout (5 s) o restituisce uno stato non-2xx, Sunra riprova con backoff esponenziale — fino a 3 tentativi con ritardi a partire da 10 secondi e limitati a 30 secondi. Dopo l’ultimo tentativo, il fallimento viene registrato e non vengono effettuati ulteriori tentativi. Poiché i tentativi possono consegnare lo stesso evento più di una volta, il tuo handler dovrebbe essere idempotente — usa il campo id come chiave di deduplicazione.

Best Practice

  • Usa HTTPS e verifica che il traffico raggiunga l’endpoint atteso.
  • Rispondi 2xx immediatamente e processa il payload in modo asincrono.
  • Considera la consegna come almeno-una-volta e deduplica per id.
  • Combina i webhook con gli endpoint di polling o streaming se hai bisogno di aggiornamenti di avanzamento prima dell’evento terminale.

Annullamento delle richieste

Se la tua richiesta è ancora in coda, puoi annullarla con:
curl -X PUT https://api.sunra.ai/v1/queue/requests/{request_id}/cancel

Recupero delle risposte

Una volta che la tua richiesta è COMPLETED, recupera la risposta utilizzando:
curl -X GET https://api.sunra.ai/v1/queue/requests/{request_id}
Questo endpoint fornisce anche i log per la revisione.

Integrazione semplificata con il client Sunra

Il client Sunra automatizza il monitoraggio dello stato, semplificando lo sviluppo di app con le funzioni Sunra.

Limiti di velocità

Per garantire un utilizzo equo e la stabilità del sistema, i nostri endpoint API sono soggetti ai seguenti limiti di velocità:
Tipo di endpointLimite di velocitàLimite di burst
Invia alla coda10 richieste/secondo100 richieste/minuto
Tutti gli altri endpoint100 richieste/secondo1.800 richieste/minuto
Se si superano questi limiti, si riceverà una risposta 403 Forbidden. Si consiglia di implementare un meccanismo di tentativi con backoff esponenziale per gestire questi casi.