Obras
Una obra nace al adjudicar un presupuesto (o se crea directamente en la app) y conserva su código. Desde aquí se llega a su equipo, sus documentos, sus proveedores y su resumen económico.
Listar obras
GET/api/v1/projectsread:projects
De la más reciente a la más antigua. Las obras de demostración no salen salvo que pidas include_demo=true.
Parámetros (query)
| Parámetro | Tipo | Descripción |
|---|---|---|
| status string | string | active (en curso), paused (parada), completed (terminada). presupuesto y rejected son estados antiguos, de cuando presupuesto y obra eran lo mismo. |
| category string | string | residencial, industrial, obra_civil o comercial. |
| q string | string | Busca en el nombre y en el código. |
| from / to date | date | Creadas desde / hasta esa fecha (YYYY-MM-DD). |
| updated_since datetime | datetime | Solo las creadas o cambiadas desde ese momento (ISO 8601), de la más antigua a la más reciente. Ver Paginación y sincronización. |
| include_demo boolean | boolean | true para incluir las obras de demostración. |
| limit / cursor — | — | Paginación: de 1 a 200 por página (50 por defecto). |
curl "https://app.buildnexion.com/api/v1/projects?status=active&limit=50" \
-H "Authorization: Bearer $BUILDNEXION_API_KEY"Respuesta
{
"data": [
{
"id": "6f1c2a9e-3b7d-4c1e-9a52-1d0e8b7c4a21",
"name": "Reforma integral vivienda C/ Mayor 12",
"code": "2026-014",
"status": "active",
"category": "residencial",
"subcategory": "Reforma de vivienda",
"address": "Calle Mayor 12, 3º B",
"postal_code": "06800",
"city": "Mérida",
"province": "Badajoz",
"country": null,
"responsible": "Laura Gómez",
"start_date": "2026-09-01",
"end_date_planned": "2027-01-31",
"contract_amount": 84500,
"contract_type": "precio_cerrado",
"square_meters": 110,
"client": {
"name": "Construcciones Ejemplo SL",
"nif": "B00000000",
"address": "Avenida de Ejemplo 1, Mérida",
"email": "obras@ejemplo.es",
"phone": "600 000 000"
},
"is_demo": false,
"estimate_id": "2b8e4d10-7c3a-4f5e-8d21-0a9b6c3e1f47",
"created_at": "2026-08-20T10:14:22.481+00:00",
"updated_at": "2026-10-02T08:01:10.112+00:00",
"app_url": "https://app.buildnexion.com/projects/6f1c2a9e-3b7d-4c1e-9a52-1d0e8b7c4a21"
}
],
"pagination": {
"limit": 50,
"next_cursor": null
}
}El objeto obra
Campos
| Parámetro | Tipo | Descripción |
|---|---|---|
| id uuid | uuid | Id de la obra. |
| code string | null | string | null | Código de la obra: el que recibió su presupuesto al crearse (p. ej. 2026-014). Lo configura cada empresa en Configuración → General → Numeración de obras. |
| name string | string | Nombre. |
| status string | string | Estado (ver el filtro status). |
| category / subcategory string | null | string | null | Tipo de obra. |
| address, postal_code, city, province, country string | null | string | null | Ubicación de la obra. |
| responsible string | null | string | null | Nombre del responsable de la obra. |
| start_date / end_date_planned date | null | date | null | Inicio y fin previsto. |
| contract_amount number | null | number | null | Precio de venta contratado, en euros, tal como figura en la ficha de la obra. |
| contract_type string | null | string | null | precio_cerrado, por_certificaciones o por_administracion. |
| square_meters number | null | number | null | Superficie en m². |
| client object | object | Cliente: name, nif, address, email, phone. |
| is_demo boolean | boolean | Obra de demostración. |
| estimate_id uuid | null | uuid | null | Presupuesto del que nace (null si se creó sin presupuesto). |
| created_at / updated_at datetime | datetime | Alta y último cambio (incluye cambios de estado y de miembros). |
| app_url string | string | Enlace a la obra en la app. |
Leer una obra
GET/api/v1/projects/{id}read:projects
El mismo objeto. 404 not_found si no existe o es de otra organización.
curl "https://app.buildnexion.com/api/v1/projects/6f1c2a9e-3b7d-4c1e-9a52-1d0e8b7c4a21" \
-H "Authorization: Bearer $BUILDNEXION_API_KEY"Agentes de la obra
GET/api/v1/projects/{id}/agentsread:projects
Los intervinientes que no son ni el cliente ni los proveedores: quien redacta el proyecto, la dirección facultativa, la coordinación de seguridad y salud… Se dan de alta en el presupuesto y la obra los hereda al adjudicarse; aquí salen los de la obra y los de su presupuesto.
Campos
| Parámetro | Tipo | Descripción |
|---|---|---|
| role string | string | proyectista, direccion_obra, direccion_ejecucion, coordinador_seguridad u otro. |
| role_detail string | null | string | null | Precisión del papel (obligatoria en la práctica si role es otro). |
| name / company string | string | Persona y empresa o estudio. |
| email / phone / notes string | null | string | null | Contacto y notas. |
Respuesta
{
"data": [
{
"id": "0e6c3b98-d4a1-4f27-8b5e-73a9c2d6f1e4",
"role": "direccion_obra",
"role_detail": null,
"name": "Marta Ruiz",
"company": "Estudio Ruiz Arquitectura",
"email": "marta@ejemplo.es",
"phone": "600 000 001",
"notes": null,
"updated_at": "2026-09-03T16:20:41.007+00:00"
}
]
}Más datos de una obra
| Endpoint | Qué devuelve |
|---|---|
/projects/{id}/members | Quién ve la obra y por qué. |
/projects/{id}/documents | Documentos de la obra. |
/projects/{id}/providers | Proveedores y subcontratas que trabajan en ella. |
/projects/{id}/compliance | Documentación CAE de sus subcontratas. |
/projects/{id}/summary | Coste, venta, certificado, facturado y margen. |
/budgets?project_id={id} | Ofertas de la obra, con sus partidas. |
/invoices?project_id={id} | Facturas de compra de la obra. |
/delivery-notes?project_id={id} | Albaranes de la obra. |
Para enterarte de obras nuevas, cambios y bajas sin preguntar, suscríbete a
project.created, project.updated y project.deleted (ver eventos).