Skip to content

Check one precise instant

POST
/v1/availability/check

Feasibility at that instant, not alignment to the grid: a start the search would not offer still gets structured reasons.

Bookrail-Version

The dated API version to speak. Defaults to 2026-09-01; an unsupported value is a 400.

string
Example
2026-09-01
Bookrail-Actor

Which Bookrail tool the caller is, recorded as actor.via on every event the request writes. A closed list: an unknown value is a 400. Absent means the request declared no tool.

string
Allowed values: mcp cli sdk dashboard
Idempotency-Key

Retry-safety key, 1 to 255 characters. The same key within 24 hours replays the first response, errors included, and never produces a second effect.

string
>= 1 characters <= 255 characters
object
service_id
required

Identifier of a service, prefixed with svc_.

string
/^svc_[0-9a-f]{32}$/
Example
svc_0198f0c2a1b47e2e9a1c0f4d5e6a7b8c
start
required

ISO 8601 instant with an explicit offset. Any offset is accepted on input; every instant is returned in UTC.

string format: date-time
Example
2026-09-08T07:00:00Z
duration_minutes
integer
> 0 <= 525600
quantity
integer
> 0 <= 100000
resource_ids
Array<string>
>= 1 items <= 500 items

Success.

object
object
required
string
Allowed values: availability_check
service_id
required

Identifier of a service, prefixed with svc_.

string
/^svc_[0-9a-f]{32}$/
Example
svc_0198f0c2a1b47e2e9a1c0f4d5e6a7b8c
start
required

ISO 8601 instant in UTC.

string format: date-time
Example
2026-09-08T07:00:00Z
duration_minutes
required
integer | null
available
required
boolean
available_capacity
required
integer
price
required

Amount in the minor unit of the currency (cents for EUR).

object
amount
required
integer
currency
required
string
price_rule
required

Which service.pricing_rules entry produced price, if any.

object
index
required

Position in service.pricing_rules.

integer
label
required

The rule label, when it has one.

string | null
resource_options
required
Array<object>
object
resources
required
Array<object>
object
resource_id
required

Identifier of a resource, prefixed with res_.

string
/^res_[0-9a-f]{32}$/
Example
res_0198f0c2a1b47e2e9a1c0f4d5e6a7b8c
role
required
string | null
capacity_used
required
integer
reasons

Present only when available is false.

Array<object>
object
code
required
string
Allowed values: outside_schedule exception_closed blocked occupied buffer min_notice max_advance capacity customer_limit
message
required
string
resource_id

Identifier of a resource, prefixed with res_.

string
/^res_[0-9a-f]{32}$/
Example
res_0198f0c2a1b47e2e9a1c0f4d5e6a7b8c
ref_id

Bare identifier of the booking, hold, block or exception responsible; code says which.

string
reason

Present when the window is well formed but no slot can exist for a reason that covers all of it, e.g. customer_limit_reached.

object
code
required
string
message
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

Idempotent-Replayed
string

true when the body is the stored answer of an earlier request with the same Idempotency-Key.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Error codes: idempotency_key_reused, invalid_body, invalid_range, parameter_invalid, parameter_missing, range_too_large, service_without_duration, timezone_missing, unsupported_api_version.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Error codes: invalid_api_key, invalid_authorization_header, missing_api_key, revoked_api_key.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Error codes: resource_missing.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Error codes: idempotency_key_in_progress.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Error codes: rate_limited.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Retry-After
string

Whole seconds to wait before sending this request again. At least 1.

Error codes: internal_error.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.