API Reference
The Weaver API gives you programmatic access to project intelligence, document analysis, schedule risk scoring, and integration sync. All endpoints return JSON and follow REST conventions.
The Weaver API is currently in general availability. API access is included on Growth and Enterprise plans. Contact sales to enable API access on your account.
Base URL
Authentication
All API requests must include your API key in the Authorization header as a Bearer token. You can generate and manage API keys in your account settings under Settings → API Keys.
API key format
Weaver API keys are prefixed with wvr_live_ for production and wvr_test_ for sandbox environments.
Never expose API keys in client-side code, public repositories, or logs. Use environment variables. Rotate compromised keys immediately from your API settings page.
# Example authenticated request curl https://api.helloweaver.com/v1/projects \ -H "Authorization: Bearer wvr_live_your_key" \ -H "Content-Type: application/json"
Quick Start
Get up and running with the Weaver API in under 5 minutes.
- 1
Generate an API key
Go to Settings → API Keys in your Weaver account and create a new key. Copy it somewhere safe — you won't be able to see it again.
- 2
Make your first request
List your projects to confirm authentication is working:
GET /v1/projectscurl https://api.helloweaver.com/v1/projects \ -H "Authorization: Bearer wvr_live_your_key" - 3
Upload and analyze a document
Upload a project schedule or contract to extract AI insights:
POST /v1/documents/uploadcurl -X POST https://api.helloweaver.com/v1/documents/upload \ -H "Authorization: Bearer wvr_live_your_key" \ -F "file=@schedule.pdf" \ -F "project_id=proj_abc123" \ -F "analyze=true"
- 4
Set up a webhook
Subscribe to events so your system is notified when analysis completes or risk scores change.
SDKs & Libraries
Official SDKs handle authentication, retries, and response parsing automatically.
npm install @weaver/api
Error Handling
The API uses conventional HTTP status codes. Errors return a JSON body with a code, message, and optional details.
| Status | Code | Description |
|---|---|---|
| 200 | — | Success |
| 400 | invalid_request | Missing or malformed parameters |
| 401 | unauthorized | API key missing or invalid |
| 403 | forbidden | Authenticated but lacking permission |
| 404 | not_found | Resource does not exist |
| 422 | unprocessable | Request understood but cannot be processed |
| 429 | rate_limited | Too many requests — back off and retry |
| 500 | server_error | Unexpected server error — check status page |
{ "error": { "code": "invalid_request", "message": "The field 'project_id' is required.", "details": { "field": "project_id", "constraint": "required" } } }Rate Limits
Rate limits are applied per API key, per minute. When a limit is exceeded, the API returns a 429 with a Retry-After header.
| Plan | Requests / min | Doc uploads / day | Concurrent analyses |
|---|---|---|---|
| Starter | 60 | 50 | 2 |
| Growth | 300 | 500 | 10 |
| Enterprise | Custom | Unlimited | Custom |
List projects
Returns a paginated list of your organization's projects, ordered by most recently updated. Use the cursor field to paginate.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| limitoptional | integer | Number of results (default: 20, max: 100) |
| cursoroptional | string | Pagination cursor from previous response |
| statusoptional | string | Filter by status: active, completed, archived |
{ "data": [ { "id": "proj_abc123", "name": "Terminal 4 Expansion", "status": "active", "risk_score": 72, "created_at": "2026-03-01T09:00:00Z", "updated_at": "2026-07-06T14:22:00Z" } ], "pagination": { "cursor": "cur_xyz789", "has_more": true, "total": 47 } }Upload document
Accepts multipart/form-data. Supported file types: PDF, DOCX, XLSX, XER (Primavera P6), MPP (MS Project), CSV. Max file size: 100 MB.
Form Parameters
| Parameter | Type | Description |
|---|---|---|
| filerequired | file | The document to upload |
| project_idrequired | string | ID of the project to attach this document to |
| document_typeoptional | string | schedule, contract, rfi, submittal, other |
| analyzeoptional | boolean | Trigger AI analysis immediately (default: false) |
{ "id": "doc_7f2a91", "project_id": "proj_abc123", "filename": "schedule_rev3.pdf", "document_type": "schedule", "size_bytes": 2048420, "status": "analyzing", "analysis_id": "anlys_9b3c12", "uploaded_at": "2026-07-07T10:31:00Z" }Analyze schedule
Triggers a full AI analysis on a previously uploaded schedule document. The analysis runs asynchronously; subscribe to the schedule.analysis.completed webhook to be notified when results are ready.
Request Body
| Parameter | Type | Description |
|---|---|---|
| document_idrequired | string | ID of the uploaded schedule document |
| baseline_idoptional | string | Document ID to compare against (variance analysis) |
| optionsoptional | object | Analysis options — see below |
{ "document_id": "doc_7f2a91", "baseline_id": "doc_3a1b00", "options": { "detect_logic_errors": true, "flag_missing_predecessors": true, "check_resource_overallocation": true } }{ "analysis_id": "anlys_9b3c12", "status": "queued", "estimated_duration_s": 45, "webhook_event": "schedule.analysis.completed" }Score project
Generates a risk score from 0–100 for a project based on schedule health, document signals, historical patterns, and real-time flags. Scores above 70 indicate high risk requiring attention.
{ "project_id": "proj_abc123", "score": 72, "risk_level": "high", "drivers": [ { "factor": "schedule_float", "weight": 0.35, "score": 81 }, { "factor": "open_rfis", "weight": 0.25, "score": 64 }, { "factor": "resource_loading", "weight": 0.20, "score": 55 }, { "factor": "weather_forecast", "weight": 0.20, "score": 70 } ], "scored_at": "2026-07-07T10:31:00Z" }Create webhook
Register a URL to receive event payloads. Weaver signs each delivery with an X-Weaver-Signature HMAC-SHA256 header so you can verify authenticity.
Event Types
| Event | Triggered when |
|---|---|
| document.uploaded | A document is successfully received |
| schedule.analysis.completed | Schedule AI analysis finishes |
| risk.score.changed | A project's risk score changes by ≥5 points |
| risk.flag.created | A new risk flag is raised on a project |
| project.created | A new project is added |
| integration.sync.failed | A Procore or Autodesk sync fails |
{ "url": "https://your-app.com/webhooks/weaver", "events": [ "schedule.analysis.completed", "risk.score.changed", "risk.flag.created" ], "secret": "your_signing_secret" }Changelog
POST /v1/schedules/compare is now generally available. Compare two schedule revisions and get a structured diff of added, removed, and modified activities.
Risk scoring now includes weather and resource loading factors. All webhook deliveries now include an X-Weaver-Signature header for verification.
The document upload endpoint now accepts .xer files from Oracle Primavera P6, with full activity and WBS extraction.
Weaver's REST API opened to Growth and Enterprise customers. Includes projects, documents, schedule analysis, risk scoring, and webhooks.