BuildNexion

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ámetroTipoDescripción
project_idstringFiltra por proyecto.
statusstringdraft · sent · accepted · rejected · archived
cursorstringPaginación.
limitintegerEntre 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ámetroTipoDescripción
project_id*stringProyecto al que pertenece.
name*stringNombre interno.
currencystringDefault EUR.
markup_percentagenumber% global de margen de venta. Default 0.
chaptersarrayEstructura 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}