Felo API PlatformFelo API Platform

LLM-gateway

Een LLM-gateway met de datalaag erbij

Drie basis-URL's, één sleutel, één saldo. Chat, beeld, video en beslissingsmodellen met de SDK die je al gebruikt; zoeken, documenten en dia's op dezelfde credits — vanaf een tiende van de officiële providerprijs.

  • ⁦10⁩%

    Starttarief, tegenover de officiële API-prijs van de provider

  • ⁦5,000+⁩

    API's in dezelfde catalogus

Een gateway heeft meestal één oppervlak. Deze heeft er drie.

Ze delen je account, je sleutel en je saldo, maar beantwoorden andere vragen en staan op andere basis-URL's. Weten welke je aanroept, is het hele punt.

OppervlakBasis-URLWaarvoor
Model-APIopenapi.felo.ai/api/v1 · openapi.felo.ai/apiDirect een taal-, beeld-, video- of beslissingsmodel aanroepen
Data-APIopenapi.felo.ai/v1/betaEen genoemde data- of zoekprovider van derden aanroepen
Felo-API'sopenapi.felo.ai/v2Workflows van Felo zelf: zoeken, kantoor, extractie, kennis

Eén sleutel dekt alle drie. Een opwaardering koopt servicecredits in dollars, en de modelaanroep, de data-API-aanroep en de Felo-workflow komen uit hetzelfde saldo — geen apart account per provider.

Documentatie lezen

Zes endpoints, geen één

Alles onder /api/v1 is een modelaanroep, maar het modeltype bepaalt welk endpoint kan antwoorden — en elk endpoint levert zijn eigen formaat.

EndpointProtocolLevert
POST /api/v1/chat/completionsOpenAI Chat CompletionsStream of een antwoord
POST /api/v1/responsesOpenAI ResponsesStream of een antwoord
POST /api/v1/messagesAnthropic MessagesStream of een antwoord
POST /api/v1/images/generationsOpenAI-beeldwrapperEen task_id om te pollen
POST /api/v1/videos/generationsOpenAI-videowrapperEen task_id om te pollen
POST /api/v1/decisionsFelo-beslissingsschemaGetypeerde antwoorden, geen stream

De drie chat-oppervlakken zijn eigen implementaties, geen vertaallaag: elk stuurt zijn events in zijn eigen protocol, dus je parseert de stream precies zoals nu.

Kies het endpoint op modeltype, niet op goed geluk

Elk model in de catalogus heeft een model_kind, en dat type bepaalt welk endpoint het kan aanroepen. Ontdekken is gratis: het leest de lokale catalogus.

# discover before you call — free, reads the catalog
GET /api/v1/models   # every kind, with channels and rates
GET /api/v1/models/{model_id}  # one model, in detail
GET /api/v1/videos/models     # video_generation only
GET /api/v1/decisions/models  # decisions only
model_kindEndpoint
chatResponses, Chat Completions of Messages, afhankelijk van wat het model ondersteunt
image_generationPOST /api/v1/images/generations
video_generationPOST /api/v1/videos/generations
decisionsPOST /api/v1/decisions

Filter met ?provider= om één provider te zien, of met ?exclude_video_and_decisions=true om alles behalve chat en beeld te verbergen. In de catalogus staan is geen belofte: een videomodel antwoordt niet op een chatverzoek, en de API geeft model_kind_mismatch.

Standaardroute, of een header om de provider te kiezen

Een model kan via meerdere upstream-kanalen worden geleverd, elk met zijn eigen provider en gepubliceerde tarief. Zonder de header kiest het platform er één; met X-Felo-Channel kies jij.

