Renta Docs

Storefront Endpoints

All public-facing endpoints available with publishable keys.

Complete reference for all storefront endpoints. These work with publishable keys (renta_pk_...) and are safe for client-side use.

Endpoint Summary

MethodEndpointDescription
GET/v1/storefront/shopGet shop profile and locations
GET/v1/storefront/inventoryBrowse available items with pricing
POST/v1/storefront/bookCreate a booking with payment
POST/api/storefront/auth/requestRequest customer auth code
POST/api/storefront/auth/verifyVerify auth code
GET/api/storefront/addons-checkGet available add-ons
GET/api/storefront/waiver-templateGet waiver for signing
POST/api/storefront/payment-intentCreate payment intent (storefront flow)

Endpoints under /v1/ are the public API. Endpoints under /api/storefront/ are internal storefront routes used by the hosted booking flow.

GET /v1/storefront/shop

Returns the public shop profile including name, branding, and pickup locations.

See Storefront API for full details.

GET /v1/storefront/inventory

Returns available fleet items with calculated pricing for a date range.

Required query parameters: pickup_date, return_date

See Storefront API for full details.

POST /v1/storefront/book

Creates a booking from the storefront flow. Requires a Stripe payment intent ID.

See Storefront API for full details.

POST /api/storefront/auth/request

Sends a one-time authentication code to the customer's email. Used for returning customer login during the booking flow.

Body:

{
  "email": "john@example.com"
}

Response:

{
  "success": true,
  "message": "Verification code sent to john@example.com"
}

POST /api/storefront/auth/verify

Verifies the one-time code and returns a session token.

Body:

{
  "email": "john@example.com",
  "code": "123456"
}

Response:

{
  "success": true,
  "customer_id": "cust_abc123",
  "name": "John Doe",
  "email": "john@example.com"
}

GET /api/storefront/addons-check

Returns available add-ons for the booking flow. Filters add-ons based on the selected fleet items and their addon configuration (required, optional, hidden).

Query Parameters:

ParameterTypeDescription
fleet_item_idsstringComma-separated fleet item IDs

Response:

{
  "addons": [
    {
      "id": "addon_helmet",
      "name": "Helmet",
      "price": 500,
      "price_type": "per_item",
      "mode": "required",
      "description": "DOT-certified full-face helmet"
    },
    {
      "id": "addon_insurance",
      "name": "Damage Protection",
      "price": 1500,
      "price_type": "per_day",
      "mode": "optional",
      "description": "Covers up to $500 in damage"
    }
  ]
}

GET /api/storefront/waiver-template

Returns the waiver template that customers need to sign during the booking process.

Response:

{
  "template": {
    "id": "wt_liability",
    "name": "Liability Waiver",
    "content": "<h2>Release of Liability</h2><p>...</p>",
    "type": "per_rider"
  }
}

POST /api/storefront/payment-intent

Creates a Stripe payment intent for the storefront booking flow.

Body:

{
  "amount": 10800,
  "booking_details": {
    "pickup_date": "2026-07-01T09:00:00Z",
    "return_date": "2026-07-03T17:00:00Z",
    "line_items": [{"fleet_item_id": "fi_abc123"}]
  }
}

Response:

{
  "client_secret": "pi_stripe_abc123_secret_xyz",
  "payment_intent_id": "pi_stripe_abc123",
  "amount": 10800
}