Three lines

Uber

Developers

Update Employee Trip

PUThttps://api.uber.com/v2/employees/trips

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

Use this endpoint to update an employee trip.

The update to Scheduled Rides means that the existing trip will be canceled, and a new one will be initiated using the updated information. However, please note that we do not support updates to reserve trips before they are accepted by a driver.

In order to request a ride for a third party client (3PC), please add x-uber-organizationuuid header and the Organization UUID as the value.

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 /v2/employees/trips/{request_id} to retrieve those fields.

After updating them, subsequent calls to GET /v2/employees/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 business.trips scope.

Ride Types
Ride Description
Ride on Demand Request a driver for immediate pickup.
Scheduled Ride Automatically send a driver at a specific time in advance. Riders cannot change the pickup time for a scheduled ride without contacting the driver. Only available in certain areas.
                                                                                                                                                                                              |
Request
Example request

Try It

curl -X PUT \
  -H "authorization: Bearer <access_token>" \
  -H 'content-type: application/json' \
  -d '{
        "customer": {
          "customer_type": "EMPLOYEE"
          "email": "jane@example.com"
        },
        "request_id": "42541eb5-8ced-4ed9-af4b-f92359816a23",
        "product_id": "a1111c8c-c720-46c3-8534-2fcdd730040d",
        "pickup": {
          "latitude": 40.750568,
          "longitude": -73.993519
        },
        "dropoff": {
          "latitude": 40.752558,
          "longitude": -74.006469
        },
        "requested_stops": [
          {
            "latitude": 40.7284,
            "longitude": -73.9357
          },
          {
            "latitude": 40.7322,
            "longitude": -73.9682
          }
        ],
        "expense_code": "sample code",
        "expense_memo": "sample memo"
      }' \
      'https://api.uber.com/v2/employees/trips/<trip_uuid>'

When using the sandbox environment, the request requires the x-uber-sandbox-runuuid header with the run_id as the value (e.g, -H "x-uber-sandbox-runuuid:<run_id>").

In order to specify an org for which the ride needs to be billed to, the request requires the x-uber-organizationuuid header with the Org UUID as the value (e.g, -H "x-uber-organizationuuid:<org_UUID>").

Request Query parameters
URL parameter Type Description
trip_uuid string (Required) The unique ID of the ride request.
Request parameters
Name Type Description
request_id string (Required) The unique ID of the ride request.
pickup object (Required) Object containing pickup location details.
pickup.latitude float (Required) The pickup location latitude
pickup.longitude float (Required) The pickup location longitude
pickup.address string (Optional) The pickup address used in text messages to rider. Set the “title” and “subtitle” to control what the driver sees as the address. If not set, will be reverse geocoded by Uber using the latitude/longitude.
pickup.place.place_id string (Optional) The place ID in provider’s namespace. For pickups at specialized pickups, should be set to the ID of an access point; see the /v1/guests/zones API for more detail.
pickup.place.provider string (Optional) The name of a provider of location data, e.g. google_places. Should be set to uber_geofences for specialized pickups; see the /v1/guests/zones API for more detail.
pickup.place.zone_id string (Optional) For trips at specialized pickups, should be set to the ID of the most immediate parent pickup zone; see the /v1/guests/zones API for more detail.
start_location object deprecated (Required only if pickup is not provided) 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.address string (Optional) The pickup address used in text messages to rider. Set the “title” and “subtitle” to control what the driver sees as the address. If not set, will be reverse geocoded by Uber using the latitude/longitude.
start_location.place.place_id string (Optional) The place ID in provider’s namespace. For pickups at specialized pickups, should be set to the ID of an access point; see the /v1/guests/zones API for more detail.
start_location.place.provider string (Optional) The name of a provider of location data, e.g. google_places. Should be set to uber_geofences for specialized pickups; see the /v1/guests/zones API for more detail.
start_location.place.zone_id string (Optional) For trips at specialized pickups, should be set to the ID of the most immediate parent pickup zone; see the /v1/guests/zones API for more detail.
dropoff object (Required) Object containing destination details.
dropoff.latitude float (Required) The destination latitude
dropoff.longitude float (Required) The destination longitude
dropoff.address string (Optional) The dropoff address used in text messages to the rider. Set the “title” and “subtitle” to control what the driver sees as the address. If not set, will be reverse geocoded by Uber using the latitude/longitude.
dropoff.place.place_id string (Optional) The place ID in provider’s namespace.
dropoff.place.provider string (Optional) The name of a provider of location data, e.g. google_places
end_location object deprecated (Required only if dropoff is not provided) Object containing destination details.
end_location.latitude float (Required) The destination latitude
end_location.longitude float (Required) The destination longitude
end_location.address string (Optional) The dropoff address used in text messages to the rider. Set the “title” and “subtitle” to control what the driver sees as the address. If not set, will be reverse geocoded by Uber using the latitude/longitude.
end_location.place.place_id string (Optional) The place ID in provider’s namespace.
end_location.place.provider string (Optional) The name of a provider of location data, e.g. google_places
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
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.
expense_memo string (Optional) A free text field to describe the purpose of the trip for expense reporting. This value will appear in the trip receipt and any configured expense-reporting integrations like Uber For Business or Business Profiles. Can be updated at any time.
note_for_driver string (Optional) A free text field for a coordinator to enter a message that will be sent to the driver once the driver gets assigned to a trip. If not set, will delete any existing note set for the ride. Can only be updated before a trip has been dispatched to a driver.
customer object (Required) Specifies the employees informations. Emails is required.
Name Type Description
first_name string (Optional) The first name of the customer.
last_ame string (Optional) The last name of the customer.
email string (Required) The email address of the customer.
phone_number string (Optional) The phone number of the customer.
customer_type string (Required) Specifies the customer type. E.g., EMPLOYEE.
Response
Example response
{
  "requestID": "b56cd183-5512-4f1a-8f02-ce944b76a117"
}

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

Expected Errors
{
  "code": "validation_failed",
  "data": {
    "invalid_field_changed": "pickup"
  },
  "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
© 2025 Uber Technologies Inc.