Quick reference
Request accessQuick reference
A one-page reference for GEM commands, endpoints, and common operations.
API endpoints
Private Data Gateway API
| Method | Endpoint | Description |
|---|---|---|
GET | /maps/orbis/platform/private-gateway/storages | List all storages |
GET | /maps/orbis/platform/private-gateway/storages/{id} | Get storage details |
GET | /maps/orbis/platform/private-gateway/storages/{id}/files | List storage files |
GET | /maps/orbis/platform/private-gateway/storages/{id}/credentials | Get storage credentials |
Base URL: https://api.tomtom.com
GEM API
| Method | Endpoint | Description |
|---|---|---|
POST | /maps/orbis/platform/gem/jobs | Create matching job |
GET | /maps/orbis/platform/gem/jobs | List all jobs |
GET | /maps/orbis/platform/gem/jobs/{job_id} | Get job details |
PATCH | /maps/orbis/platform/gem/jobs/{job_id} | Cancel matching job |
Base URL: https://api.tomtom.com
Required headers
Every API request must include:
-H "tomtom-api-key: YOUR_API_KEY"-H "Authorization: Bearer YOUR_AUTH_TOKEN"For POST and PATCH HTTP methods, include the Content-Type header:
-H "Content-Type: application/json"Azure CLI commands
Authentication
Get authorization token
az account get-access-token --scope https://gem.core.orbis.tomtom.com/user_impersonationAuthorize to access storage with obtained credentials
az login --service-principal \ --username <CLIENT_ID> \ --password <CLIENT_SECRET> \ --tenant <TENANT_ID>Data upload
az storage blob upload \ --account-name <STORAGE_ACCOUNT> \ --container-name default \ --name <FILENAME>.parquet \ --file /path/to/local/file.parquet \ --auth-mode loginResults download
az storage blob download \ --account-name <STORAGE_ACCOUNT> \ --container-name default \ --name <FILENAME>.results.parquet \ --file /path/to/destination/<FILENAME>.results.parquet \ --auth-mode login<STORAGE_ACCOUNT> is the first part of the storage url host, for example mystorageaccount001 in https://mystorageaccount001.blob.core.windows.net/default/.
Road matching data
Input
| Field | Type | Required | Description |
|---|---|---|---|
id | integer or string | ✅ | Unique road segment identifier |
geometry | string (WKT) | ✅ | LineString geometry in WGS84, longitude first |
is_navigable | boolean | — | Whether road is navigable. Without this column, all roads count as navigable |
Example:
{"id": 5707295, "geometry": "LINESTRING (4.8952 52.3702, 4.8960 52.3710)", "is_navigable": true}Results
| Field | Type | Description |
|---|---|---|
id | string | Your original road segment ID |
gers | string | Matched GERS ID (UUID format) |
confidence | integer | Match confidence score (0-100) |
lr_id | string | Matched part of your road, as <start>-<end>#<gers> in percent of its length |
lr_gers | string | Matched part of the GERS segment, as <start>-<end>#<id> in percent of its length |
Example:
{"id":"5707295","gers":"0b5c2f4e-8d3a-4c1e-9f6b-2a7d5e8c1b34","confidence":97,"lr_id":"0.0-100.0#0b5c2f4e-8d3a-4c1e-9f6b-2a7d5e8c1b34","lr_gers":"12.5-64.1#5707295"}→ Details: Road matching data
Lane-level matching data
| Item | Format |
|---|---|
| Parquet input | id (string) and points: a list of structs with coord (x longitude, y latitude), heading, lane, timestamp, and velocity |
| CSV input | Road profile: uuid, shape (WKT LINESTRING). Road events: uuid, heading, coordinate (WKT POINT) |
| Results | traceId, mapRevisionId, and roads: matched road areas with their connectors and the matched lane |
→ Details: Lane-level matching data
Job statuses
| Status | Description |
|---|---|
REQUESTED | Job was requested and is waiting to be processed |
IN_PROGRESS | Job has started and is currently being executed |
FAILED | Job encountered an error during the execution |
SUCCESS | Job finished successfully |
CANCELED | Job was canceled before completion |
Common curl examples
List storages
curl -X GET "https://api.tomtom.com/maps/orbis/platform/private-gateway/storages" \ -H "tomtom-api-key: $TOMTOM_API_KEY" \ -H "Authorization: Bearer $AUTH_TOKEN"Get storage credentials
curl -X GET "https://api.tomtom.com/maps/orbis/platform/private-gateway/storages/$STORAGE_ID/credentials?type=READ_WRITE" \ -H "tomtom-api-key: $TOMTOM_API_KEY" \ -H "Authorization: Bearer $AUTH_TOKEN"Create matching job
curl -X POST "https://api.tomtom.com/maps/orbis/platform/gem/jobs" \ -H "tomtom-api-key: $TOMTOM_API_KEY" \ -H "Authorization: Bearer $AUTH_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "storage_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "filename": "my_data.parquet", "job_type": "ROAD_MATCHING", "overture_release": "2026-01-21.0" }'Check job status
curl -X GET "https://api.tomtom.com/maps/orbis/platform/gem/jobs/$JOB_ID" \ -H "tomtom-api-key: $TOMTOM_API_KEY" \ -H "Authorization: Bearer $AUTH_TOKEN"Cancel matching job
curl -X PATCH "https://api.tomtom.com/maps/orbis/platform/gem/jobs/$JOB_ID" \ -H "tomtom-api-key: $TOMTOM_API_KEY" \ -H "Authorization: Bearer $AUTH_TOKEN" \ -H "Content-Type: application/json" \ -d '{"action": "CANCEL"}'Processing time estimates
| Dataset size | Estimated time |
|---|---|
| < 10,000 roads | Minutes |
| 10,000 - 100,000 | 1-2 hours |
| 100,000 - 1M | 10-15 hours |
| > 1M roads | Contact support |
Rate limits
- Default: 10 requests per second
- Exceeded: Returns
429 Too Many Requests
Quality thresholds
| Match rate | Quality |
|---|---|
| > 85% | Excellent |
| 70-85% | Good |
| < 70% | Review data quality |
Error codes
| Code | Meaning | Solution |
|---|---|---|
400 | Bad Request | Check the request body, the file path and extension, and the Overture release |
401 | Unauthorized | Check API key and token |
403 | Forbidden | Verify permissions |
404 | Not Found | Check resource ID |
409 | Conflict | An identical job is still running, or the job already finished and cannot be canceled |
429 | Rate limited | Wait and retry |
503 | Service Unavailable | Temporary issue when creating a job; retry |
Resources
- Troubleshooting - Check solutions in case of issues
- Private Data Gateway API - Learn how to manage your storage
- GEM API - Learn how to run and monitor matching jobs
- MyTomTom Dashboard - Manage your account and API keys
- Azure CLI Documentation - Learn how to use Azure CLI for storage operations
- FAQ - Find answers to common questions