Skip to content
Developers
GET

One of your orders

GET/api/vendor/v1/orders/{order_id}

Read one order and its results. Processing orders return 202 with Retry-After; completed orders return 200.

Authorization

  • X-API-Keystringrequired

    The environment's prefix (snt_test_ on this server; GET /me returns the environment), 8 characters, _, then the secret. Shown once, when the key is created in the Sentinel Developers portal. A key works only against the server that issued it.

Path parameters

  • order_idstring · uuidrequired

Responses

  • 200The order is completed.
    • Locationheader · string

      The order's address, to poll.

    • Cache-Controlheader · string

      no-store: order results are never cached.

    • idstring · uuidrequired
    • statusstringrequired

      One of: processing, completed

    • mc_numberstringrequired
    • submission_datestring · date-timerequired
    • completed_datestring · date-time | nullrequired

      The order's final time when completed; otherwise null.

    • mvr_statusstring | nullrequired

      processing: being worked on, including when Sentinel staff are checking it; completed: the report is ready; no_record: the provider has no record of this driver, billed as a no-record result. Null when not ordered.

      One of: processing, completed, no_record

    • psp_statusstring | nullrequired

      processing: being worked on, including when Sentinel staff are checking it; completed: the report is ready; no_record: the provider has no record of this driver, billed as a no-record result. Null when not ordered.

      One of: processing, completed, no_record

    • cdlis_statusstring | nullrequired

      processing: being worked on, including when Sentinel staff are checking it; completed: the report is ready; no_record: the provider has no record of this driver, billed as a no-record result. Null when not ordered.

      One of: processing, completed, no_record

    • driver_reviews_statusstring | nullrequired

      processing: being worked on, including when Sentinel staff are checking it; completed: the report is ready; no_record: the provider has no record of this driver, billed as a no-record result. Null when not ordered.

      One of: processing, completed, no_record

    • mvr_filestring | nullrequired

      Authenticated download URL when completed; otherwise null.

    • psp_filestring | nullrequired

      Authenticated download URL when completed; otherwise null.

    • cdlis_filestring | nullrequired

      Authenticated download URL when completed; otherwise null.

    • driver_reviews_dataobject | nullrequired

      Reviews of the driver matched on the exact name and date of birth. Never the reviewer, the reviewing carrier or any record id.

      Show 2 fields
      • foundbooleanrequired

        False when no review of the driver was found.

      • reviewsarray of objectrequired
        Show 3 fields
        • ratingnumber | nullrequired
        • textstring | nullrequired
        • datestring · date | nullrequired
    • safety_scoreinteger | nullrequired
    • safety_gradestring | nullrequired
    • safety_risk_levelstring | nullrequired
  • 202The order is processing.
    • Retry-Afterheader · integer

      Seconds to wait before trying again.

    • Locationheader · string

      The order's address, to poll.

    • Cache-Controlheader · string

      no-store: order results are never cached.

    • idstring · uuidrequired
    • statusstringrequired

      One of: processing, completed

    • mc_numberstringrequired
    • submission_datestring · date-timerequired
    • completed_datestring · date-time | nullrequired

      The order's final time when completed; otherwise null.

    • mvr_statusstring | nullrequired

      processing: being worked on, including when Sentinel staff are checking it; completed: the report is ready; no_record: the provider has no record of this driver, billed as a no-record result. Null when not ordered.

      One of: processing, completed, no_record

    • psp_statusstring | nullrequired

      processing: being worked on, including when Sentinel staff are checking it; completed: the report is ready; no_record: the provider has no record of this driver, billed as a no-record result. Null when not ordered.

      One of: processing, completed, no_record

    • cdlis_statusstring | nullrequired

      processing: being worked on, including when Sentinel staff are checking it; completed: the report is ready; no_record: the provider has no record of this driver, billed as a no-record result. Null when not ordered.

      One of: processing, completed, no_record

    • driver_reviews_statusstring | nullrequired

      processing: being worked on, including when Sentinel staff are checking it; completed: the report is ready; no_record: the provider has no record of this driver, billed as a no-record result. Null when not ordered.

      One of: processing, completed, no_record

    • mvr_filestring | nullrequired

      Authenticated download URL when completed; otherwise null.

    • psp_filestring | nullrequired

      Authenticated download URL when completed; otherwise null.

    • cdlis_filestring | nullrequired

      Authenticated download URL when completed; otherwise null.

    • driver_reviews_dataobject | nullrequired

      Reviews of the driver matched on the exact name and date of birth. Never the reviewer, the reviewing carrier or any record id.

      Show 2 fields
      • foundbooleanrequired

        False when no review of the driver was found.

      • reviewsarray of objectrequired
        Show 3 fields
        • ratingnumber | nullrequired
        • textstring | nullrequired
        • datestring · date | nullrequired
    • safety_scoreinteger | nullrequired
    • safety_gradestring | nullrequired
    • safety_risk_levelstring | nullrequired
  • 401invalid_api_key or api_key_expired.
    • WWW-Authenticateheader · string
    • errorobjectrequired
      Show 4 fields
      • order_idstring · uuid

        idempotency_conflict only: the order the key already belongs to.

      • codestringrequired
        • validation_error (400).
        • invalid_api_key (401).
        • api_key_expired (401).
        • account_not_approved (403).
        • account_suspended (403).
        • service_not_enabled (403).
        • permission_denied (403).
        • not_found (404).
        • method_not_allowed (405).
        • idempotency_conflict (409).
        • in_progress (409).
        • payload_too_large (413).
        • unsupported_media_type (415).
        • mvr_state_unavailable (422).
        • rate_limited (429).
        • internal_error (500).
        • rate_limit_unavailable (503).
        • price_unavailable (503).
        • request_unavailable: another HTTP error.

        One of: validation_error, invalid_api_key, api_key_expired, account_not_approved, account_suspended, service_not_enabled, permission_denied, not_found, method_not_allowed, idempotency_conflict, in_progress, payload_too_large, unsupported_media_type, mvr_state_unavailable, rate_limited, internal_error, rate_limit_unavailable, price_unavailable, request_unavailable

      • messagestringrequired

        For people; may change. Use code in your code.

      • fieldsobject | nullrequired

        Per-field messages, for validation errors.

  • 403account_not_approved.
    • errorobjectrequired
      Show 4 fields
      • order_idstring · uuid

        idempotency_conflict only: the order the key already belongs to.

      • codestringrequired
        • validation_error (400).
        • invalid_api_key (401).
        • api_key_expired (401).
        • account_not_approved (403).
        • account_suspended (403).
        • service_not_enabled (403).
        • permission_denied (403).
        • not_found (404).
        • method_not_allowed (405).
        • idempotency_conflict (409).
        • in_progress (409).
        • payload_too_large (413).
        • unsupported_media_type (415).
        • mvr_state_unavailable (422).
        • rate_limited (429).
        • internal_error (500).
        • rate_limit_unavailable (503).
        • price_unavailable (503).
        • request_unavailable: another HTTP error.

        One of: validation_error, invalid_api_key, api_key_expired, account_not_approved, account_suspended, service_not_enabled, permission_denied, not_found, method_not_allowed, idempotency_conflict, in_progress, payload_too_large, unsupported_media_type, mvr_state_unavailable, rate_limited, internal_error, rate_limit_unavailable, price_unavailable, request_unavailable

      • messagestringrequired

        For people; may change. Use code in your code.

      • fieldsobject | nullrequired

        Per-field messages, for validation errors.

  • 404not_found.
    • errorobjectrequired
      Show 4 fields
      • order_idstring · uuid

        idempotency_conflict only: the order the key already belongs to.

      • codestringrequired
        • validation_error (400).
        • invalid_api_key (401).
        • api_key_expired (401).
        • account_not_approved (403).
        • account_suspended (403).
        • service_not_enabled (403).
        • permission_denied (403).
        • not_found (404).
        • method_not_allowed (405).
        • idempotency_conflict (409).
        • in_progress (409).
        • payload_too_large (413).
        • unsupported_media_type (415).
        • mvr_state_unavailable (422).
        • rate_limited (429).
        • internal_error (500).
        • rate_limit_unavailable (503).
        • price_unavailable (503).
        • request_unavailable: another HTTP error.

        One of: validation_error, invalid_api_key, api_key_expired, account_not_approved, account_suspended, service_not_enabled, permission_denied, not_found, method_not_allowed, idempotency_conflict, in_progress, payload_too_large, unsupported_media_type, mvr_state_unavailable, rate_limited, internal_error, rate_limit_unavailable, price_unavailable, request_unavailable

      • messagestringrequired

        For people; may change. Use code in your code.

      • fieldsobject | nullrequired

        Per-field messages, for validation errors.

  • 429rate_limited. 120 reads and 10 orders a minute per vendor, across all of its keys.
    • Retry-Afterheader · integer

      Seconds to wait before trying again.

    • errorobjectrequired
      Show 4 fields
      • order_idstring · uuid

        idempotency_conflict only: the order the key already belongs to.

      • codestringrequired
        • validation_error (400).
        • invalid_api_key (401).
        • api_key_expired (401).
        • account_not_approved (403).
        • account_suspended (403).
        • service_not_enabled (403).
        • permission_denied (403).
        • not_found (404).
        • method_not_allowed (405).
        • idempotency_conflict (409).
        • in_progress (409).
        • payload_too_large (413).
        • unsupported_media_type (415).
        • mvr_state_unavailable (422).
        • rate_limited (429).
        • internal_error (500).
        • rate_limit_unavailable (503).
        • price_unavailable (503).
        • request_unavailable: another HTTP error.

        One of: validation_error, invalid_api_key, api_key_expired, account_not_approved, account_suspended, service_not_enabled, permission_denied, not_found, method_not_allowed, idempotency_conflict, in_progress, payload_too_large, unsupported_media_type, mvr_state_unavailable, rate_limited, internal_error, rate_limit_unavailable, price_unavailable, request_unavailable

      • messagestringrequired

        For people; may change. Use code in your code.

      • fieldsobject | nullrequired

        Per-field messages, for validation errors.

  • 503rate_limit_unavailable.
    • Retry-Afterheader · integer

      Seconds to wait before trying again.

    • errorobjectrequired
      Show 4 fields
      • order_idstring · uuid

        idempotency_conflict only: the order the key already belongs to.

      • codestringrequired
        • validation_error (400).
        • invalid_api_key (401).
        • api_key_expired (401).
        • account_not_approved (403).
        • account_suspended (403).
        • service_not_enabled (403).
        • permission_denied (403).
        • not_found (404).
        • method_not_allowed (405).
        • idempotency_conflict (409).
        • in_progress (409).
        • payload_too_large (413).
        • unsupported_media_type (415).
        • mvr_state_unavailable (422).
        • rate_limited (429).
        • internal_error (500).
        • rate_limit_unavailable (503).
        • price_unavailable (503).
        • request_unavailable: another HTTP error.

        One of: validation_error, invalid_api_key, api_key_expired, account_not_approved, account_suspended, service_not_enabled, permission_denied, not_found, method_not_allowed, idempotency_conflict, in_progress, payload_too_large, unsupported_media_type, mvr_state_unavailable, rate_limited, internal_error, rate_limit_unavailable, price_unavailable, request_unavailable

      • messagestringrequired

        For people; may change. Use code in your code.

      • fieldsobject | nullrequired

        Per-field messages, for validation errors.

curl https://api-demo-safety.spotter.ai/api/vendor/v1/orders/3f2b9c1e-7a4d-4e8b-9c61-5d0a8e2f4b17 \
  -H "X-API-Key: YOUR_API_KEY"
{
  "id": "3f2b9c1e-7a4d-4e8b-9c61-5d0a8e2f4b17",
  "status": "processing",
  "mc_number": "string",
  "submission_date": "2026-10-14T15:04:05Z",
  "completed_date": "2026-10-14T15:04:05Z",
  "mvr_status": "processing",
  "psp_status": "processing",
  "cdlis_status": "processing",
  "driver_reviews_status": "processing",
  "mvr_file": "string",
  "psp_file": "string",
  "cdlis_file": "string",
  "driver_reviews_data": {
    "found": true,
    "reviews": [
      {
        "rating": 0,
        "text": "string",
        "date": "2026-10-14"
      }
    ]
  },
  "safety_score": 0,
  "safety_grade": "string",
  "safety_risk_level": "string"
}