Get customers
Answer customers
Work for you
Reach people
Give agents tools
Run and ship
Automate field jobs, places, routes, timesheets and forms
Returns the account the API key acts as, its company and the key's id. Any valid key may call it. A wrong, expired, revoked or missing key answers 401.
Returns the key's company: contact details, address, location, settings and teams. Any member of the company may call it.
Lists the company's active members the key may see: admins and company keys see everyone; operators and workers see what the company's visibility settings allow (for example only their own team). The caller is always included. Removed members appear only when asked for by id. No paging: query and max filter the full list.
4 fields
Returns one member in a list of one. An unknown id, or a member the key may not see, answers 404 (`not_found`, "Member not found"). Removed members of the company are returned, with activeStatus.
1 field
Lists the company's jobs. Two modes: - **Day list** (none of limit, skip, createdSince, updatedSince, progress): the jobs of one day, `date` or today in the caller's time zone, ordered by route position, at most 5,000. Archived jobs only with includeArchived=true. - **Paged list** (any of limit, skip, createdSince, updatedSince, progress): all dates unless `date` is given, newest first (by last save, or by creation with createdSince), `limit` default 100, with totalCount and hasMore. Archived jobs are left out unless includeArchived=true. Deleted jobs never come back. Looking up by `id` or `externalId` returns the job whatever its archive status and ignores date and assignee; no match gives an empty list. Workers without the company setting workersViewJobCalendar may only list today (give or take four hours); other dates give 403.
13 fields
Creates one job (the job object as the body) or several (`{"jobs": [...]}`). A job whose externalId matches an existing job of the company is updated with the fields sent instead of creating a duplicate (upsert), and is set back to normal if it was archived. A job that was deleted in Hellotracks stays deleted: it is not changed, and the answer lists it with `status: "deleted"`. The answer lists one job per job sent, in the same order. Jobs without a location get the location of their place, else their address is geocoded in the background, so the response can still show location 0/0. Jobs that are assigned and dated drop the worker's saved route for that day, workers get the updated jobs, and the company's job webhooks fire. Unknown fields are refused with 400.
14 fields
Returns the job in `items` (one element), archived ones included. A deleted or unknown job answers 404 (`not_found`, "Job not found").
Updates the job; only the fields sent change. Always notifies the assigned worker and sends route changes; a changed address (without a location) is re-geocoded in the background. An unknown id gives an empty `items` list. Workers may only change today's jobs unless the company allows workersEditJob.
15 fields
Deletes the job; it no longer appears in any list. Workers are refused; dispatchers only when the company allows dispatchers to delete jobs. Returns the deleted job in `items`; an unknown id gives an empty list.
Archives the job: it leaves the lists unless includeArchived=true and can be restored. Returns the job in `items`. An unknown or deleted id gives an empty list: a deleted job stays deleted, and restore is the way back.
Sets an archived job back to normal. Returns the job in `items`; an unknown id gives an empty list.
Optimizes the order of one member's jobs on one day and saves the route. Allowed for admins, dispatchers and the company; workers only when the company allows workersOptimizeRoute (403 otherwise, also for a member the caller cannot see). With solve=false a worker's route that was optimized in the last 3 hours is returned unchanged.
7 fields
Lists the places the caller can see. Workers without the company setting workersViewPlaces only see places of their own teams.
3 fields
Creates a place for the company. Workers only when the company allows workersCreatePlaces. Without teams the place goes to the creator's teams; without a location the address is geocoded in the background. Visits of the last 30 days that match the new place are labeled with it.
Returns the place in `items` (one element). An unknown place, or one the caller cannot see, answers 404 (`not_found`, "Place not found").
Changes the fields sent. extendedData is merged: names sent are set, names sent as null are removed, the others stay. Admins, dispatchers and the company may edit; workers only places they can see when the company allows workersCreatePlaces (403 otherwise).
Deletes one place of the caller's company. Workers are refused. An unknown id, or one that is not a place of the company, gives 403 with the message 'place not found'.
Lists the company's zones (geofences). Workers are refused with 403 (code permission_denied).
Lists clock-in/clock-out entries of the company's members for one day (default today) or a from/until range, with totals. Days are in the caller's time zone; an entry belongs to the day it starts. There is no paging and no limit on the range. Admins, operators and the company key may call it; workers get 403.
Adds a clock-in, and optionally a clock-out, for a member, as the dashboard does. clockIn or clockInAt is required; the clock-out must be after the clock-in. Admins, operators and the company key may call it; workers get 403.
Moves the clock-in and/or clock-out of an entry, or adds the missing clock-out. At least one time field is required. The answer's entry may have a new id. An unknown or foreign entry is answered with 400 invalid_request. Admins, operators and the company key may call it; workers get 403.
8 fields
Deletes the entry's clock-in and clock-out records for good. An unknown or foreign entry is answered with 400 invalid_request. Admins, operators and the company key may call it; workers get 403.
Lists the company's form templates (active and archived). Workers may call it and see only templates linked to places of their teams.
Lists submitted forms, newest first. limit is applied before the templateId, jobId and placeId filters, so fewer items than limit may come back even when more match. Admins, operators and the company key only; workers get 403 permission_denied.
Returns one submitted form with its answers. An unknown or foreign id is answered with 400 invalid_request. Admins, operators and the company key only; workers get 403 permission_denied.