Contents
On this page

Booking Form Options - Plugixa Car Rental

GET /plugixa-car-rental/v1/public/options

Everything a booking front end needs before the visitor types anything: the locations, payment methods, booking rules, extras and custom fields.

Public: no sign-in and no nonce. Needs the Booking form app on. Rate limited to 300 requests an hour per visitor address: see Public routes.

Request

GET https://your-site.example/wp-json/plugixa-car-rental/v1/public/options

Responses

200 OK. data holds the form’s options.

{
  "success": true,
  "data": {
    "locations": [
      {
        "id": 1,
        "name": "Paris Gare de Lyon",
        "city": "Paris",
        "address": "20 Boulevard Diderot",
        "allows_pickup": true,
        "allows_return": true,
        "opening_hours": {
          "mon": [
            {
              "open": "08:00",
              "close": "19:00"
            }
          ],
          "tue": [
            {
              "open": "08:00",
              "close": "19:00"
            }
          ],
          "wed": [
            {
              "open": "08:00",
              "close": "19:00"
            }
          ],
          "thu": [
            {
              "open": "08:00",
              "close": "19:00"
            }
          ],
          "fri": [
            {
              "open": "08:00",
              "close": "19:00"
            }
          ],
          "sat": [
            {
              "open": "09:00",
              "close": "12:30"
            },
            {
              "open": "14:00",
              "close": "18:00"
            }
          ],
          "sun": []
        },
        "after_hours": true
      }
    ],
    "gateways": [
      {
        "id": "pay_at_pickup",
        "label": "Pay at pickup",
        "description": "Pay at the desk when you collect the car.",
        "online": false
      }
    ],
    "rules": {
      "min_lead_minutes": 120,
      "max_horizon_days": 365,
      "min_rental_days": 1,
      "max_rental_days": 90,
      "hold_minutes": 15
    },
    "currency": "EUR",
    "today": "2026-11-12",
    "extras": [
      {
        "id": 3,
        "name": "Child seat",
        "description": "For children from 9 to 18 kg.",
        "price": 8.0,
        "price_type": "per_day",
        "max_total": 40.0,
        "max_quantity": 2
      }
    ],
    "fields": [
      {
        "key": "flight_number",
        "label": "Flight number",
        "type": "text",
        "options": [],
        "help": "If you arrive by plane.",
        "required": false
      }
    ],
    "coupons": true
  }
}
Field Type Meaning
data.locations[] object[] Published locations that take pickups, returns or both: id, name, city, address, allows_pickup, allows_return, opening_hours, and after_hours, whether a time outside the hours is possible for a fee
data.gateways[] object[] Payment methods switched on: id (send it as payment_method at checkout), label, description, online
data.rules object The booking rules: shortest notice in minutes, furthest horizon in days, shortest and longest rental in days, and how long a hold lasts in minutes
data.currency string The site’s currency
data.today string Today on the site’s calendar, YYYY-MM-DD
data.extras[] object[] With the Extras app: published extras to offer
data.fields[] object[] With the Custom fields app: your questions, each with key, label, type (text, textarea, number, date, select, checkbox), options, help, required. Answer them at checkout
data.coupons boolean With the Coupons app: true, offer a coupon field
data.driver_age object With Pro and the Driver age app: {min, max}. Send driver_age with every search and hold
data.search_fields[] object[] With Pro and the Delivery and collection app, when it can price: the delivery_address and collection_address fields to offer
data.currencies string[] With Pro and the Multi-currency app: currency codes a visitor may choose

Every public response carries Cache-Control: no-store.

Errors

Plus the errors every endpoint can return.

Examples

curl -s "https://your-site.example/wp-json/plugixa-car-rental/v1/public/options"
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-car-rental/v1/public/options');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const response = await fetch('https://your-site.example/wp-json/plugixa-car-rental/v1/public/options');
const { data } = await response.json();

Quick Links

Share