> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasiye.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quote a shipment

> Calculate coverage and fees for a pickup, dropoff, and weight.

Does not create a shipment. Use this to check coverage and totals before you book.

<ParamField path="body.pickup_lat" type="number" required>
  Pickup latitude (`-90` to `90`).
</ParamField>

<ParamField path="body.pickup_lng" type="number" required>
  Pickup longitude (`-180` to `180`).
</ParamField>

<ParamField path="body.dropoff_lat" type="number" required>
  Dropoff latitude (`-90` to `90`).
</ParamField>

<ParamField path="body.dropoff_lng" type="number" required>
  Dropoff longitude (`-180` to `180`).
</ParamField>

<ParamField path="body.weight_kg" type="number" required>
  Package weight in kilograms. Must be at least `0.01`.
</ParamField>

```bash theme={null}
curl -X POST https://api.kasiye.com/v1/shipments/quote \
  -H "Authorization: Bearer shp_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "pickup_lat": -13.9626,
    "pickup_lng": 33.7741,
    "dropoff_lat": -13.9833,
    "dropoff_lng": 33.7689,
    "weight_kg": 5
  }'
```

<ResponseField name="covered" type="boolean" required>
  Whether both points are in coverage and the weight has a pricing tier.
</ResponseField>

<ResponseField name="failure_type" type="string">
  `coverage` or `weight` when `covered` is `false`.
</ResponseField>

<ResponseField name="distance_km" type="number" required>
  Haversine distance between pickup and dropoff.
</ResponseField>

<ResponseField name="total" type="number" required>
  Amount that would be charged. Greater of subtotal and `base_fee`.
</ResponseField>

<ResponseField name="currency" type="string" required>
  ISO currency code from the platform fee config.
</ResponseField>

See [Coverage and quotes](/guides/coverage-and-quotes) for how totals are calculated.
