Base URL https://api.afer.pro aferapp.com
CRM y marketing

Pipeline del CRM

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

Las oportunidades abiertas por funnel y etapa (número y valor) y, con un rango de fechas, las creadas, ganadas y perdidas con su win rate.

El embudo comercial para el panel: cuántas oportunidades hay abiertas (ni ganadas ni perdidas) y qué valor suman, desglosado por funnel y etapa.

Si envías fecha_inicio y fecha_fin, añade la actividad del período: oportunidades creadas (por fecha de creación) y ganadas/perdidas (por fecha de cierre), con el win_rate_pct = ganadas / cerradas.

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.

funnel_fkint
opcional
Limita la consulta a un funnel concreto.
fecha_iniciodate
opcional
Con fecha_fin, añade las estadísticas del período.
fecha_findate
opcional
Fin del período (YYYY-MM-DD), incluido.

Ejemplo de petición

curl -X POST 'https://api.afer.pro/consultarOportunidades' \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: afer_tk_TU_TOKEN' \
  -H 'X-API-SECRET: afer_sk_TU_SECRET' \
  -d '{
    "fecha_inicio": "2026-08-01",
    "fecha_fin": "2026-08-18"
}'
<?php

$data = [
  'fecha_inicio' => '2026-08-01',
  'fecha_fin' => '2026-08-18',
];

$ch = curl_init('https://api.afer.pro/consultarOportunidades');
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/consultarOportunidades', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-KEY': 'afer_tk_TU_TOKEN',
    'X-API-SECRET': 'afer_sk_TU_SECRET'
  },
  body: JSON.stringify({
      "fecha_inicio": "2026-08-01",
      "fecha_fin": "2026-08-18"
  })
});

const resultado = await respuesta.json();

Respuesta

200 · application/json
{
    "errorCode": 200,
    "errorMsg": "",
    "data": {
        "abiertas": {
            "num": 12,
            "valor": 86000
        },
        "pipeline": [
            {
                "funnel_fk": 39,
                "funnel": "Ventas web",
                "num": 12,
                "valor": 86000,
                "por_etapa": [
                    {
                        "etapa_fk": 219,
                        "etapa": "Contactado",
                        "num": 8,
                        "valor": 36000
                    },
                    {
                        "etapa_fk": 220,
                        "etapa": "Propuesta enviada",
                        "num": 4,
                        "valor": 50000
                    }
                ]
            }
        ],
        "periodo": {
            "fecha_inicio": "2026-08-01",
            "fecha_fin": "2026-08-18",
            "creadas": {
                "num": 10,
                "valor": 20000
            },
            "ganadas": {
                "num": 3,
                "valor": 12500
            },
            "perdidas": {
                "num": 1,
                "valor": 4000
            },
            "win_rate_pct": 75
        }
    }
}
Notas
  • El valor de cada oportunidad es su valor de cierre configurado en el CRM; las oportunidades sin valor cuentan como 0.
  • win_rate_pct llega null si no se cerró ninguna oportunidad en el período.