Skip to content

API Overview ​

Vulcan exposes RESTful APIs through independent microservices. Each capability has its own API with consistent patterns.

Base URLs ​

EnvironmentBase URL
Productionhttps://vulcan.aceve.cloud/api
Staginghttps://staging.hack.aceve.cloud/api
Devhttps://dev.hack.aceve.cloud/api
Localhttp://localhost:5000

API Capabilities ​

CapabilityBase PathDescription
Core Setup/api/coresetupUsers, Groups, Settings
Leads/api/leadsCRM, Leads, Customers
Quotation/api/quotationQuotes, Work packages
Contracts/api/contractsContracts, E-signing
Projects/api/projectsProjects, Timelines
Invoicing/api/invoicingInvoices, Payments
Documents/api/documentsDocument storage
AI/api/aiAI services, Embeddings
Planning/api/planningPlanning, Scheduling

Response Format ​

All API responses follow a consistent envelope format:

json
{
  "data": { /* response payload */ },
  "error": null,
  "meta": {
    "timestamp": "2026-01-12T10:00:00Z",
    "requestId": "abc-123"
  }
}

Success Response ​

json
{
  "data": {
    "id": 1,
    "email": "user@example.com",
    "createdAt": "2026-01-01T00:00:00Z"
  },
  "error": null,
  "meta": {
    "timestamp": "2026-01-12T10:00:00Z",
    "requestId": "abc-123"
  }
}

Error Response ​

json
{
  "data": null,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid input",
    "details": [
      { "field": "email", "message": "Email already exists" }
    ]
  },
  "meta": {
    "timestamp": "2026-01-12T10:00:00Z",
    "requestId": "ghi-789"
  }
}

Paginated Response ​

json
{
  "data": [
    { "id": 1, "name": "Item 1" },
    { "id": 2, "name": "Item 2" }
  ],
  "meta": {
    "total": 100,
    "page": 1,
    "pageSize": 10,
    "timestamp": "2026-01-12T10:00:00Z",
    "requestId": "xyz-789"
  }
}

HTTP Status Codes ​

CodeMeaning
200Success
201Created
204No Content (successful delete)
400Bad Request (validation error)
401Unauthorized (not authenticated)
403Forbidden (not authorized)
404Not Found
409Conflict (resource already exists)
500Internal Server Error

Common Headers ​

Request Headers ​

http
Authorization: Bearer <token>
Content-Type: application/json
Accept: application/json
X-Request-ID: <unique-id>

Response Headers ​

http
Content-Type: application/json
X-Request-ID: <unique-id>
X-Response-Time: 45ms

Sections ​

Built with VitePress | v1.2.0 | 🚀 Week One Sprint