Quote Builder by Vexco

API

Crea presupuestos desde cualquier sistema. Las claves se crean en la app: Ajustes → API. Cada clave da acceso solo a su cuenta de HubSpot.

Autenticación

Authorization: Bearer qbk_…

POST /api/v1/quotes

Crea un presupuesto en el negocio dealId desde una plantilla (templateId + inputs) o desde contenido (content, url, base64 + filename, o un fichero en multipart).

curl -X POST https://quotes.vexcosolutions.com/api/v1/quotes \
  -H "Authorization: Bearer qbk_…" -H "Content-Type: application/json" \
  -d '{"dealId": "123456", "templateId": "…", "inputs": {"users": "25", "plan": "pro"}}'
curl -X POST https://quotes.vexcosolutions.com/api/v1/quotes \
  -H "Authorization: Bearer qbk_…" \
  -F dealId=123456 -F file=@quote.xlsx -F publish=false

Respuesta (201):

{ "quoteId": "…", "url": "https://app.hubspot.com/…", "publicUrl": "…", "title": "…", "total": 1311, "currency": "EUR",
  "lineCount": 3, "mode": "cpq", "status": "DRAFT", "needsApproval": false, "warnings": [] }

POST /api/v1/preview

Igual que /quotes, pero solo calcula: devuelve líneas, totales, comprador, empresa y bloqueos sin crear nada.

POST /api/v1/parse

Lee contenido y devuelve cómo se ha entendido (no necesita negocio).

GET /api/v1/templates

Plantillas activas de la cuenta.

Errores

{ "error": { "code": "missing_price", "title": "…", "hint": "…" } }

401 clave no válida · 403 plan sin API · 404 no existe · 422 dato o contenido que corregir · 503 HubSpot no responde (reintentar).