Ga naar inhoud
Flixy API · v1

API-documentatie

Alles wat je nodig hebt om de AI van Flixy aan je product toe te voegen. Basis-URL: https://flixy.studio/v1

REST · JSONBearer-sleutelsAsynchrone jobsOndertekende webhooks18 talen

Inleiding

Met de Flixy API kan je software de functies van Flixy Studio gebruiken: complete websites maken op basis van een beschrijving, ze bewerken en vertalen, website-inhoud schrijven, menukaarten, catalogi en pdf’s lezen, en afbeeldingen en logo’s maken. Je betaalt alleen voor geslaagde calls, uit een prepaid tegoed.

Lange taken (een website maken, bewerken of vertalen) worden uitgevoerd als jobs: de API antwoordt direct en jij volgt de job of ontvangt een webhook. Inhoud, documenten lezen en afbeeldingen antwoorden direct, meestal binnen enkele seconden.

Begin in je ontwikkelaarsruimte: er wordt een gratis testsleutel aangemaakt zodra je die opent.

Ontwikkelaarsconsole

Sleutels, tegoed, opwaarderingen, webhooks en calllogboeken beheer je in de ontwikkelaarsconsole op dev.flixy.studio.

  • Een apart ontwikkelaarsaccount. Net als bij andere AI-platforms staat je ontwikkelaarsaccount los van je Flixy Studio-account: het heeft een eigen registratie, aanmelding en sessie. Uitloggen bij het ene logt je nooit uit bij het andere. Je kunt voor beide hetzelfde e-mailadres gebruiken.
  • Gekoppelde organisatie. Gebruik je ook Flixy Studio, dan kun je je organisatie aan je ontwikkelaarsaccount koppelen, zodat de API aan de websites ervan kan werken. Zie Gekoppelde organisatie.
  • Accountbeveiliging. Verificatie in twee stappen, actieve sessies en gegevensexport zijn beschikbaar in de console, onder Account.

Authenticatie

Stuur je sleutel mee in de header Authorization van elk verzoek. Sleutels beginnen met fx_live_ of fx_test_.

Authorization: Bearer fx_live_8sJ2…
Je sleutel is geheim. Roep de API alleen aan vanaf je server: verzoeken vanuit een webbrowser worden geweigerd, zodat een sleutel nooit in een webpagina of een mobiele app terechtkomt.

Elke sleutel heeft rechten (scopes). Een call zonder de juiste scope geeft 403 missing_scope terug.

ParameterTypeBeschrijving
sites:readscopeWebsites en hun HTML lezen.
sites:writescopeWebsites maken, bewerken en vertalen.
content:writescopeWebsite-inhoud schrijven.
extract:writescopeAfbeeldingen en pdf-documenten lezen.
images:writescopeAfbeeldingen en logo’s maken.
account:readscopeHet tegoed en het gebruik lezen.

Test- en livesleutels

  • Testsleutels (fx_test_…) zijn gratis. Ze geven realistische voorbeeldantwoorden zonder AI te gebruiken, zodat je je hele integratie kunt bouwen en testen. Websitejobs zijn na enkele seconden voltooid met een voorbeeldwebsite.
  • Livesleutels (fx_live_…) geven echte resultaten en worden van je tegoed afgeschreven.

Elk antwoord bevat de header Flixy-Mode: test of Flixy-Mode: live.

Verzoeken en antwoorden

Stuur JSON-bodies met Content-Type: application/json (maximaal 16 MB). Antwoorden zijn in JSON. Datums gebruiken ISO 8601 in UTC. Elk antwoord heeft een header X-Request-Id: geef deze door aan onze support als je hulp nodig hebt bij een call.

Stel Accept-Language in om foutmeldingen in je eigen taal te ontvangen (fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja; standaard Engels).

Fouten

Fouten gebruiken standaard HTTP-statuscodes en hebben altijd dezelfde vorm:

