Base URL https://api.afer.pro aferapp.com
Consultas e informes

Resumen del panel

POST https://api.afer.pro/consultarResumen

Los KPIs del mes en una sola llamada: ventas, cobros, pendiente de cobro, MRR/ARR y pipeline del CRM.

El endpoint pensado para la cabecera de un cuadro de mandos: en una llamada devuelve las cifras del mes de la fecha de referencia (del día 1 hasta esa fecha), componiendo internamente consultarVentas, consultarCobros, consultarPagos, consultarPendienteCobro, consultarPendientePago, consultarMRR y consultarOportunidades.

Cada bloque es independiente: si alguno falla, llega como null y el resto se sirve igualmente.

Autenticación

Envía tus claves API en las cabeceras X-API-KEY y X-API-SECRET. La cuenta sobre la que se opera se resuelve automáticamente a partir de la clave. Cómo obtener tus claves →

Este endpoint requiere autenticación con API key: sin credenciales responde 401.

Parámetros del cuerpo

El cuerpo de la petición es un objeto JSON con Content-Type: application/json.

fecha_referenciadate
opcional
Fecha de cierre del resumen (YYYY-MM-DD). Por defecto, hoy: el resumen cubre del día 1 del mes a hoy.

Ejemplo de petición

curl -X POST 'https://api.afer.pro/consultarResumen' \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: afer_tk_TU_TOKEN' \
  -H 'X-API-SECRET: afer_sk_TU_SECRET' \
  -d '{}'
<?php

$data = [
];

$ch = curl_init('https://api.afer.pro/consultarResumen');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'X-API-KEY: afer_tk_TU_TOKEN',
    'X-API-SECRET: afer_sk_TU_SECRET',
]);

$respuesta = json_decode(curl_exec($ch), true);
curl_close($ch);
const respuesta = await fetch('https://api.afer.pro/consultarResumen', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-KEY': 'afer_tk_TU_TOKEN',
    'X-API-SECRET': 'afer_sk_TU_SECRET'
  },
  body: JSON.stringify({})
});

const resultado = await respuesta.json();

Respuesta

200 · application/json
{
    "errorCode": 200,
    "errorMsg": "",
    "data": {
        "fecha_referencia": "2026-08-18",
        "mes": {
            "fecha_inicio": "2026-08-01",
            "fecha_fin": "2026-08-18"
        },
        "ventas": {
            "total": 42350.2,
            "recurrentes": 8100,
            "no_recurrentes": 34250.2
        },
        "cobros": {
            "total": 38900.15,
            "num": 64
        },
        "pagos": {
            "total": 14230.6,
            "num": 22
        },
        "pendiente_cobro": {
            "total": 96200.4,
            "vencido": 31500.1,
            "num_facturas": 47
        },
        "pendiente_pago": {
            "total": 23400.8,
            "vencido": 6200.3,
            "num_facturas": 18
        },
        "mrr": {
            "mrr": 8100,
            "arr": 24000,
            "contratos": 31
        },
        "crm": {
            "abiertas": {
                "num": 12,
                "valor": 86000
            },
            "ganadas_mes": {
                "num": 3,
                "valor": 12500
            },
            "win_rate_pct": 60
        }
    }
}
Notas
  • Para gráficos y desgloses, llama a los endpoints específicos: este devuelve solo los totales de cabecera.