Skip to main content
POST
/
v1
/
events
cURL
curl --request POST \
  --url https://api.novacal.io/v1/events \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "event_type_id": 123,
  "start": "2023-11-07T05:31:56Z",
  "end": "2023-11-07T05:31:56Z",
  "timezone": "<string>",
  "time_format": 12,
  "location": {
    "id": 123
  },
  "form_field_answers": {}
}
'
{
  "success": true,
  "data": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "start": "2023-11-07T05:31:56Z",
    "end": "2023-11-07T05:31:56Z",
    "canceled_at": "2023-11-07T05:31:56Z",
    "cancellation_reason": "<string>",
    "location": "<string>",
    "form_field_answers": {
      "name": "John Doe",
      "email": "john@example.com"
    },
    "status": "<string>",
    "name": "<string>",
    "organizer": {
      "first_name": "<string>",
      "last_name": "<string>",
      "name": "<string>",
      "email": "jsmith@example.com",
      "username": "<string>",
      "timezone": "<string>",
      "time_format": 12,
      "start_of_week": 0,
      "avatar": "<string>"
    },
    "hosts": [
      {
        "first_name": "<string>",
        "last_name": "<string>",
        "name": "<string>",
        "email": "jsmith@example.com",
        "username": "<string>",
        "timezone": "<string>",
        "time_format": 12,
        "start_of_week": 0,
        "avatar": "<string>"
      }
    ],
    "booker": {
      "name": "<string>",
      "email": "jsmith@example.com",
      "timezone": "<string>",
      "time_format": 12
    },
    "guests": [
      "jsmith@example.com"
    ]
  }
}
This endpoint requires a public API bearer token. The authenticated API key identifies the caller integration. The event booker is still created from the submitted booking payload, for example form_field_answers.name and form_field_answers.email.

When to use this endpoint

Use this endpoint when you want to create a new booking from your own product, widget, or backend workflow. Common use cases include:
  • Creating a booking after a customer selects a time in your app
  • Passing attendee answers collected in a custom booking flow
  • Saving the selected timezone and meeting location in the same request

Authentication notes

This route uses a public API bearer token. The token authenticates your integration, while the attendee details still come from the booking payload you submit.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Event booking payload

event_type_id
integer
required

The ID of the event type being booked

start
string<date-time>
required

The requested event start date and time

end
string<date-time>
required

The requested event end date and time

timezone
string
required

The booker's timezone

time_format
enum<integer>
required

The booker's preferred time format

Available options:
12,
24
location
object

Optional selected location payload

form_field_answers
object

Booking answers such as name, email, and any custom fields

Response

201 - application/json

Event booked successfully

success
boolean
required

Indicates whether the request was successful

Example:

true

data
object
required