Felo API PlatformFelo API Platform

Guide

Attività asincrone

Invia attività di lunga durata, monitora lo stato, gestisci gli stati finali e recupera i risultati.

Alcune operazioni Felo restituiscono subito un task_id e terminano in background. Lo schema è lo stesso ovunque: invia, interroga, poi recupera il risultato.

Due famiglie di attività

FamigliaInvioInterrogazione
Workflow FeloPOST /v2/ppts, POST /v2/landing_page, POST /v2/mindmapGET /v2/tasks/{task_id}/status
Generazione di modelliPOST /api/v1/videos/generations, POST /api/v1/images/generationsGET /api/v1/videos/generations/{task_id}, GET /api/v1/images/generations/{task_id}

L'export PPTX è un'operazione asincrona separata: POST /v2/ppts/{ppt_business_id}/export, poi GET /v2/ppts/{ppt_business_id}/export.

SuperAgent non è un'API di polling. Restituisce una stream_key e usa SSE; vedi il riferimento SuperAgent.

Ciclo di vita

  1. Invia. Invia i parametri del modello o del workflow. Un invio riuscito restituisce task_id e uno stato iniziale.
  2. Interroga. Leggi l'endpoint dell'attività a intervalli regolari. Mantieni nel codice l'intervallo e un tempo massimo di attesa.
  3. Concludi. In caso di successo, leggi gli URL dei risultati o i campi di output. In caso di errore, leggi l'errore e decidi se inviare di nuovo.

Valori di stato

Le attività dei workflow Felo usano valori in maiuscolo:

StatoSignificato
RUNNINGAncora in elaborazione
COMPLETEDCompletata con successo
FAILEDErrore terminale; leggi error_message
PENDINGTerminale nella risposta storica; leggi error_message
EXPIREDTerminale; l'attività non è più disponibile
CANCELEDTerminale; l'attività è stata annullata

Le attività di generazione dei modelli usano valori in minuscolo: queued, running, succeeded, failed e interrupted. Un'attività non riuscita può includere un oggetto error con message e type.

Con l'evoluzione del backend possono comparire valori di stato sconosciuti. Tratta un valore sconosciuto come non terminale, salvo diversa indicazione nella documentazione.

Polling

  • Attività dei workflow Felo: interroga ogni 2–5 secondi.
  • Generazione di video: interroga ogni 5–10 secondi.
  • Generazione di immagini: parti da 2–5 secondi e aumenta l'intervallo per le attività lunghe.
  • Fermati su uno stato terminale, al timeout che hai scelto o dopo un numero massimo di tentativi.
  • Aggiungi jitter quando molti client interrogano contemporaneamente.

Un semplice ciclo in Node.js:

async function pollStatus(taskId, { timeoutMs = 10 * 60 * 1000 } = {}) {
  const deadline = Date.now() + timeoutMs;
  while (Date.now() < deadline) {
    const response = await fetch(`https://openapi.felo.ai/v2/tasks/${taskId}/status`, {
      headers: { Authorization: `Bearer ${process.env.FELO_API_KEY}` },
    });
    if (!response.ok) throw new Error(`status ${response.status}`);
    const payload = await response.json();
    const status = payload.data?.status;
    if (status === "COMPLETED") return payload.data;
    if (["FAILED", "PENDING", "EXPIRED", "CANCELED"].includes(status)) {
      throw new Error(payload.data?.error_message || status);
    }
    await new Promise((resolve) => setTimeout(resolve, 3000));
  }
  throw new Error("task timed out");
}

Recuperare i risultati

AttivitàRisultato
PPTGET /v2/tasks/{task_id}/historical restituisce ppt_url, ppt_biz_id e live_doc_url quando disponibili
Landing pageLa risposta storica restituisce l'output della pagina e live_doc_url quando disponibile
Video / immagineLa risposta di polling restituisce outputs; quando l'attività è riuscita, le voci sono URL firmati dei contenuti multimediali scaricabili in modo anonimo. Vedi Generazione di immagini per scadenza e download
Export PPTXLa risposta di polling restituisce download_url e expires_at solo quando status è COMPLETED

L'URL di download firmato del PPTX scade 30 minuti dopo l'emissione. Chiama di nuovo l'endpoint GET per ottenere un URL aggiornato; questo non rigenera il file.

Gestione degli errori

  • Leggi il campo di errore dell'attività prima di riprovare. Alcuni errori dipendono dalla richiesta e si ripeteranno.
  • Non inviare di nuovo alla cieca a ogni timeout; controlla prima se l'attività è ancora RUNNING.
  • 402 significa crediti insufficienti. 429 significa rate limit. Riprova solo dopo che la condizione è risolta.
  • I campi di callback nella generazione di video e immagini al momento sono ignorati. Interroga l'endpoint dell'attività invece di attendere un webhook.

Correlati