{
  "error": {
    "type": "billing_error",
    "code": "insufficient_balance",
    "message": "Insufficient balance: top up your developer account…",
    "request_id": "req_5c1f0a9e2b7d4c11"
  }
}
StatusTypeBetekenis
400invalid_request_errorOngeldige JSON of header.
401authentication_errorOntbrekende, ongeldige of verwijderde sleutel.
402billing_errorOnvoldoende tegoed, maandlimiet of daglimiet van de sleutel bereikt.
403permission_errorOntbrekende scope, IP-adres niet toegestaan, account opgeschort of call vanuit een browser.
404not_found_errorOnbekende website, job of endpoint.
409conflict_errorEr loopt al een job op deze website.
422invalid_request_errorOngeldige parameter, of verzoek geweigerd door het gebruiksbeleid (off_topic, content_policy). Niet in rekening gebracht.
429rate_limit_errorTe veel verzoeken of gelijktijdige jobs. Wacht de tijd af die in Retry-After staat.
5xxapi_errorTijdelijk probleem aan onze kant. Probeer het opnieuw met dezelfde idempotentiesleutel. Niet in rekening gebracht.

Rate limits

  • 60 verzoeken per minuut per sleutel (header X-RateLimit-Limit).
  • 3 websitejobs tegelijk per account. Calls voor inhoud, documenten en afbeeldingen vallen niet onder deze limiet.
  • Wanneer een limiet is bereikt, antwoordt de API met 429 en een header Retry-After in seconden.

Meer nodig? Schrijf naar contact@flixy.studio met je use case.

Idempotentie

Netwerkfouten komen voor. Voeg een header Idempotency-Key (8 tot 100 tekens, bijvoorbeeld je eigen order-ID) toe aan elke POST: als je hetzelfde verzoek binnen 24 uur opnieuw verstuurt, geeft de API het eerste antwoord terug — met de header Idempotent-Replayed: true — en wordt het werk nooit twee keer uitgevoerd of in rekening gebracht.

Jobs

Een website maken, bewerken en vertalen duurt ongeveer 30 seconden tot 3 minuten. Deze endpoints antwoorden 202 Accepted met een job. Volg die elke 5 seconden of wacht op de job.succeeded / job.failed webhook.

GET/v1/jobs/{id}
GET/v1/jobs?limit=20
{
  "id": "job_69023cfbb08a8130d8f6",
  "object": "job",
  "type": "site",
  "status": "succeeded",
  "mode": "live",
  "site_id": "691589621",
  "price": 0.72,
  "currency": "EUR",
  "created_at": "2026-11-11T09:45:01Z",
  "finished_at": "2026-11-11T09:46:35Z",
  "result": { "id": "691589621", "object": "site", "status": "ready", "pages": ["index.html", "menu.html"] }
}

status is queued, running, succeeded of failed. Een mislukte job wordt nooit in rekening gebracht en de bijbehorende error legt uit waarom.

Een website maken

POST/v1/sites

Maakt een complete website op basis van een beschrijving. Scope: sites:write.

ParameterTypeBeschrijving
promptverplichtstringBeschrijving van het bedrijf en de website (12 tot 4000 tekens). Hoe preciezer, hoe beter.
languagestringTaal van de website: fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja.
structurestringonepage of multipage. Standaard afgeleid uit de prompt.
qualitystringfast, standard (standaard) of complete.
featuresstring[]Op te nemen secties: contact_form, testimonials, faq, map, whatsapp, shop, booking, gallery, newsletter, blog, pricing.
businessobjectBekende gegevens: name, slogan, phone, email, address, city, hours. Nooit verzonnen door de AI.
destinationstringdeveloper (standaard): de website hoort bij je ontwikkelaarsaccount. organization: de website wordt direct aangemaakt in je gekoppelde Flixy Studio-organisatie.
curl https://flixy.studio/v1/sites \
  -H "Authorization: Bearer $FLIXY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1042" \
  -d '{
    "prompt": "Website for an artisan bakery in Lyon: sourdough breads, pastries, online pre-orders",
    "language": "fr",
    "structure": "multipage",
    "features": ["contact_form", "map", "shop"],
    "business": { "name": "Boulangerie du Parc", "city": "Lyon", "phone": "+33 4 00 00 00 00" }
  }'

