Plan of Day
API Reference
Integrate AI-powered field reporting into your applications.
Send jobsite data in, get professional reports and hundreds of KPIs out.
Base URL
https://planofday.com/api/v1What You Can Build
Everything you need to integrate field reporting into your platform
RESTful JSON API
Read your projects, daily report snapshots, and KPI metrics as clean JSON.
API Key Authentication
Bearer token auth (pod_sk_ keys). Create and revoke keys anytime from your dashboard.
KPI Access
Pull a project's latest KPI metrics programmatically — the same real recorded fields the dashboard shows.
Full Data Export
Download all of a project's structured data as a ZIP (CSV + JSON per entity). Your data is never hostage.
Rate Limiting
Per-key rate limiting (120 requests/minute) with clear 429 responses.
API Endpoints
Core endpoints for projects, daily reports, KPIs, and data export
/api/v1/projects/api/v1/projects/:id/reports/api/v1/projects/:id/kpis/api/v1/projects/:id/exportCode Examples
Get started in minutes with these examples
// List your projects
const res = await fetch('https://planofday.com/api/v1/projects', {
headers: { 'Authorization': 'Bearer pod_sk_...' }
});
const { projects } = await res.json();
// => { projects: [ { id, name, status, created_at, updated_at }, ... ] }// Get a project's latest KPI metrics
const kpis = await fetch(
'https://planofday.com/api/v1/projects/PROJECT_ID/kpis',
{ headers: { 'Authorization': 'Bearer pod_sk_...' } }
).then(r => r.json());
// => {
// project_id: "...",
// snapshot: { id, snapshot_date, day_number, field_count, coverage_percent },
// metrics: { ...the project's real recorded fields... } // null if no data yet
// }// Download all of a project's structured data as a ZIP
const res = await fetch(
'https://planofday.com/api/v1/projects/PROJECT_ID/export',
{ headers: { 'Authorization': 'Bearer pod_sk_...' } }
);
const zipBlob = await res.blob();
// ZIP: manifest.json + data/<entity>.csv + data/<entity>.json for every entity
// (snapshots, contracts, RFIs, change orders, pay apps, safety, schedule, ...).Authentication
All API requests require a Bearer token in the Authorization header
API keys
Create and manage them in Dashboard → Developer → API Keys. Shown once at creation; store it securely.
pod_sk_...Response Format
Consistent JSON responses with clear status codes
Success
Request completed successfully
Created
Resource created successfully
Unauthorized
Invalid or missing API key
Rate Limited
Too many requests — retry after cooldown
Ready to Build?
Start your free trial, then add API Access on a Custom plan to integrate your projects, reports, and KPIs into your own tools.