Spark Driver icon

Spark Driver last-mile data API

Walmart · Transport

Spark Driver is Walmart's last-mile courier app for independent drivers who pick up grocery and general-merchandise orders from Walmart and Sam's Club. Gig partners in the United States use it to accept delivery offers, run multi-stop trips, complete drop-offs and follow weekly pay.

Weekly pay windows on the earnings home carry aggregatedTransactionAmount plus the day's tipAmount and tripEarning; each completed stop then gets a golden receipt that splits earnedAmount against lastOfferAmount into TRIP, TIP and SURGE. Live batches show priceOffered and estimatedTotalPayout before accept, while the demand calendar paints hourly dsRatio slots over Supercenter pins.

Payroll bots reconcile those weekly totals to bank deposits, dispatch tools score offers on payout versus planned mileage, and fleet dashboards overlay busy-hour slots so partners know which stores will have work. openData Studio turns the same last-mile surface into callable open data.

Screenshots

  • Spark Driver screenshot 1
  • Spark Driver screenshot 2
  • Spark Driver screenshot 3
  • Spark Driver screenshot 4
  • Spark Driver screenshot 5

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Generate login OTP

    POST /v1/spark/auth/otp/send osint

    Starts Spark Driver OTP sign-in by sending a one-time code to the driver's loginId (phone or email).

    Auth: None (pre-login). Identifies the driver by loginId.

    • loginId
    POST /v1/spark/auth/otp/send HTTP/1.1
    Content-Type: application/json
    
    {
      "loginId": "4155550199"
    }
    {
      "loginId": "4155550199"
    }
  • Validate OTP and issue session

    POST /v1/spark/auth/otp/confirm osint

    Confirms the OTP and returns the signed-in driver identity plus authToken/refreshToken used as the session on later last-mile calls.

    Auth: None (issues the session). Later calls send the returned authToken as a Bearer session token plus a consumer key.

    • username
    • firstName
    • lastName
    • driverUUID
    • driverUserId
    • authToken
    • refreshToken
    • validity
    • authenticationState
    • status
    POST /v1/spark/auth/otp/confirm HTTP/1.1
    Content-Type: application/json
    
    {
      "loginId": "4155550199",
      "loginCode": "482916"
    }
    {
      "username": "4155550199",
      "firstName": "Jordan",
      "lastName": "Lee",
      "driverUUID": "dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234",
      "driverUserId": "4155550199",
      "authToken": "eyJhbGciOi...",
      "refreshToken": "d8f1c2a9...",
      "validity": 1800,
      "authenticationState": "SUCCESS",
      "status": "ACTIVE"
    }
  • Available delivery offers

    GET /v1/spark/offers opendata

    Lists live delivery offers for the signed-in Spark driver, each wrapping a Trip with offerPrice (priceOffered, surge, estimatedTotalPayout) and stop counts.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • offers
    • expiryTime
    • status
    • tripId
    • displayTripId
    • driverOfferId
    • totalDeliveryTasks
    • totalOrders
    • totalPlannedMileage
    • pickupASAP
    • isTipEligible
    • priceOffered
    • preTipAmount
    • estimatedPayout
    • estimatedTotalPayout
    • surge
    • currencyAmount
    • currencyUnit
    GET /v1/spark/offers?driverUUID=dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "offers": [
        {
          "expiryTime": 1758738120000,
          "isExpired": false,
          "isTakenAlready": false,
          "status": "OFFER_PUBLISHED",
          "trip": {
            "tripId": "trp_44102",
            "displayTripId": "SPK-884211",
            "driverOfferId": "off_77a1",
            "totalDeliveryTasks": 3,
            "totalOrders": 3,
            "totalPlannedMileage": 12.4,
            "pickupASAP": true,
            "isTipEligible": true,
            "offerPrice": {
              "priceOffered": {"currencyAmount": 18.5, "currencyUnit": "USD"},
              "preTipAmount": {"currencyAmount": 14.25, "currencyUnit": "USD"},
              "estimatedPayout": {"currencyAmount": 18.5, "currencyUnit": "USD"},
              "estimatedTotalPayout": {"currencyAmount": 22.0, "currencyUnit": "USD"},
              "surge": {"currencyAmount": 2.0, "currencyUnit": "USD"}
            }
          }
        }
      ]
    }
  • Accept delivery offer

    POST /v1/spark/offers/{offerId}/accept opendata

    Accepts a published offer at the driver's current coordinates; the offer-acceptance screen writes offerId plus lat/long and receives ACCEPTED.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • offerId
    • driverId
    • latitude
    • longitude
    • status
    POST /v1/spark/offers/off_77a1/accept HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {
      "offerId": "off_77a1",
      "driverId": "4155550199",
      "latitude": 37.7902,
      "longitude": -122.3971
    }
    {
      "status": "ACCEPTED"
    }
  • Trip details (lite)

    GET /v1/spark/trips/{tripId} opendata

    Loads the lite trip card used on the active-trip screen: identifiers, stop counts, planned mileage, pickup pin and the accepted offerPrice.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • tripId
    • tripExternalId
    • displayTripId
    • status
    • tripStartDateTime
    • pickupTime
    • totalDeliveryTasks
    • totalOrders
    • totalPlannedMileage
    • totalCalculatedMileage
    • totalCalculatedTravelTime
    • isTipEligible
    • driverPin
    • deliveryStartPoint
    • offerPrice
    GET /v1/spark/trips/trp_44102?driverUUID=dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "tripId": "trp_44102",
      "tripExternalId": "ext_9c81",
      "displayTripId": "SPK-884211",
      "status": "IN_PROGRESS",
      "tripStartDateTime": 1758734400000,
      "pickupTime": 1758735000000,
      "totalDeliveryTasks": 3,
      "totalOrders": 3,
      "totalPlannedMileage": 12.4,
      "totalCalculatedMileage": 13.1,
      "totalCalculatedTravelTime": 42.0,
      "isTipEligible": true,
      "driverPin": "4829",
      "deliveryStartPoint": {
        "storeName": "Walmart Supercenter #2455",
        "latitude": 37.7849,
        "longitude": -122.4094
      },
      "offerPrice": {
        "priceOffered": {"currencyAmount": 18.5, "currencyUnit": "USD"},
        "estimatedTotalPayout": {"currencyAmount": 22.0, "currencyUnit": "USD"}
      }
    }
  • Completed trips list

    GET /v1/spark/trips/history opendata

    Pages the driver's completed-trip history as CompletedTripLite rows (ids, window, stop count, status, offerPrice) for the Completed tab.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • trips
    • tripId
    • tripExternalId
    • displayTripId
    • tripStartDateTime
    • tripEndDateTime
    • totalDeliveryTasks
    • status
    • offerPrice
    GET /v1/spark/trips/history?driverUUID=dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234&startDate=2026-09-22&endDate=2026-09-28&pageNo=1&pageSize=20 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "trips": [
        {
          "tripId": "trp_44102",
          "tripExternalId": "ext_9c81",
          "displayTripId": "SPK-884211",
          "tripStartDateTime": 1758734400000,
          "tripEndDateTime": 1758738120000,
          "totalDeliveryTasks": 3,
          "status": "COMPLETED",
          "offerPrice": {
            "priceOffered": {"currencyAmount": 18.5, "currencyUnit": "USD"},
            "estimatedTotalPayout": {"currencyAmount": 22.0, "currencyUnit": "USD"}
          }
        }
      ]
    }
  • Weekly earnings summary

    GET /v1/spark/pay/weekly openfinance

    Returns paginated weekly pay windows (aggregatedTransactionAmount, trip count, USD) plus the current week's dailyEarnings — the Spark earnings home.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • weeklyTransactions
    • week
    • weekStartDate
    • weekEndDate
    • aggregatedTransactionAmount
    • currency
    • noOfTransactionInWeek
    • dailyEarnings
    GET /v1/spark/pay/weekly?driverUUID=dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234&pageNo=1&pageSize=8 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "weeklyTransactions": [
        {
          "week": 39,
          "weekStartDate": "2026-09-21",
          "weekEndDate": "2026-09-27",
          "aggregatedTransactionAmount": 612.4,
          "currency": "USD",
          "noOfTransactionInWeek": 28
        }
      ],
      "dailyEarnings": {
        "week": 39,
        "earnings": [
          {"date": "2026-09-24", "amount": 96.5, "noOfTrips": 5}
        ]
      }
    }
  • Daily earnings with trips

    GET /v1/spark/pay/daily openfinance

    Breaks one calendar day into trip pay, tips, incentives and the per-trip EarningTrip list that the daily-earnings drill-down renders.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • transactionAmount
    • deliveriesAmount
    • tipAmount
    • transactionStatus
    • noOfTransaction
    • dayName
    • date
    • currency
    • tripEarning
    • incentiveBonusEarning
    • rewardsEarning
    • trips
    • unconfirmedTips
    GET /v1/spark/pay/daily?driverUUID=dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234&date=2026-09-24&timezone=America/Los_Angeles HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "transactionAmount": 96.5,
      "deliveriesAmount": 78.0,
      "tipAmount": 14.5,
      "transactionStatus": "CONFIRMED",
      "noOfTransaction": 5,
      "dayName": "Wednesday",
      "date": "2026-09-24T00:00:00Z",
      "currency": "USD",
      "tripEarning": {"amount": 78.0, "name": "TRIP"},
      "incentiveBonusEarning": {"amount": 4.0, "name": "INCENTIVE"},
      "rewardsEarning": {"amount": 0.0, "name": "REWARDS"},
      "trips": [
        {
          "tripId": "trp_44102",
          "displayTripId": "SPK-884211",
          "amount": 22.0,
          "totalOrders": 3,
          "tripStatus": "COMPLETED",
          "unconfirmedTips": 3.0
        }
      ]
    }
  • Golden trip receipt

    GET /v1/spark/pay/trips/{tripId}/receipt openfinance

    Returns the per-trip golden receipt: earnedAmount vs lastOfferAmount, a categorized earningsBreakdown (trip/tip/surge) and depositHistory.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • tripDetails
    • displayTripId
    • tripStatus
    • earnedAmount
    • lastOfferAmount
    • earningsBreakdown
    • category
    • displayName
    • offeredAmount
    • depositHistory
    • rewardPoints
    GET /v1/spark/pay/trips/trp_44102/receipt HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "tripDetails": {
        "displayTripId": "SPK-884211",
        "tripStatus": "COMPLETED",
        "timeStamp": 1758738120000,
        "currency": "USD",
        "earnedAmount": 22.0,
        "lastOfferAmount": 18.5
      },
      "earningsBreakdown": [
        {
          "category": "TRIP",
          "displayName": "Trip earnings",
          "orderPriority": 1,
          "earnedAmount": 14.25,
          "offeredAmount": 14.25
        },
        {
          "category": "TIP",
          "displayName": "Customer tip",
          "orderPriority": 2,
          "earnedAmount": 3.0,
          "offeredAmount": null
        },
        {
          "category": "SURGE",
          "displayName": "Busy-time extra",
          "orderPriority": 3,
          "earnedAmount": 2.0,
          "offeredAmount": 2.0
        }
      ],
      "depositHistory": [
        {
          "category": "DIRECT_DEPOSIT",
          "status": "PENDING",
          "amount": 22.0
        }
      ],
      "rewardPoints": {"points": 12}
    }
  • Export earnings history

    POST /v1/spark/pay/export openfinance

    Queues an XLSX dump of the driver's earnings between startDate and endDate; the history bottom sheet polls on requestId.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • driverUUID
    • startDate
    • endDate
    • format
    • requestId
    • status
    • message
    POST /v1/spark/pay/export HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {
      "driverUUID": "dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234",
      "startDate": "2026-07-01",
      "endDate": "2026-09-30",
      "format": "XLSX"
    }
    {
      "requestId": "exp_c41e90",
      "status": "QUEUED",
      "message": "Earnings export queued"
    }
  • Driver performance summary

    POST /v1/spark/quality/scorecard opendata

    Returns the driver's quality scorecard: named PerformanceMetric rows with displayValue, unit and performanceZone, plus tripMetric totals.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • driver
    • metrics
    • name
    • title
    • description
    • displayValue
    • unit
    • performanceZone
    • tripMetric
    • shoppersMetrics
    • summaryV2ZoneEnabled
    POST /v1/spark/quality/scorecard HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {
      "driverId": "4155550199",
      "driverUUID": "dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234"
    }
    {
      "driver": {"driverUUID": "dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234"},
      "metrics": [
        {
          "name": "onTimeArrival",
          "title": "On-time arrival",
          "description": "Share of stops arrived on time",
          "position": "1",
          "valueDetails": {"displayValue": "96%", "unit": "PERCENT"},
          "performanceZone": "GREEN"
        }
      ],
      "tripMetric": {"completedTrips": 184},
      "shoppersMetrics": [],
      "summaryV2ZoneEnabled": true
    }
  • Rewards tier and metrics

    GET /v1/spark/rewards/me opendata

    Reads the Spark Rewards card: currentLevel vs nextLevel, qualifyingPeriod, and primaryMetrics (acceptance and related KPIs) that gate the next tier.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • tiers
    • currentTierDetails
    • currentLevel
    • nextLevel
    • qualifyingPeriod
    • projectedTierDetails
    • primaryMetrics
    • key
    • value
    • unit
    • lastUpdatedTs
    • rewardsMetrics
    GET /v1/spark/rewards/me HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "tiers": [{"name": "Silver"}, {"name": "Gold"}, {"name": "Platinum"}],
      "currentTierDetails": {
        "currentLevel": "Gold",
        "nextLevel": "Platinum",
        "qualifyingPeriod": {"start": "2026-07-01", "end": "2026-09-30"}
      },
      "projectedTierDetails": {"projectedLevel": "Gold"},
      "primaryMetrics": {
        "data": [
          {
            "key": "ACCEPTANCE_RATE",
            "value": 0.92,
            "unit": "PERCENT",
            "currentLevel": "Gold",
            "nextLevel": "Platinum",
            "lastUpdatedTs": 1758738120000
          }
        ]
      },
      "rewardsMetrics": {"pointsToNext": 40}
    }
  • Active incentive promotions

    GET /v1/spark/bonuses/active openfinance

    Lists in-progress incentive promotions for the driver's deliveryArea, including targetIncentiveAmount and eligibleTime windows shown on the bonuses screen.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • driverUserId
    • driverUUID
    • deliveryArea
    • displayDate
    • incentives
    • incentiveId
    • incentiveDisplayId
    • incentiveName
    • incentiveSummary
    • targetIncentiveAmount
    • eligibleTime
    • incentiveStatus
    • executionId
    • showProgressBar
    GET /v1/spark/bonuses/active?driverUUID=dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "driverUserId": "4155550199",
      "driverUUID": "dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234",
      "deliveryArea": "SF-BAY",
      "displayDate": "2026-09-24",
      "incentives": [
        {
          "incentiveId": "inc_2201",
          "incentiveDisplayId": "WKND-BAY-40",
          "incentiveName": "Weekend Bay Area bonus",
          "incentiveSummary": "Complete 8 trips Sat–Sun",
          "targetIncentiveAmount": 40.0,
          "eligibleTime": "08:00-20:00",
          "incentiveStatus": "IN_PROGRESS",
          "executionId": "exe_91",
          "showProgressBar": true
        }
      ]
    }
  • Busy-hour demand calendar

    GET /v1/spark/demand/hours opendata

    Feeds the home-screen busy-hour heatmap: per-day hourlyDSRatio slots (driver-to-store dsRatio) plus color legend and overlapping incentives.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • colors
    • busyHours
    • date
    • displayDate
    • hourlyDSRatio
    • slotStartTime
    • slotEndTime
    • dsRatio
    • events
    • incentives
    GET /v1/spark/demand/hours?includeIncentives=true HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "colors": [
        {"code": "LOW", "hex": "#C8E6C9"},
        {"code": "HIGH", "hex": "#E53935"}
      ],
      "busyHours": [
        {
          "date": 1758734400000,
          "displayDate": "Wed 24",
          "hourlyDSRatio": [
            {"slotStartTime": 16, "slotEndTime": 17, "dsRatio": 0.82},
            {"slotStartTime": 17, "slotEndTime": 18, "dsRatio": 1.14}
          ],
          "events": []
        }
      ],
      "incentives": []
    }
  • Zone stores and offer heatmap

    GET /v1/spark/zone/stores opendata

    Returns stores in the driver's zone that currently have offers, with address/lat-long and heatMapMarkerEntryList pins for the My Zone map.

    Auth: Bearer authToken from OTP confirm, plus a consumer key

    • deliveryStartPoints
    • deliveryStartPointId
    • deliveryArea
    • countryCode
    • storeName
    • addressLine1
    • city
    • state
    • postalCode
    • latitude
    • longitude
    • heatMapMarkerEntryList
    GET /v1/spark/zone/stores?driverUUID=dvr_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234&deliveryArea=SF-BAY HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "deliveryStartPoints": [
        {
          "deliveryStartPointId": "dsp_2455",
          "deliveryArea": "SF-BAY",
          "countryCode": "US",
          "storeName": "Walmart Supercenter #2455",
          "addressLine1": "450 Mission St",
          "city": "San Francisco",
          "state": "CA",
          "postalCode": "94105",
          "latitude": 37.7902,
          "longitude": -122.3971
        }
      ],
      "heatMapMarkerEntryList": [
        {"latitude": 37.7902, "longitude": -122.3971, "offerCount": 4}
      ]
    }

