Contents
List Boats - Plugixa Boat Rental
GET /pbr/v1/boats
List the boats of the fleet, one page at a time.
An API key PRO with Read only or Read and write access, or a signed-in user with the plugixa_boatrental_view capability.
Note. Inactive boats are listed too. Filter with
status__in=activefor the ones customers can book.
Request
GET https://your-site.example/wp-json/pbr/v1/boats?status__in=active&orderby=display_order&order=asc
Query parameters
| Name | Type | Default | Description |
|---|---|---|---|
boat_type__in |
string |
Comma-separated boat types, by slug (motorboat and the types the site defines). |
|
status__in |
string |
active, inactive, or both. |
|
created_at__between |
string |
Created between two days, given on the site’s clock and compared in UTC. modified_at__... works the same way. |
Plus the list parameters every paged list accepts, and the filter operators. search matches the name and the slug. orderby accepts id, name, status, display_order, created_at and modified_at.
Responses
200 OK. data is one page of boats.
{
"success": true,
"data": [
{
"id": 5,
"language_code": null,
"translation_group": null,
"post_id": 88,
"name": "Sea Ray 230",
"slug": "sea-ray-230",
"description": "<p>A fast day boat for up to eight.</p>",
"boat_type": "motorboat",
"image_id": 140,
"gallery": [141, 142],
"capacity": 8,
"cabins": 0,
"berths": 0,
"year_built": 2021,
"engine_hp": 250,
"fuel_type": "petrol",
"license_rule": "required",
"base_location_id": 2,
"booking_mode": "hourly",
"billing_type": "hour",
"min_hours": 2.0,
"max_hours": 8.0,
"step_minutes": 60,
"buffer_before": 0,
"buffer_after": 30,
"icon": null,
"color": "#1e88e5",
"width": 2.5,
"length": 7.0,
"dimension_unit": "m",
"features": { "bimini": "1", "sound_system": "Bluetooth" },
"display_order": 0,
"status": "active",
"created_by": 1,
"modified_by": 1,
"created_at": "2026-09-01 08:00:00",
"modified_at": "2026-11-02 14:10:00",
"deleted_at": null,
"image_preview": "https://your-site.example/wp-content/uploads/2026/09/sea-ray-230-300x200.jpg",
"gallery_preview": [
{ "id": 141, "url": "https://your-site.example/wp-content/uploads/2026/09/sea-ray-deck-300x200.jpg" },
{ "id": 142, "url": "https://your-site.example/wp-content/uploads/2026/09/sea-ray-helm-300x200.jpg" }
]
}
],
"meta": { "total": 6, "pages": 1 }
}
| Field | Type | Meaning |
|---|---|---|
data[].id |
integer |
The boat’s id, as boat_id elsewhere |
data[].post_id |
integer|null |
The boat’s public page on the site |
data[].boat_type |
string |
The boat type’s slug |
data[].capacity |
integer |
The most guests the boat carries |
data[].license_rule |
string |
none (no licence needed), required (licence required) or skipper (skipper mandatory) |
data[].base_location_id |
integer|null |
The marina the boat is based at |
data[].booking_mode |
string |
hourly (a free duration), full_day (one whole day) or slots (fixed departures) |
data[].billing_type |
string |
The unit it is priced in: hour, half_day, day, week or seat |
data[].min_hours, data[].max_hours |
number |
Shortest and longest rental for an hourly boat, 0 for no maximum |
data[].step_minutes |
integer |
The step a rental’s length must be a multiple of |
data[].buffer_before, data[].buffer_after |
integer |
Minutes the boat is kept free around each booking |
data[].gallery |
array |
Image attachment ids |
data[].features |
object|null |
The boat’s features, a flat map of plain values |
data[].status |
string |
active or inactive |
data[].image_preview |
string |
The main image’s medium-size URL, empty when there is none |
data[].gallery_preview |
array |
id and medium-size url of each gallery image |
Prices and fixed departures are not part of a boat here. For what a window costs, use Search Availability; for a day’s departures, List Departures.
Errors
| Status | Code | When |
|---|---|---|
400 |
plugixa_boatrental_unknown_filter |
A filter names a field boats cannot be filtered on. |
Plus the errors every endpoint can return.
Examples
curl -s "https://your-site.example/wp-json/pbr/v1/boats?status__in=active&orderby=display_order&order=asc" \
-H "Authorization: Bearer $PBR_API_KEY"
<?php
$query = http_build_query(['status__in' => 'active', 'orderby' => 'display_order', 'order' => 'asc']);
$ch = curl_init('https://your-site.example/wp-json/pbr/v1/boats?' . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('PBR_API_KEY'),
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const params = new URLSearchParams({ status__in: 'active', orderby: 'display_order', order: 'asc' });
const response = await fetch(`https://your-site.example/wp-json/pbr/v1/boats?${params}`, {
headers: { 'Authorization': `Bearer ${process.env.PBR_API_KEY}` },
});
const { data, meta } = await response.json();
Quick Links
Share