Start-Inhibit Services
This page explains what start-inhibit does, which vehicles support it, which endpoints to use to immobilise or release a vehicle, and how to confirm that a command has actually taken effect.
What Start-Inhibit Is
Start-inhibit prevents a vehicle from being started. While it is active, the driver cannot power the vehicle on. Depending on the hardware fitted, it works either as a starter-motor inhibit or as a fuel cut-off.
Start-inhibit does not stop a vehicle that is already moving. If the engine is running when the command is sent, the inhibit takes effect only after the current ignition cycle ends, that is, once the vehicle has been switched off. Do not present this feature to your users as a way to stop a vehicle in motion, including in a stolen-vehicle scenario.
Acronyms and Terms
This capability is known by several names. They all refer to the same thing:
| Term | Meaning |
|---|---|
| Start inhibit | The term used by the Fleet API and by Cartrack internally |
| Immobilisation / immobilise | The term most often used in customer-facing material |
| Anti-arranque | The Spanish and Portuguese term (literally "anti-start") |
| Fuel cut-off | A start-inhibit fitment that cuts the fuel supply |
| Starter cut | A start-inhibit fitment that disables the starter motor |
Availability and Prerequisites
Start-inhibit requires a specific fitment by Cartrack and is not available on every vehicle.
Before the API addresses a vehicle, the vehicle needs both:
- an active contract, and
- a Cartrack terminal of a type the Fleet API supports.
Both endpoints apply this rule. A vehicle that does not meet it does not appear in GET /vehicles/start-inhibit/status, and PUT /vehicles/{registration}/start-inhibit rejects it with 422.
Meeting this rule does not mean the vehicle has a start-inhibit fitment. The API cannot tell whether the start-inhibit hardware is installed. A vehicle can appear in the status listing, and a command to it can be accepted, even though the command will have no effect. Contact your Cartrack account manager to confirm which vehicles in your fleet have a start-inhibit fitment before you offer the feature for them.
Which Endpoint Should I Use?
| Goal | Endpoint |
|---|---|
| Immobilise or release a vehicle | Immobilise or Release a Vehicle (PUT /vehicles/{registration}/start-inhibit) |
| Check whether one vehicle is currently immobilised | Get Start Inhibit Status with filter[registration] |
| Check the state of the whole fleet | Get Start Inhibit Status without a registration filter |
Sending a Command
PUT /vehicles/{registration}/start-inhibit takes one field:
start_inhibit | Effect |
|---|---|
true | Immobilise the vehicle so it cannot be started |
false | Release the vehicle |
| Response | Meaning |
|---|---|
200 | The command was accepted and queued for the terminal |
404 | The registration does not exist, or the caller cannot address it |
422 | The request body is invalid, the vehicle does not have the active contract and terminal the command requires, or its terminal cannot currently be sent the command |
500 | The command could not be sent to the terminal for another reason |
For any response other than 200, no command was queued.
Reading the Status
GET /vehicles/start-inhibit/status returns one row for each vehicle the API can address, with vehicle_id, registration and start_inhibit. The field has the same meaning as in the command:
start_inhibit | Meaning |
|---|---|
true | The vehicle is currently immobilised |
false | The terminal has not reported the vehicle as immobilised. This is also returned in some cases where the state cannot be read, so it is not a confirmation that the vehicle is released |
null | The state cannot be established. Treat it as unknown, never as released |
Only true is a positive confirmation. Do not treat false as proof that a vehicle has been released.
Results are paginated, with up to 100 vehicles per page (page and limit). With filter[registration], the endpoint returns a single vehicle, or 404 if the caller cannot address that registration.
Confirming a Command Took Effect
The command is asynchronous. The API queues a request for the terminal and returns without waiting for the device to act on it.
- A
200means the command was accepted and queued. It does not mean the vehicle is immobilised. - If the command cannot be queued at all, for example because the vehicle has no terminal on an active contract or its terminal cannot currently be reached, the API returns an error instead of
200. - A
200does not confirm that the vehicle has a start-inhibit fitment. On a vehicle without one, the status should not be expected to change totrue. - The status endpoint shows the last state the terminal confirmed, not the state you asked for. A change can take up to an hour to appear.
- If the engine is running, the inhibit applies only after the current ignition cycle ends. A status that has not changed yet does not mean the command failed.
The only reliable confirmation of an immobilisation is the status endpoint reporting true. A release cannot be positively confirmed through the API: false is consistent with a release but does not prove it.
Recommended Integration Pattern
- Send
PUT /vehicles/{registration}/start-inhibitwith the requiredstart_inhibitvalue. If the response is not200, report the error to the user. The command was not queued. - On
200, show the command as pending, not as done. Tell the user that if the vehicle is running, it will not be affected until it is switched off. - Poll
GET /vehicles/start-inhibit/status?filter[registration]=…every 1 to 2 minutes. Stay within the rate limits. - For an immobilisation, mark the command as confirmed once
start_inhibitistrue. For a release,falsemeans the terminal no longer reports the vehicle as immobilised. Show it as not immobilised, not as a confirmed release, and if the vehicle still cannot be started, contact Cartrack support. - If it still doesn't match after about 60 minutes, or keeps returning
null, mark the state as unknown, not failed. Check the vehicle again later rather than resending the command repeatedly. If a vehicle never changes state, ask your account manager to confirm it has a start-inhibit fitment. - For fleet-wide dashboards, page through the status endpoint without a filter instead of querying one vehicle at a time.
Sub-User Access
Sub-users can use both endpoints, but only for the vehicles granted to them. The status listing and its pagination metadata include only those vehicles. A command or lookup for any other registration returns 404, the same as a registration that does not exist. To let a sub-user immobilise a vehicle, grant that vehicle to the sub-user first.