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
| Soort | Indienen | Pollen |
|---|---|---|
| Felo-workflows | POST /v2/ppts, POST /v2/landing_page, POST /v2/mindmap | GET /v2/tasks/{task_id}/status |
| Modelgeneratie | POST /api/v1/videos/generations, POST /api/v1/images/generations | GET /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
- Indienen. Verstuur de parameters van het model of de workflow. Een geslaagde indiening retourneert een
task_iden een eerste status. - Pollen. Lees het taak-endpoint met een vaste tussenpoos. Neem de tussenpoos en een maximale wachttijd op in je code.
- 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:
| Status | Betekenis |
|---|---|
RUNNING | Wordt nog verwerkt |
COMPLETED | Succesvol afgerond |
FAILED | Definitieve fout; lees error_message |
PENDING | Definitief in de historische respons; lees error_message |
EXPIRED | Definitief; de taak is niet meer beschikbaar |
CANCELED | Definitief; 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
| Taak | Resultaat |
|---|---|
| PPT | GET /v2/tasks/{task_id}/historical retourneert ppt_url, ppt_biz_id en live_doc_url indien beschikbaar |
| Landingpagina | De historische respons retourneert de uitvoer van de pagina en live_doc_url indien beschikbaar |
| Video / beeld | De pollrespons retourneert outputs; bij succes zijn de vermeldingen ondertekende media-URL's die anoniem kunnen worden gedownload. Zie Beeldgeneratie voor vervaltijden en downloaddetails |
| PPTX-export | De 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
RUNNINGis. 402betekent onvoldoende service-tegoed.429betekent 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.