Een website ophalen

GET/v1/sites/{id}?include=html
GET/v1/sites?limit=20

Geeft de website, de status en de pagina’s terug. Voeg include=html toe om de volledige HTML van elke pagina te ontvangen (afbeeldingen worden gehost door Flixy). Scope: sites:read.

{
  "id": "691589621",
  "object": "site",
  "name": "Boulangerie du Parc",
  "status": "ready",
  "language": "fr",
  "pages": ["index.html", "menu.html", "contact.html"],
  "owner": "developer",
  "html": { "index.html": "<!doctype html>…" }
}

Voeg owner=developer of owner=organization toe aan de lijst om op eigenaar te filteren. Websites van een gekoppelde organisatie geven ook dashboard_url en editor_url terug, om ze in Flixy Studio te openen.

Een website bewerken

POST/v1/sites/{id}/edits

Voert een wijziging door die in gewone taal is beschreven, zoals in de Flixy-editor. Elke wijziging maakt een nieuwe versie aan. Scope: sites:write.

ParameterTypeBeschrijving
instructionverplichtstringDe door te voeren wijziging (4 tot 3000 tekens), bijv. “Voeg een prijspagina met drie aanbiedingen toe” of “Gebruik een donkergroen thema”.
curl https://flixy.studio/v1/sites/691589621/edits \
  -H "Authorization: Bearer $FLIXY_API_KEY" -H "Content-Type: application/json" \
  -d '{"instruction": "Add an opening hours section: Tuesday to Saturday, 7am to 7pm"}'

Een website vertalen

POST/v1/sites/{id}/translations

Vertaalt elke pagina van de website — navigatie, knoppen, formulieren, afbeeldingsbeschrijvingen, titel en beschrijving voor zoekmachines — met behoud van ontwerp, afbeeldingen, links, prijzen en contactgegevens. Scope: sites:write.

ParameterTypeBeschrijving
languageverplichtstringDoeltaal: fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja.

Webteksten schrijven

POST/v1/content

Schrijft inhoud die bedoeld is om op een website te publiceren of door een bedrijf naar zijn klanten te sturen. Antwoordt direct. Scope: content:write.

ParameterTypeBeschrijving
typeverplichtstringpage_text, blog_article, product_description, service_description, about_us, seo_meta, faq, review_reply, newsletter, social_post.
topicverplichtstringOnderwerp van de tekst (maximaal 1500 tekens).
languagestringTaal: fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja (standaard en).
factsstringTe gebruiken gegevens: prijzen, kenmerken, ingrediënten, openingstijden… (maximaal 4000 tekens). De AI verzint nooit gegevens.
businessstringKorte beschrijving van het bedrijf.
tonestringBijvoorbeeld warm, premium, playful.
lengthstringshort, medium (standaard) of long.
keywordsstringZoekwoorden die op natuurlijke wijze moeten worden verwerkt.
curl https://flixy.studio/v1/content \
  -H "Authorization: Bearer $FLIXY_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "type": "product_description",
    "language": "it",
    "topic": "Pizza Margherita cooked in a wood-fired oven",
    "facts": "San Marzano tomatoes, fior di latte mozzarella, fresh basil, 48-hour dough",
    "length": "short"
  }'

Het veld html bevat alleen veilige teksttags (koppen, alinea’s, lijsten, links), nooit scripts of stijlen.

Een document lezen

POST/v1/extract

