Global Entity Matcher (GEM)

Quick reference

Request access

Quick reference

A one-page reference for GEM commands, endpoints, and common operations.

API endpoints

Private Data Gateway API

MethodEndpointDescription
GET/maps/orbis/platform/private-gateway/storagesList all storages
GET/maps/orbis/platform/private-gateway/storages/{id}Get storage details
GET/maps/orbis/platform/private-gateway/storages/{id}/filesList storage files
GET/maps/orbis/platform/private-gateway/storages/{id}/credentialsGet storage credentials

Base URL: https://api.tomtom.com

GEM API

MethodEndpointDescription
POST/maps/orbis/platform/gem/jobsCreate matching job
GET/maps/orbis/platform/gem/jobsList 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_impersonation

Authorize 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 <CONTAINER> \
--name <FILENAME>.parquet \
--file /path/to/local/file.parquet \
--auth-mode login

Results download

az storage blob download \
--account-name <STORAGE_ACCOUNT> \
--container-name <CONTAINER> \
--name <FILENAME>.results.parquet \
--file /path/to/destination/<FILENAME>.results.parquet \
--auth-mode login

Input data schema

FieldTypeRequiredDescription
idinteger or stringUnique road segment identifier
is_navigablebooleanWhether road is navigable
geometrystring (WKT)LineString geometry

Example:

{"id": 5707295, "is_navigable": true, "geometry": "LINESTRING (4.89 52.37, 4.90 52.38)"}

Output data schema

FieldTypeDescription
idstringYour original road segment ID
gersstringMatched GERS ID (UUID format)
confidenceintegerMatch confidence score (0-100)
lr_idstringLinear reference: coordinates and GERS ID
lr_gersstringLinear reference: distance range and original ID

Example:

{"id":"abc","gers":"550e8400-e29b-41d4-a716-446655440000","confidence":99,"lr_id":"52.0197-76.36744#550e8400-e29b-41d4-a716-446655440000","lr_gers":"0.0-100.0#abc"}

Job statuses

StatusDescription
REQUESTEDJob was requested and is waiting to be processed
IN_PROGRESSJob has started and is currently being executed
FAILEDJob encountered an error during the execution
SUCCESSJob finished successfully
CANCELEDJob 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 $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 sizeEstimated time
< 10,000 roadsMinutes
10,000 - 100,0001-2 hours
100,000 - 1M10-15 hours
> 1M roadsContact support

Rate limits

  • Default: 10 requests per second
  • Exceeded: Returns 429 Too Many Requests

Quality thresholds

Match rateQuality
> 85%Excellent
70-85%Good
< 70%Review data quality

Error codes

CodeMeaningSolution
400Bad RequestValidate input parameters and request body
401UnauthorizedCheck API key and token
403ForbiddenVerify permissions
404Not FoundCheck resource ID
409ConflictJob already finished and cannot be canceled
429Rate limitedWait and retry

Resources