Vés al contingut
Flixy API · v1

Documentació de l’API

Tot el que necessites per afegir la IA de Flixy al teu producte. URL base: https://flixy.studio/v1

REST · JSONClaus BearerTasques asíncronesWebhooks signats18 idiomes

Introducció

La Flixy API permet al teu programari utilitzar les funcions de Flixy Studio: crear llocs web complets a partir d’una descripció, editar-los i traduir-los, redactar contingut web, llegir menús, catàlegs i PDF, i crear imatges i logotips. Només pagues les crides correctes, amb un saldo prepagat.

Les tasques llargues (crear, editar o traduir un lloc web) s’executen com a tasques asíncrones: l’API respon immediatament i tu segueixes la tasca o reps un webhook. El contingut, la lectura de documents i les imatges responen directament, normalment en pocs segons.

Comença al teu espai de desenvolupador: es crea una clau de prova gratuïta tan bon punt l’obres.

Consola de desenvolupadors

Les claus, el saldo, les recàrregues, els webhooks i el registre de crides es gestionen a la consola de desenvolupadors a dev.flixy.studio.

  • Un compte de desenvolupador independent. Com en altres plataformes d’IA, el teu compte de desenvolupador és diferent del teu compte de Flixy Studio: té el seu propi registre, inici de sessió i sessió. Tancar la sessió en un no la tanca mai en l’altre. Pots utilitzar la mateixa adreça electrònica per a tots dos.
  • Organització vinculada. Si també utilitzes Flixy Studio, pots vincular la teva organització al teu compte de desenvolupador perquè l’API pugui treballar en els seus llocs web. Consulta Organització vinculada.
  • Seguretat del compte. La verificació en dos passos, les sessions actives i l’exportació de dades estan disponibles a la consola, a Compte.

Autenticació

Envia la teva clau a la capçalera Authorization de cada sol·licitud. Les claus comencen per fx_live_ o fx_test_.

Authorization: Bearer fx_live_8sJ2…
La teva clau és secreta. Crida l’API només des del teu servidor: les sol·licituds enviades des d’un navegador web es rebutgen, perquè una clau no acabi mai en una pàgina web ni en una app mòbil.

Cada clau té permisos (scopes). Una crida sense el permís necessari retorna 403 missing_scope.

ParàmetreTipusDescripció
sites:readscopeLlegir llocs web i el seu HTML.
sites:writescopeCrear, editar i traduir llocs web.
content:writescopeRedactar contingut web.
extract:writescopeLlegir imatges i documents PDF.
images:writescopeCrear imatges i logotips.
account:readscopeLlegir el saldo i l’ús.

Claus de prova i live

  • Les claus de prova (fx_test_…) són gratuïtes. Retornen respostes d’exemple realistes sense utilitzar IA, perquè puguis construir i provar tota la integració. Les tasques de lloc web acaben al cap de pocs segons amb un lloc d’exemple.
  • Les claus live (fx_live_…) retornen resultats reals i es cobren del teu saldo.

Cada resposta conté la capçalera Flixy-Mode: test o Flixy-Mode: live.

Sol·licituds i respostes

Envia cossos JSON amb Content-Type: application/json (16 MB com a màxim). Les respostes són JSON. Les dates fan servir ISO 8601 en UTC. Cada resposta té una capçalera X-Request-Id: facilita-la al nostre suport si necessites ajuda amb una crida.

Defineix Accept-Language per rebre els missatges d’error en el teu idioma (fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja; anglès per defecte).

Errors

Els errors fan servir codis d’estat HTTP estàndard i sempre tenen la mateixa forma:

{
  "error": {
    "type": "billing_error",
    "code": "insufficient_balance",
    "message": "Insufficient balance: top up your developer account…",
    "request_id": "req_5c1f0a9e2b7d4c11"
  }
}
EstatTipusSignificat
400invalid_request_errorJSON o capçalera no vàlids.
401authentication_errorClau absent, no vàlida o eliminada.
402billing_errorSaldo insuficient, límit mensual o límit diari de la clau assolit.
403permission_errorFalta el permís, adreça IP no autoritzada, compte suspès o crida des d’un navegador.
404not_found_errorLloc web, tasca o endpoint desconegut.
409conflict_errorJa hi ha una tasca en curs en aquest lloc web.
422invalid_request_errorParàmetre no vàlid, o sol·licitud rebutjada per la política d’ús (off_topic, content_policy). No es cobra.
429rate_limit_errorMassa sol·licituds o tasques simultànies. Espera el temps indicat a Retry-After.
5xxapi_errorProblema temporal per part nostra. Torna-ho a provar amb la mateixa clau d’idempotència. No es cobra.

