---
title: "Quotes"
description: "Price a route across available couriers and persist a server-side quote."
---

# Quotes

`POST /v1/quotes` prices a delivery across available courier companies. Each returned quote is persisted and can be used once to create a delivery.

## Endpoint

```http
POST /v1/quotes
```

## Request body

| Field | Required | Notes |
| --- | --- | --- |
| `origin` | Yes | Pickup address. |
| `destination` | Yes | Drop-off address. |
| `parcel.weight_grams` | Yes | Parcel weight in grams. |
| `parcel.description` | No | Human-readable description. |
| `parcel.declared_value_aoa` | No | Declared parcel value. |

## Example

```bash
curl -X POST https://entrega.ao/v1/quotes \
  -H "Authorization: Bearer $ENTREGA_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "origin": {"address_line": "Rua 21 de Janeiro", "city": "Luanda", "province": "Luanda"},
    "destination": {"address_line": "Rua Marien Nguabi", "city": "Luanda", "province": "Luanda"},
    "parcel": {"weight_grams": 1200, "description": "Photo prints"}
  }'
```

## Response

```json
{
  "data": [
    {
      "quote_id": "8c1e1a90-7f08-4b2c-9d5d-9a4ab7f59c0e",
      "valid_until": "2026-04-29T18:05:00Z",
      "company_id": "0b1e6fc0-a821-4be4-8bd7-df56b8c0caa4",
      "company_name": "Luanda Express",
      "company_slug": "luanda-express",
      "fee_aoa": 3500,
      "eta_minutes": 45,
      "require_delivery_pin": false
    }
  ]
}
```

## Important behavior

- One failing courier does not fail the full request. Entrega returns quotes from couriers that responded successfully.
- A `quote_id` locks the courier fee for the exact origin, destination, and parcel payload.
- If the quote expires, request a new quote before creating the delivery.
