Booking requests
When org policy requires approval, members submit requests and desk staff approve or decline them before a reservation is created.
9 endpoints · base URL https://api.aerscheduler.com
/booking-requestsList pending booking requests
Owners, admins, and dispatchers can list pending requests for their organization. Also returns recently approved public guests who have not yet been invited as a student or renter, and pick-aircraft holds that are still waiting on email confirmation (without the guest's name, email, or phone).
Query parameters
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | The pending booking requests.→ { data: BookingRequest[] } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/booking-requests \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/booking-requestsSubmit a booking request
Creates a pending booking request when org policy requires approval for this member.
Request body
The requested window and personnel.
startrequired | string | |
endrequired | string | |
typerequired | string | |
title | string | |
timeZoneName | string | |
notes | string | |
meetingUrl | string | null | Ground lessons only: a video call link (https), carried onto the booking when approved. With one, the lesson needs no room. |
meeting | object | Ground lessons only: make the call once the request is approved, on the instructor's connected account when they have one, else the requester's. Refused with 400 if neither is connected. A failure at approval is meetingError beside the approval. |
resource | object | |
location | object | |
rating | object | |
personnel | object |
Responses
201 | Created | Success.→ { data: BookingRequest } |
400 | Bad Request | The request is invalid or approval is not required. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/booking-requests \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2026-08-04T15:00:00-06:00","end":"2026-08-04T15:00:00-06:00","type":"…"}'/booking-requests/{id}Get a booking request
Desk staff or the requester can read one booking request.
Path parameters
idrequired | integer | The booking request id. |
Responses
200 | OK | Success.→ { data: BookingRequest } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
404 | Not Found | Booking request not found. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/booking-requests/:id \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/booking-requests/meList my booking requests
Lists booking requests submitted by the signed-in member.
Query parameters
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | Your booking requests.→ { data: BookingRequest[] } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/booking-requests/me \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/booking-requests/{id}/approveApprove a booking request
Desk staff approves a pending request and creates the corresponding reservation.
Path parameters
idrequired | integer | The booking request id. |
Request body
Optional assignment overrides.
resource | object | |
location | object | |
instructorOrgUserId | integer | |
personnel | object | |
title | string |
Responses
200 | OK | Success.→ { data: BookingRequest } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
409 | The request is no longer pending. | |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/booking-requests/:id/approve \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"resource":{},"location":{}}'/booking-requests/{id}/cancelCancel a booking request
The requester or desk staff cancels a pending request.
Path parameters
idrequired | integer | The booking request id. |
Responses
200 | OK | Success.→ { data: BookingRequest } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
409 | The request is no longer pending. | |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/booking-requests/:id/cancel \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/booking-requests/{id}/convertInvite a public guest as a member
After a public guest request is approved, desk staff can send a student or renter invitation to the guest email. Demo organizations are refused.
Path parameters
idrequired | integer | The booking request id. |
Request body
The membership to offer.
rolerequired | "student" | "renter" |
Responses
200 | OK | Success.→ { data: BookingRequest } |
400 | Bad Request | Only an approved public guest request can be converted. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
409 | Approve the request before inviting them as a member. | |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/booking-requests/:id/convert \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"role":"student"}'/booking-requests/{id}/rejectReject a booking request
Desk staff declines a pending request without touching the schedule.
Path parameters
idrequired | integer | The booking request id. |
Request body
Optional reason shown to the member.
reason | string |
Responses
200 | OK | Success.→ { data: BookingRequest } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
409 | The request is no longer pending. | |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/booking-requests/:id/reject \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"reason":"…"}'/booking-requests/policy/meCheck if I need approval
Returns whether the signed-in member must submit booking requests instead of instant self-book.
Responses
200 | OK | Success.→ { data: object } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/booking-requests/policy/me \
-H "Authorization: Bearer $AERSCHEDULER_KEY"