Obtener presupuesto
GET
https://api.afer.pro/api/v1/estimates/{id}
Alias en castellano (v0, sigue operativo):
POST https://api.afer.pro/obtenerPresupuesto
Un presupuesto por su identificador, con su cliente y todas sus líneas.
Misma forma que obtenerFactura: cabecera, contraparte y array de lineas con cantidad, precio unitario, descuento e IVA de cada una. La base_imponible es la suma de los importes de línea.
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.
presupuestoIdstringobligatorio | Identificador del presupuesto. Viaja en la ruta. Acepta el id cifrado de consultarPresupuestos o el numérico legacy. |
Ejemplo de petición
curl -X GET 'https://api.afer.pro/api/v1/estimates/aBc123XyZ?presupuestoId=aBc123XyZ' \
-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/estimates/aBc123XyZ?presupuestoId=aBc123XyZ');
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/estimates/aBc123XyZ?presupuestoId=aBc123XyZ', {
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": {
"tipo": "presupuesto",
"presupuestoId": "aBc123XyZ…",
"numero": "PRE-2026-014",
"fecha": "2026-03-11",
"concepto": "Reforma integral local Palma",
"contraparte": {
"clienteId": "dEf456…",
"nombre_fiscal": "ACME OBRAS SL",
"cif": "B07123456",
"email": "admin@acmeobras.com"
},
"base_imponible": 18400.5,
"num_lineas": 2,
"lineas": [
{
"lineaId": "lIn001…",
"descripcion": "Demolición y retirada de escombros",
"cantidad": 1,
"importe_unitario": 3400.5,
"descuento": 0,
"iva": 21,
"importe": 3400.5,
"articuloId": null
}
]
}
}
Notas
- Los adjuntos del presupuesto están en obtenerAdjuntos (
GET /api/v1/estimates/{id}/attachments).