Field and Dromivia
Drivers, phones, the day's routes, deliveries and evidence coming from Dromivia.
Export deliveries
https://api.drometra.com/v1/field/exports/deliveriesRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Reference parameters
- fromstring
- tostring
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/exports/deliveries" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"(text/csv)Get field settings
https://api.drometra.com/v1/field/settingsRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Response · 200
- tenantIdstring · uuidalways
- displayNamestring o nullalways
- objectalways
- versionintegeralways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/settings" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"{
"tenantId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"displayName": "…",
"verification": {
"workerRequired": [
"package_scan"
],
"customerAllowed": [
"otp"
],
"customerMinimum": 2,
"geofenceRadiusMeters": 1012.5,
"allowGeofenceOverride": true
},
"version": 0
}Save field settings
https://api.drometra.com/v1/field/settingsRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Body
- displayNamestring o null
- verificationmandatoryobject
- versionmandatoryinteger
Response · 200
- tenantIdstring · uuidalways
- displayNamestring o nullalways
- objectalways
- versionintegeralways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X PUT "https://api.drometra.com/v1/field/settings" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Content-Type: application/json" \ -d '{
"verification": {},
"version": 0
}'{
"tenantId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"displayName": "…",
"verification": {
"workerRequired": [
"package_scan"
],
"customerAllowed": [
"otp"
],
"customerMinimum": 2,
"geofenceRadiusMeters": 1012.5,
"allowGeofenceOverride": true
},
"version": 0
}List drivers
https://api.drometra.com/v1/field/workersRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Response · 200
- array de objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/workers" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"{
"items": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"tenantId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"displayName": "…",
"phone": "…",
"linked": true,
"active": true,
"version": 1,
"devices": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"model": "…",
"appVersion": "…",
"enrolledAt": "2026-10-21T14:02:31Z",
"activatedAt": "2026-10-21T14:02:31Z",
"revokedAt": "2026-10-21T14:02:31Z"
}
],
"createdAt": "2026-10-21T14:02:31Z"
}
]
}Create a driver
https://api.drometra.com/v1/field/workersRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Body
- displayNamemandatorystring
- phonestring
Response · 201
- idstring · uuidalways
- tenantIdstring · uuidalways
- displayNamestringalways
- phonestring o nullalways
- linkedbooleanalways
- activebooleanalways
- versionintegeralways
- array de objectalways
- createdAtstring · date-timealways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/workers" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Content-Type: application/json" \ -d '{
"displayName": "…"
}'{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"tenantId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"displayName": "…",
"phone": "…",
"linked": true,
"active": true,
"version": 1,
"devices": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"model": "…",
"appVersion": "…",
"enrolledAt": "2026-10-21T14:02:31Z",
"activatedAt": "2026-10-21T14:02:31Z",
"revokedAt": "2026-10-21T14:02:31Z"
}
],
"createdAt": "2026-10-21T14:02:31Z"
}Update a driver
https://api.drometra.com/v1/field/workers/{id}Requires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Road parameters
- idmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Body
- displayNamestring
- phonestring o null
- activeboolean
- versionmandatoryinteger
Response · 200
- idstring · uuidalways
- tenantIdstring · uuidalways
- displayNamestringalways
- phonestring o nullalways
- linkedbooleanalways
- activebooleanalways
- versionintegeralways
- array de objectalways
- createdAtstring · date-timealways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X PATCH "https://api.drometra.com/v1/field/workers/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Content-Type: application/json" \ -d '{
"version": 0
}'{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"tenantId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"displayName": "…",
"phone": "…",
"linked": true,
"active": true,
"version": 1,
"devices": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"model": "…",
"appVersion": "…",
"enrolledAt": "2026-10-21T14:02:31Z",
"activatedAt": "2026-10-21T14:02:31Z",
"revokedAt": "2026-10-21T14:02:31Z"
}
],
"createdAt": "2026-10-21T14:02:31Z"
}Invite a driver to Dromivia
https://api.drometra.com/v1/field/workers/{id}/invitationsRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Road parameters
- idmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Response · 201
- idstring · uuidalways
- workerIdstring · uuidalways
- expiresAtstring · date-timealways
- codestringalways
- enrollmentUristringalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/workers/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/invitations" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"workerId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"expiresAt": "2026-10-21T14:02:31Z",
"code": "…",
"enrollmentUri": "…"
}Unlink a phone
https://api.drometra.com/v1/field/devices/{id}/revokeRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Road parameters
- idmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Response · 200
- idstring · uuidalways
- tenantIdstring · uuidalways
- displayNamestringalways
- phonestring o nullalways
- linkedbooleanalways
- activebooleanalways
- versionintegeralways
- array de objectalways
- createdAtstring · date-timealways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/devices/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/revoke" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"tenantId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"displayName": "…",
"phone": "…",
"linked": true,
"active": true,
"version": 1,
"devices": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"model": "…",
"appVersion": "…",
"enrolledAt": "2026-10-21T14:02:31Z",
"activatedAt": "2026-10-21T14:02:31Z",
"revokedAt": "2026-10-21T14:02:31Z"
}
],
"createdAt": "2026-10-21T14:02:31Z"
}Create a route
https://api.drometra.com/v1/field/routesRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
- idempotency-keymandatorystring · uuid
- A new UUID per operation. If you repeat the request with the same key, the change is not applied twice.
Body
- routePlanIdmandatorystring · uuid
- vehicleRouteIdmandatorystring
- workerIdmandatorystring · uuid
- serviceDatemandatorystring
- depotNamemandatorystring
- vehiclemandatoryobject
- verificationobject
Response · 201
- idstring · uuidalways
- tenantIdstring · uuidalways
- workerIdstring · uuidalways
- workerNamestringalways
- routePlanIdstring · uuidalways
- vehicleRouteIdstringalways
- serviceDatestringalways
- depotNamestringalways
- objectalways
- objectalways
- stateenum: assigned | in_progress | finished | cancelledalways
- versionintegeralways
- createdAtstring · date-timealways
- vehicleConfirmedAtstring · date-time o nullalways
- finishedAtstring · date-time o nullalways
- objectalways
- array de objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/routes" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "idempotency-key: $(uuidgen)" \
-H "Content-Type: application/json" \ -d '{
"routePlanId": "…",
"vehicleRouteId": "…",
"workerId": "…",
"serviceDate": "…",
"depotName": "…",
"vehicle": {}
}'{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"tenantId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"workerId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"workerName": "…",
"routePlanId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"vehicleRouteId": "…",
"serviceDate": "…",
"depotName": "…",
"vehicle": {
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"plate": "…",
"label": "…",
"fleetVehicleId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d"
},
"verification": {
"workerRequired": [
"package_scan"
],
"customerAllowed": [
"otp"
],
"customerMinimum": 2,
"geofenceRadiusMeters": 1012.5,
"allowGeofenceOverride": true
},
"state": "assigned",
"version": 1,
"createdAt": "2026-10-21T14:02:31Z",
"vehicleConfirmedAt": "2026-10-21T14:02:31Z",
"finishedAt": "2026-10-21T14:02:31Z",
"progress": {
"total": 0,
"delivered": 0,
"failed": 0,
"pending": 0
},
"stops": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"sequence": 1,
"orderId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"reference": "…",
"recipientName": "…",
"address": "…",
"coordinate": {
"latitude": 0,
"longitude": 0
},
"window": {
"startsAt": "2026-10-21T14:02:31Z",
"endsAt": "2026-10-21T14:02:31Z"
},
"state": "pending",
"arrivedAt": "2026-10-21T14:02:31Z",
"outcomeAt": "2026-10-21T14:02:31Z",
"failureReason": "…",
"receiverName": "…",
"flags": [
"…"
],
"manifestSha256": "…",
"evidence": [
{
"assetId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"kind": "DELIVERY_PHOTO",
"sha256": "…",
"capturedAt": "2026-10-21T14:02:31Z",
"sizeBytes": 4194304.5
}
],
"parcels": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"code": "…",
"description": "…",
"loadStatus": "PENDING",
"deliveredAt": "2026-10-21T14:02:31Z",
"returnedAt": "2026-10-21T14:02:31Z"
}
],
"plannedArrivalAt": "2026-10-21T14:02:31Z",
"plannedDepartureAt": "2026-10-21T14:02:31Z",
"codeVerifiedAt": "2026-10-21T14:02:31Z"
}
]
}List routes
https://api.drometra.com/v1/field/routesRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Reference parameters
- serviceDatestring
- fromstring
- tostring
- cursorstring
Response · 200
- array de objectalways
- nextCursorstring o null
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/routes" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"{
"items": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"tenantId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"workerId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"workerName": "…",
"routePlanId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"vehicleRouteId": "…",
"serviceDate": "…",
"depotName": "…",
"vehicle": {
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"plate": "…",
"label": "…",
"fleetVehicleId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d"
},
"verification": {
"workerRequired": [],
"customerAllowed": [],
"customerMinimum": 2,
"geofenceRadiusMeters": 1012.5,
"allowGeofenceOverride": true
},
"state": "assigned",
"version": 1,
"createdAt": "2026-10-21T14:02:31Z",
"vehicleConfirmedAt": "2026-10-21T14:02:31Z",
"finishedAt": "2026-10-21T14:02:31Z",
"progress": {
"total": 0,
"delivered": 0,
"failed": 0,
"pending": 0
},
"stops": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"sequence": 1,
"orderId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"reference": "…",
"recipientName": "…",
"address": "…",
"coordinate": {},
"window": {},
"state": "pending",
"arrivedAt": "2026-10-21T14:02:31Z",
"outcomeAt": "2026-10-21T14:02:31Z",
"failureReason": "…",
"receiverName": "…",
"flags": [],
"manifestSha256": "…",
"evidence": [],
"parcels": [],
"plannedArrivalAt": "2026-10-21T14:02:31Z",
"plannedDepartureAt": "2026-10-21T14:02:31Z",
"codeVerifiedAt": "2026-10-21T14:02:31Z"
}
]
}
],
"nextCursor": "…"
}Get route progress
https://api.drometra.com/v1/field/routes/progressRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Reference parameters
- serviceDatemandatorystring
Response · 200
- serviceDatestringalways
- array de objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/routes/progress" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"{
"serviceDate": "…",
"items": [
{
"routeId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"fleetVehicleId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"state": "assigned",
"total": 25,
"delivered": 25,
"failed": 25,
"pending": 25,
"next": {
"sequence": 25.5,
"name": "…"
}
}
]
}Get a route
https://api.drometra.com/v1/field/routes/{id}Requires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Road parameters
- idmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Response · 200
- idstring · uuidalways
- tenantIdstring · uuidalways
- workerIdstring · uuidalways
- workerNamestringalways
- routePlanIdstring · uuidalways
- vehicleRouteIdstringalways
- serviceDatestringalways
- depotNamestringalways
- objectalways
- objectalways
- stateenum: assigned | in_progress | finished | cancelledalways
- versionintegeralways
- createdAtstring · date-timealways
- vehicleConfirmedAtstring · date-time o nullalways
- finishedAtstring · date-time o nullalways
- objectalways
- array de objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/routes/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"tenantId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"workerId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"workerName": "…",
"routePlanId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"vehicleRouteId": "…",
"serviceDate": "…",
"depotName": "…",
"vehicle": {
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"plate": "…",
"label": "…",
"fleetVehicleId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d"
},
"verification": {
"workerRequired": [
"package_scan"
],
"customerAllowed": [
"otp"
],
"customerMinimum": 2,
"geofenceRadiusMeters": 1012.5,
"allowGeofenceOverride": true
},
"state": "assigned",
"version": 1,
"createdAt": "2026-10-21T14:02:31Z",
"vehicleConfirmedAt": "2026-10-21T14:02:31Z",
"finishedAt": "2026-10-21T14:02:31Z",
"progress": {
"total": 0,
"delivered": 0,
"failed": 0,
"pending": 0
},
"stops": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"sequence": 1,
"orderId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"reference": "…",
"recipientName": "…",
"address": "…",
"coordinate": {
"latitude": 0,
"longitude": 0
},
"window": {
"startsAt": "2026-10-21T14:02:31Z",
"endsAt": "2026-10-21T14:02:31Z"
},
"state": "pending",
"arrivedAt": "2026-10-21T14:02:31Z",
"outcomeAt": "2026-10-21T14:02:31Z",
"failureReason": "…",
"receiverName": "…",
"flags": [
"…"
],
"manifestSha256": "…",
"evidence": [
{
"assetId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"kind": "DELIVERY_PHOTO",
"sha256": "…",
"capturedAt": "2026-10-21T14:02:31Z",
"sizeBytes": 4194304.5
}
],
"parcels": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"code": "…",
"description": "…",
"loadStatus": "PENDING",
"deliveredAt": "2026-10-21T14:02:31Z",
"returnedAt": "2026-10-21T14:02:31Z"
}
],
"plannedArrivalAt": "2026-10-21T14:02:31Z",
"plannedDepartureAt": "2026-10-21T14:02:31Z",
"codeVerifiedAt": "2026-10-21T14:02:31Z"
}
]
}Get the delivery summary
https://api.drometra.com/v1/field/deliveries/summaryRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Reference parameters
- frommandatorystring
- tomandatorystring
Response · 200
- objectalways
- objectalways
- objectalways
- objectalways
- array de objectalways
- array de objectalways
- array de objectalways
- array de objectalways
- objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/deliveries/summary" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"{
"period": {
"from": "…",
"to": "…"
},
"totals": {
"stops": 0,
"delivered": 0,
"failed": 0,
"pending": 0
},
"punctuality": {
"evaluated": 0,
"onTime": 0,
"late": 0,
"onTimeRate": 0.5
},
"serviceSeconds": {
"measured": 0,
"median": 0,
"p90": 0
},
"failures": [
{
"reason": "…",
"count": 0
}
],
"days": [
{
"date": "…",
"stops": 0,
"delivered": 0,
"failed": 0,
"pending": 0,
"late": 0
}
],
"workers": [
{
"workerId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"name": "…",
"stops": 0,
"delivered": 0,
"failed": 0,
"late": 0
}
],
"places": [
{
"locationId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"name": "…",
"lastDeliveredAt": "2026-10-21T14:02:31Z",
"deliveries": 0,
"daysSinceLast": 0,
"usualIntervalDays": 0,
"overdue": true
}
],
"rules": {
"version": "…",
"onTime": "…",
"serviceTime": "…",
"places": "…",
"overdue": "…"
}
}Cancel a route
https://api.drometra.com/v1/field/routes/{id}/cancelRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Road parameters
- idmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Body
- versionmandatoryinteger
Response · 200
- idstring · uuidalways
- tenantIdstring · uuidalways
- workerIdstring · uuidalways
- workerNamestringalways
- routePlanIdstring · uuidalways
- vehicleRouteIdstringalways
- serviceDatestringalways
- depotNamestringalways
- objectalways
- objectalways
- stateenum: assigned | in_progress | finished | cancelledalways
- versionintegeralways
- createdAtstring · date-timealways
- vehicleConfirmedAtstring · date-time o nullalways
- finishedAtstring · date-time o nullalways
- objectalways
- array de objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/routes/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/cancel" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Content-Type: application/json" \ -d '{
"version": 0
}'{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"tenantId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"workerId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"workerName": "…",
"routePlanId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"vehicleRouteId": "…",
"serviceDate": "…",
"depotName": "…",
"vehicle": {
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"plate": "…",
"label": "…",
"fleetVehicleId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d"
},
"verification": {
"workerRequired": [
"package_scan"
],
"customerAllowed": [
"otp"
],
"customerMinimum": 2,
"geofenceRadiusMeters": 1012.5,
"allowGeofenceOverride": true
},
"state": "assigned",
"version": 1,
"createdAt": "2026-10-21T14:02:31Z",
"vehicleConfirmedAt": "2026-10-21T14:02:31Z",
"finishedAt": "2026-10-21T14:02:31Z",
"progress": {
"total": 0,
"delivered": 0,
"failed": 0,
"pending": 0
},
"stops": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"sequence": 1,
"orderId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"reference": "…",
"recipientName": "…",
"address": "…",
"coordinate": {
"latitude": 0,
"longitude": 0
},
"window": {
"startsAt": "2026-10-21T14:02:31Z",
"endsAt": "2026-10-21T14:02:31Z"
},
"state": "pending",
"arrivedAt": "2026-10-21T14:02:31Z",
"outcomeAt": "2026-10-21T14:02:31Z",
"failureReason": "…",
"receiverName": "…",
"flags": [
"…"
],
"manifestSha256": "…",
"evidence": [
{
"assetId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"kind": "DELIVERY_PHOTO",
"sha256": "…",
"capturedAt": "2026-10-21T14:02:31Z",
"sizeBytes": 4194304.5
}
],
"parcels": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"code": "…",
"description": "…",
"loadStatus": "PENDING",
"deliveredAt": "2026-10-21T14:02:31Z",
"returnedAt": "2026-10-21T14:02:31Z"
}
],
"plannedArrivalAt": "2026-10-21T14:02:31Z",
"plannedDepartureAt": "2026-10-21T14:02:31Z",
"codeVerifiedAt": "2026-10-21T14:02:31Z"
}
]
}Download a piece of evidence
https://api.drometra.com/v1/field/assets/{id}/contentRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Road parameters
- idmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/assets/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/content" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"(image/jpeg)Enroll a phone
https://api.drometra.com/v1/field/devices/enrollmentsNo session required: anyone with the link can open it.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
- idempotency-keymandatorystring · uuid
- A new UUID per operation. If you repeat the request with the same key, the change is not applied twice.
Body
- codemandatorystring
- devicemandatoryobject
Response · 201
- deviceIdstring · uuidalways
- objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/devices/enrollments" \
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "idempotency-key: $(uuidgen)" \
-H "Content-Type: application/json" \ -d '{
"code": "…",
"device": {}
}'{
"deviceId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"tenant": {
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"name": "…"
}
}Activate an enrolled phone
https://api.drometra.com/v1/field/devices/{id}/activationRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Road parameters
- idmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Response · 200
- objectalways
- objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/devices/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/activation" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"{
"worker": {
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"displayName": "…"
},
"tenant": {
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"name": "…"
}
}Get this phone's driver
https://api.drometra.com/v1/field/meRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
- x-device-idmandatorystring · uuid
- The phone linked in Dromivia that makes the request.
Response · 200
- objectalways
- objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/me" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "x-device-id: $DROMETRA_DEVICE" \
-H "Accept: application / json"{
"worker": {
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"displayName": "…"
},
"tenant": {
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"name": "…"
}
}Get the driver's current route
https://api.drometra.com/v1/field/routes/currentRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
- x-device-idmandatorystring · uuid
- The phone linked in Dromivia that makes the request.
Response · 200
- idstring · uuidalways
- datestringalways
- versionintegeralways
- objectalways
- objectalways
- array de objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/routes/current" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "x-device-id: $DROMETRA_DEVICE" \
-H "Accept: application / json"{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"date": "…",
"version": 1,
"depot": {
"name": "…"
},
"vehicle": {
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"plate": "…",
"label": "…"
},
"stops": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"sequence": 1,
"orderReference": "…",
"customer": {
"name": "…",
"phoneMasked": "…",
"canCall": true
},
"address": "…",
"addressDetail": "…",
"coordinate": {
"lat": 0,
"lon": 0
},
"window": {
"startsAt": "2026-10-21T14:02:31Z",
"endsAt": "2026-10-21T14:02:31Z"
},
"notes": "…",
"verification": {
"workerRequired": [],
"customerAllowed": [],
"customerMinimum": 2,
"geofenceRadiusMeters": 1012.5,
"allowGeofenceOverride": true
},
"lines": [
{
"position": 50.5,
"description": "…",
"quantity": "…"
}
],
"secrets": {
"otp": {
"saltHex": "…",
"iterations": 300500,
"hashHex": "…"
}
},
"parcels": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"code": "…",
"description": "…"
}
]
}
]
}Record route events
https://api.drometra.com/v1/field/routes/{id}/eventsRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
- x-device-idmandatorystring · uuid
- The phone linked in Dromivia that makes the request.
- idempotency-keymandatorystring · uuid
- A new UUID per operation. If you repeat the request with the same key, the change is not applied twice.
Road parameters
- idmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Body
- eventIdmandatorystring
- occurredAtmandatorystring · date-time
- eventmandatoryobject
Response · 202
- eventIdstringalways
- duplicatebooleanalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/routes/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/events" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "idempotency-key: $(uuidgen)" \
-H "x-device-id: $DROMETRA_DEVICE" \
-H "Content-Type: application/json" \ -d '{
"eventId": "…",
"occurredAt": "…",
"event": {}
}'{
"eventId": "…",
"duplicate": true
}Send route positions
https://api.drometra.com/v1/field/routes/{id}/positionsRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
- x-device-idmandatorystring · uuid
- The phone linked in Dromivia that makes the request.
- idempotency-keymandatorystring · uuid
- A new UUID per operation. If you repeat the request with the same key, the change is not applied twice.
Road parameters
- idmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Body
- positionsmandatoryarray de object
Response · 200
- acceptedintegeralways
- duplicatesintegeralways
- array de objectalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/routes/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/positions" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "idempotency-key: $(uuidgen)" \
-H "x-device-id: $DROMETRA_DEVICE" \
-H "Content-Type: application/json" \ -d '{
"positions": []
}'{
"accepted": 50,
"duplicates": 50,
"rejected": [
{
"id": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"reason": "stale"
}
]
}Start an evidence upload
https://api.drometra.com/v1/field/evidence/uploadsRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
- x-device-idmandatorystring · uuid
- The phone linked in Dromivia that makes the request.
- idempotency-keymandatorystring · uuid
- A new UUID per operation. If you repeat the request with the same key, the change is not applied twice.
Body
- idmandatorystring
- kindmandatoryenum: DELIVERY_PHOTO | FAILURE_PHOTO | SIGNATURE
- mimeTypemandatoryenum: image/jpeg | image/svg+xml
- sizeBytesmandatoryinteger
- sha256mandatorystring
- capturedAtMsmandatoryinteger
Response · 201
- assetIdstring · uuidalways
- uploadUrlstringalways
- methodstringalways
- headersobjectalways
- expiresAtstring · date-timealways
- alreadyUploadedbooleanalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/evidence/uploads" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "idempotency-key: $(uuidgen)" \
-H "x-device-id: $DROMETRA_DEVICE" \
-H "Content-Type: application/json" \ -d '{
"id": "…",
"kind": "…",
"mimeType": "…",
"sizeBytes": 0,
"sha256": "…",
"capturedAtMs": 0
}'{
"assetId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"uploadUrl": "…",
"method": "PUT",
"headers": {},
"expiresAt": "2026-10-21T14:02:31Z",
"alreadyUploaded": true
}Upload evidence content
https://api.drometra.com/v1/field/evidence/uploads/{id}/contentNo session required: anyone with the link can open it.
Road parameters
- idmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Reference parameters
- tokenmandatorystring
The body is the file, with Content-Type: image/jpeg.
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X PUT "https://api.drometra.com/v1/field/evidence/uploads/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/content" \
-H "Content-Type: image/jpeg" \ --data-binary @archivo(sin cuerpo)Send the code to the recipient
https://api.drometra.com/v1/field/routes/{routeId}/stops/{stopId}/customer-code/dispatchRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
- x-device-idmandatorystring · uuid
- The phone linked in Dromivia that makes the request.
Road parameters
- routeIdmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
- stopIdmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Response · 400
- errorenum: invalid_request | unauthorized | forbidden | not_found | conflict | cursor_expired | …always
- requestIdstring · uuidalways
- reasonstring
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/routes/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/stops/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/customer-code/dispatch" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "x-device-id: $DROMETRA_DEVICE" \
-H "Accept: application / json"{
"error": "invalid_request",
"requestId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"reason": "…"
}Verify the recipient's code
https://api.drometra.com/v1/field/routes/{routeId}/stops/{stopId}/customer-code/verifyRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
- x-device-idmandatorystring · uuid
- The phone linked in Dromivia that makes the request.
Road parameters
- routeIdmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
- stopIdmandatorystring · uuid
- e. g. 0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d
Body
- codemandatorystring
Response · 200
- validbooleanalways
- attemptsRemainingintegeralways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X POST "https://api.drometra.com/v1/field/routes/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/stops/0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d/customer-code/verify" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "x-device-id: $DROMETRA_DEVICE" \
-H "Content-Type: application/json" \ -d '{
"code": "…"
}'{
"valid": true,
"attemptsRemaining": 2.5
}List deliveries
https://api.drometra.com/v1/field/deliveriesRequires the access token of a person in your company.
Headers
- x-tenant-idmandatorystring · uuid
- Your company's identifier. The server checks that you are still an active member of it.
Reference parameters
- fromstring
- tostring
- outcomeenum: delivered | failed
- cursorstring
Response · 200
- fromstringalways
- tostringalways
- objectalways
- objectalways
- array de objectalways
- nextCursorstring o nullalways
It can respond with error 400, 401, 403, 404, 409, 410, 413, 415, 422, 429, 503. The error body is explained in Concepts.
curl -X GET "https://api.drometra.com/v1/field/deliveries" \
-H "Authorization: Bearer $DROMETRA _ TOKEN"\
-H "x-tenant-id: $DROMETRA_TENANT" \
-H "Accept: application / json"{
"from": "…",
"to": "…",
"rules": {
"version": "…",
"distance": "…",
"code": "…",
"window": "…"
},
"counts": {
"delivered": 0,
"failed": 0,
"partial": 0
},
"items": [
{
"stopId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"routeId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"orderId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"serviceDate": "…",
"sequence": 25.5,
"reference": "…",
"recipientName": "…",
"address": "…",
"workerName": "…",
"vehicleLabel": "…",
"vehiclePlate": "…",
"plannedArrivalAt": "2026-10-21T14:02:31Z",
"arrivedAt": "2026-10-21T14:02:31Z",
"outcomeAt": "2026-10-21T14:02:31Z",
"outcome": "delivered",
"failureReason": "…",
"receiverName": "…",
"flags": [
"…"
],
"summary": {
"methods": [],
"closeDistanceMeters": 0,
"positionAccuracyMeters": 0,
"code": "online",
"note": "…",
"appVersion": "…"
},
"parcels": {
"total": 0,
"delivered": 0
},
"assets": [
{
"assetId": "0b6f8c2e-4a1d-4e5b-9c3f-2d7e8a9b1c4d",
"kind": "DELIVERY_PHOTO",
"sha256": "…",
"capturedAt": "2026-10-21T14:02:31Z",
"sizeBytes": 4194304.5
}
],
"manifestSha256": "…"
}
],
"nextCursor": "…"
}