- Data from an IoT device: In this case, a custom TCP endpoint or an MQTT broker is commonly used. This guide does not cover this scenario. Please refer to the hardware section for more information about devices supported out of the box.
- Data ingested via HTTP endpoints: This scenario covers mobile app relay connections, cloud-to-cloud solutions, and “heavier” IoT devices that can communicate via HTTPS. This guide focuses on this scenario.

Retrieve upload token
The ingestion endpoints are separated from the main REST API for security and scalability reasons. As such, you first need to obtain an upload token for your vehicle before you can upload data. To do this, you either need upload access directly as a vehicle owner, or federated upload access via an organization. As a vehicle owner (this is primarily important if you use an app as a data relay, as only the user is logged in there, and you should not expose your API key into an app), use the following request:The
YOUR_VEHICLE_UPLOAD_API_KEY must be an API key that has the
VEHICLE_DATA_UPLOAD permission for the indicated vehicle. You can create
such an API key as described here.Retrieve vehicle upload API key
To create an API key with theVEHICLE_DATA_UPLOAD permission for a specific vehicle, use the following request:
Authenticate with ingress and obtain session token
The ingress service itself uses short-lived session tokens to authenticate vehicles. These session tokens are tied to a specific vehicle and include metadata such as the vehicle UUID.You will have to refresh the session token periodically or when it expires.
Upload vehicle data
To upload vehicle data, use the session token obtained in the previous step to authenticate your requests. Make the following request to upload data:Vehicle Command System
The platform enables bidirectional communication with vehicles through a sophisticated command queuing system that ensures reliable delivery and execution of commands. Commands are sent through the vehicle command API with low or high priority delivery. Make the following request to enqueue a command:Command Priority Levels
The system supports two priority levels with different delivery mechanisms:HIGH priority commands
- Delivered with the platform’s active delivery mechanism when the vehicle connects (SMS, push via GPRS, etc.).
- Intended for commands that should be delivered before regular queued data.
LOW priority commands
- Queued and delivered when the vehicle next connects.
- Suitable for routine or scheduled changes.
Command Status and Tracking
You can track command delivery and execution status:Data Upload Best Practices
Please consider the following best practices when uploading data.Optimal Upload Frequency
Balance data freshness with bandwidth and battery consumption:- Moving mode: Every 5-10 seconds for active vehicles
- Stationary mode: Every 10-30 minutes for parked vehicles
- Power-saving mode: Every 30 minutes to 3 hours for low battery scenarios
- Event-Triggered: Immediate upload for critical events
Batch Upload Strategy
Security Considerations
Ensuring tokens are secure is crucial to keep clean and reliable data, and prevent tampering:- Token Management: You must securely store API keys and periodically refresh session tokens.
- Data Encryption: All endpoints require the use of HTTPS for all data transmission.
- Rate Limiting: APIs are rate-limited. You will be informed via HTTP 429 responses if you exceed limits. Implement exponential backoff and retry logic.

