# Introduction

One REST API for bookings, availability and prices, for one or more rentals. It is the same domain layer the rental's own dashboard uses, so what you book is what the desk sees.

## What it is for

- A booking engine or a website that sells a rental's cars.
- A reseller that sells several rentals through one integration, on paths of its own: [Sell as a reseller](/resellers).
- A booking engine that takes payment through the rental's own processor, with no card data on its side.
- A website that sends back an affiliate's click, so the right affiliate earns on the booking.
- A partner that wants to hear about every booking change as it happens, through [webhooks](/webhooks).

## How it is shaped

The base URL is `https://api.mellow.is/v1`. A key reaches one or more rentals. Most paths are under one of them, and three ask about every rental the key reaches:

```
GET   /rentals
GET   /availability?from=&to=
POST  /quotes
GET   /rentals/{slug}/car-types
GET   /rentals/{slug}/locations
GET   /rentals/{slug}/products
GET   /rentals/{slug}/availability?from=&to=
POST  /rentals/{slug}/quotes
POST  /rentals/{slug}/bookings
GET   /rentals/{slug}/bookings
GET   /rentals/{slug}/bookings/{id}
PATCH /rentals/{slug}/bookings/{id}
POST  /rentals/{slug}/bookings/{id}/cancel
POST  /rentals/{slug}/bookings/{id}/payments
GET   /rentals/{slug}/fees
```

For a rental that builds its own manage booking and check-in pages, with manage booking or check-in content on:

```
POST  /rentals/{slug}/bookings/find
GET   /rentals/{slug}/bookings/{id}/manage
POST  /rentals/{slug}/bookings/{id}/manage/quote
POST  /rentals/{slug}/bookings/{id}/manage
GET   /rentals/{slug}/checkin/content
POST  /rentals/{slug}/bookings/{id}/checkin/content
```

A reseller's key uses its own paths without a slug, and `GET /availability`. The other paths above refuse it. [Sell as a reseller](/resellers) describes them.

The rental's affiliate program has paths of its own, for a key made with the affiliate right. [Affiliates](/affiliates) describes them.

Every response is JSON under a `data` key. Every error is a problem object under an `error` key, with a `code` and a `message`, described under [Errors](/errors).

## Conventions

- Dates and times are the rental's local time, written `YYYY-MM-DDTHH:MM`.
- Money is whole minor units with an ISO currency code. ISK has no decimals, so `25000` is 25,000 kr.
- Names come in the locale you ask for with `?locale=`, or the rental's default.
- Additive changes stay in `v1`: a new optional field, a new endpoint, a new enum value. Tolerate fields you do not know.
- Mellow aims to put a breaking change in a new major version beside this one. One break went into `v1`: on 2026-10-14 the `dropoff` fields became `return` fields, such as `dropoffAt` to `returnAt`, and the old names went. Watch the [changelog](https://app.mellow.is/changelog) for such a change.

The full [API reference](/api) is generated from the same document the API serves, so it is never behind the code.
