# Delivery

Move a package between two points, with no merchant involved. The quote runs the same pricing path the request does, so the price you are shown is the price charged.

Move a package between two points, with no merchant involved. The quote runs the same pricing path the request does, so the price you are shown is the price charged.

## Lifecycle

```
  QUOTED
     |
  CREATED
     |
  COURIER ASSIGNED
     |
  PICKED UP
     |
  DELIVERED                (or CANCELLED, before pickup)
```

## Operations

### `POST /v1/deliveries/quote`

Price a courier run between two points. Runs the same pricing path the request does, so the quote is the charge.

- operation: `quote_delivery`
- scope: `delivery.read`
- entitlement: none
- creates a transaction: no
- idempotency key: not required
- MCP tool: `quote_delivery`
- status: planned

```bash
curl -sX POST 'https://sandbox-api.ryde.us.com/v1/deliveries/quote' \
  -H "Authorization: Bearer $RYDE_ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{ … }'
```

### `POST /v1/deliveries`

Dispatch a courier to move a package, from a quote_id the customer was shown.

- operation: `request_delivery`
- scope: `delivery.request`
- entitlement: ryde_one
- creates a transaction: yes
- idempotency key: required
- MCP tool: `request_delivery`
- status: planned

```bash
curl -sX POST 'https://sandbox-api.ryde.us.com/v1/deliveries' \
  -H "Authorization: Bearer $RYDE_ACCESS_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H 'Content-Type: application/json' \
  -d '{ … }'
```

### `GET /v1/deliveries/{delivery_id}`

Live state of one delivery, including courier progress and proof of delivery once collected.

- operation: `get_delivery`
- scope: `delivery.read`
- entitlement: none
- creates a transaction: no
- idempotency key: not required
- MCP tool: `get_delivery`
- status: planned

```bash
curl -s 'https://sandbox-api.ryde.us.com/v1/deliveries/$delivery_id' \
  -H "Authorization: Bearer $RYDE_ACCESS_TOKEN"
```
