Three lines

Uber

Developers

Update Guest Trip

PUThttps://api.uber.com/v1/guests/trips/{trip_id}

Privileged and Confidential This endpoint design has been confidentially shared with you. It is still under development and is subject to change without notice. Please do not share this document or API endpoint details with anyone who is not authorized to have access. For more information read about scopes.

Use Case

Makes changes to a trip, which will be updated to whatever values are set for each field in the request. This means that not setting certain fields will delete any existing values for those fields.

If the request is from a third party (3P) app, please add x-uber-organizationuuid header and the Organization UUID as the value or the request will be denied.

To update an active ride (a trip dispatched to a driver)

Only the destination and intermediate stops can be updated for active rides. You will need to ensure any fields other than the destination and the requested stops are the same as what they were set to when the trip was created. You can call GET /v1/guests/trips/{request_id} to retrieve those fields.

After updating them, subsequent calls to GET /v1/guests/trips/{request_id} will show the latest destination and requested stops updated in the destination and stop fields of the response.

Authorization

OAuth 2.0 Bearer token with the guests.trips scope.

Request Parameters
Name Type Description
trip_id string (Required) The unique ID of the ride request.
end_location object (Required) All fields can be updated before a trip has reached a terminal state. Object containing destination details.
end_location.latitude float (Required) The destination latitude
end_location.longitude float (Required) The destination longitude
end_location.place struct (Optional) This controls the address shown to the driver. If not set, the address shown will be reverse geocoded by Uber using the latitude/longitude.
end_location.place.place_id string (Required if setting place) The place ID in provider’s namespace.
end_location.place.provider string (Required if setting place) The name of a provider of location data, e.g. google_places
expense_memo string (Optional) Can only be updated before a trip has been dispatched to a driver.
note_for_driver string (Optional) Can only be updated before a trip has been dispatched to a driver.
product_id string (Required) The unique ID of the product being requested. Product IDs for a specific area can be retrieved using the /v1/guests/trips/estimates API. Can only be updated for a flexible ride before the trip has been redeemed by the rider.
requested_stops array (Optional) An array of objects containing the location of the trip’s intermediate stops.
requested_stops[].latitude float (Required if setting requested_stops) The intermediate stop latitude
requested_stops[].longitude float (Required if setting requested_stops) The intermediate stop longitude
requested_stops[].place struct (Optional) This controls the address shown to the driver. If not set, the address shown will be reverse geocoded by Uber using the latitude/longitude.
requested_stops[].place.place_id string (Required if setting place) The place ID in provider’s namespace.
requested_stops[].place.provider string (Required if setting place) The name of a provider of location data, e.g. google_places
start_location object (Required) Can only be changed for flexible rides before they have been redeemed. Object containing pickup location details.
start_location.latitude float (Required) The pickup location latitude
start_location.longitude float (Required) The pickup location longitude
start_location.place struct (Optional) This controls the address shown to the driver. If not set, the address shown will be reverse geocoded by Uber using the latitude/longitude.
start_location.place.place_id string (Required if setting place) The place ID in provider’s namespace.
start_location.place.provider string (Required if setting place) The name of a provider of location data, e.g. google_places
Example Request
  curl -X PUT \
    -H "authorization: Bearer $UBER_TOKEN" \
    -H 'content-type: application/json' \
    -d '{
      "start_location": {
        "latitude": 40.753,
        "longitude": -73.9867
      },
      "end_location": {
        "latitude": 40.7484,
        "longitude": -73.9857
      },
      "requested_stops": [
        {
          "latitude": 40.7284,
          "longitude": -73.9357
        },
        {
          "latitude": 40.7322,
          "longitude": -73.9682
        }
      ],
      "product_id":"b8e5c464-5de2-4539-a35a-986d6e58f186"
    }' \
    https://$api_url/v1/guests/trips/{trip_id} | jq .

A successful request will receive a 200 with an empty response.

Expected Errors
{
  "code": "validation_failed",
  "data": {
    "invalid_field_changed": "start_location"
  },
  "message": "Only destination can be updated for active rides"
}
{
  "code": "bad_request",
  "message": "The ride that has reached a final state and cannot be updated."
}
{
  "message": "You can only adjust your pickup point within the area shown.",
  "data": {
    "statusCode": "400"
  },
  "errCode": "pickup_cannot_be_updated",
}
{
  "message": "Sorry, you are not eligible for a pickup location change!",
  "data": {
    "statusCode": "400"
  },
  "errCode": "pickup_cannot_be_updated",
}
Internal Server Errors
{
  "message": "Something went wrong - please try again.",
  "data": {
    "statusCode": "500"
  },
  "errCode": "internal_server_error",
}

Uber

Developers
© 2023 Uber Technologies Inc.