Data categories

  • identity
  • session
  • trip-offers
  • active-trips
  • completed-trips
  • weekly-earnings
  • daily-earnings
  • trip-receipts
  • earnings-export
  • performance
  • rewards-tier
  • incentives
  • busy-hours
  • zone-heatmap

Where teams use this data

  • Weekly deposit reconciliation

    Payroll bots pull aggregatedTransactionAmount, weekStartDate and noOfTransactionInWeek, then match each day's tipAmount and tripEarning against bank deposits and Prop 22 true-up windows.

  • Offer-quality scoring

    Dispatch tools score live offers on priceOffered, estimatedTotalPayout, surge, totalPlannedMileage and totalDeliveryTasks so drivers can filter low-yield batches before accept.

  • Per-trip pay ledger

    Tax and gig-ledger apps store golden receipts (earnedAmount vs lastOfferAmount, earningsBreakdown categories TRIP/TIP/SURGE) alongside displayTripId for year-end 1099 support.

  • Busy-hour staffing overlay

    Fleet dashboards overlay hourly dsRatio slots and zone storeName pins so partners know which Walmart Supercenters will have offers in the next hour.

Frequently asked questions

What earnings fields does Spark Driver expose?

Weekly windows return aggregatedTransactionAmount, weekStartDate/weekEndDate and noOfTransactionInWeek in USD. Daily drill-down adds transactionAmount, deliveriesAmount, tipAmount, tripEarning and the per-trip EarningTrip list. The golden receipt splits earnedAmount into TRIP/TIP/SURGE categories.

How does Spark Driver authenticate?

Drivers request an OTP with loginId, then validate loginCode. The User payload returns authToken, refreshToken, driverUUID and driverUserId. Later last-mile calls send that session token plus a consumer key.

What offer and trip data is available?

Available offers wrap a Trip with offerPrice (priceOffered, preTipAmount, surge, estimatedTotalPayout), stop counts and planned mileage. Accept posts offerId plus the driver's latitude/longitude. Lite trip details and the completed-trip list reuse those identifiers.

Is this a public Walmart developer API?

No. These are illustrative reconstructions of the first-party last-mile calls the Spark Driver app makes after sign-in. They are not a documented public Walmart developer program.

Topics

  • Spark Driver API
  • Walmart Spark Driver earnings
  • aggregatedTransactionAmount
  • priceOffered
  • earnedAmount
  • dsRatio busy hours
  • last-mile driver data
  • golden trip receipt
  • Spark Driver offers

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote