Hoppa till innehållet
Flixy API · v1

API-dokumentation

Allt du behöver för att lägga till Flixys AI i din produkt. Bas-URL: https://flixy.studio/v1

REST · JSONBearer-nycklarAsynkrona jobbSignerade webhooks18 språk

Introduktion

Med Flixy API kan din programvara använda Flixy Studios funktioner: skapa kompletta webbplatser utifrån en beskrivning, redigera och översätta dem, skriva webbplatsinnehåll, läsa menyer, kataloger och PDF-filer samt skapa bilder och logotyper. Du betalar bara för lyckade anrop, från ett förbetalt saldo.

Långa uppgifter (skapa, redigera eller översätta en webbplats) körs som jobb: API:et svarar direkt och du följer jobbet eller tar emot en webhook. Innehåll, dokumentläsning och bilder svarar direkt, vanligtvis inom några sekunder.

Börja i ditt utvecklarutrymme: en kostnadsfri testnyckel skapas så snart du öppnar det.

Utvecklarkonsol

Nycklar, saldo, påfyllningar, webhooks och anropsloggar hanteras i utvecklarkonsolen på dev.flixy.studio.

  • Ett separat utvecklarkonto. Precis som på andra AI-plattformar är ditt utvecklarkonto skilt från ditt Flixy Studio-konto: det har egen registrering, inloggning och session. Att logga ut från det ena loggar aldrig ut dig från det andra. Du kan använda samma e-postadress för båda.
  • Länkad organisation. Om du också använder Flixy Studio kan du länka din organisation till ditt utvecklarkonto, så att API:et kan arbeta med dess webbplatser. Se Länkad organisation.
  • Kontosäkerhet. Tvåstegsverifiering, aktiva sessioner och dataexport finns i konsolen under Konto.

Autentisering

Skicka din nyckel i headern Authorization i varje förfrågan. Nycklar börjar med fx_live_ eller fx_test_.

Authorization: Bearer fx_live_8sJ2…
Din nyckel är hemlig. Anropa API:et endast från din server: förfrågningar som skickas från en webbläsare nekas, så att en nyckel aldrig hamnar på en webbsida eller i en mobilapp.

Varje nyckel har rättigheter (scopes). Ett anrop utan rätt scope returnerar 403 missing_scope.

ParameterTypBeskrivning
sites:readscopeLäsa webbplatser och deras HTML.
sites:writescopeSkapa, redigera och översätta webbplatser.
content:writescopeSkriva webbplatsinnehåll.
extract:writescopeLäsa bilder och PDF-dokument.
images:writescopeSkapa bilder och logotyper.
account:readscopeLäsa saldo och användning.

Test- och livenycklar

  • Testnycklar (fx_test_…) är kostnadsfria. De returnerar realistiska exempelsvar utan att använda AI, så att du kan bygga och testa hela din integration. Webbplatsjobb slutförs efter några sekunder med en exempelwebbplats.
  • Livenycklar (fx_live_…) returnerar verkliga resultat och debiteras från ditt saldo.

Varje svar innehåller headern Flixy-Mode: test eller Flixy-Mode: live.

Förfrågningar och svar

Skicka JSON-kroppar med Content-Type: application/json (högst 16 MB). Svaren är i JSON. Datum anges enligt ISO 8601 i UTC. Varje svar har en X-Request-Id-header: ge den till vår support om du behöver hjälp med ett anrop.

Ange Accept-Language för att få felmeddelanden på ditt språk (fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja; engelska som standard).

Fel

Fel använder vanliga HTTP-statuskoder och har alltid samma form:

{
  "error": {
    "type": "billing_error",
    "code": "insufficient_balance",
    "message": "Insufficient balance: top up your developer account…",
    "request_id": "req_5c1f0a9e2b7d4c11"
  }
}
StatusTypBetydelse
400invalid_request_errorOgiltig JSON eller header.
401authentication_errorSaknad, ogiltig eller raderad nyckel.
402billing_errorOtillräckligt saldo, månadstak eller nyckelns dagstak har nåtts.
403permission_errorSaknad scope, IP-adress inte tillåten, kontot avstängt eller anrop från en webbläsare.
404not_found_errorOkänd webbplats, okänt jobb eller okänd endpoint.
409conflict_errorEtt jobb körs redan på den här webbplatsen.
422invalid_request_errorOgiltig parameter, eller förfrågan nekad av användningspolicyn (off_topic, content_policy). Debiteras inte.
429rate_limit_errorFör många förfrågningar eller samtidiga jobb. Vänta den tid som anges i Retry-After.
5xxapi_errorTillfälligt problem hos oss. Försök igen med samma idempotensnyckel. Debiteras inte.

