Amazon Flex is the last-mile courier app from Amazon Mobile LLC that independent delivery partners use to claim Amazon package blocks, run station pickup and doorstep drops, and get paid. Partners sign in with an Amazon account, pick the service areas they can cover, and grab Reserve Now or scheduled block offers that show the window, station and pay before they accept. When a block starts they check in at the station, scan packages onto a stop-by-stop itinerary, navigate house, locker and business drops, then close the work session. Earnings and Payments screens list settled blocks and send cash-out to a bank account, Instant Offers can add extra stops mid-block, and onboarding walks new partners through ID, vehicle, insurance and background-check tasks. Flex is Amazon's gig last-mile network in the United States, Mexico, Brazil, Germany and India, sitting beside DSP employee workflows in the same delivery stack, and it competes for the same independent couriers as Walmart Spark Driver, Uber Driver and DoorDash Dasher.
Booked-block projectedEarnings sit on Reserve Now cards beside priceAmount, isSurge and surgeMultiplier, then settle into currentBalance once the itinerary's stops and packages close.
Payroll and lending stacks reconcile providerEarnings rows — identifier, type, status, settlementTime — against cashoutEligibilityStatus and accountNumberTail before an instant cash-out. Route tools consume fulfillment itineraries (addresses, substops, trIdToFulfillmentIdsMap) and the live sessionId with workEligibility. openData Studio turns those objects into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Offers for provider
POST
/v1/flex/offersopendataLists live Reserve Now and scheduled block offers for the signed-in provider: offerList rows with windows, serviceAreaId, deliveryAreaDisplayName and rateInfo (projectedEarnings, surgeMultiplier).
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- apiVersion
- providerId
- serviceAreaIds
- statusFilter
- filters
- offerExperienceVersion
- refreshInterval
- refreshTimeout
- offerList
- offerId
- offerType
- status
- startTime
- endTime
- expirationDate
- serviceAreaId
- deliveryAreaDisplayName
- rateInfo
- currency
- isSurge
- priceAmount
- projectedEarnings
- projectedTips
- surgeMultiplier
- upfrontTips
POST /v1/flex/offers HTTP/1.1 x-amz-access-token: Atza|IwE... Content-Type: application/json { "apiVersion": "V2", "providerId": "amzn1.flex.provider.7f21c0a4", "serviceAreaIds": ["seattlesouth"], "statusFilter": "AVAILABLE", "filters": {} }{ "offerExperienceVersion": "V3", "refreshInterval": 30, "refreshTimeout": 120, "offerList": [ { "offerId": "off_7f21c0a4", "offerType": "BLOCK", "status": "AVAILABLE", "startTime": "2026-10-02T15:00:00.000Z", "endTime": "2026-10-02T19:00:00.000Z", "expirationDate": "2026-10-02T14:55:00.000Z", "creationDate": "2026-10-02T13:10:00.000Z", "serviceAreaId": "seattlesouth", "serviceTypeId": "AMZL", "deliveryAreaDisplayName": "Seattle South", "deliveryAreaRegionId": "SEA", "isPriorityOffer": false, "hidden": false, "locationTrackingRequired": true, "maxWorkload": 40, "schedulingType": "BLOCK", "legalEntity": "Amazon.com Services LLC", "rateInfo": { "currency": "USD", "isSurge": true, "priceAmount": 72.5, "projectedEarnings": 72.5, "projectedTips": 0, "surgeMultiplier": "1.2", "upfrontTips": 0 } } ] }Offer details
GET
/v1/flex/offers/{offerId}opendataLoads one SchedulingOffer by offerId for the offer-details screen: window, station startingLocation, workload and rateInfo.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- offerId
- providerId
- datasetList
- offer
- offerType
- status
- startTime
- endTime
- serviceAreaId
- deliveryAreaDisplayName
- startingLocation
- locationTrackingRequired
- maxWorkload
- rateInfo
- projectedEarnings
- surgeMultiplier
GET /v1/flex/offers/off_7f21c0a4 HTTP/1.1 x-amz-access-token: Atza|IwE...{ "offer": { "offerId": "off_7f21c0a4", "offerType": "BLOCK", "status": "AVAILABLE", "startTime": "2026-10-02T15:00:00.000Z", "endTime": "2026-10-02T19:00:00.000Z", "serviceAreaId": "seattlesouth", "deliveryAreaDisplayName": "Seattle South", "locationTrackingRequired": true, "maxWorkload": 40, "startingLocation": { "address": "440 Terry Ave N, Seattle, WA" }, "rateInfo": { "currency": "USD", "isSurge": true, "priceAmount": 72.5, "projectedEarnings": 72.5, "surgeMultiplier": "1.2" } } }Accept work offer
POST
/v1/flex/offers/{offerId}/acceptopendataAccepts a block offer; returns providerReservationId and workSegmentId that the schedule and session hang on.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- offerId
- providerId
- providerReservationId
- workSegmentId
POST /v1/flex/offers/off_7f21c0a4/accept HTTP/1.1 x-amz-access-token: Atza|IwE... Content-Type: application/json { "offerId": "off_7f21c0a4", "providerId": "amzn1.flex.provider.7f21c0a4" }{ "providerReservationId": "res_9c81e2b0", "workSegmentId": "ws_44102" }Scheduled assignments
GET
/v1/flex/assignmentsopendataReturns the partner's booked calendar: scheduledAssignments with startTime, durationInMinutes, serviceAreaId, status and bookedPrice.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- startDate
- endDate
- scheduledAssignments
- scheduledAssignmentId
- providerId
- startTime
- durationInMinutes
- serviceAreaId
- status
- schedulingType
- maxWorkload
- locationTrackingRequired
- bookedPrice
- amount
- currency
- projectedEarnings
GET /v1/flex/assignments?startDate=2026-10-01T00:00:00.000Z&endDate=2026-10-08T00:00:00.000Z HTTP/1.1 x-amz-access-token: Atza|IwE...{ "scheduledAssignments": [ { "scheduledAssignmentId": "sa_12ab", "providerId": "amzn1.flex.provider.7f21c0a4", "startTime": "2026-10-02T15:00:00.000Z", "durationInMinutes": 240, "serviceAreaId": "seattlesouth", "serviceTypeId": "AMZL", "status": "RESERVED", "schedulingType": "BLOCK", "maxWorkload": 40, "locationTrackingRequired": true, "legalEntity": "Amazon.com Services LLC", "deliveryAreaRegionId": "SEA", "bookedPrice": { "amount": 72.5, "currency": "USD", "projectedEarnings": 72.5, "projectedTips": 0 } } ] }Eligible service areas
GET
/v1/flex/service-areasopendataReturns the serviceAreaIds the signed-in provider is eligible to work, used by area filters on Offers and Schedule.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- serviceAreaIds
GET /v1/flex/service-areas HTTP/1.1 x-amz-access-token: Atza|IwE...{ "serviceAreaIds": ["seattlesouth", "bellevue", "tukwila"] }Provider earnings summary
GET
/v1/flex/earningsopenfinancePowers the Earnings home: currentBalance plus paged providerEarnings rows (identifier, type, status, settlementTime) for the date window.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- startDate
- endDate
- providerId
- providerType
- includeCurrentBalance
- locale
- pageSize
- pageToken
- currentBalance
- amount
- currency
- providerEarnings
- identifier
- type
- subType
- status
- earningsDate
- settlementTime
- actualSettlementTime
- paymentPreference
- biller
GET /v1/flex/earnings?startDate=2026-09-01T00:00:00.000Z&endDate=2026-10-01T00:00:00.000Z&providerId=amzn1.flex.provider.7f21c0a4&providerType=FLEX&includeCurrentBalance=true&locale=en_US&pageSize=20 HTTP/1.1 x-amz-access-token: Atza|IwE...{ "currentBalance": {"amount": 214.75, "currency": "USD"}, "providerEarnings": [ { "identifier": "pe_884211", "type": "BLOCK", "subType": "STANDARD", "status": "SETTLED", "earningsDate": "2026-09-24T19:10:00.000Z", "settlementTime": "2026-09-25T08:00:00.000Z", "actualSettlementTime": "2026-09-25T08:04:00.000Z", "paymentPreference": "BANK_ACCOUNT" } ], "biller": {"billerId": "bl_sea_01"}, "pageToken": null }Itemized provider earnings
GET
/v1/flex/earnings/{identifier}openfinanceExpands one earnings row into ProviderEarningsItem lines (amount, description, type) plus the blocksInDeposit grouping used on the itemized earnings sheet.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- identifier
- locale
- items
- amount
- description
- type
- blocksInDeposit
- workEarningTransactionDetails
GET /v1/flex/earnings/pe_884211?locale=en_US HTTP/1.1 x-amz-access-token: Atza|IwE...{ "items": [ {"amount": {"amount": 72.5, "currency": "USD"}, "description": "Block pay", "type": "BASE"}, {"amount": {"amount": 8.0, "currency": "USD"}, "description": "Surge", "type": "SURGE"} ], "blocksInDeposit": [ { "identifier": "pe_884211", "type": "BLOCK", "status": "SETTLED", "earningsDate": "2026-09-24T19:10:00.000Z" } ], "workEarningTransactionDetails": [] }Cash-out eligibility
GET
/v1/flex/payouts/eligibilityopenfinanceDecides whether Cash out can run: isEligible, cashoutEligibilityStatus, spendable balance, accountNumberTail and the batchId later posted to initiate cash-out.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- entityType
- entityId
- locale
- isEligible
- cashoutEligibilityStatus
- balance
- accountNumberTail
- accountType
- batchId
- ineligibilityReasonTitle
- ineligibilityReasonMessage
GET /v1/flex/payouts/eligibility?entityType=PROVIDER&entityId=amzn1.flex.provider.7f21c0a4&locale=en_US HTTP/1.1 x-amz-access-token: Atza|IwE...{ "isEligible": true, "cashoutEligibilityStatus": "ELIGIBLE", "balance": {"amount": 214.75, "currency": "USD"}, "accountNumberTail": "1192", "accountType": "CHECKING", "batchId": "bat_20261002", "ineligibilityReasonTitle": null, "ineligibilityReasonMessage": null }Initiate provider cash-out
POST
/v1/flex/payoutsopenfinanceStarts a cash-out of the eligible batch to the linked bank tail; returns cashoutAmount and success or error copy for the Payments sheet.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- accountTail
- batchId
- documentPriority
- entityId
- entityType
- locale
- paymentSpeed
- transactionFee
- cashoutAmount
- cashoutSuccessMessage
- disclaimerMessage
- errorMessageTitle
- errorMessageBody
POST /v1/flex/payouts HTTP/1.1 x-amz-access-token: Atza|IwE... Content-Type: application/json { "accountTail": "1192", "batchId": "bat_20261002", "documentPriority": "STANDARD", "entityId": "amzn1.flex.provider.7f21c0a4", "entityType": "PROVIDER", "locale": "en_US", "paymentSpeed": "STANDARD", "transactionFee": "0" }{ "cashoutAmount": {"amount": 214.75, "currency": "USD"}, "cashoutSuccessMessage": "Your cash out is on the way.", "disclaimerMessage": "Bank transfers may take 1-3 business days.", "errorMessageTitle": null, "errorMessageBody": null }Refresh itinerary
POST
/v1/flex/itineraryopendataPulls the live fulfillment itinerary used by pickup, scan and delivery: stops, substops, packages, addresses and trIdToFulfillmentIdsMap.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- transporterContext
- startDateOfSchedule
- endDateOfSchedule
- itineraryType
- itineraryReceived
- startTransporterSession
- refreshToken
- deviceMetadata
- correlationIds
- fulfillmentBasedItinerary
- addresses
- packages
- stops
- substops
- fulfillments
- places
- itemList
- containers
- trIdToFulfillmentIdsMap
- workflowConstructs
POST /v1/flex/itinerary HTTP/1.1 x-amz-access-token: Atza|IwE... Content-Type: application/json { "transporterContext": {"providerId": "amzn1.flex.provider.7f21c0a4"}, "startDateOfSchedule": "2026-10-02T15:00:00.000Z", "endDateOfSchedule": "2026-10-02T19:00:00.000Z", "itineraryType": "DELIVERY", "itineraryReceived": true, "startTransporterSession": false, "refreshToken": "rt_1a2b", "deviceMetadata": {} }{ "correlationIds": ["cid_9f3"], "fulfillmentBasedItinerary": { "addresses": [{"addressId": "addr_1", "line1": "440 Terry Ave N"}], "packages": [{"scannableId": "TBA123456789000"}], "stops": [{"stopId": "st_01", "sequence": 1}], "substops": [{"substopId": "ss_01"}], "fulfillments": [{"fulfillmentId": "ff_01"}], "places": [{"placeId": "pl_station"}], "itemList": [], "containers": [], "trIdToFulfillmentIdsMap": {"tr_44102": ["ff_01"]}, "workflowConstructs": [] } }Transporter person
GET
/v1/flex/personosintLoads the signed-in transporter Person card: name, email, phone, countryCode, availabilityStatus, operationalStatus, personCompanyType and transportationMode.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- person
- firstName
- lastName
- fullName
- phoneNumber
- workPhoneNumber
- countryCode
- title
- address
- availabilityStatus
- operationalStatus
- personCompanyType
- personTypes
- transportationMode
- presignedPhotoFileUrl
- federatedIdentities
- behaviors
GET /v1/flex/person HTTP/1.1 x-amz-access-token: Atza|IwE...{ "person": { "firstName": "Alex", "lastName": "Rivera", "fullName": "Alex Rivera", "email": "[email protected]", "phoneNumber": "+14155550199", "workPhoneNumber": "+14155550199", "countryCode": "US", "title": "Delivery Partner", "availabilityStatus": "AVAILABLE", "operationalStatus": "ACTIVE", "personCompanyType": "CSP", "transportationMode": "CAR" } }Current work session
GET
/v1/flex/sessionopendataReads the live work session after check-in: sessionId, status, serviceAreaId, providerReservationId, workEligibility and expectedSessionEndTime.
Auth: Amazon account access token in the x-amz-access-token header after Flex sign-in
- session
- sessionId
- status
- sessionStartTime
- expectedSessionEndTime
- scheduledStartTime
- serviceAreaId
- providerReservationId
- companyId
- transportationMode
- schedulingType
- locked
- workEligibility
- arrivalRequirements
- workHourContext
- routeAssignmentTask
- sessionConfigurationMap
GET /v1/flex/session HTTP/1.1 x-amz-access-token: Atza|IwE...{ "session": { "sessionId": "sess_44a1", "status": "ACTIVE", "sessionStartTime": "2026-10-02T14:52:00.000Z", "expectedSessionEndTime": "2026-10-02T19:00:00.000Z", "scheduledStartTime": "2026-10-02T15:00:00.000Z", "serviceAreaId": "seattlesouth", "providerReservationId": "res_9c81e2b0", "companyId": "amzn1.flex.company.csp", "transportationMode": "CAR", "schedulingType": "BLOCK", "locked": false, "workEligibility": "ELIGIBLE" }, "routeAssignmentTask": null, "sessionConfigurationMap": {} }
Data categories
- offers
- earnings
- payouts
- itinerary
- identity
- sessions
Where teams use this data
Gig payroll reconciliation
A payroll or lending stack pulls providerEarnings, currentBalance and itemized amount/description/type lines each night and matches them to the partner's bookedPrice before tax forms or advances go out.
Last-mile itinerary overlay
A route tool consumes fulfillmentBasedItinerary stops, packages and trIdToFulfillmentIdsMap together with the live sessionId so dispatch can see remaining substops without sitting in the courier app.
Block-supply monitoring
An ops dashboard watches offerList projectedEarnings, surgeMultiplier and eligible serviceAreaIds against scheduledAssignments to see which stations still have open blocks.
Instant-pay eligibility checks
A wallet integration reads cashoutEligibilityStatus, accountNumberTail and batchId, then posts InitiateProviderCashout only when isEligible is true.
Frequently asked questions
What data does Amazon Flex expose for a delivery partner?
Block offers (offerId, startTime, endTime, projectedEarnings, surgeMultiplier), booked scheduledAssignments, itemized providerEarnings with currentBalance, cash-out eligibility, a fulfillment itinerary of stops and packages, the transporter Person card, and the live work session.
How does Amazon Flex authenticate partner calls?
After Amazon account sign-in the client sends the access token in the x-amz-access-token header on offer, earnings, itinerary, person and session calls.
Can Flex earnings be cashed out programmatically?
Yes. GET /v1/flex/payouts/eligibility returns isEligible, cashoutEligibilityStatus, balance, accountNumberTail and batchId; POST /v1/flex/payouts then posts that batch and returns cashoutAmount.
How do Flex blocks differ from ride-hail trip offers?
Flex work is a reserved time block with a station startingLocation and maxWorkload, not a single passenger trip. Pay is shown up front as projectedEarnings on the offer, then settled later as providerEarnings.
Apps similar to Amazon Flex
- Spark Driver — Spark Driver is Walmart’s independent-contractor app for delivering—or shopping and delivering—orders for Walmart and other businesses from a personal car.
- DoorDash - Dasher — DoorDash’s Dasher app lets independent couriers accept restaurant, grocery and retail delivery offers on their own schedule in the United States.
- Uber - Driver: Drive & Deliver — Uber’s driver app lets partners take passenger trips or deliver restaurant meals, groceries and packages by car, bike, scooter or on foot.
- Instacart — Instacart is a grocery delivery and pickup service in the United States and Canada whose personal shoppers pick, pack and deliver orders from participating retailers.
- iFood para Entregadores — iFood’s courier app is the delivery-partner client for Brazil’s iFood food-ordering platform, where partners register to deliver by bike, scooter, motorcycle, car or on foot.
- Soy Rappi - Sé un repartidor — Soy Rappi is the courier app for Rappi, the Bogotá-based super-app whose partners deliver food, grocery and other on-demand orders across Latin America including Mexico and Brazil.
- Porter Driver Partner App — Porter’s partner app is an on-demand intra-city logistics client in India where drivers earn with a bike, three-wheeler, tempo or mini-truck on goods-transport jobs.
Topics
- amazon flex api
- amazon flex driver earnings
- flex block offers
- flex cash out
- amazon last mile itinerary
- flex service areas
- projectedEarnings
- currentBalance
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