Create Extra
Add an extra to the supplier's catalog.
Endpointโ
POST /v1/extras
Authenticationโ
Requires an API key with the products:write scope.
Request Bodyโ
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Extra name, e.g. "Helmet" |
price | number | For fixed charge extras | Charge price in the supplier's currency. Rental and store extras use the linked item. |
price_set_when_booked | boolean | No | true when the price changes per booking (a pickup priced by area, a venue fee). Staff enter it on each booking and no catalog price is needed. Plain charge extras only. See Extras priced when booked. |
description | string | No | Short customer-facing description |
fulfillment_type | string | No | charge (default), rental (borrow and return), or sale (keep a store item) |
linked_product_id | integer | For rental extras | Existing rental item in this supplier's fleet |
linked_store_product_id | integer | For sale extras | Existing store item in this supplier's catalog |
rental_price | number or null | No | Rental extras only. Price per borrowed item for the parent booking window. Zero is free; null uses the linked rental rate. Stock always comes from the linked rental. |
addon_only | boolean | No | Hide the linked rental or store item from standalone sales. Defaults to false. |
charge_per | string | No | once (default, added to a line once), per_item (price times how many the customer picks), per_rental_item (required for each rented item), per_person, or per_time |
time_unit | string | When charge_per = per_time | hour, day, or week โ the billing period (e.g. day for $2/day) |
rental_applies_to | string | No | none, all (default), categories, products |
experience_applies_to | string | No | none (default), all, experiences |
product_ids | integer[] | No | Product ids when rental_applies_to = products |
category_ids | integer[] | No | Category ids when rental_applies_to = categories |
experience_ids | integer[] | No | Experience ids when experience_applies_to = experiences |
stock_quantity | integer | No | How many exist; omit for unlimited |
active | boolean | No | Defaults to true |
An extra must be available somewhere โ requests with both rental_applies_to and experience_applies_to set to none return 422. Targeted ids belonging to another supplier are ignored.
Responseโ
Success (201 Created)โ
Returns the created Extra object.
Exampleโ
curl -X POST "https://app.equipdash.com/api/v1/extras" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "E-Bike Insurance",
"description": "No extra costs if the bike gets damaged (frame not included).",
"price": 18,
"charge_per": "once",
"rental_applies_to": "categories",
"category_ids": [4]
}'