Anropsgränser

  • 60 förfrågningar per minut per nyckel (headern X-RateLimit-Limit).
  • 3 webbplatsjobb samtidigt per konto. Anrop för innehåll, dokument och bilder omfattas inte av denna gräns.
  • När en gräns nås svarar API:et 429 med en Retry-After-header i sekunder.

Behöver du mer? Skriv till contact@flixy.studio och beskriv ditt användningsfall.

Idempotens

Nätverksfel förekommer. Lägg till en Idempotency-Key-header (8 till 100 tecken, till exempel ditt eget order-ID) i varje POST: om du skickar samma förfrågan igen inom 24 timmar returnerar API:et det första svaret — med headern Idempotent-Replayed: true — och kör eller debiterar aldrig arbetet två gånger.

Jobb

Att skapa, redigera och översätta en webbplats tar från cirka 30 sekunder till 3 minuter. Dessa endpoints svarar 202 Accepted med ett jobb. Följ det var 5:e sekund eller vänta på händelsen job.succeeded / job.failed via 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 är queued, running, succeeded eller failed. Ett misslyckat jobb debiteras aldrig och dess error förklarar varför.

Skapa en webbplats

POST/v1/sites

Skapar en komplett webbplats utifrån en beskrivning. Scope: sites:write.

ParameterTypBeskrivning
promptobligatoriskstringBeskrivning av företaget och webbplatsen (12 till 4000 tecken). Ju mer exakt, desto bättre.
languagestringWebbplatsens språk: fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja.
structurestringonepage eller multipage. Identifieras från prompten som standard.
qualitystringfast, standard (standard) eller complete.
featuresstring[]Avsnitt att inkludera: contact_form, testimonials, faq, map, whatsapp, shop, booking, gallery, newsletter, blog, pricing.
businessobjectKända fakta: name, slogan, phone, email, address, city, hours. Hittas aldrig på av AI:n.
destinationstringdeveloper (standard): webbplatsen tillhör ditt utvecklarkonto. organization: webbplatsen skapas direkt i din länkade Flixy Studio-organisation.
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" }
  }'

Hämta en webbplats

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

Returnerar webbplatsen, dess status och dess sidor. Lägg till include=html för att få den fullständiga HTML-koden för varje sida (bilderna lagras hos 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>…" }
}

Lägg till owner=developer eller owner=organization i listan för att filtrera efter ägare. Webbplatser i en länkad organisation returnerar också dashboard_url och editor_url, för att öppna dem i Flixy Studio.

Redigera en webbplats

POST/v1/sites/{id}/edits

Genomför en ändring som beskrivs på vanligt språk, som i Flixy-redigeraren. Varje ändring skapar en ny version. Scope: sites:write.

ParameterTypBeskrivning
instructionobligatoriskstringÄndringen som ska göras (4 till 3000 tecken), t.ex. ”Lägg till en prissida med tre erbjudanden” eller ”Använd ett mörkgrönt tema”.
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"}'

Översätt en webbplats

POST/v1/sites/{id}/translations

Översätter varje sida på webbplatsen — navigering, knappar, formulär, bildbeskrivningar, titel och beskrivning för sökmotorer — och behåller designen, bilderna, länkarna, priserna och kontaktuppgifterna. Scope: sites:write.

ParameterTypBeskrivning
languageobligatoriskstringMålspråk: fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja.

Skriv webbinnehåll

POST/v1/content

Skriver innehåll avsett att publiceras på en webbplats eller skickas av ett företag till dess kunder. Svarar direkt. Scope: content:write.

ParameterTypBeskrivning
typeobligatoriskstringpage_text, blog_article, product_description, service_description, about_us, seo_meta, faq, review_reply, newsletter, social_post.
topicobligatoriskstringTextens ämne (högst 1500 tecken).
languagestringSpråk: fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja (standard en).
factsstringFakta att använda: priser, egenskaper, ingredienser, öppettider… (högst 4000 tecken). AI:n hittar aldrig på fakta.
businessstringKort beskrivning av företaget.
tonestringTill exempel warm, premium, playful.
lengthstringshort, medium (standard) eller long.
keywordsstringNyckelord att ta med på ett naturligt sätt.
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"
  }'

Fältet html innehåller endast säkra texttaggar (rubriker, stycken, listor, länkar), aldrig skript eller stilar.

Läs ett dokument

POST/v1/extract

Läser en meny, en katalog, en prislista, ett visitkort, ett flygblad eller en broschyr och returnerar strukturerat innehåll redo för en webbplats. Endast det som faktiskt står skrivet returneras. Scope: extract:write.

ParameterTypBeskrivning
filestringFilen kodad i base64 (JPEG, PNG, WebP, GIF eller PDF, högst 10 MB).
urlstringEller en offentlig https-adress till filen.
kindstringauto (standard), 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" }
}
Skannade PDF-filer utan text kan inte läsas: skicka i stället en bild av varje sida.