# first channel only — no automatic fallback
X-Felo-Channel: claude-cc
X-Felo-Channel: claude-cc,anthropic  # ordered selection, not a retry list
  • De waarde is een geordende lijst openbare kanaalcodes uit channels[].code van het model, gevalideerd in de volgorde die je opgeeft.
  • Alleen de providergroep van het eerste kanaal wordt aangesproken, en je betaalt het tarief van dat kanaal.
  • Er is geen automatische omschakeling. Een kanaallijst is een keuze, geen retrybeleid — faalt een provider, stuur dan opnieuw vanuit je applicatie met een ander kanaal.

X-Felo-Channel werkt op de zes generatie-endpoints hierboven. Het geldt niet voor de data-API of de Felo-API's: die gaan naar de provider die je in het verzoek noemt.

Documentatie lezen

Wat een aanroep echt kost

Modelaanroepen worden per token afgerekend — invoer, uitvoer en cache — met de kortingsfactor van het kanaal erop. Tarieven staan per miljoen tokens voor de leesbaarheid, maar de afrekening gebruikt de tokennauwkeurigheid van de actuele prijssnapshot: een kort verzoek wordt nooit naar een miljoen afgerond.

  • Cachingtarieven gelden alleen als het protocolantwoord cachegebruik meldt; een model dat dat niet meldt, rekent alles tegen het invoertarief.
  • Webzoekopdrachten die de modelservice zelf uitvoert en meldt, kosten $0.01 per zoekopdracht.
  • Sommige modellen rekenen in staffels op promptgrootte: Claude Haiku 5.5 kost $0.10 invoer en $0.50 uitvoer per miljoen tokens tot een prompt van 100K tokens, en daarboven $0.50 en $2.50 voor het hele verzoek.
  • De eerste opwaardering is $1. Geen abonnement, geen prijs per gebruiker, geen minimale afname — een sleutel die niets doet, kost niets.

Aanroepen van de data-API en Felo-workflows komen uit hetzelfde saldo, elk volgens hun eigen gepubliceerde basis: per geslaagd verzoek, per teruggegeven item of naar werkelijk gebruik.

Tarieven en credits

Twee limieten die op elkaar lijken en het niet zijn

Zonder saldo krijg je 402 INSUFFICIENT_CREDITS. Te snel bellen geeft 429 RATE_LIMITED. Wachten lost het tweede op en het eerste nooit.

StatusCodeWat te doen
401UNAUTHORIZEDSleutel corrigeren of opnieuw genereren
402INSUFFICIENT_CREDITSOpwaarderen in de console-facturatie en opnieuw sturen
404afhankelijk van het endpointModel-ID, taak-ID of route controleren
429RATE_LIMITEDRetry-After afwachten en opnieuw proberen
5xxCHAT_FAILED, SERVICE_UNAVAILABLEOpnieuw proberen met exponentiële backoff en jitter

Vandaag documenteert alleen /v2/chat harde limieten. Modelaanroepen kunnen ook upstream worden beperkt, en dat verschijnt als een 429 — lees X-RateLimit-* en Retry-After in plaats van getallen hard te coderen. Elk antwoord draagt een request_id, en de X-Request-Id die je meestuurt komt ongewijzigd terug, zodat jouw logs en de onze op elkaar aansluiten.

Documentatie lezen

Beeld en video worden op de achtergrond afgerond

Beide generatie-endpoints geven een task_id in plaats van een resultaat. Indienen, pollen, ophalen — en let op: zodra de taak bestaat, komen de meeste fouten als 200 met een eindstatus, niet als HTTP-fout.

# submit, then poll the task
POST /api/v1/images/generations       → task_id
GET  /api/v1/images/generations/{id}  → status, result
POST /api/v1/videos/generations       → task_id
GET  /api/v1/videos/generations/{id}  → status, result

Lees de status vóór het resultaat: failed en interrupted zijn ook antwoorden, en error.message zegt waarom. Een 402 bij het indienen betekent dat de taak nooit is aangemaakt. SuperAgent werkt anders: die geeft een stream_key en duwt events via SSE, dus er valt niets te pollen.

Documentatie lezen

