La API de Flixy, en 5 minutos
Una API REST sencilla en JSON: envíe una petición con su clave y reciba su creación sin marca de agua.
Cree una clave
Estudio → Business Suite → API → «Crear una clave». Solo se muestra una vez: guárdela en secreto, en el servidor.
Lance una creación
POST generate.php con un formato y un prompt. La respuesta llega enseguida con un identificador.
Recupere el archivo
Consulte status.php cada 3 segundos. Cuando el estado sea «done», descargue «url».
Autenticación
URL base : https://flixy.design/api/v1/
Authorization: Bearer flx_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
También se acepta la cabecera «X-Api-Key». Límite: 60 peticiones por minuto y por clave. Las creaciones se pagan en créditos con su descuento Business; una creación fallida se reembolsa.
Ejemplos
curl -X POST https://flixy.design/api/v1/generate.php \
-H "Authorization: Bearer $FLIXY_KEY" \
-H "Content-Type: application/json" \
-d '{"format":"reel_video","prompt":"A runner smiles at sunrise"}'const r = await fetch("https://flixy.design/api/v1/generate.php", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.FLIXY_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ format: "reel_video", prompt: "A runner smiles at sunrise" }),
});
const job = await r.json();
// Poll job.status_url every 3 s until status is "done", then download job.urlimport os, time, requests
H = {"Authorization": f"Bearer {os.environ['FLIXY_KEY']}"}
job = requests.post("https://flixy.design/api/v1/generate.php", headers=H,
json={"format": "reel_video", "prompt": "A runner smiles at sunrise"}).json()
while True:
s = requests.get(job["status_url"], headers=H).json()
if s["status"] in ("done", "failed"): break
time.sleep(3)
print(s.get("url"))$ch = curl_init("https://flixy.design/api/v1/generate.php");
curl_setopt_array($ch, [
CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("FLIXY_KEY"), "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["format" => "reel_video", "prompt" => "A runner smiles at sunrise"]),
]);
$job = json_decode(curl_exec($ch), true);
Endpoints
/api/v1/generate.phpLanzar una creación (imagen, retoque o vídeo)
{
"format": "native_square",
"prompt": "A smiling runner at sunrise on a city bridge",
"type": "image",
"params": { "image_size": "2K" },
"enhance": true
}{
"ok": true,
"id": 1842,
"status": "queued",
"type": "image",
"format": "native_square",
"credits_charged": 0.29,
"balance": 412.5,
"status_url": "https://flixy.design/api/v1/status.php?id=1842"
}/api/v1/status.php?id=1842Seguir una creación; «url» da el archivo final sin marca de agua
{
"ok": true,
"id": 1842,
"type": "image",
"status": "done",
"url": "https://flixy.design/api/v1/file.php?id=1842&exp=…&sig=…",
"width": 2048,
"height": 2048
}/api/v1/copy.phpGenerar textos publicitarios en varias variantes
{
"kind": "push",
"brief": "Meditation app, 7-day free trial, busy professionals",
"lang": "en",
"variants": 3,
"tone": "warm",
"brand": "Calmly"
}{
"ok": true,
"kind": "push",
"items": [
{ "title": "Breathe. Just 3 minutes.", "message": "Your 7-day free trial is ready.", "image_prompt": "…" }
],
"credits_charged": 0.06,
"balance": 412.44
}/api/v1/svg.phpCrear un banner SVG animado
{
"brief": "Winter sale -40% on sneakers",
"width": 300,
"height": 250,
"colors": "#FF80BF, #1E1A24",
"cta": "Shop now",
"lang": "en"
}{
"ok": true,
"width": 300,
"height": 250,
"svg": "<svg xmlns=…>…</svg>",
"credits_charged": 0.12
}/api/v1/balance.phpSaldo de créditos y descuento de la cuenta
{
"ok": true,
"account": "Acme Inc.",
"balance": 412.44,
"discount_percent": 20,
"credit_usd": 1
}/api/v1/formats.phpLista de formatos y tipos de texto
{ "ok": true, "formats": [ … ], "copy_kinds": [ … ] }Campos de generate.php
| Campo | Descripción |
|---|---|
prompt * | Descripción de la creación (3 a 2.000 caracteres), en cualquier idioma. |
format | Formato (ver la lista abajo): ajusta el encuadre, la duración y las pautas. |
type | image · edit · video |
params | aspect_ratio, image_size (1K, 2K, 4K), style, lighting · vídeo : resolution (720p, 1080p), duration (4s–10s) |
image | Foto en base64 (PNG, JPEG, WebP, 12 MB máx.): para retocar (edit) o animar (video). |
continue_from | Identificador de una creación terminada para modificarla o prolongarla. |
enhance | true: el asistente de Flixy mejora el prompt antes de crear. |
Formatos
| format | Nombre | Tipo | Tamaño |
|---|---|---|---|
native_square | Native ad cuadrada | image | 1200×1200 |
native_wide | Native ad horizontal | image | 1200×628 |
push_icon | Icono push | image | 192×192 |
push_image | Imagen push | image | 720×480 |
banner_mrec | Banner 300×250 | image | 300×250 |
banner_leader | Banner horizontal 728×90 | image | 728×90 |
banner_sky | Banner vertical 160×600 | image | 160×600 |
social_feed | Anuncio Facebook / Instagram | image | 1080×1350 |
social_story | Story patrocinada | image | 1080×1920 |
reel_video | Anuncio Reel / TikTok | video | 1080×1920 · 8s |
ctv_video | Spot CTV | video | 1920×1080 · 10s |
social_square | Anuncio LinkedIn / B2B | image | 1200×1200 |
pin_vertical | Pin de Pinterest | image | 1000×1500 |
instream_video | Pre-roll YouTube / in-stream | video | 1920×1080 · 6s |
dooh_portrait | Pantalla de marquesina | image | 1080×1920 |
dooh_landscape | Valla digital | image | 1920×1080 |
billboard_4x3 | Valla 4×3 m | image | 4×3 m |
dooh_video | Vídeo DOOH (estaciones, centros comerciales) | video | 1080×1920 · 8s |
film_wide | Escena de película 16:9 | video | 1920×1080 · 8s |
film_vertical | Escena vertical 9:16 | video | 1080×1920 · 8s |
packshot | Foto de producto cuadrada | image | 2048×2048 |
packshot_portrait | Foto de producto vertical | image | 1600×2000 |
poster_portrait | Cartel vertical | image | A3 / A4 |
poster_landscape | Cartel horizontal | image | A3 / A4 |
advertorial | Imagen de publirreportaje | image | 1600×900 |
Tipos de texto (campo «kind» de copy.php) : native push facebook tiktok banner ctv advertorial titles email
Errores
{ "ok": false, "error": { "code": "insufficient_credits", "message": "Not enough credits for this creation." } }
401 missing_key · invalid_key | Clave ausente, inválida o eliminada. |
402 insufficient_credits | Saldo insuficiente: recargue sus créditos. |
403 not_business | La cuenta no tiene acceso Business. |
422 refused | Petición contraria a las normas de uso. |
429 rate_limited | Más de 60 peticiones en un minuto. |
¿Una pregunta técnica? El soporte Business responde 24/7 : business@flixy.design.
Tu próxima publicación empieza aquí
Crea gratis la imagen, el retoque o el vídeo de tu próxima publicación, en el formato adecuado para cada red.