Saca tus datos de Meta Ads, Google Ads, tu cruce de ventas real, tu calendario de pipeline y tu email marketing — ya normalizados y cuadrados — hacia tu CRM, una IA como Claude o ChatGPT, un dashboard propio o cualquier herramienta. Solo lectura. Una clave. JSON limpio.
Bearer y a trabajar. Sin flujos ni caducidades.Authorization de tus peticiones. Ya está.# comprueba que tu clave funciona
curl -H "Authorization: Bearer frk_TU_CLAVE" \
https://furiareports.com/api/ping
// respuesta
{ "ok": true, "workspace": "Allora Publicidad", "plan": "pro", "via": "api_key" }
https://furiareports.com/api (también responde en https://app.furiareports.com/api). Todas las rutas empiezan por /api.Cada petición lleva tu clave en la cabecera Authorization con el prefijo Bearer:
Authorization: Bearer frk_xxxxxxxxxxxxxxxxxxxxxxxx
402.Por clave, con ventana fija. Los datos se cachean en servidor (~15 min), así que estos límites sobran para cualquier integración razonable:
| Ventana | Límite | Al superarlo |
|---|---|---|
| por minuto | 60 peticiones | 429 con cabecera Retry-After (segundos) |
| por hora | 1000 peticiones |
Cachea del lado del cliente lo que no cambie a menudo. No hace falta pedir el mismo rango cada pocos segundos.
Todos son GET y devuelven JSON. El parámetro de fecha range acepta: hoy, ayer, hoyayer, 7d, 14d, 30d, 90d, max (desde que se creó la cuenta; añade since= con la fecha de /api/panel/account-start) o un rango libre custom&since=YYYY-MM-DD&until=YYYY-MM-DD (máx. 36 meses, el límite de Meta). Todas las fechas van en hora de Madrid (Europe/Madrid): «hoy» es el día de Madrid en cualquier cuenta. Si gestionas varias cuentas, añade account=act_123 o client=<id>.
tot), serie diaria (daily) y desglose por campaña (camps), con el periodo anterior para comparar (prev).reachCamp, reachSet) y el estado real de entrega (status = effective_status de Meta; active solo es true si está sirviendo de verdad).grid[día][hora] (lunes = 0, 24 horas en la zona de la cuenta) con gasto, impresiones, clics, leads, ventas e ingresos. Suma exacta a los totales del panel. Como mucho, los últimos 90 días del rango.status (ok, alert, unknown, none) y, si alguno se ha caído, alerts con el píxel, el evento, los eventos de las últimas 48 h frente a los normales y desde cuándo. Se recalcula como mucho una vez por hora.since), recortada a 36 meses: úsala con range=max.accounts[] con su id) y el límite de tu plan.cur/prev: visualizaciones, alcance, interacciones, seguidores ganados y perdidos…), visualizaciones por tipo de contenido y seguidor/no seguidor (split, suma exacta al total), serie diaria, foto diaria de seguidores, conectados por día × hora en hora de Madrid y audiencia. El alcance es de personas únicas: solo viene en rangos de hasta 30 días (uniqueOk). Como mucho los últimos 365 días. Elige cuenta con ig=<id> o client=<id>.reactions, suma exacta a cur.reactions). Serie daily cuya suma es cada total. Elige Página con fb=<id> (de /api/ig/status → pages) o client=<id>.[fecha, gasto, leads, ventas, ingresos] y estado del píxel.Ejemplo abreviado de GET /api/panel?range=30d. El dinero va en euros (número, no céntimos); las métricas están ya sumadas y cuadran entre tot, daily y camps.
{
"range": "30d", "days": 30,
"source": "meta", // "meta" = datos reales · "demo" = cuenta de demostración
"account": { "id": "act_123", "name": "Mi Cuenta", "currency": "EUR" },
"cur": {
"tot": { "spend": 4538.10, "imp": 454133, "clk": 6274,
"leads": 711, "compras": 36, "rev": 57857.00, "reach": 198340 },
"daily": [ { "date": "2026-06-12", "spend": 151.20, "leads": 24, "compras": 1, ... } ],
"camps": [ { "n": "Leads – Advantage+", "active": true, "spend": 1140.00,
"leads": 311, "compras": 12, "rev": 19100.00, ... } ]
},
"prev": { /* misma forma: el periodo anterior, para calcular variaciones */ }
}
Métricas derivadas (CPL, CPM, CPC, ROAS, CTR) las calculas tú a partir de estos campos crudos, para que nunca haya redondeos escondidos:
CPL = spend / leads · CPM = spend / imp × 1000 · CPC = spend / clkROAS = rev / spend · CTR = clk / imp × 100curl -H "Authorization: Bearer $FURIA_KEY" \
"https://furiareports.com/api/crossdata/roas?range=30d"
const res = await fetch("https://furiareports.com/api/panel?range=30d", {
headers: { Authorization: `Bearer ${process.env.FURIA_KEY}` }
});
const data = await res.json();
console.log("Gasto:", data.cur.tot.spend, "€ · Leads:", data.cur.tot.leads);
import os, requests
r = requests.get(
"https://furiareports.com/api/panel",
params={"range": "30d"},
headers={"Authorization": f"Bearer {os.environ['FURIA_KEY']}"},
)
d = r.json()
print("ROAS:", d["cur"]["tot"]["rev"] / d["cur"]["tot"]["spend"])
Este es el caso que hace magia: das tu clave a un asistente y le preguntas por tus campañas en lenguaje natural. Como todo son GET con una cabecera, cualquier IA con acceso a herramientas (Claude con MCP/HTTP, GPTs personalizados, agentes) puede consultarla.
https://furiareports.com/apiAuthorization → valor Bearer frk_TU_CLAVEGET).Eres mi analista de paid media. Para responder, consulta la API de Furia
Reports (GET, cabecera Authorization: Bearer <clave>). Usa /api/panel para
Meta, /api/google/panel para Google y /api/crossdata/roas para el ROAS real
de tienda. Calcula CPL = spend/leads y ROAS = rev/spend. Da cifras exactas,
nunca inventes datos: si la API no lo devuelve, dilo.
| Código | Significado | Qué hacer |
|---|---|---|
200 | OK | — |
401 | Clave ausente, mal formada o revocada | Revisa la cabecera Authorization; crea una clave nueva si hace falta. |
402 | Suscripción no activa | Activa tu suscripción en Furia Reports. |
429 | Límite de peticiones superado | Espera los segundos que indica Retry-After y reintenta. |
502 / 503 | La fuente (Meta/Google/tienda) falló al responder | Reintenta con espera; es temporal. |
Los errores devuelven { "error": "descripción" }. Nada de datos inventados: si una fuente cae, la API lo dice, no rellena con ceros.
Crea tu primera clave en menos de un minuto desde los ajustes de tu cuenta.
Crear una clave de API →