Contents
On this page

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=active for 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