Skip to main content

Jobs

The Jobs endpoints provide access to your enriched job records, including AI-extracted fault types, outcomes, timings, and relationships to engineers, sites, and customers.

GET /jobs/feed

Returns a paginated feed of enriched jobs for your company. Supports filtering by entity, status, punctuality, date range, and sort field. All filters are optional and composable as AND conditions. Query parameters:
Punctuality filters combine with AND. Prefer finished_late=true / started_late=true for late questions. Job payloads still expose finishedEarly / startedEarly (and startDeltaMins / endDeltaMins where negative = early, positive = late). Do not pass conflicting early/late pairs for the same axis.
Example: completed jobs from May 2026
Example: worst late finishes in a date window

GET /jobs/feed/account

Returns a paginated feed of jobs scoped to a parent account and all its child contacts. Pass any contact ID, parent or child, and the endpoint resolves the full hierarchy automatically.
This endpoint resolves the parent/child account hierarchy. If you pass a child contact ID, the parent is found and all sibling contacts are included. If you pass a parent, all children are included. Standalone contacts return only their own jobs.
How hierarchy resolution works: Query parameters: Response includes an account block with the resolved hierarchy context:
Example: all completed jobs for an account in Q1 2026
Use cases:
  • Monthly account reviews, scope by date_from/date_to with date_field=actualEndAt to see all work delivered to a customer account in a period.
  • Account + type filtering, add type_id to see only fire alarm or HVAC jobs across the whole account hierarchy.
  • Account performance, combine with status=completedOk,completedWithIssues to measure first-visit fix rate across all child sites.
  • Account late finishes, use finished_late=true with date_field=actualEndAt and sort_by=endDeltaMins to rank overruns across the hierarchy.

GET /jobs/{job_id}

Returns the full enriched record for a specific job, including AI-extracted fields, linked relationships from the intelligence layer, and timing data. Path parameters: Query parameters: Example:

POST /aggregate/jobs

Job metrics with groupBy dimensions and period comparison. Powers dashboard charts, trend analysis, and punctuality counts. Request body: filters fields:
For punctuality counts, use metric=job_count with the boolean filters. Prefer finishedLate=true / startedLate=true. Pair time_axis with the question: finish / overrun → actualEndAt; start / arrival → actualStartAt. Do not estimate late counts from avg_end_delta_mins or avg_start_delta_mins — averages mask mixed early and late jobs. Follow up with GET /jobs/feed using the same filters, matching date_field, and sort_by=endDeltaMins (or startDeltaMins) for worst-N lists.
Example: jobs per engineer (last 30 days)
Example: finished late but started early (last 7 days)