Verander de basis-URL, houd je client

Beide SDK's werken ongewijzigd zodra de basis-URL hierheen wijst. npx feloapi-cli setup schrijft dezelfde configuratie voor Claude Code en Codex.

# OpenAI SDK
base_url = "https://openapi.felo.ai/api/v1"

# Anthropic SDK — one level up; the SDK appends /v1/messages
base_url = "https://openapi.felo.ai/api"

# pin a provider (optional)
default_headers = {"X-Felo-Channel": "claude-cc"}

Model-ID's zijn niet bij elke provider hetzelfde. Kies eerst in de catalogus en verander dan de basis-URL, anders antwoordt de eerste aanroep met 404.

De helft die een gateway meestal aan jou laat

Een LLM-gateway routeert modelaanroepen. Hier bereikt dezelfde sleutel ook een catalogus met ⁦5,000+⁩ API's — dus de zoekstap van je agent, de dia's die hij maakt en het document dat hij herleest, worden van dezelfde credits betaald, niet bij drie providers extra.

  • Search
  • PPT Task
  • SuperAgent
  • Web Fetch
  • X Search
  • Mindmap
  • Landing Page Task
  • LiveDoc
  • YouTube Subtitling

Aanroepen van de data-API gaan naar genoemde providers onder /v1/beta — Tavily, Exa, Apollo en de rest van de catalogus — elk volgens hun eigen gepubliceerde basis.

Alle API's

Waar de gateway ophoudt

  • Geen automatische omschakeling tussen kanalen — retrylogica hoort in je applicatie, met opzet.
  • In de catalogus staan garandeert geen compatibiliteit; elk modeltype heeft één aanroepoppervlak.
  • Er is geen gedocumenteerde platformlimiet voor modelaanroepen, maar die van de upstream-provider geldt altijd.
  • Credits zijn vooruitbetaald, niet terug te betalen en niet op te nemen — waardeer op wat je denkt te verbruiken.

Zes vragen over de LLM-gateway

Wat is een LLM-gateway?

Een ingang vóór veel modelproviders, zodat je code met één basis-URL, één sleutel en één saldo praat in plaats van met een dozijn SDK's. Een AI-gateway doet hetzelfde; deze verkoopt daarnaast de data-API's die een agent nodig heeft.

Kan ik mijn OpenAI- of Anthropic-SDK houden?

Ja. Chat Completions en Responses hebben de vorm van OpenAI en Messages is native. De basis-URL's zijn https://openapi.felo.ai/api/v1 en https://openapi.felo.ai/api — een niveau hoger, omdat die SDK zelf /v1/messages toevoegt.

Hoe weet ik welk model ik moet aanroepen?

GET /api/v1/models toont alle typen met hun kanalen en tarieven; video- en beslissingsmodellen hebben eigen lijsten. Lees het model_kind en roep het bijbehorende endpoint aan. In de lijst staan garandeert niet dat elk endpoint dat model aanvaardt.

Is er omschakeling als een provider uitvalt?

Nee, en dat is bewust. Een kanaallijst is een keuze, geen retrybeleid: alleen de eerste wordt aangesproken. Omschakelen hoort in je applicatie, waar je de fout, het budget en de fallback ziet die je echt wilt.

Wat kost het?

Elk model heeft een Felo-tarief dat begint op een tiende van de officiële providerprijs, en het kanaal dat je vastzet bepaalt het tarief dat je betaalt. Vooruitbetaald, per aanroep, eerste opwaardering $1, geen abonnement.

Kan ik ook beeld, video en data-API's aanroepen?

Ja. Eén sleutel bereikt chat-, beeld-, video- en beslissingsmodellen en de catalogus van ⁦5,000+⁩ API's achter /v1/beta — alles wordt van dezelfde credits betaald.

Probeer het met één aanroep

Maak een sleutel, waardeer op en wijs de SDK die je al gebruikt naar een basis-URL.