Authentication

Requests must be signed with SigV4a. Service name: execute-api, region set: *.

Headers

HeaderDescription
X-Provider-Keyaggregators only The provider name assigned during onboarding (not an API key). Required only for provider aggregators submitting on behalf of multiple providers. Single-provider integrations have this injected automatically from the onboarded account.
Content-Typerequired Must be application/json.

Request Body

FieldTypeDescription
batchIdstringrequiredA UUID uniquely identifying this batch request. Used for deduplication and support investigations.
timestampnumberoptionalEpoch milliseconds timestamp of when this batch was assembled by the client.
dataarrayrequiredThe list of telemetry payloads to submit. Each entry follows the Telemetry Payload schema.

Example Request

{
  "batchId": "550e8400-e29b-41d4-a716-446655440000",
  "timestamp": 1751989541000,
  "data": [
    {
      "payloadId": "550e8400-e29b-41d4-a716-446655440001",
      "carrier": "AZNG",
      "signalTimestamp": 1751989541000,
      "assetIdentifier": { "id": "MY-VEHICLE-01", "type": "TRACTOR", "operator": "AZNG" },
      "gps": {
        "latitude": 47.6062,
        "longitude": -122.3321,
        "speed": 88.5,
        "speedUnits": "KILOMETERS_PER_HOUR",
        "heading": 270.0,
        "inMotion": true
      }
    },
    {
      "payloadId": "550e8400-e29b-41d4-a716-446655440002",
      "carrier": "AZNG",
      "signalTimestamp": 1751989541000,
      "deviceIdentifier": { "id": "XIRGO-DEVICE-001", "manufacturer": "XIRGO", "model": "XT2460" },
      "signals": [
        {
          "id": "770e8400-e29b-41d4-a716-446655440000",
          "type": "OBD_LIFETIME_ODOMETER",
          "value": "245000.5",
          "valueUnit": "KILOMETERS",
          "assetPart": "ENGINE"
        }
      ]
    }
  ]
}

Response

Payloads are processed independently. Returns 202 Accepted when all payloads succeed, or 207 Multi-Status when one or more fail. Always check the failed list even on a 207.

FieldTypeDescription
requestIdstringUnique request identifier for support.
acceptedstring[]payloadIds that were accepted. Present on 207 responses.
failedobject[]Payloads that failed, with per-payload error detail.
summary.totalintegerTotal payloads submitted.
summary.acceptedintegerNumber accepted.
summary.failedintegerNumber failed.

Example Response — 202 All Accepted

{
  "requestId": "abc-123-def"
}

Example Response — 207 Partial Failure

{
  "requestId": "abc-123-def",
  "accepted": ["550e8400-e29b-41d4-a716-446655440001"],
  "failed": [
    {
      "payloadId": "550e8400-e29b-41d4-a716-446655440002",
      "errorType": "Validation",
      "errorMessage": "Payload contains invalid data",
      "validationErrorDetails": [
        { "field": "signalTimestamp", "message": "Field cannot be empty" }
      ]
    }
  ],
  "summary": { "total": 2, "accepted": 1, "failed": 1 }
}

Error Responses

StatusDescription
400Validation failed on the batch wrapper fields (e.g. missing batchId). Per-payload failures are returned in the 207 response body above.
403Authentication failed. Verify your SigV4a signing and that requests are signed from your registered AWS account.
500Internal error. Retry with exponential backoff. Retain data locally for back-filling.