Felo API PlatformFelo API Platform

Handleidingen

Asynchrone taken

Dien langdurige jobs in, poll de status, behandel eindstatussen en haal resultaten op.

Sommige Felo-bewerkingen retourneren direct een task_id en ronden op de achtergrond af. Het patroon is overal hetzelfde: indienen, pollen en daarna het resultaat ophalen.

Twee soorten taken

SoortIndienenPollen
Felo-workflowsPOST /v2/ppts, POST /v2/landing_page, POST /v2/mindmapGET /v2/tasks/{task_id}/status
ModelgeneratiePOST /api/v1/videos/generations, POST /api/v1/images/generationsGET /api/v1/videos/generations/{task_id}, GET /api/v1/images/generations/{task_id}

PPTX-export is een aparte asynchrone bewerking: POST /v2/ppts/{ppt_business_id}/export, daarna GET /v2/ppts/{ppt_business_id}/export.

SuperAgent is geen polling-API. De API retourneert een stream_key en gebruikt SSE; zie de SuperAgent-referentie.

Levenscyclus

  1. Indienen. Verstuur de parameters van het model of de workflow. Een geslaagde indiening retourneert een task_id en een eerste status.
  2. Pollen. Lees het taak-endpoint met een vaste tussenpoos. Neem de tussenpoos en een maximale wachttijd op in je code.
  3. Afronden. Lees bij succes de resultaat-URL's of uitvoervelden. Lees bij een fout de foutmelding en beslis of je opnieuw wilt indienen.

Statuswaarden

Felo-workflowtaken gebruiken waarden in hoofdletters:

StatusBetekenis
RUNNINGWordt nog verwerkt
COMPLETEDSuccesvol afgerond
FAILEDDefinitieve fout; lees error_message
PENDINGDefinitief in de historische respons; lees error_message
EXPIREDDefinitief; de taak is niet meer beschikbaar
CANCELEDDefinitief; de taak is geannuleerd

Taken voor modelgeneratie gebruiken waarden in kleine letters: queued, running, succeeded, failed en interrupted. Een mislukte taak kan een error-object met message en type bevatten.

Onbekende statuswaarden kunnen opduiken naarmate de backend zich ontwikkelt. Behandel een onbekende waarde als niet-definitief, tenzij de documentatie anders zegt.

Polling

  • Felo-workflowtaken: poll elke 2–5 seconden.
  • Videogeneratie: poll elke 5–10 seconden.
  • Beeldgeneratie: begin met 2–5 seconden en verhoog de tussenpoos bij langdurige taken.
  • Stop bij een definitieve status, bij een time-out die je zelf kiest of na een maximumaantal pogingen.
  • Voeg jitter toe wanneer veel clients tegelijk pollen.

Een eenvoudige Node.js-lus:

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");
}

Resultaten ophalen

TaakResultaat
PPTGET /v2/tasks/{task_id}/historical retourneert ppt_url, ppt_biz_id en live_doc_url indien beschikbaar
LandingpaginaDe historische respons retourneert de uitvoer van de pagina en live_doc_url indien beschikbaar
Video / beeldDe pollrespons retourneert outputs; bij succes zijn de vermeldingen ondertekende media-URL's die anoniem kunnen worden gedownload. Zie Beeldgeneratie voor vervaltijden en downloaddetails
PPTX-exportDe pollrespons retourneert download_url en expires_at alleen wanneer status COMPLETED is

De ondertekende download-URL voor PPTX verloopt 30 minuten na afgifte. Roep het GET-endpoint opnieuw aan voor een nieuwe URL; het bestand wordt daarbij niet opnieuw gegenereerd.

Omgaan met fouten

  • Lees het foutveld van de taak voordat je het opnieuw probeert. Sommige fouten worden door het verzoek veroorzaakt en zullen zich herhalen.
  • Dien niet blind opnieuw in bij elke time-out; controleer eerst of de taak nog RUNNING is.
  • 402 betekent onvoldoende service-tegoed. 429 betekent een rate limit. Probeer het pas opnieuw als de oorzaak is opgelost.
  • Callbackvelden bij video- en beeldgeneratie worden momenteel genegeerd. Poll het taak-endpoint in plaats van op een webhook te wachten.

Gerelateerd