Contents
Get Available Times - Plugixa Car Wash
GET /plugixa-carwash/v1/public/slots
List the start times on one day and whether each is free for the chosen wash.
Open to anyone: no sign-in. Rate-limited per visitor address to 600 requests an hour, shared by every public read route (bucket carwash_read). See Public routes.
Request
GET https://your-site.example/wp-json/plugixa-carwash/v1/public/slots?form_id=1&location_id=3&vehicle_type_id=2&package_id=4&date=2026-11-14
Query parameters
| Name | Type | Default | Description |
|---|---|---|---|
form_id |
integer |
Required. A published booking form. | |
location_id |
integer |
One of the form’s locations. | |
vehicle_type_id |
integer |
One of the form’s vehicle types. Required as soon as one vehicle type is published. | |
package_id |
integer |
One of the form’s packages. Required unless the form’s display is services. |
|
service_ids |
string |
Comma-separated service ids: add-ons allowed with the package, or any published service on a services form. A packages form takes none. |
|
date |
string |
Required. Y-m-d, in the location’s time zone. |
Times follow the location’s opening hours and time grid, from its minimum notice up to its booking window, and skip closed days. A day outside them answers an empty slots. Book one of the times marked available: any other is refused.
Responses
200 OK.
{
"success": true,
"data": {
"date": "2026-11-14",
"duration": 60,
"slots": [
{
"time": "08:00",
"start": "2026-11-14 14:00:00",
"available": true,
"free": 2
},
{
"time": "08:30",
"start": "2026-11-14 14:30:00",
"available": true,
"free": 1
},
{
"time": "09:00",
"start": "2026-11-14 15:00:00",
"available": false,
"free": 0
}
]
}
}
| Field | Type | Meaning |
|---|---|---|
data.duration |
integer |
Minutes the wash takes |
data.slots[].time |
string |
Local start time, H:i: send it as time when booking |
data.slots[].start |
string |
The same moment as a UTC datetime |
data.slots[].available |
boolean |
Whether it can be booked |
data.slots[].free |
integer |
How many suitable bays or teams are free |
Errors
| Status | Code | When |
|---|---|---|
404 |
plugixa_carwash_form_not_found |
form_id is missing, or the form does not exist or is not published: “This booking form is not available.” |
422 |
plugixa_carwash_not_offered |
The location, vehicle type, package or an extra is not one this form offers, or it is not published. The message says which, for example “Choose your vehicle type.” or “One of the chosen extras is not available with this package.” |
422 |
plugixa_carwash_nothing_chosen |
Neither a package nor a service. |
422 |
plugixa_carwash_not_for_vehicle |
The package or a service is switched off for this vehicle type. |
422 |
plugixa_carwash_invalid_date |
date is missing or not Y-m-d. |
429 |
plugixa_carwash_rate_limited |
This address has used up its requests for the hour. |
Plus the errors every endpoint can return.
Examples
curl -s "https://your-site.example/wp-json/plugixa-carwash/v1/public/slots?form_id=1&location_id=3&vehicle_type_id=2&package_id=4&date=2026-11-14"
<?php
$query = http_build_query([
'form_id' => 1,
'location_id' => 3,
'vehicle_type_id' => 2,
'package_id' => 4,
'date' => '2026-11-14',
]);
$ch = curl_init('https://your-site.example/wp-json/plugixa-carwash/v1/public/slots?' . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const query = new URLSearchParams({
form_id: '1',
location_id: '3',
vehicle_type_id: '2',
package_id: '4',
date: '2026-11-14',
});
const response = await fetch(`https://your-site.example/wp-json/plugixa-carwash/v1/public/slots?${query}`);
const { data } = await response.json();
Quick Links
Share