Data model
The API exposes two resources. A Location is a store or site where Unique works for you. A Task is one unit of service work performed on one vehicle at one location.
Location 1 ─── * TaskLocation
Section titled “Location”{ "id": "loc_7Hq2Lm", "name": "Avis Los Angeles Airport", "timezone": "America/Los_Angeles", "address": "9020 Aviation Blvd, Inglewood, CA 90301"}| Field | Type | Notes |
|---|---|---|
id |
string | Stable. Use it as the location_id filter and as your join key. |
name |
string | Display name. It can change; do not use it as a key. |
timezone |
string | IANA time zone, for turning UTC timestamps into local time. |
address |
string or null | Street address, when on file. |
{ "id": "tsk_8sd2KqP1", "vehicle_id": "4471209", "mva": "4471209", "vin": null, "task_type": "Oil Change", "status": "completed", "location": { "id": "loc_7Hq2Lm", "name": "Avis Los Angeles Airport" }, "started_at": "2026-09-26T21:41:50Z", "odometer_miles": 48210}| Field | Type | Notes |
|---|---|---|
id |
string | Stable. Use it to deduplicate when you sync. |
vehicle_id |
string | Identifier recorded by the technician on site. |
mva |
string or null | MVA (fleet unit number). Always a string, even when it looks numeric. Keep leading zeros. |
vin |
string or null | 17-character VIN, when it was captured. |
task_type |
string | The work performed, for example Oil Change, Tire Repair or Tire Change. New types can appear; do not fail on unknown values. |
status |
string | Always completed in v1. |
location |
object | id and name of the location. Full details come from /v1/locations. |
started_at |
string | When the technician started the task. RFC 3339, always UTC. |
odometer_miles |
integer or null | Odometer reading in miles, when captured. |
Conventions
Section titled “Conventions”- Timestamps are RFC 3339 in UTC (
2026-09-26T21:41:50Z). Convert with the location’stimezonewhen you need local time, for example to group work by store day. - Nullable fields are always present. A field without a value is returned
as
null, never omitted, so your parser can rely on the shape. - Ids are opaque strings. Do not parse them or assume a format or length.
- Additive changes are not breaking. We may add new fields and new
task_typevalues within v1. Ignore fields you do not recognize. - What is not exposed. Pricing, internal approval state and the identity of the technician are not part of the API.