calcom/cal.diy · error · BadRequestException
Event type with id=${eventType.id} is the parent managed eve
Error message
Event type with id=${eventType.id} is the parent managed event type that can't be booked. You have to provide the child event type id aka id of event type that has been assigned to one of the users. What it means
Thrown in BookingsService.createBooking when the resolved event type has schedulingType === "MANAGED". Managed event types are parent containers in a team that assign members; they are not directly bookable. The caller must book one of the managed event type's child event types (assigned to individual users). HTTP 400.
Source
Thrown at apps/api/v2/src/platform/bookings/2024-08-13/services/bookings.service.ts:128
) {}
async createBooking(request: Request, body: CreateBookingInput, authUser: AuthOptionalUser) {
let bookingTeamEventType = false;
try {
const eventType = await this.getBookedEventType(body);
if (eventType?.team) {
bookingTeamEventType = true;
}
if (!eventType) {
this.errorsBookingsService.handleEventTypeToBeBookedNotFound(body);
}
const userIsEventTypeAdminOrOwner = authUser
? await this.eventTypeAccessService.userIsEventTypeAdminOrOwner(authUser, eventType)
: false;
await this.checkBookingRequiresAuthenticationSetting(eventType, authUser, userIsEventTypeAdminOrOwner);
if (eventType.schedulingType === "MANAGED") {
throw new BadRequestException(
`Event type with id=${eventType.id} is the parent managed event type that can't be booked. You have to provide the child event type id aka id of event type that has been assigned to one of the users.`
);
}
if (eventType.schedulingType === "COLLECTIVE" || eventType.schedulingType === "ROUND_ROBIN") {
await this.checkEventTypeHasHosts(eventType.id);
}
body.eventTypeId = eventType.id;
const isRecurring = !!eventType?.recurringEvent;
const isSeated = !!eventType?.seatsPerTimeSlot;
await this.hasRequiredBookingFieldsResponses(body, eventType);
if (isRecurring && isSeated) {
return await this.createRecurringSeatedBooking(request, body, eventType, userIsEventTypeAdminOrOwner);
}View on GitHub (pinned to 176037d0af)
Solutions
- Look up the managed event type's assigned users/children and POST with a child event type id.
- Use the event types API to list assignable (non-managed) event types for the team/user and pick one.
- If you book by username + eventTypeSlug instead, ensure the slug resolves to a non-managed event type.
Example fix
// before
{ eventTypeId: 123 } // 123 is the MANAGED parent -> BadRequestException
// after
{ eventTypeId: 130 } // 130 is a child event type assigned to a team member Defensive patterns
Strategy: validation
Validate before calling
// Before booking, ensure the eventTypeId is bookable (not a MANAGED parent).
const eventType = await api.get(`/v2/event-types/${eventTypeId}`);
if (eventType.schedulingType === 'MANAGED') {
throw new Error(`Event type ${eventTypeId} is a managed parent; book a child event type id instead`);
} Type guard
function isBookableEventType(et: { schedulingType?: string } | null | undefined): boolean {
return !!et && et.schedulingType !== 'MANAGED';
} Try / catch
try {
await api.post('/v2/bookings', { eventTypeId });
} catch (err) {
if (err.status === 400 && /parent managed event type/.test(err.message)) {
// fetch the managed event type's children and retry with a child eventTypeId
}
throw err;
} Prevention
- Never POST the managed parent event type id; resolve and use a child.
- List assignable event types per team/user before booking.
- Prefer booking by eventTypeId once you have a confirmed bookable one.
When it happens
Trigger: POST /v2/bookings with body.eventTypeId pointing at a team's MANAGED event type (the parent) rather than one of its assignable child event types.
Common situations: Copying the event type ID from the team's managed event type in the UI/API instead of a member's event type; misunderstanding managed event types as bookable; iterating event types and grabbing the parent id.
Related errors
- You are not authorized to book this event type. You must be
- Can't book this team event type because it has no hosts. Ple
- Booking with uid ${bookingUid} has no event type
- teamId is required for team events, please provide a valid t
- You passed 'slotDuration' but this event type is not a varia
AI-assisted analysis of calcom/cal.diy@176037d0af (2026-08-12).
Data as JSON: /api/errors/5628d9b3b3516f1a.
Report an issue: GitHub.