BuildChart REST API
Build integrations with the BuildChart API.
Ready to integrate?
Create a free account to get your API key. API access is available on the Business plan.
Authentication
Include your API key in the Authorization header:
curl -H "Authorization: Bearer cg_live_xxxxxxxxxxxx" \ https://your-domain.com/api/v1/projects
API keys are generated in your account settings after signing up. API access is available on the Business plan.
Rate Limits
API access is available on Business plans. Rate limits are enforced per API key. Exceeding limits returns HTTP 429.
| Plan | Per Minute | Per Day | Per Month |
|---|---|---|---|
| Business | 1,000 | 100,000 | 1,000,000 |
Response headers include X-RateLimit-Limit, X-RateLimit-Remaining, and Retry-After.
Circuit breaker: Keys making 3x their normal rate in any 5-minute window are automatically suspended. Unsuspend from /account/api-keys.
Base URL
https://your-domain.com/api/v1Response Format
// Success
{ "data": { ... }, "error": null }
// Error
{ "data": null, "error": "Error message" }Endpoints
/api/v1/healthPublicHealth check
Response:
{ "status": "ok", "timestamp": "...", "version": "1.0" }/api/v1/meCurrent user info
Response:
{ "user_id": "uuid", "scope": "read_write", "profile": {...}, "project_count": 5 }/api/v1/projectsList all projects
Response:
[{ "id": "uuid", "name": "New Home Build", "start_date": "2026-05-01", ... }]/api/v1/projects/[id]Get project with tasks and members
Response:
{ "id": "uuid", "name": "...", "tasks": [...], "members": [...] }/api/v1/projects/[id]/tasksList tasks (filterable)
Query params: ?status=In+Progress§ion=Execution&assignee=Mike
Response:
[{ "id": "uuid", "activity": "Framing", "status": "In Progress", ... }]/api/v1/projects/[id]/tasksCreate new task
Request body:
{ "activity": "Framing", "start_date": "2026-05-04", "end_date": "2026-05-15", "section": "Execution" }Response:
{ "id": "uuid", "activity": "Framing", ... }/api/v1/projects/[id]/tasks/[taskId]Update task
Request body:
{ "status": "Complete", "percent_done": 1 }Response:
{ "id": "uuid", "status": "Complete", ... }/api/v1/projects/[id]/tasks/[taskId]Delete task
Response:
{ "deleted": true }/api/v1/projects/[id]/membersList project members
Response:
[{ "user_id": "uuid", "role": "subcontractor", ... }]/api/v1/projects/[id]/activityActivity log
Query params: ?limit=20&offset=0
Response:
{ "entries": [...], "total": 42, "limit": 20, "offset": 0 }Webhooks
Receive real-time events when things change in BuildChart.
Events
task.createdtask.updatedtask.completedtask.deletedtask.overdueproject.createdproject.updatedaction.pending_approvalaction.executedSignature Verification
const crypto = require('crypto');
const signature = req.headers['x-webhook-signature'];
const expected = 'sha256=' + crypto
.createHmac('sha256', webhookSecret)
.update(JSON.stringify(req.body))
.digest('hex');
if (signature !== expected) throw new Error('Invalid signature');Code Examples
JavaScript / Node.js
const res = await fetch('https://your-domain.com/api/v1/projects', {
headers: { 'Authorization': 'Bearer cg_live_xxxx' }
});
const { data } = await res.json();
console.log(data); // Array of projectsPython
import requests
headers = {"Authorization": "Bearer cg_live_xxxx"}
r = requests.get("https://your-domain.com/api/v1/projects", headers=headers)
projects = r.json()["data"]