Presupuestos
El presupuesto es la fase de estudio: lo que se mide, se valora y se presenta al cliente. Recibe un código al crearse y, si se adjudica, nace una obra con ese mismo código.
No confundir con las ofertas (
/budgets): la oferta es el documento comercial que se envía al cliente, con sus partidas y precios de venta. Un presupuesto puede tener varias ofertas (/budgets?estimate_id=…).Listar presupuestos
GET/api/v1/estimatesread:budgets
Del más reciente al más antiguo.
Parámetros (query)
| Parámetro | Tipo | Descripción |
|---|---|---|
| status string | string | borrador, en_estudio, en_revision, presentado (enviado al cliente), adjudicado (ya es obra), no_adjudicado o caducado. |
| type string | string | completo (con capítulos y partidas) o manual (unos pocos conceptos de venta escritos a mano). |
| q string | string | Busca en el nombre y en el código. |
| updated_since datetime | datetime | Solo los creados o cambiados desde ese momento (también cambios de estado y de miembros), del más antiguo al más reciente. |
| limit / cursor — | — | Paginación: de 1 a 200 por página (50 por defecto). |
curl "https://app.buildnexion.com/api/v1/estimates?status=presentado" \
-H "Authorization: Bearer $BUILDNEXION_API_KEY"Respuesta
{
"data": [
{
"id": "2b8e4d10-7c3a-4f5e-8d21-0a9b6c3e1f47",
"code": "2026-014",
"name": "Reforma integral vivienda C/ Mayor 12",
"status": "adjudicado",
"type": "completo",
"client": {
"name": "Construcciones Ejemplo SL",
"nif": "B00000000",
"address": "Avenida de Ejemplo 1, Mérida",
"email": "obras@ejemplo.es",
"phone": "600 000 000",
"contact": "Pedro Sánchez"
},
"contract_type": "precio_cerrado",
"square_meters": 110,
"responsible_user_id": "3c7e9a15-8b2d-4f61-a4e0-9d5b2c8f7e16",
"created_by_user_id": "a5d2f8e3-1c9b-4e70-b6a4-0f3e7d1c9b52",
"project_id": "6f1c2a9e-3b7d-4c1e-9a52-1d0e8b7c4a21",
"created_at": "2026-07-14T09:02:51.330+00:00",
"updated_at": "2026-08-20T10:14:22.481+00:00",
"app_url": "https://app.buildnexion.com/presupuestos/2b8e4d10-7c3a-4f5e-8d21-0a9b6c3e1f47"
}
],
"pagination": {
"limit": 50,
"next_cursor": null
}
}El objeto presupuesto
Campos
| Parámetro | Tipo | Descripción |
|---|---|---|
| id uuid | uuid | Id del presupuesto. |
| code string | null | string | null | Código (p. ej. 2026-014). Es el que tendrá la obra. |
| name string | string | Nombre. |
| status string | string | Estado (ver el filtro status). |
| type string | string | completo o manual. |
| client object | object | Cliente: name, nif, address, email, phone y contact (persona de contacto). |
| contract_type string | null | string | null | precio_cerrado, por_certificaciones o por_administracion. |
| square_meters number | null | number | null | Superficie en m². |
| responsible_user_id uuid | null | uuid | null | Usuario responsable (ver Usuarios). |
| created_by_user_id uuid | null | uuid | null | Usuario que lo creó. |
| project_id uuid | null | uuid | null | La obra que nació al adjudicarlo (null si no se ha adjudicado). |
| created_at / updated_at datetime | datetime | Alta y último cambio. |
| app_url string | string | Enlace al presupuesto en la app. |
Leer un presupuesto
GET/api/v1/estimates/{id}read:budgets
curl "https://app.buildnexion.com/api/v1/estimates/2b8e4d10-7c3a-4f5e-8d21-0a9b6c3e1f47" \
-H "Authorization: Bearer $BUILDNEXION_API_KEY"Agentes del presupuesto
GET/api/v1/estimates/{id}/agentsread:budgets
Proyectista, dirección facultativa, coordinación de seguridad… Mismo formato que los agentes de la obra, que los hereda al adjudicarse.
Más datos de un presupuesto
| Endpoint | Qué devuelve |
|---|---|
/budgets?estimate_id={id} | Sus ofertas, con partidas y precios. |
/estimates/{id}/members | Quién lo ve y por qué. |
/estimates/{id}/providers | Proveedores a los que se ha pedido precio o asignado partidas. |
/estimates/{id}/summary | Coste, venta y margen previsto. |
La adjudicación
Al adjudicar un presupuesto en la app:
- Nace una obra con el mismo código; la obra lleva
estimate_idy el presupuesto pasa astatus: adjudicadocon suproject_id. - Los agentes y, si se elige así, el equipo del presupuesto pasan a la obra.
- Se emite el webhook
estimate.awardedcon{ estimate_id, project_id, code }, además deestimate.updatedyproject.created(ver eventos).