Felo API PlatformFelo API Platform

Przewodniki

Zadania asynchroniczne

Zlecaj długotrwałe zadania, odpytuj o status, obsługuj stany końcowe i pobieraj wyniki.

Niektóre operacje Felo natychmiast zwracają task_id i kończą się w tle. Wzorzec jest wszędzie taki sam: wyślij, odpytuj, a następnie pobierz wynik.

Dwie rodziny zadań

RodzinaWysyłanieOdpytywanie
Przepływy FeloPOST /v2/ppts, POST /v2/landing_page, POST /v2/mindmapGET /v2/tasks/{task_id}/status
Generowanie modeliPOST /api/v1/videos/generations, POST /api/v1/images/generationsGET /api/v1/videos/generations/{task_id}, GET /api/v1/images/generations/{task_id}

Eksport PPTX to osobna operacja asynchroniczna: POST /v2/ppts/{ppt_business_id}/export, a następnie GET /v2/ppts/{ppt_business_id}/export.

SuperAgent nie jest API do odpytywania. Zwraca stream_key i używa SSE; zobacz Dokumentacja SuperAgent.

Cykl życia

  1. Wyślij. Wyślij parametry modelu lub przepływu pracy. Skuteczne wysłanie zwraca task_id i początkowy stan.
  2. Odpytuj. Odczytuj endpoint zadania w regularnych odstępach. W kodzie ustal interwał i maksymalny czas oczekiwania.
  3. Zakończ. Przy powodzeniu odczytaj adresy URL wyników lub pola wyjściowe. Przy niepowodzeniu odczytaj błąd i zdecyduj, czy wysłać zadanie ponownie.

Wartości stanu

Zadania przepływów Felo używają wartości wielkimi literami:

StanZnaczenie
RUNNINGWciąż przetwarzane
COMPLETEDZakończone powodzeniem
FAILEDNiepowodzenie terminalne; odczytaj error_message
PENDINGStan terminalny w odpowiedzi historycznej; odczytaj error_message
EXPIREDStan terminalny; zadanie nie jest już dostępne
CANCELEDStan terminalny; zadanie zostało anulowane

Zadania generowania modeli używają wartości małymi literami: queued, running, succeeded, failed i interrupted. Nieudane zadanie może zawierać obiekt error z polami message i type.

Wraz z rozwojem backendu mogą pojawiać się nieznane wartości stanu. Traktuj nieznaną wartość jako nieterminalną, chyba że dokumentacja mówi inaczej.

Odpytywanie

  • Zadania przepływów Felo: odpytuj co 2–5 sekund.
  • Generowanie wideo: odpytuj co 5–10 sekund.
  • Generowanie obrazów: zacznij od 2–5 sekund i zwiększaj odstępy dla długotrwałych zadań.
  • Zatrzymaj się przy stanie terminalnym, wybranym przez siebie limicie czasu lub po maksymalnej liczbie prób.
  • Dodaj losowe odchylenie, gdy wielu klientów odpytuje jednocześnie.

Prosta pętla w 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");
}

Pobieranie wyników

ZadanieWynik
PPTGET /v2/tasks/{task_id}/historical zwraca ppt_url, ppt_biz_id i live_doc_url, gdy są dostępne
Strona docelowaOdpowiedź historyczna zwraca wynik strony i live_doc_url, gdy jest dostępny
Wideo / obrazOdpowiedź odpytania zwraca outputs; przy powodzeniu wpisy to podpisane adresy URL multimediów, które można pobrać anonimowo. Informacje o wygaśnięciu i pobieraniu znajdziesz w Generowaniu obrazów
Eksport PPTXOdpowiedź odpytania zwraca download_url i expires_at tylko wtedy, gdy status ma wartość COMPLETED

Podpisany adres URL pobierania PPTX wygasa 30 minut po wydaniu. Wywołaj ponownie endpoint GET, aby uzyskać nowy adres URL; nie generuje to ponownie pliku.

Obsługa niepowodzeń

  • Przed ponowną próbą odczytaj pole błędu zadania. Niektóre niepowodzenia wynikają z żądania i będą się powtarzać.
  • Nie wysyłaj zadania ponownie na ślepo przy każdym przekroczeniu limitu czasu; najpierw sprawdź, czy zadanie nadal ma stan RUNNING.
  • 402 oznacza niewystarczające kredyty. 429 oznacza limit szybkości. Ponów próbę dopiero po usunięciu przyczyny.
  • Pola wywołań zwrotnych przy generowaniu wideo i obrazów są obecnie ignorowane. Odpytuj endpoint zadania zamiast czekać na webhook.

Powiązane