Leest een menukaart, een catalogus, een prijslijst, een visitekaartje, een flyer of een brochure en geeft gestructureerde inhoud terug die klaar is voor een website. Alleen wat er echt staat, wordt teruggegeven. Scope: extract:write.

ParameterTypeBeschrijving
filestringHet bestand gecodeerd in base64 (JPEG, PNG, WebP, GIF of PDF, maximaal 10 MB).
urlstringOf een openbaar https-adres van het bestand.
kindstringauto (standaard), menu, catalog, business_card, brochure, price_list, flyer.
{
  "object": "extract",
  "kind": "menu",
  "business": { "name": "Trattoria Sole", "phone": "…", "hours": "…" },
  "language": "es",
  "sections": [
    { "title": "Pizzas", "items": [ { "name": "Margherita", "description": "…", "price": "11.50" } ] }
  ],
  "colors": ["#b5121b"],
  "usage": { "price": 0.03, "currency": "EUR", "mode": "live" }
}
Gescande pdf’s zonder tekst kunnen niet worden gelezen: stuur in plaats daarvan een afbeelding van elke pagina.

Een afbeelding maken

POST/v1/images

Maakt een foto, een illustratie of een logo voor een website. De afbeelding wordt gehost door Flixy en bevat in het bestand de standaard IPTC-markering voor door AI gegenereerde media. Scope: images:write.

ParameterTypeBeschrijving
promptverplichtstringBeschrijving van de afbeelding (4 tot 800 tekens).
kindstringphoto (standaard), illustration of logo.
aspectstring16:9 (standaard), 1:1, 4:3, 3:4, 9:16.
businessstringBedrijfscontext, zodat de stijl aansluit.
brandstringMerknaam voor een logo.

Tegoed en account

GET/v1/account

Geeft je tegoed terug, het bedrag dat is gereserveerd voor lopende jobs, het beschikbare bedrag, je maandelijkse uitgaven en de gebruikte sleutel. Scope: account:read.

{
  "object": "account",
  "balance": 48.92,
  "available": 45.92,
  "reserved": 3.00,
  "currency": "EUR",
  "spent_this_month": 12.40,
  "key": { "name": "Production server", "mode": "live", "scopes": ["sites:write", "sites:read"] },
  "limits": { "requests_per_minute": 60, "concurrent_site_jobs": 3 }
}

Gebruik en prijzen

GET/v1/usage?from=2026-11-01&to=2026-11-30
GET/v1/pricing

/v1/usage geeft je calls en bedragen per bewerking over een periode terug. /v1/pricing geeft de huidige typische en minimumprijzen in je valuta terug.

Elke geslaagde call kost de werkelijke kosten van het AI-werk dat ervoor nodig was, vermenigvuldigd met de marge van Flixy, met een minimum per bewerking. Voordat een websitejob start, wordt een geschat bedrag op je tegoed gereserveerd; de exacte prijs wordt aan het einde in rekening gebracht en de rest wordt vrijgegeven. Mislukte en geweigerde calls worden nooit in rekening gebracht.

Webhooks

Voeg in je ontwikkelaarsruimte een https-adres van je server toe en kies de events: job.succeeded, job.failed, balance.low, topup.succeeded. Flixy stuurt een POST met een JSON-event; antwoord binnen 10 seconden met een 2xx-status. Mislukte afleveringen worden opnieuw geprobeerd; een adres dat blijft falen, wordt gepauzeerd.

POST /your/webhook
Flixy-Signature: t=1762854395,v1=8f0c3b…

{
  "id": "evt_2b0a…",
  "object": "event",
  "type": "job.succeeded",
  "created_at": "2026-11-11T09:46:35Z",
  "data": { "id": "job_6902…", "type": "site", "status": "succeeded", "site_id": "691589621", "price": 0.72 }
}

De handtekening verifiëren

De header Flixy-Signature bevat een tijdstempel t en v1, de HMAC-SHA256 van t + "." + raw body met je webhookgeheim. Weiger berichten die ouder zijn dan 5 minuten.

