---
title: "Create estimation"
method: POST
path: "/api/v4/estimates"
tags: ["Estimates"]
---

# Create estimation

`POST /api/v4/estimates`

Obtain prices, product IDs, and all the information for products that are available at the origin point.

> ❗️ Important
>
> You **must** call this endpoint before creating a Journey. The response provides the `product.id`
> that should be passed to the journey creation endpoint.
>
> For **reserved** journeys, pass the same `start_at` used here to the journey creation request
> to guarantee consistent product availability and pricing.
>
> We recommend estimating no more than **5 minutes** before creating the journey.

## Response

The response contains an array of available products, each with:
- `product.id` — pass as `product_id` when creating a journey
- Estimated price and currency
- ETA (estimated time of arrival)
- Vehicle category information

## Hub Information

When the origin is within a large venue (airport, train station, etc.), each estimation object may include a `hub` field containing:
- Hub metadata (uid, title, location_id)
- A list of **meeting points** — designated pick-up locations with coordinates, images, and localized instructions

The `hub` field is resolved on a best-effort basis in parallel with pricing. It may be `null` if hub resolution does not complete in time or no hub exists at the origin.

> 📘 Using Hub Data
>
> When a hub is present, present the meeting points to the user for selection and include the chosen one in the journey creation request via the `meeting_point` field in the origin stop.
> Alternatively, use `GET /api/v4/hub` to look up hub data independently.

## Request body

- EstimateRequest — Request an estimate before creating a journey. The estimation response provides the `product.id` value that **must** be passed to the journey creation endpoint. For **reserved** journeys, also pass the same `start_at` used here to the journey creation request to ensure consistent pricing and availability. We recommend requesting a new estimate no more than **5 minutes** before creating a journey.
  - `requester_id` string, required — User to which the estimates would be scoped.
  - `start_at` string, nullable — When using startType RESERVED this attribute defines the date and time of the reservation. Accepted format must be YYYY-MM-DD HH:MM:SS. It should be in the local time of the pick up location.
  - `start_type` 'asap' | 'reserved', required — Specifies whether the journey should start right now or it should be a reservation later in time. Note that if the value is RESERVED startAt attribute has to be a valid date. If ASAP startAt will be ignored.
  - `stops` object[], required — The actual coordinates of the address. Required two floats per location latitude and longitude.
    - `loc` number[]

## Response `200`

Success

- object[] — List of available products with pricing for the requested route. Each item contains the `product.id` needed to create a journey. Use this value as `product_id` in the journey creation request.
  - `distance` integer — Calculated distance to travel in meters.
  - `duration` integer — Estimated duration of the journey in seconds.
  - `eta` object — Estimated Time of Arrival.
    - `formatted` string — ETA formatted as a string with the format: '{minutes} min'
    - `low_availability` boolean — Is there low availability?.
  - `hub` HubObject, nullable — A hub is a large venue (e.g. airport, train station) with designated pick-up/drop-off meeting points.
    - `active` boolean — Whether the hub is currently active.
    - `location_id` string — Location identifier used to look up this hub.
    - `meeting_points` object[] — Designated pick-up/drop-off points within the hub. Present one of these to the user as their boarding location.
      - `bottom_image_url` string, nullable — URL for the bottom image of the meeting point.
      - `coordinates` object — GPS coordinates of the meeting point.
        - `latitude` number
        - `longitude` number
      - `header_image_url` string, nullable — URL for the header image of the meeting point.
      - `instructions` object[] — Step-by-step instructions to reach the meeting point.
        - `en` string
        - `es` string
        - `step_image_url` string, nullable
      - `title` object — Localized name of the meeting point, keyed by BCP 47 language tag.
      - `uid` string — Unique identifier of the meeting point.
    - `title` object — Localized name of the hub, keyed by BCP 47 language tag.
    - `uid` string — Unique identifier of the hub.
  - `product` object — Estimated product details.
    - `description` string — Description of the product in english.
    - `id` string — Unique identifier of the product. Pass this value as `product_id` when creating a journey.
    - `name` string — Name of the product in english
    - `service_type` string — WIP.
    - `slug` string — Slug of the Label.
  - `route` string — List of estimated routes. These are in Google's PolylinFormat. See <a href='https://developers.cabify.com/docs/polyline-algorithm'>this section</a> for more info
  - `supplements` object[] — List of supplements included in the estimation.
    - `kind` string — Kind of the Supplement.
    - `name` string — Name of the Supplement.
    - `pay_to_driver` boolean — Whether it should be paid to the Driver.
    - `price` object — Total of the estimate.
      - `amount` integer — Amount in cents. *For CLP this field is in currency units.
      - `currency` string — Currency Code in ISO_4217 format.
  - `total` object — Supplements of a Journey.
    - `amount` integer — Amount in cents. *For CLP this field is in currency units.
    - `currency` string — Currency Code in ISO_4217 format.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `500` — Internal server error

---

[API](https://skmtc.dev/cabify/apis/ride-hailing-api.md) · [All operations](https://skmtc.dev/cabify/apis/ride-hailing-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/cabify/ride-hailing-api/revisions/8da1cb1270df/schema)
