Skip to content
Developers

Screen drivers with one API.

curl https://api-demo-safety.spotter.ai/api/vendor/v1/me \
  -H "X-API-Key: YOUR_API_KEY"
200 OKapplication/json
{
  "vendor_id": "8b0c6f1e-3d2a-4c7b-9e51-2f6a0d4c7b13",
  "company_name": "Acme Logistics",
  "environment": "sandbox",
  "enabled_services": ["mvr", "psp", "cdlis", "driver_reviews"]
}

How an order flows

  1. Get a key

    Your API key
    X-API-Key: snt_test_••••••••••••••••Create an account
  2. Call the API

    GET /api/vendor/v1/me
    curl https://api-demo-safety.spotter.ai/api/vendor/v1/me \
      -H "X-API-Key: YOUR_API_KEY"
    200 OK
    {
      "vendor_id": "8b0c6f1e-3d2a-4c7b-9e51-2f6a0d4c7b13",
      "company_name": "Acme Logistics",
      "environment": "sandbox",
      "enabled_services": ["mvr", "psp", "cdlis", "driver_reviews"]
    }
  3. Checks run

    POST /api/vendor/v1/orders
    Request
    curl -X POST https://api-demo-safety.spotter.ai/api/vendor/v1/orders \
      -H "X-API-Key: YOUR_API_KEY" \
      -H "Idempotency-Key: 9d4e1f0a-2b6c-4c8e-a1f3-7e5d2c9b8a60" \
      -F first_name=Jane \
      -F last_name=Doe \
      -F date_of_birth=1985-04-12 \
      -F license_number=D1234567 \
      -F license_state=TX \
      -F mc_number=MC-123456 \
      -F services=mvr,psp,cdlis,driver_reviews \
      -F ssn=DRIVER_SSN \
      -F driver_consent_confirmed=true \
      -F consent_obtained_at=2026-10-14T15:04:05-05:00 \
      -F consent_version=vendor-2026-10-v1 \
      -F cdl_image=@cdl-front.jpg
    202 Accepted
    {
      "order_id": "3f2b9c1e-7a4d-4e8b-9c61-5d0a8e2f4b17",
      "status": "processing",
      "final": false,
      "environment": "sandbox",
      "mc_number": "MC-123456",
      "external_reference": null,
      "services": [
        { "service": "mvr", "status": "processing",
          "reason": null, "state": "TX",
          "completed_at": null, "file_url": null,
          "result": null },
        { "service": "psp", "status": "processing",
          "reason": null, "state": null,
          "completed_at": null, "file_url": null,
          "result": null },
        { "service": "cdlis", "status": "processing",
          "reason": null, "state": null,
          "completed_at": null, "file_url": null,
          "result": null },
        { "service": "driver_reviews",
          "status": "processing", "reason": null,
          "state": null, "completed_at": null,
          "file_url": null, "result": null }
      ],
      "safety_score": null,
      "created_at": "2026-10-14T20:04:06Z",
      "poll": {
        "url": "/api/vendor/v1/orders/3f2b9c1e-7a4d-4e8b-9c61-5d0a8e2f4b17",
        "after_seconds": 30
      }
    }
  4. Results come back

    GET /api/vendor/v1/orders/{order_id}
    200 OK
    {
      "order_id": "3f2b9c1e-7a4d-4e8b-9c61-5d0a8e2f4b17",
      "status": "partially_completed",
      "final": true,
      "environment": "sandbox",
      "mc_number": "MC-123456",
      "external_reference": null,
      "services": [
        { "service": "mvr", "status": "completed",
          "reason": null, "state": "TX",
          "completed_at": "2026-10-14T20:19:41Z",
          "file_url": "/api/vendor/v1/orders/3f2b9c1e-7a4d-4e8b-9c61-5d0a8e2f4b17/files/mvr",
          "result": null },
        { "service": "psp", "status": "completed",
          "reason": null, "state": null,
          "completed_at": "2026-10-14T20:19:41Z",
          "file_url": "/api/vendor/v1/orders/3f2b9c1e-7a4d-4e8b-9c61-5d0a8e2f4b17/files/psp",
          "result": null },
        { "service": "cdlis", "status": "failed",
          "reason": "no_record", "state": null,
          "completed_at": "2026-10-14T20:19:41Z",
          "file_url": null, "result": null },
        { "service": "driver_reviews",
          "status": "completed", "reason": null,
          "state": null,
          "completed_at": "2026-10-14T20:19:41Z",
          "file_url": null,
          "result": {
            "found": true,
            "reviews": [
              { "rating": 4,
                "text": "On time, careful with the load.",
                "date": "2026-08-30" }
            ]
          } }
      ],
      "safety_score": {
        "score": 88,
        "grade": "B",
        "risk_level": "Low",
        "reports_used": ["mvr", "psp"],
        "calculated_at": "2026-10-14T20:19:41Z"
      },
      "created_at": "2026-10-14T20:04:06Z",
      "poll": {
        "url": "/api/vendor/v1/orders/3f2b9c1e-7a4d-4e8b-9c61-5d0a8e2f4b17",
        "after_seconds": 30
      }
    }
    Report PDF
    curl --fail-with-body https://api-demo-safety.spotter.ai/api/vendor/v1/orders/3f2b9c1e-7a4d-4e8b-9c61-5d0a8e2f4b17/files/mvr \
      -H "X-API-Key: YOUR_API_KEY" \
      -OJ
    # saves sentinel-mvr-3f2b9c1e-7a4d-4e8b-9c61-5d0a8e2f4b17.pdf
  5. One line on the monthly invoice

    Invoice on the 1st, PDF and CSV
    • HITBilled
    • NO_HITBilled
    • UNABLENo charge
    • INVALIDATEDNo charge

Services

Services, what each returns, and where it is on the order
ServiceReturnsOn the order
MVRmvrThe driving record from the license state, priced by statePDF at file_url
PSPpspFMCSA crash and inspection historyPDF at file_url
CDLIScdlisCommercial license status (needs the driver's SSN)PDF at file_url
Driver Reviewsdriver_reviewsReviews matched on exact name and date of birth: rating, text, dateJSON in result
Safety ScoreA score from 0 to 100 with grade and risk level, from the MVR and PSPOn the order as safety_score

Services guidePrices