API de presupuestos
Crea presupuestos desde tu ERP, CRM o tienda enviando el plano, consúltalos y recibe un aviso cuando el cliente los acepta. Todo en JSON y en euros, sin IVA salvo donde se indica.
Autenticación
Crea una clave en Conectar y envíala en cada petición. Cada clave pertenece a una empresa y se puede revocar.
Authorization: Bearer pia_live_xxxxxxxxxxxxxxxxxxxxxxxxCrear un presupuesto desde un plano
POST /api/v1/presupuestos · tarda entre 30 segundos y 2 minutos (la IA lee el plano). Hasta 4 archivos JPG, PNG, WEBP o PDF y 4 MB en total. Cuenta para el cupo mensual.
curl -X POST https://<tu-dominio>/api/v1/presupuestos \
-H "Authorization: Bearer pia_live_…" \
-F "archivos=@plano.pdf" \
-F "sector=calderia" \
-F "cantidad=6" \
-F 'cliente={"empresa":"Cliente S.L.","email":"compras@cliente.es"}' \
-F "indicaciones=Inoxidable 304, acabado satinado" \
-F "referencia_externa=PED-2026-0412"También acepta JSON con los archivos en base64:
{ "sector": "mecanizado", "archivos": [{ "nombre": "eje.png", "tipo": "image/png", "base64": "iVBORw0…" }] }Respuesta 201:
{
"id": "6f1c…", "numero": "P-2026-0031", "estado": "borrador", "sector": "calderia",
"cantidad": 6, "referencia_externa": "PED-2026-0412",
"resumen": "Mesa de trabajo en inoxidable con estante inferior…",
"dudas": ["¿Qué acabado lleva la estructura?"], "supuestos": ["…"],
"lineas": [
{ "id": "l…", "tipo": "material", "concepto": "inox304", "descripcion": "Tablero · Inoxidable AISI 304",
"detalle": "1 × chapa A1580 × B780 × E1.5 mm = 14,66 kg", "cantidad": 14.66, "unidad": "kg",
"coste_unitario": 4.2, "por_pedido": false, "origen": "deducido", "confianza": "media" },
{ "concepto": "soldadura_tig", "cantidad": 3.2, "unidad": "m", "coste_unitario": 22, "origen": "estimado", … }
],
"margen_pct": 30, "iva_pct": 21, "coste": 2185, "base_imponible": 2840.5, "iva": 596.51, "total": 3437.01,
"precio_unidad": 473.42, "enlace_cliente": "https://…/p/9f3c…", "pdf": "https://…/api/v1/presupuestos/6f1c…/pdf",
"respuesta_cliente": null, "creado": "2026-10-27T17:02:11.000Z", "actualizado": "…"
}cantidad de cada línea es por unidad fabricada, salvo por_pedido: true (preparación, programación, transporte…). origen: cota/texto (del plano), deducido (calculado de cotas), estimado (estimación de la IA) o manual.
Consultar y actualizar
GET /api/v1/presupuestos?estado=aceptado&desde=2026-10-01&limite=50
GET /api/v1/presupuestos/{id}
GET /api/v1/presupuestos/{id}/pdf
PATCH /api/v1/presupuestos/{id} { "estado": "enviado", "cantidad": 10, "margen_pct": 25 }
GET /api/v1/sectores (público: sectores, conceptos y materiales)Estados: borrador, enviado, aceptado, rechazado. formato: desglosado o unico (el cliente ve solo concepto_unico con el total). La API y los webhooks están incluidos a partir del plan Profesional.
Webhooks
Configura la dirección en Conectar. Te enviamos un POST con el presupuesto completo (mismo formato de arriba) en cada evento: presupuesto.creado, presupuesto.enviado, presupuesto.aceptado, presupuesto.rechazado. Comprueba la firma antes de fiarte:
// Node.js
const firma = "sha256=" + crypto.createHmac("sha256", SECRETO).update(cuerpoEnBruto).digest("hex");
if (firma !== req.headers["x-presupuestos-firma"]) return res.status(401).end();
// Cuerpo
{ "evento": "presupuesto.aceptado", "fecha": "…", "presupuesto": { … },
"nombre": "Ana Pérez", "comentario": "Adelante", "acepta": true }Errores
Siempre JSON { "error": "mensaje legible" }: 400 datos no válidos, 401 clave no válida, 402 cupo del mes agotado, 404 no encontrado, 429 demasiadas peticiones, 502 la IA no pudo leer el documento.
Sectores
mecanizado · Mecanizado y CNC
calderia · Calderería y estructuras metálicas
chapa · Chapa: corte láser y plegado
carpinteria_metalica · Carpintería metálica y aluminio
electrico · Cuadros e instalaciones eléctricas
fluidos · Neumática e hidráulica
reparacion · Reparación y mantenimiento de maquinaria
clima · Climatización y fontanería
madera · Carpintería de madera y mobiliario
reformas · Reformas y obra