import crypto from 'node:crypto';

export function verifyFlixy(rawBody, header, secret) {
  const p = Object.fromEntries(header.split(',').map((x) => x.split('=')));
  const sig = crypto.createHmac('sha256', secret).update(`${p.t}.${rawBody}`).digest('hex');
  return Math.abs(Date.now() / 1000 - Number(p.t)) < 300
    && crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(p.v1));
}

Facturering

  • Waardeer je tegoed op vanaf 10 € in je ontwikkelaarsruimte, met je kaart. Btw wordt toegevoegd volgens je land; voor elke opwaardering wordt een factuur verstuurd.
  • Schakel automatisch opwaarderen in om een gekozen bedrag bij te laden wanneer je tegoed onder een drempel zakt.
  • Stel een maandelijkse uitgavenlimiet in voor het account en een daglimiet per sleutel.
  • Je ontvangt een e-mail en een balance.low-webhook wanneer je tegoed bijna op is.

Volledige voorwaarden: Flixy API-voorwaarden en gebruiksbeleid.

Beveiligingschecklist

  • Bewaar sleutels op je server, in omgevingsvariabelen of een secretsmanager — nooit in een webpagina, een mobiele app of een coderepository.
  • Maak één sleutel per applicatie aan en geef die alleen de scopes die ze nodig heeft.
  • Beperk livesleutels tot de IP-adressen van je servers en stel een daglimiet in.
  • Verifieer de handtekening en het tijdstempel van elke webhook.
  • Gebruik een idempotentiesleutel voor elke POST.
  • Verwijder een sleutel onmiddellijk als hij mogelijk is uitgelekt, en maak daarna een nieuwe aan.
  • Controleer door AI gegenereerde inhoud voordat je die publiceert, en informeer je gebruikers wanneer inhoud door AI is gegenereerd als de wet dat vereist.

Gebruiksbeleid

De Flixy API is gemaakt voor websites en hun inhoud. Hij weigert, zonder kosten, algemene vragen die niets met websites te maken hebben, code voor andere software, pogingen om de instructies van Flixy te wijzigen en inhoud die ons beleid schendt (illegale of haatdragende inhoud, seksuele inhoud met minderjarigen, phishing- of imitatiepagina’s, spam, nepreviews). Lees de volledige API-voorwaarden en gebruiksbeleid.

Gekoppelde organisatie

POST/v1/sites/{id}/transfer

Koppel je Flixy Studio-organisatie vanuit de console (Organisatie). De eigenaar van het Flixy Studio-account keurt de koppeling goed terwijl hij is ingelogd bij Flixy Studio, en beide partijen kunnen haar op elk moment verwijderen. Na het koppelen:

  • de API kan de websites van de organisatie weergeven, lezen, bewerken en vertalen (sites:read, sites:write);
  • je kunt een website direct in de organisatie maken met "destination": "organization", of een via de API gemaakte website verplaatsen met POST /v1/sites/{id}/transfer (gratis), om hem vanuit Flixy Studio op een domein te publiceren;
  • al het API-werk wordt in rekening gebracht op je API-tegoed: de credits van de organisatie worden nooit gebruikt.
curl "https://flixy.studio/v1/sites?owner=organization" \
  -H "Authorization: Bearer $FLIXY_API_KEY"

curl -X POST https://flixy.studio/v1/sites/691589621/transfer \
  -H "Authorization: Bearer $FLIXY_API_KEY"

Zonder gekoppelde organisatie geven deze calls 409 organization_not_linked terug.

Wijzigingslogboek

  • v1 — november 2026. Eerste versie: websites, wijzigingen, vertalingen, inhoud, documenten lezen, afbeeldingen, jobs, webhooks, prepaid tegoed.

Wijzigingen die je integratie kunnen breken, worden ten minste 90 dagen van tevoren per e-mail aangekondigd.