Skapa en bild

POST/v1/images

Skapar ett foto, en illustration eller en logotyp för en webbplats. Bilden lagras hos Flixy och bär inuti filen den standardiserade IPTC-märkningen för AI-genererade medier. Scope: images:write.

ParameterTypBeskrivning
promptobligatoriskstringBeskrivning av bilden (4 till 800 tecken).
kindstringphoto (standard), illustration eller logo.
aspectstring16:9 (standard), 1:1, 4:3, 3:4, 9:16.
businessstringFöretagets sammanhang, för att matcha stilen.
brandstringVarumärkesnamn för en logotyp.

Saldo och konto

GET/v1/account

Returnerar ditt saldo, beloppet som reserverats för pågående jobb, det tillgängliga beloppet, dina månatliga utgifter och den nyckel som används. 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 }
}

Användning och priser

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

/v1/usage returnerar dina anrop och belopp per åtgärd under en period. /v1/pricing returnerar aktuella typiska priser och minimipriser i din valuta.

Varje lyckat anrop kostar den verkliga kostnaden för det AI-arbete som krävdes multiplicerad med Flixys marginal, med ett minimum per åtgärd. Innan ett webbplatsjobb startar reserveras ett uppskattat belopp på ditt saldo; det exakta priset debiteras i slutet och resten frigörs. Misslyckade och nekade anrop debiteras aldrig.

Webhooks

Lägg till en https-adress till din server i ditt utvecklarutrymme och välj händelser: job.succeeded, job.failed, balance.low, topup.succeeded. Flixy skickar en POST med en JSON-händelse; svara med en 2xx-status inom 10 sekunder. Misslyckade leveranser görs om; en adress som fortsätter att misslyckas pausas.

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 }
}

Verifiera signaturen

Headern Flixy-Signature innehåller en tidsstämpel t och v1, HMAC-SHA256 av t + "." + raw body med din webhook-hemlighet. Avvisa meddelanden som är äldre än 5 minuter.

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

Fakturering

  • Fyll på ditt saldo från 10 € i ditt utvecklarutrymme, med kort. Moms tillkommer enligt ditt land; en faktura skickas för varje påfyllning.
  • Aktivera automatisk påfyllning för att fylla på ett valt belopp när ditt saldo sjunker under en tröskel.
  • Ställ in ett månatligt utgiftstak för kontot och ett dagstak per nyckel.
  • Du får ett e-postmeddelande och en balance.low-webhook när ditt saldo börjar ta slut.

Fullständiga villkor: Villkor och användningspolicy för Flixy API.

Säkerhetschecklista

  • Förvara nycklar på din server, i miljövariabler eller en hemlighetshanterare — aldrig på en webbsida, i en mobilapp eller i ett kodförråd.
  • Skapa en nyckel per applikation och ge den endast de scopes den behöver.
  • Begränsa livenycklar till dina servrars IP-adresser och ställ in ett dagstak.
  • Verifiera varje webhooks signatur och tidsstämpel.
  • Använd en idempotensnyckel för varje POST.
  • Radera en nyckel omedelbart om den kan ha exponerats och skapa sedan en ny.
  • Granska AI-genererat innehåll innan du publicerar det, och informera dina användare när innehåll är AI-genererat om lagen kräver det.

Användningspolicy

Flixy API är gjort för webbplatser och deras innehåll. Det nekar, utan debitering, allmänna frågor som inte rör webbplatser, kod för annan programvara, försök att ändra Flixys instruktioner och innehåll som bryter mot vår policy (olagligt, hatiskt, sexuellt innehåll som involverar minderåriga, nätfiske- eller identitetsstöldsidor, spam, falska recensioner). Läs hela API-villkoren och användningspolicyn.

Länkad organisation

POST/v1/sites/{id}/transfer

Länka din Flixy Studio-organisation från konsolen (Organisation). Ägaren till Flixy Studio-kontot godkänner länken när hen är inloggad i Flixy Studio, och båda parter kan ta bort den när som helst. När den är länkad:

  • API:et kan lista, läsa, redigera och översätta organisationens webbplatser (sites:read, sites:write);
  • du kan skapa en webbplats direkt i organisationen med "destination": "organization", eller flytta en webbplats som skapats via API:et med POST /v1/sites/{id}/transfer (kostnadsfritt), för att publicera den på en domän från Flixy Studio;
  • allt API-arbete debiteras ditt API-saldo: organisationens krediter används aldrig.
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"

Utan en länkad organisation returnerar dessa anrop 409 organization_not_linked.

Ändringslogg

  • v1 — november 2026. Första versionen: webbplatser, ändringar, översättningar, innehåll, dokumentläsning, bilder, jobb, webhooks, förbetalt saldo.

Ändringar som kan bryta din integration meddelas via e-post minst 90 dagar i förväg.