Authentication
Create a key in Stripbuilder under Settings → Integrations and send it as a Bearer token in the Authorization header. The key is shown once, so store it safely. Only use it server-side, never in the browser.
Authorization: Bearer sb_live_...Create a booking
One request per booking. You'll find the template ID and the other IDs in Stripbuilder under Settings → Integrations.
curl -X POST https://app.stripbuilder.nl/api/v1/bookings \
-H "Authorization: Bearer sb_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Wedding Jan & Sara",
"date": "2026-09-12",
"template_id": "3f2c9a4e-...",
"location": "Kasteel Bloemendal",
"external_ref": "CRM-8891",
"approve": true
}'Fields
| Field | Type | Notes |
|---|---|---|
nameRequired | string | Name of the booking, for example the event or the client. |
dateRequired | string | Event date as YYYY-MM-DD. |
template_idRequired | uuid | The template your client starts from. |
locationOptional | string | Event location. |
external_refOptional | string | Your own reference, such as a booking number. A repeated request with the same reference returns the existing booking. |
approveOptional | boolean | With true the booking goes live immediately and you get the client link back. Without it, the booking lands in your requests inbox. |
primary_product_idOptional | uuid | The photobooth package that was booked. |
upsell_selectionsOptional | array | Extras already booked, as a list of product_id and qty. Each extra counts once. |
questionnaire_template_idOptional | uuid | The questionnaire your client fills in. Leave it out for none. |
expires_atOptional | ISO 8601 | Until when the client link works (ISO 8601). |
{
"primary_product_id": "<product-id>",
"upsell_selections": [{ "product_id": "<product-id>", "qty": 1 }],
"questionnaire_template_id": "<questionnaire-id>",
"expires_at": "2026-10-01T00:00:00Z"
}Response
You get 201 with the new booking. With approve: true the client link is in client_url. If a booking with the same external_ref already exists, you get 200 with that booking and duplicate: true.
HTTP/1.1 201 Created
{
"id": "b7d1e0c2-...",
"status": "pending",
"external_ref": "CRM-8891",
"dashboard_url": "https://app.stripbuilder.nl/dashboard/bookings/b7d1e0c2-...",
"client_url": "https://app.stripbuilder.nl/c/Xk3n9Qe..."
}Error codes
| Code | Meaning |
|---|---|
| 400 | A required field is missing, the date is invalid, or an ID doesn't belong to your account. |
| 401 | The API key is missing or has been revoked. |
| 403 | You've reached your monthly limit. This only happens with approve: true; otherwise the request waits in your inbox. |
| 429 | Too many requests. Maximum 60 per minute. |
Recipes
Zapier
- 1Choose the new booking in your booking tool as the trigger.
- 2Add the action Webhooks by Zapier → Custom Request, with method POST and the endpoint above as the URL.
- 3Under Headers, set the Authorization header to Bearer plus your key, and Content-Type to application/json.
- 4Map name, date and your template ID into the body and set approve to true.
- 5Use client_url from the response in your next step, for example your confirmation email.
Make
- 1After your booking trigger, add the module HTTP → Make a request.
- 2Choose method POST, the endpoint as the URL, and body type Raw with content type JSON.
- 3Add the Authorization header with Bearer plus your key.
- 4Map the fields into the JSON body.
- 5Use client_url from the response in your email or CRM module.
n8n
- 1Add an HTTP Request node after your trigger.
- 2Choose method POST and the endpoint as the URL.
- 3For authentication choose Header Auth, with Authorization as the name and Bearer plus your key as the value.
- 4Turn on Send Body, choose JSON and map the fields.
- 5Read client_url in the next node.
Your own website or system
- 1Call the endpoint from your backend as soon as a booking is confirmed. Never from the browser: your key has to stay secret.
- 2Send your own booking number as external_ref, so a repeated request is safe.
- 3Store client_url with the booking and put it in your confirmation email.

