API Flows
This guide describes the recommended API call sequences for each major user-facing flow in a third-party rides integration. Each flow maps to a specific user journey and lists the endpoints to call, in order, along with the key data passed between them. Please note this is just the recommended flow, the apis being called can change based on partner.
¶ 1. Product Selector / Home Screen
This flow powers the experience when a rider opens the app and selects a pickup and dropoff location. It shows available products, vehicle availability on the map, price estimates, and applicable promotions.
ResolveWaypoint ← Resolve pickup/dropoff to zone or access point (high-density venues only)
↓
GetAvailableProducts(optional) ← Fetch all products available at origin/destination
↓ (can be called in parallel)
GetNearbyVehicles ← Show nearby vehicles
GetEstimatesForIntent ← Fetch price, ETA per product
| Step | Endpoint | Key Inputs | Key Outputs |
|---|---|---|---|
| 1 | ResolveWaypoint | pickup/dropoff lat-long | access_points, zone_info |
| 2 | GetAvailableProducts | origin, destination | product list |
| 3a | GetNearbyVehicles | rider lat-long, product ids | vehicle positions for map |
| 3b | GetEstimatesForIntent | origin, destination, product ids, user_id | fare_id, price, ETA per product |
¶ 2. Trip Request (Create Order)
This flow covers the moment a rider confirms their ride. The fare_id from GetEstimatesForIntent is passed to CreateOrder to lock in the price.
GetEstimatesForIntent ← (reuse from Product Selector — fare_id is the key output)
↓
CreateOrder ← Create the order using fare_id + product + payment_profile
↓
GetOrder (polling) ← Poll for order state updates (driver search → assigned → en-route)
| Step | Endpoint | Key Inputs | Key Outputs |
|---|---|---|---|
| 1 | GetEstimatesForIntent | origin, destination, product_id, user_id | fare_id, estimated fare |
| 2 | CreateOrder | fare_id, product_id, payment_profile_id, participant_spec | order_id, initial order status |
| 3 | GetOrder | order_id | order status, driver details, job_id, fare version |
¶ 3. Active Trip (In-Trip)
Once an order is created and a driver is assigned, this flow manages in-progress trip interactions.
¶ 3a. Track Order (Polling)
GetOrder (polling) ← Continuously poll to track driver location and order state transitions
Poll GetOrder on a reasonable interval to reflect latest order status in the UI.
¶ 3b. Modify Destination (Waypoint Change)
For destination changes during an active trip, always fetch a modification estimate first before applying the change. This shows the rider the updated fare before confirming.
GetEstimateForOrderModification ← Fetch updated fare for the proposed destination change
↓ (rider confirms)
UpdateOrder ← Apply the waypoint update (update_target: UPDATE_TARGET_STANDARD_RIDE_DESTINATION_WAYPOINTS or UPDATE_TARGET_STANDARD_RIDE_ORIGIN_WAYPOINT)
↓
GetOrder ← Confirm updated order state and new fare
| Step | Endpoint | Key Inputs | Key Outputs |
|---|---|---|---|
| 1 | GetEstimateForOrderModification | order_id, update_request_one_of (new destination) | estimated fare for modified route |
| 2 | UpdateOrder | order_id, update_request_one_of (DESTINATION_WAYPOINTS) | updated order |
| 3 | GetOrder | order_id | confirmed updated order |
¶ 3c. Switch Payment Profile
To switch payment during an active trip, fetch the available payment options scoped to the order first, then apply the change.
GetPaymentSummary ← Fetch available payment profiles for this order context, this api is available only for 1P uber users. Its skipped for 3p users.
↓ (rider selects a new profile)
UpdateOrder ← Apply the payment profile change (update_target: PAYMENT_PROFILE)
↓
GetOrder ← Confirm the updated payment profile on the order
| Step | Endpoint | Key Inputs | Key Outputs |
|---|---|---|---|
| 1 | GetPaymentSummary | user_id, order_payment_selection_criteria (with order_id) | available payment_profiles |
| 2 | UpdateOrder | order_id, update_request_one_of (PAYMENT_PROFILE, selected payment_profile_id) | updated order |
| 3 | GetOrder | order_id | confirmed updated payment on order |
¶ 4. Cancellation Flow
This flow handles a rider cancelling their ride. Present cancellation reason options, show the cancellation fee for the selected reason, then cancel.
GetSurvey ← Fetch cancellation reason options (CANCELLATION survey type)
↓ (rider selects a reason)
GetEstimateForOrderCancellation ← Show cancellation fee and next set of actions available based on marketplace conditions
↓ (rider confirms)
CancelOrder ← Cancel the order with the selected reason
| Step | Endpoint | Key Inputs | Key Outputs |
|---|---|---|---|
| 1 | GetSurvey | order_id, survey_type: CANCELLATION | cancellation reason options |
| 2 | GetEstimateForOrderCancellation | order_id, cancellation_reason | cancellation fee, available_actions |
| 3 | CancelOrder | order_id, cancellation_reason | cancelled order confirmation |
¶ 5. Post-Trip Flow
After a trip completes, this flow covers the receipt, driver rating, and tipping.
¶ 5a. Receipt
GetOrder ← Fetch completed order — contains finalized fare, promo deduction, job_id, fare version
| Step | Endpoint | Key Inputs | Key Outputs |
|---|---|---|---|
| 1 | GetOrder | order_id | finalized fare, promo deduction, job_id, fare_id, fare version |
¶ 5b. Driver Rating
GetSurvey ← Fetch driver rating options (TRANSPORT_PROVIDER_RATING survey type)
↓ (rider submits rating)
SubmitSurvey ← Submit the driver rating response
| Step | Endpoint | Key Inputs | Key Outputs |
|---|---|---|---|
| 1 | GetSurvey | order_id, survey_type: TRANSPORT_PROVIDER_RATING | rating questions and options |
| 2 | SubmitSurvey | order_id, survey responses | (empty response) |
¶ 5c. Submit Tip
Tipping requires three values from GetOrder: order_id, job_id, and version (the fare version from the finalized fare object).
GetOrder ← Retrieve job_id, tipping rules and fare version from finalized fare
↓
SubmitTip ← Submit tip using order_id + job_id + fare version + tip amount
| Step | Endpoint | Key Inputs | Key Outputs |
|---|---|---|---|
| 1 | GetOrder | order_id | job_id, fare version (from finalized fare) |
| 2 | SubmitTip | order_id, job_id, version, tip_amount | (empty response) |
¶ Complete Endpoint Reference
| Endpoint | Resource | Flow(s) |
|---|---|---|
| ResolveWaypoint | POST /v1/rides/resolve-waypoint | Product Selector |
| GetAvailableProducts | POST /v1/rides/products | Product Selector |
| GetNearbyVehicles | POST /v1/rides/get-nearby-vehicles | Product Selector |
| GetEstimatesForIntent | POST /v1/rides/estimates | Product Selector, Trip Request |
| GetEstimatesForIntentForTMS | POST /v1/tms/rides/estimates | Trip Request (TMS partners only) |
| GetPaymentSummary | POST /v1/payments/get-summary | Product Selector, Active Trip (payment switch) |
| GetUserPromotions | POST /v1/users/promotions | Product Selector, Post-Trip, Promotions |
| CreateOrder | POST /v1/rides/create-order | Trip Request |
| GetOrder | POST /v1/rides/get-order | Trip Request, Active Trip, Post-Trip |
| GetEstimateForOrderModification | POST /v1/rides/order-modification-estimate | Active Trip (waypoint change) |
| UpdateOrder | POST /v1/rides/update-order | Active Trip (waypoint change, payment switch, product change) |
| UnassignJob | POST /v1/rides/unassign-job | Active Trip (new driver request) |
| GetCashCollectibleLineItems | POST /v1/payments/cash-collectible-line-items | Active Trip (cash payment) |
| GetSurvey | POST /v1/rides/get-survey | Cancellation, Post-Trip (driver rating) |
| GetEstimateForOrderCancellation | POST /v1/rides/order-cancellation-estimate | Cancellation |
| CancelOrder | POST /v1/rides/cancel-order | Cancellation |
| GetFare | POST /v1/rides/get-fare | Post-Trip (receipt) |
| SubmitSurvey | POST /v1/rides/submit-survey | Post-Trip (driver rating) |
| SubmitTip | POST /v1/rides/submit-tip | Post-Trip |
| ApplyPromotionToUser | POST /v1/users/promotions/apply | Promotions |
| CreatePromotionCode | POST /v1/promotions/create-code | Promotions (ops-initiated) |
| SendCommunicationToUser | POST /v1/comms/send | Communications (Uber → 3P) |
| SendThirdPartyCommunicationToUser | POST /v1/comms/send | Communications (3P → Uber) |
| CommunicationCallbackEvents | POST /v1/comms/callbacks | Communications |
| PublishAnalyticsEvents | POST /v1/analytics/publish | All flows |