Límits d’ús

  • 60 sol·licituds per minut per clau (capçalera X-RateLimit-Limit).
  • 3 tasques de lloc web alhora per compte. Les crides de contingut, documents i imatges no estan subjectes a aquest límit.
  • Quan s’arriba a un límit, l’API respon 429 amb una capçalera Retry-After en segons.

Necessites més? Escriu a contact@flixy.studio explicant el teu cas d’ús.

Idempotència

Els errors de xarxa passen. Afegeix una capçalera Idempotency-Key (de 8 a 100 caràcters, per exemple el teu propi identificador de comanda) a qualsevol POST: si tornes a enviar la mateixa sol·licitud en un termini de 24 hores, l’API retorna la primera resposta — amb la capçalera Idempotent-Replayed: true — i no executa ni cobra mai la feina dues vegades.

Tasques

Crear, editar i traduir un lloc web triga d’uns 30 segons a 3 minuts. Aquests endpoints responen 202 Accepted amb una tasca. Consulta-la cada 5 segons o espera els esdeveniments job.succeeded / job.failed del 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 és queued, running, succeeded o failed. Una tasca fallida no es cobra mai i el seu error n’explica el motiu.

Crear un lloc web

POST/v1/sites

Crea un lloc web complet a partir d’una descripció. Permís: sites:write.

ParàmetreTipusDescripció
promptobligatoristringDescripció del negoci i del lloc web (de 12 a 4000 caràcters). Com més precisa, millor.
languagestringIdioma del lloc web: fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja.
structurestringonepage o multipage. Per defecte es dedueix del prompt.
qualitystringfast, standard (per defecte) o complete.
featuresstring[]Seccions que cal incloure: contact_form, testimonials, faq, map, whatsapp, shop, booking, gallery, newsletter, blog, pricing.
businessobjectDades conegudes: name, slogan, phone, email, address, city, hours. La IA no les inventa mai.
destinationstringdeveloper (per defecte): el lloc web pertany al teu compte de desenvolupador. organization: el lloc web es crea directament a la teva organització de Flixy Studio vinculada.
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" }
  }'

Obtenir un lloc web

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

Retorna el lloc web, el seu estat i les seves pàgines. Afegeix include=html per rebre l’HTML complet de cada pàgina (les imatges les allotja Flixy). Permís: 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>…" }
}

Afegeix owner=developer o owner=organization a la llista per filtrar per propietari. Els llocs web d’una organització vinculada també retornen dashboard_url i editor_url, per obrir-los a Flixy Studio.

Editar un lloc web

POST/v1/sites/{id}/edits

Aplica un canvi descrit en llenguatge natural, com a l’editor de Flixy. Cada canvi crea una versió nova. Permís: sites:write.

ParàmetreTipusDescripció
instructionobligatoristringEl canvi que cal fer (de 4 a 3000 caràcters), p. ex. «Afegeix una pàgina de preus amb tres ofertes» o «Fes servir un tema verd fosc».
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"}'

Traduir un lloc web

POST/v1/sites/{id}/translations

Tradueix cada pàgina del lloc web — navegació, botons, formularis, descripcions d’imatges, títol i descripció per als cercadors — mantenint el disseny, les imatges, els enllaços, els preus i les dades de contacte. Permís: sites:write.

ParàmetreTipusDescripció
languageobligatoristringIdioma de destinació: fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja.

Redactar contingut web

POST/v1/content

Redacta contingut destinat a publicar-se en un lloc web o a ser enviat per un negoci als seus clients. Respon directament. Permís: content:write.

ParàmetreTipusDescripció
typeobligatoristringpage_text, blog_article, product_description, service_description, about_us, seo_meta, faq, review_reply, newsletter, social_post.
topicobligatoristringTema del text (1500 caràcters com a màxim).
languagestringIdioma: fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja (per defecte en).
factsstringDades que cal utilitzar: preus, característiques, ingredients, horaris… (4000 caràcters com a màxim). La IA no s’inventa mai dades.
businessstringDescripció breu del negoci.
tonestringPer exemple warm, premium, playful.
lengthstringshort, medium (per defecte) o long.
keywordsstringParaules clau que cal incloure de manera natural.
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"
  }'

El camp html només conté etiquetes de text segures (títols, paràgrafs, llistes, enllaços), mai scripts ni estils.

Llegir un document

POST/v1/extract

Llegeix un menú, un catàleg, una llista de preus, una targeta de visita, un flyer o un fullet i retorna contingut estructurat a punt per a un lloc web. Només es retorna el que hi ha realment escrit. Permís: extract:write.

ParàmetreTipusDescripció
filestringEl fitxer codificat en base64 (JPEG, PNG, WebP, GIF o PDF, 10 MB com a màxim).
urlstringO una adreça https pública del fitxer.
kindstringauto (per defecte), 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" }
}
Els PDF escanejats sense text no es poden llegir: envia en el seu lloc una imatge de cada pàgina.

