Issue Summary
When creating a booking via the /v2/bookings endpoint, the API returns a 400 BAD_REQUEST error with the message:
responses - {title}error_required_field
Even when all required fields appear to be provided, the API does not accept the request and gives no clear documentation that "title" is a required field at the root booking level, not inside attendee.
This contradicts the API documentation and causes booking failures.
Steps to Reproduce
- Send a POST request to /v2/bookings or https://cal.com/docs/api-reference/v2/bookings/create-a-booking?playground=open
- Include valid booking data including:
- start
- attendee (name, email, phone, timezone, language)
- eventTypeId
- API responds with a 400 error asking for a missing "title" field
Example request used:
curl --request POST \
--url https://api.cal.com/v2/bookings \
--header 'Content-Type: application/json' \
--header 'cal-api-version: 2024-08-13' \
--data '{
"start": "2025-11-10T17:30:00.000Z",
"attendee": {
"name": "Sohail",
"email": "sohail@gmail.com",
"timeZone": "America/Chicago",
"phoneNumber": "+13125557890",
"language": "en"
},
"eventTypeId": 3799201
}'
Actual Results
- Booking creation fails
- Server returns:
400 BAD_REQUEST
responses - {title}error_required_field
- Error response does not clarify where "title" should be placed
Expected Results
- Booking should be successfully created or
- Error message should clearly indicate:
- "title" is required
- "title" should be at the root booking level
- API documentation should reflect correct required fields and structure
Technical Details
- API: Cal.com /v2/bookings
- Timestamp: 2025-11-02T18:13:12.905Z
- Headers:
- Content-Type: application/json
- cal-api-version: 2024-08-13
- Environment:
- Node.js automation (n8n server)
- Also reproduced via Postman and cURL
Backend error received:
{"status":"error","timestamp":"2025-11-02T18:13:12.905Z","path":"/v2/bookings","error":{"code":"BAD_REQUEST","message":"responses - {title}error_required_field, "}}
Evidence
- Reproducible from multiple clients (n8n, Postman, cURL)
- Valid JSON structure confirmed
- Attached server error logs
- Booking fails despite required fields present
Additional Context
- This issue is blocking production automation for an AI-powered voice receptionist booking system
- "title" field are not documented as required for /v2/bookings
- Suggested improvements:
- Update API documentation to reflect required fields
- Include clear path to missing property in error response
Issue Summary
When creating a booking via the /v2/bookings endpoint, the API returns a 400 BAD_REQUEST error with the message:
responses - {title}error_required_field
Even when all required fields appear to be provided, the API does not accept the request and gives no clear documentation that "title" is a required field at the root booking level, not inside attendee.
This contradicts the API documentation and causes booking failures.
Steps to Reproduce
Example request used:
Actual Results
400 BAD_REQUEST
responses - {title}error_required_field
Expected Results
Technical Details
Backend error received:
{"status":"error","timestamp":"2025-11-02T18:13:12.905Z","path":"/v2/bookings","error":{"code":"BAD_REQUEST","message":"responses - {title}error_required_field, "}}
Evidence
Additional Context