Presupuestos
Los presupuestos son la estructura jerárquica capítulos → partidas → descompuestos que define el coste y la oferta de venta de una obra.
El objeto presupuesto
json
{
"id": "bud_NkM2pYqL",
"project_id": "prj_8GcyLwT4mPq",
"name": "Presupuesto v3 — Reforma integral",
"status": "sent",
"currency": "EUR",
"cost_amount": 2480500,
"sale_amount": 3100625,
"markup_percentage": 25,
"chapters_count": 8,
"items_count": 142,
"created_at": "2026-04-02T09:00:00.000Z",
"sent_at": "2026-04-08T11:32:14.000Z",
"accepted_at": null
}Los capítulos, partidas y descompuestos se exponen como subrecursos — ver más abajo.
Listar presupuestos
GET/v1/budgets
Query parameters
| Parámetro | Tipo | Descripción |
|---|---|---|
| project_id | string | Filtra por proyecto. |
| status | string | draft · sent · accepted · rejected · archived |
| cursor | string | Paginación. |
| limit | integer | Entre 1 y 100. Default 25. |
curl "https://api.buildnexion.com/v1/budgets?status=draft" \
-H "Authorization: Bearer bn_live_xxxxxxxxxxxxxxxxxxxx"Obtener un presupuesto
GET/v1/budgets/{id}
Devuelve el presupuesto base. Para obtener la estructura completa (capítulos + partidas) usa ?include=items.
Listar partidas de un presupuesto
GET/v1/budgets/{id}/items
json
{
"data": [
{
"id": "bitem_92aTpQ",
"chapter": "01.02",
"code": "01.02.003",
"description": "Excavación de zanja en terreno medio, máquina retroexcavadora.",
"unit": "m3",
"quantity": 142.50,
"cost_price": 2380,
"sale_price": 2975,
"cost_total": 339150,
"sale_total": 423937
}
],
"pagination": { "next_cursor": null, "limit": 100 }
}Crear un presupuesto
POST/v1/budgets
Body
| Parámetro | Tipo | Descripción |
|---|---|---|
| project_id* | string | Proyecto al que pertenece. |
| name* | string | Nombre interno. |
| currency | string | Default EUR. |
| markup_percentage | number | % global de margen de venta. Default 0. |
| chapters | array | Estructura inicial opcional. Ver ejemplo. |
json
{
"project_id": "prj_8GcyLwT4mPq",
"name": "Presupuesto v1",
"markup_percentage": 22,
"chapters": [
{
"code": "01", "title": "Movimiento de tierras",
"items": [
{
"code": "01.001",
"description": "Excavación de zanjas",
"unit": "m3",
"quantity": 120,
"cost_price": 2380
}
]
}
]
}Cambiar el estado
PATCH/v1/budgets/{id}
Para marcar un presupuesto como aceptado por el cliente:
bash
curl -X PATCH https://api.buildnexion.com/v1/budgets/bud_NkM2pYqL \
-H "Authorization: Bearer bn_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "status": "accepted", "accepted_at": "2026-05-25" }'Cambiar el estado a
accepted dispara el evento budget.accepted a tus webhooks suscritos.Eliminar un presupuesto
DELETE/v1/budgets/{id}