Crear una imatge

POST/v1/images

Crea una foto, una il·lustració o un logotip per a un lloc web. La imatge l’allotja Flixy i porta dins el fitxer el marcatge IPTC estàndard per a contingut multimèdia generat per IA. Permís: images:write.

ParàmetreTipusDescripció
promptobligatoristringDescripció de la imatge (de 4 a 800 caràcters).
kindstringphoto (per defecte), illustration o logo.
aspectstring16:9 (per defecte), 1:1, 4:3, 3:4, 9:16.
businessstringContext del negoci, per adaptar l’estil.
brandstringNom de la marca per a un logotip.

Saldo i compte

GET/v1/account

Retorna el teu saldo, l’import reservat per a tasques en curs, l’import disponible, la teva despesa mensual i la clau en ús. Permís: 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 }
}

Ús i preus

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

/v1/usage retorna les teves crides i imports per operació en un període. /v1/pricing retorna els preus habituals i mínims actuals en la teva moneda.

Cada crida correcta costa el cost real de la feina d’IA que ha requerit multiplicat pel marge de Flixy, amb un mínim per operació. Abans que comenci una tasca de lloc web, es reserva un import estimat al teu saldo; el preu exacte es cobra al final i la resta s’allibera. Les crides fallides i rebutjades no es cobren mai.

Webhooks

Afegeix una adreça https del teu servidor al teu espai de desenvolupador i tria els esdeveniments: job.succeeded, job.failed, balance.low, topup.succeeded. Flixy envia un POST amb un esdeveniment JSON; respon amb un estat 2xx en menys de 10 segons. Els enviaments fallits es reintenten; una adreça que falla repetidament es posa en pausa.

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

Verificar la signatura

La capçalera Flixy-Signature conté una marca de temps t i v1, l’HMAC-SHA256 de t + "." + raw body amb el teu secret de webhook. Rebutja els missatges de més de 5 minuts d’antiguitat.

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

Facturació

  • Recarrega el teu saldo des de 10 € al teu espai de desenvolupador, amb targeta. L’IVA s’afegeix segons el teu país; s’envia una factura per cada recàrrega.
  • Activa la recàrrega automàtica per recarregar l’import que triïs quan el teu saldo baixi d’un llindar.
  • Fixa un límit de despesa mensual per al compte i un límit diari per clau.
  • Reps un correu electrònic i un webhook balance.low quan el teu saldo és baix.

Condicions completes: Condicions i política d’ús de la Flixy API.

Llista de seguretat

  • Guarda les claus al teu servidor, en variables d’entorn o en un gestor de secrets — mai en una pàgina web, una app mòbil o un repositori de codi.
  • Crea una clau per aplicació i dona-li només els permisos que necessita.
  • Restringeix les claus live a les adreces IP dels teus servidors i fixa un límit diari.
  • Verifica la signatura de cada webhook i la seva marca de temps.
  • Utilitza una clau d’idempotència en cada POST.
  • Elimina una clau immediatament si pot haver quedat exposada i, després, crea’n una de nova.
  • Revisa el contingut generat per IA abans de publicar-lo, i informa els teus usuaris que un contingut està generat per IA quan la llei ho exigeixi.

Política d’ús

La Flixy API està feta per a llocs web i el seu contingut. Rebutja, sense cobrar, preguntes generals sense relació amb llocs web, codi per a altres programes, intents de canviar les instruccions de Flixy i contingut que incompleix la nostra política (contingut il·legal, d’odi, sexual que impliqui menors, pàgines de pesca de dades o de suplantació, spam, ressenyes falses). Llegeix les Condicions i política d’ús de l’API completes.

Organització vinculada

POST/v1/sites/{id}/transfer

Vincula la teva organització de Flixy Studio des de la consola (Organització). El propietari del compte de Flixy Studio aprova la vinculació amb la sessió iniciada a Flixy Studio, i qualsevol de les parts la pot eliminar en qualsevol moment. Un cop vinculada:

  • l’API pot llistar, llegir, editar i traduir els llocs web de l’organització (sites:read, sites:write);
  • pots crear un lloc web directament a l’organització amb "destination": "organization", o moure un lloc web creat per l’API amb POST /v1/sites/{id}/transfer (gratuït), per publicar-lo en un domini des de Flixy Studio;
  • tota la feina de l’API es cobra del teu saldo de l’API: els crèdits de l’organització no s’utilitzen mai.
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"

Sense una organització vinculada, aquestes crides retornen 409 organization_not_linked.

Registre de canvis

  • v1 — novembre de 2026. Primera versió: llocs web, edicions, traduccions, contingut, lectura de documents, imatges, tasques, webhooks, saldo prepagat.

Els canvis que puguin trencar la teva integració s’anuncien per correu electrònic amb almenys 90 dies d’antelació.