API reference
All 13 operations, generated from the OpenAPI document so it cannot fall behind the API.
https://api.marubox.jp/v1, bearer authentication on everything except /openapi.json. This page is generated from the OpenAPI document; that file is the authority, and a code generator will do better with it than with this table.Account#
Who the token belongs to
Get the authenticated account#
GEThttps://api.marubox.jp/v1/me
Returns the account the token belongs to, and the scopes the token carries. Integration platforms call this to test a connection and to label it.
Operation id getMe · Errors: 400, 401, 403, 404, 409, 429
Returns 200
| Field | Type | Notes | |
|---|---|---|---|
id | string | always | |
name | string | always | |
email | string | always | |
handle | string | null | always | |
locale | en | ja | always | |
timezone | string | always | |
bookingPageUrl | string | null | always | |
plan | free | standard | always | |
scopes | array of event_types:read | bookings:read | bookings:write | webhooks:manage | always |
Event types#
What people can book, and when
List event types#
GEThttps://api.marubox.jp/v1/event-types
The things people can book. Use this to populate an event type dropdown. Ordered as they appear in the app.
Operation id listEventTypes · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
limit | integer | optional | Defaults to 50. |
cursor | string | optional | |
active | true | false | optional | Defaults to "true". |
Returns 200
| Field | Type | Notes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
items | array of object | always | fields
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nextCursor | string | null | always |
List available start times#
GEThttps://api.marubox.jp/v1/event-types/{id}/slots
Available start times for an event type, as UTC instants, after availability, calendar conflicts, buffers, notice and daily limits have been applied. The range may span at most 31 days. Invite-only event types are included, because the caller owns them. from and to are UTC dates, not the host’s: the window runs from 00:00:00Z on from to 23:59:59Z on to. For a host whose time zone is behind UTC that is not the same as their calendar day — asking for one date returns the tail of the previous local evening and omits the end of the one you asked for — so widen the range by a day either side and filter the returned instants in the zone you care about.
Operation id listAvailableSlots · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
from | string | required | Start of the window, as a UTC date. Interpreted as 00:00:00Z on that date. |
to | string | required | End of the window, as a UTC date. Interpreted as 23:59:59Z on that date. |
id | string | required |
Returns 200
| Field | Type | Notes | |
|---|---|---|---|
slots | array of string (date-time) | always | |
calendarBlocked | boolean | always |
Bookings#
Read, create and cancel bookings
List bookings#
GEThttps://api.marubox.jp/v1/bookings
Bookings, newest first by default. Held and awaiting-payment bookings are excluded unless asked for by status: they are in-flight states, not bookings anyone should act on. Items are full booking objects, so a polling trigger can emit them directly.
Operation id listBookings · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
limit | integer | optional | Defaults to 50. |
cursor | string | optional | |
status | string | optional | Comma-separated list of statuses, e.g. "confirmed,completed". One or more of: held, awaiting_payment, confirmed, cancelled, completed, no_show. Omitted, it returns confirmed, cancelled, completed and no_show — everything except the in-flight states a booking passes through before it is anyone’s business. |
eventTypeId | string | optional | |
email | string (email) | optional | |
startFrom | string (date-time) | optional | |
startTo | string (date-time) | optional | |
updatedSince | string (date-time) | optional | |
sort | -createdAt | start | -start | -updatedAt | optional | Defaults to "-createdAt". |
Returns 200
| Field | Type | Notes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
items | array of object | always | fields
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nextCursor | string | null | always |
Create a booking#
POSThttps://api.marubox.jp/v1/bookings
Books a time on behalf of a customer, exactly as adding one by hand in the app does. The customer is emailed a confirmation unless notify is false. No card payment is taken, even for a paid event type. A time that is no longer free returns 409 slot_unavailable: the API never double-books.
Operation id createBooking · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
Idempotency-Key | string | optional | Replays the first response for a repeated request, so a retry after a timeout cannot create a second record. Any string up to 255 characters, scoped to your account and remembered for 24 hours. Sending the same key with a different body returns 409 idempotency_conflict. A key whose booking has since been cancelled is forgotten, so rebooking the same time with the same key books afresh rather than returning the cancellation. |
Request body
| Field | Type | Notes | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
eventTypeId | string | required | |||||||||||||||||||||
start | string (date-time) | required | |||||||||||||||||||||
booker | object | required | fields
| ||||||||||||||||||||
notes | string | optional | |||||||||||||||||||||
notify | boolean | optional | Defaults to true. |
Returns 201
| Field | Type | Notes | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | string | always | |||||||||||||||||||||
status | held | awaiting_payment | confirmed | cancelled | completed | no_show | always | |||||||||||||||||||||
start | string | always | |||||||||||||||||||||
end | string | always | |||||||||||||||||||||
hostTimezone | string | always | |||||||||||||||||||||
agent | object or null | always | Defaults to null. | ||||||||||||||||||||
eventType | object | always | fields
| ||||||||||||||||||||
booker | object | always | fields
| ||||||||||||||||||||
answers | array of object | always | fields
| ||||||||||||||||||||
bookerNotes | string | null | always | |||||||||||||||||||||
location | object | object | object | object | object | object | object | always | |||||||||||||||||||||
joinUrl | string | null | always | |||||||||||||||||||||
source | public | manual | reschedule | always | |||||||||||||||||||||
payment | object or null | always | |||||||||||||||||||||
cancellation | object or null | always | |||||||||||||||||||||
manageUrl | string | always | |||||||||||||||||||||
createdAt | string | always | |||||||||||||||||||||
updatedAt | string | always |
Get a booking#
GEThttps://api.marubox.jp/v1/bookings/{id}
Operation id getBooking · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
id | string | required |
Returns 200
| Field | Type | Notes | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | string | always | |||||||||||||||||||||
status | held | awaiting_payment | confirmed | cancelled | completed | no_show | always | |||||||||||||||||||||
start | string | always | |||||||||||||||||||||
end | string | always | |||||||||||||||||||||
hostTimezone | string | always | |||||||||||||||||||||
agent | object or null | always | Defaults to null. | ||||||||||||||||||||
eventType | object | always | fields
| ||||||||||||||||||||
booker | object | always | fields
| ||||||||||||||||||||
answers | array of object | always | fields
| ||||||||||||||||||||
bookerNotes | string | null | always | |||||||||||||||||||||
location | object | object | object | object | object | object | object | always | |||||||||||||||||||||
joinUrl | string | null | always | |||||||||||||||||||||
source | public | manual | reschedule | always | |||||||||||||||||||||
payment | object or null | always | |||||||||||||||||||||
cancellation | object or null | always | |||||||||||||||||||||
manageUrl | string | always | |||||||||||||||||||||
createdAt | string | always | |||||||||||||||||||||
updatedAt | string | always |
Cancel a booking#
POSThttps://api.marubox.jp/v1/bookings/{id}/cancel
Cancels a booking exactly as the app does: the customer is emailed, and a paid booking is refunded in full. Idempotent — cancelling an already-cancelled booking returns it unchanged.
Operation id cancelBooking · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
id | string | required |
Request body
| Field | Type | Notes | |
|---|---|---|---|
message | string | optional |
Returns 200
| Field | Type | Notes | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | string | always | |||||||||||||||||||||
status | held | awaiting_payment | confirmed | cancelled | completed | no_show | always | |||||||||||||||||||||
start | string | always | |||||||||||||||||||||
end | string | always | |||||||||||||||||||||
hostTimezone | string | always | |||||||||||||||||||||
agent | object or null | always | Defaults to null. | ||||||||||||||||||||
eventType | object | always | fields
| ||||||||||||||||||||
booker | object | always | fields
| ||||||||||||||||||||
answers | array of object | always | fields
| ||||||||||||||||||||
bookerNotes | string | null | always | |||||||||||||||||||||
location | object | object | object | object | object | object | object | always | |||||||||||||||||||||
joinUrl | string | null | always | |||||||||||||||||||||
source | public | manual | reschedule | always | |||||||||||||||||||||
payment | object or null | always | |||||||||||||||||||||
cancellation | object or null | always | |||||||||||||||||||||
manageUrl | string | always | |||||||||||||||||||||
createdAt | string | always | |||||||||||||||||||||
updatedAt | string | always |
Invites#
Single-use booking links
Create a single-use booking link#
POSThttps://api.marubox.jp/v1/invites
Mints a booking link that works once and then stops. Use it to reply to an enquiry. Works for public and invite-only event types, and the invitee skips the anti-spam checks because the link already proves you meant them. The url is returned only here.
Operation id createInviteLink · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
Idempotency-Key | string | optional | Replays the first response for a repeated request, so a retry after a timeout cannot create a second record. Any string up to 255 characters, scoped to your account and remembered for 24 hours. Sending the same key with a different body returns 409 idempotency_conflict. A key whose booking has since been cancelled is forgotten, so rebooking the same time with the same key books afresh rather than returning the cancellation. |
Request body
| Field | Type | Notes | |
|---|---|---|---|
eventTypeId | string | required | |
name | string | optional | |
email | string (email) | optional | |
expiresInDays | integer | optional | Defaults to 14. |
Returns 201
| Field | Type | Notes | |
|---|---|---|---|
id | string | always | |
eventTypeId | string | always | |
url | string | null | always | |
name | string | null | always | |
email | string | null | always | |
expiresAt | string (date-time) | always | |
usedAt | string (date-time) or null | always | |
bookingId | string | null | always | |
createdAt | string (date-time) | always |
Webhooks#
Subscribe to events
List webhook subscriptions#
GEThttps://api.marubox.jp/v1/webhooks
Secrets are never returned here.
Operation id listWebhooks · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
limit | integer | optional | Defaults to 50. |
cursor | string | optional |
Returns 200
| Field | Type | Notes | |||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
items | array of object | always | fields
| ||||||||||||||||||||||||||||||||||||
nextCursor | string | null | always |
Subscribe to events#
POSThttps://api.marubox.jp/v1/webhooks
Registers an endpoint to receive events. The secret is returned only here: store it, and verify the BB-Signature header on every delivery. Returns a Location header pointing at the subscription.
Operation id createWebhook · Errors: 400, 401, 403, 404, 409, 429
Request body
| Field | Type | Notes | |
|---|---|---|---|
url | string (uri) | required | |
events | array of booking.created | booking.rescheduled | booking.cancelled | booking.no_show | booking.completed | * | required | |
description | string | optional |
Returns 201
| Field | Type | Notes | |
|---|---|---|---|
id | string | always | |
url | string | always | |
events | array of string | always | |
description | string | null | always | |
status | active | disabled | always | |
createdVia | string | always | |
lastSuccessAt | string | null | always | |
consecutiveFailures | integer | always | |
createdAt | string | always | |
secret | string | always |
Get a webhook subscription#
GEThttps://api.marubox.jp/v1/webhooks/{id}
Used by trigger nodes to check that a subscription still exists.
Operation id getWebhook · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
id | string | required |
Returns 200
| Field | Type | Notes | |
|---|---|---|---|
id | string | always | |
url | string | always | |
events | array of string | always | |
description | string | null | always | |
status | active | disabled | always | |
createdVia | string | always | |
lastSuccessAt | string | null | always | |
consecutiveFailures | integer | always | |
createdAt | string | always |
Delete a webhook subscription#
DELETEhttps://api.marubox.jp/v1/webhooks/{id}
Idempotent: an unknown id also returns 204, so an unsubscribe never fails on a retry.
Operation id deleteWebhook · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
id | string | required |
Re-enable a disabled webhook subscription#
POSThttps://api.marubox.jp/v1/webhooks/{id}/enable
Starts delivering again to a subscription that was switched off after a long run of failures, keeping its id and its signing secret. Without this an integration can only delete the subscription and create another, which issues a new secret — so anything that stored the old one starts rejecting every delivery as unsigned. Returns the subscription either way: calling it on one that is already active changes nothing and is not an error.
Operation id enableWebhook · Errors: 400, 401, 403, 404, 409, 429
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
id | string | required |
Returns 200
| Field | Type | Notes | |
|---|---|---|---|
id | string | always | |
url | string | always | |
events | array of string | always | |
description | string | null | always | |
status | active | disabled | always | |
createdVia | string | always | |
lastSuccessAt | string | null | always | |
consecutiveFailures | integer | always | |
createdAt | string | always |
Webhook payloads#
These are requests we send to you. Each arrives as JSON with a BB-Signature header — see Webhooks for verification.
booking.created#
A booking became confirmed for the first time. Paid bookings fire only once payment succeeds.
| Field | Type | Notes | |||||
|---|---|---|---|---|---|---|---|
id | string | always | |||||
type | booking.created | always | |||||
createdAt | string (date-time) | always | |||||
apiVersion | v1 | always | |||||
data | object | always | fields
|
booking.rescheduled#
A booking moved. Exactly one event: no cancelled/created pair.
| Field | Type | Notes | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
id | string | always | |||||||||
type | booking.rescheduled | always | |||||||||
createdAt | string (date-time) | always | |||||||||
apiVersion | v1 | always | |||||||||
data | object | always | fields
|
booking.cancelled#
A booking was cancelled by the booker, the host or the system.
| Field | Type | Notes | |||||
|---|---|---|---|---|---|---|---|
id | string | always | |||||
type | booking.cancelled | always | |||||
createdAt | string (date-time) | always | |||||
apiVersion | v1 | always | |||||
data | object | always | fields
|
booking.no_show#
A booking was marked as a no-show.
| Field | Type | Notes | |||||
|---|---|---|---|---|---|---|---|
id | string | always | |||||
type | booking.no_show | always | |||||
createdAt | string (date-time) | always | |||||
apiVersion | v1 | always | |||||
data | object | always | fields
|
booking.completed#
A booking reached its end time without being cancelled. Sent once, shortly after it ends. Bookings that ended before this event existed were brought up to date silently and produce none.
| Field | Type | Notes | |||||
|---|---|---|---|---|---|---|---|
id | string | always | |||||
type | booking.completed | always | |||||
createdAt | string (date-time) | always | |||||
apiVersion | v1 | always | |||||
data | object | always | fields
|
Last reviewed 28 September 2026.