Base URL https://api.afer.pro Referencia aferapp.com Reservar demo

Proyectos y su económico

GET https://api.afer.pro/api/v1/projects
Alias en castellano (v0, sigue operativo): POST https://api.afer.pro/consultarProyectos

Cada obra con sus ventas, sus costes, su resultado y su margen, con el mismo criterio que el panel interno.

La tabla que responde a ¿qué obras ganan dinero?. Cada proyecto llega con un bloque economico calculado igual que en el cuadro de mandos interno:

  • ventas: líneas de albarán + líneas de factura con proviene_albaranes = 0, para no contar dos veces el albarán ya facturado.
  • compras: líneas de albarán de compra + líneas de factura de compra que no vienen de albarán.
  • coste_personal: horas fichadas contra el proyecto valoradas al coste/hora del contrato vigente en la fecha de cada fichaje, más plan de pensiones y TGSS.
  • coste_maquinaria: las mismas horas valoradas al coste/hora de la máquina imputada.

costes es la suma de los tres, resultado es ventas − costes y margen el porcentaje sobre ventas. Si no hay ventas pero sí coste, el margen se devuelve como -100.

fecha_inicio y fecha_fin acotan el económico —no la lista de proyectos—: los documentos por su fecha de cabecera y las horas por la fecha de entrada del fichaje.

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_iniciodate
opcional
Acota el económico desde esta fecha. Formato YYYY-MM-DD.
fecha_findate
opcional
Acota el económico hasta esta fecha.
busquedastring
opcional
Texto a buscar en la descripción o el número del proyecto.
clienteIdstring
opcional
Solo los proyectos de este cliente.
estadoIdstring
opcional
Solo los proyectos en este estado del pipeline.
paginaint
opcional
Página a devolver. Por defecto 1.
por_paginaint
opcional
Resultados por página. Por defecto 100, máximo 500.

Ejemplo de petición

curl -X GET 'https://api.afer.pro/api/v1/projects?fecha_inicio=2026-01-01&fecha_fin=2026-06-30' \
  -H 'X-API-KEY: afer_tk_TU_TOKEN' \
  -H 'X-API-SECRET: afer_sk_TU_SECRET'
<?php

$ch = curl_init('https://api.afer.pro/api/v1/projects?fecha_inicio=2026-01-01&fecha_fin=2026-06-30');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    '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/api/v1/projects?fecha_inicio=2026-01-01&fecha_fin=2026-06-30', {
  method: 'GET',
  headers: {
    'X-API-KEY': 'afer_tk_TU_TOKEN',
    'X-API-SECRET': 'afer_sk_TU_SECRET'
  }
});

const resultado = await respuesta.json();

Respuesta

200 · application/json
{
    "errorCode": 200,
    "errorMsg": "",
    "data": {
        "total_proyectos": 1,
        "pagina": 1,
        "por_pagina": 100,
        "num_paginas": 1,
        "proyectos": [
            {
                "proyectoId": "aBc123XyZ…",
                "numero": "OB-2026-07",
                "descripcion": "Reforma integral local Palma",
                "cliente": {
                    "clienteId": "dEf456…",
                    "nombre_fiscal": "ACME OBRAS SL",
                    "nombre_comercial": "Ferrer Interiors",
                    "cif": "B07123456",
                    "email": "admin@ferrerinteriors.com",
                    "telefono": "971123456",
                    "movil": "600123456",
                    "rgpd": {
                        "comunicaciones_email": true,
                        "comunicaciones_whatsapp": false,
                        "comunicaciones_sms": null,
                        "tratamiento_imagenes": null
                    }
                },
                "estado": {
                    "estadoId": "gHi789…",
                    "titulo": "En curso"
                },
                "presupuesto_coste": 42000,
                "presupuesto_venta": 68000,
                "economico": {
                    "ventas": 51200,
                    "compras": 21400,
                    "coste_personal": 12800.4,
                    "coste_maquinaria": 1900,
                    "costes": 36100.4,
                    "resultado": 15099.6,
                    "margen": 29.5,
                    "horas": 742.5
                }
            }
        ]
    }
}
Notas
  • presupuesto_coste y presupuesto_venta son los objetivos fijados en la ficha del proyecto: compáralos con costes y ventas para detectar sobrecoste o fricción con el cliente.
  • El detalle de horas por persona lo da consultarTiemposProyecto.