Moovetrax API

API Base URL
https://moovetrax.com:8088

Getting Started

For a partner API key, or to register an OAuth application, contact support@moovetrax.com.

  1. OAuth Integration
  2. Device Commands
  3. Webhooks

OAuth Integration

Please setup a redirect_url and contact support to get a client_id and a client_secret

Authorization URL
https://moovetrax.com/oauth/authorize?response_type=code&client_id={client_id}&redirect_uri={redirect_url}
REQUIRED:
  • response_type

  • client_id

  • redirect_uri

OPTIONAL:
  • state

Token URL
Method: POST https://moovetrax.com:8088/oauth/token Body: { "client_id": "{client_id}", "client_secret": "{client_secret}", "grant_type": "authorization_code", "code": "{authorizationCode}", "redirect_uri": "{redirect_url}" }
REQUIRED:
  • client_id

  • client_secret

  • grant_type

  • code

  • redirect_uri

Refresh Token URL

Access tokens expire; use the refresh token from the Token URL response to get a new pair before that happens. The old refresh token is revoked as soon as a new pair is issued, so always store the latest one.

Method: POST https://moovetrax.com:8088/oauth/token Body: { "client_id": "{client_id}", "client_secret": "{client_secret}", "grant_type": "refresh_token", "refresh_token": "{refresh_token}" }
REQUIRED:
  • client_id

  • client_secret

  • grant_type

  • refresh_token

Device Disconnect

Revoke a single device from an access token's grant without revoking the whole token. The device is removed from the token's device list; other devices authorized under the same token are unaffected.

Method: POST https://moovetrax.com:8088/oauth/device/disconnect Body: { "token": "{accessToken}", "deviceId": "{deviceId}" }
REQUIRED:
  • token

  • deviceId

Device Commands

In this example the vin is JN123456789123456 and the accessToken is 1234567890 (found in the response of )

Return last known location, alive and location time.

Method: GET https://moovetrax.com:8088/api/command/device/location?vin=JN123456789123456 Header: { "Content-Type": "application/json", "Authorization": "Bearer 1234567890" }

Send unlock command.

Method: GET https://moovetrax.com:8088/api/command/device/unlock?vin=JN123456789123456 Header: { "Content-Type": "application/json", "Authorization": "Bearer 1234567890" }

Send lock command.

Method: GET https://moovetrax.com:8088/api/command/device/lock?vin=JN123456789123456 Header: { "Content-Type": "application/json", "Authorization": "Bearer 1234567890" }

Send panic command to honk the horn (5 times).

Method: GET https://moovetrax.com:8088/api/command/device/panic?vin=JN123456789123456 Header: { "Content-Type": "application/json", "Authorization": "Bearer 1234567890" }

Send kill command.

Method: GET https://moovetrax.com:8088/api/command/device/kill?vin=JN123456789123456 Header: { "Content-Type": "application/json", "Authorization": "Bearer 1234567890" }

Send unkill command.

Method: GET https://moovetrax.com:8088/api/command/device/unkill?vin=JN123456789123456 Header: { "Content-Type": "application/json", "Authorization": "Bearer 1234567890" }

Set speed limit.

Method: GET https://moovetrax.com:8088/api/command/device/speed?value&vin=JN123456789123456 Header: { "Content-Type": "application/json", "Authorization": "Bearer 1234567890" }

Read miles.

Method: GET https://moovetrax.com:8088/api/command/device/mileage?vin=JN123456789123456 Header: { "Content-Type": "application/json", "Authorization": "Bearer 1234567890" }

Webhooks

Moovetrax pushes real-time events to your application via signed HTTP webhooks, configured per OAuth application from the admin panel.

Each request is a POST with an X-Moovetrax-Event header naming the event, and an X-Moovetrax-Signature: sha256=<hex> header — an HMAC-SHA256 signature of the raw JSON body, computed using your webhook's key as the secret.

ACC ON

POST

Fired when a device's ignition (ACC) turns on.

{ "event": "acc_on", "created_at": "2026-09-01 09:20:00", "data": { "deviceId": 123, "vin": "J0123456789012345", "acc": true, "latitude": 34.0522, "longitude": -118.2437, "eventTime": "2026-09-01 14:32:10" } }

ACC OFF

POST

Fired when a device's ignition (ACC) turns off.

{ "event": "acc_off", "created_at": "2026-09-01 09:20:00", "data": { "deviceId": 123, "vin": "J0123456789012345", "acc": false, "latitude": 34.0522, "longitude": -118.2437, "eventTime": "2026-09-01 14:40:02" } }

Mileage

POST

Periodic odometer snapshot for a device.

{ "event": "mileage", "created_at": "2026-09-01 09:20:00", "data": { "deviceId": 123, "vin": "J0123456789012345", "mileage": 48213.4, "unit": "mile", "eventTime": "2026-09-01 06:00:00" } }

Battery

POST

Fired when a device crosses the low-battery threshold (battery_low: true), and again when it recovers (battery_low: false).

{ "event": "battery", "created_at": "2026-09-01 09:20:00", "data": { "deviceId": 123, "vin": "J0123456789012345", "battery_low": true, "mt2v_dc_volt": 11.8, "low_battery_volt": 12, "eventTime": "2026-09-01 09:15:44" } }

Geolocation

POST

Fired on every new position reported by a device.

{ "event": "geolocation", "created_at": "2026-09-01 09:20:00", "data": { "deviceId": 123, "vin": "J0123456789012345", "latitude": 34.0522, "longitude": -118.2437, "speed": 32, "direction": 187, "mileage": 48213.4, "unit": "mile", "eventTime": "2026-09-01 09:16:02" } }

User Geofences

POST

Fired when a device enters or leaves a user-defined geofence (status: "enter" | "leave").

{ "event": "user_geofences", "created_at": "2026-09-01 09:20:00", "data": { "deviceId": 123, "vin": "J0123456789012345", "fenceId": 45, "fenceName": "Home", "status": "enter", "latitude": 34.0522, "longitude": -118.2437, "eventTime": "2026-09-01 09:20:00" } }