Skip to main content
POST
/
v1
/
event-types
cURL
curl --request POST \
  --url https://api.novacal.io/v1/event-types \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "slug": "<string>",
  "type": "one_on_one",
  "duration": 720,
  "hidden_from_profile": true,
  "color": "<string>",
  "description": "<string>",
  "max_group_size": 6,
  "redirect_enabled": true,
  "redirect_url": "<string>",
  "time_slot_interval": 62,
  "buffer_time_before_event": 60,
  "buffer_time_after_event": 60,
  "min_scheduling_notice": 21600,
  "min_scheduling_notice_type": "minutes",
  "booking_frequency_limits": [
    {
      "period": "day",
      "limit": 21600
    }
  ],
  "team_id": 123
}
'
{
  "success": true,
  "data": {
    "id": 123,
    "name": "<string>",
    "slug": "<string>",
    "description": "<string>",
    "type": "one_on_one",
    "duration": 720,
    "max_group_size": 6,
    "hidden_from_profile": true,
    "color": "<string>",
    "redirect_enabled": true,
    "redirect_url": "<string>",
    "time_slot_interval": 62,
    "buffer_time_before_event": 60,
    "buffer_time_after_event": 60,
    "min_scheduling_notice": 21600,
    "min_scheduling_notice_type": "minutes",
    "booking_frequency_limits": [
      {
        "period": "day",
        "limit": 21600
      }
    ],
    "form_fields": [
      {
        "identifier": "<string>",
        "label": "<string>",
        "type": "<string>",
        "placeholder": "<string>",
        "is_required": true,
        "options": [
          "<string>"
        ]
      }
    ]
  }
}

What you can create

Use this endpoint to create a new event type that controls how people book time with you in Novacal.

Configuration areas

  • Core details such as name, slug, and duration
  • Scheduling rules such as buffers, limits, and availability
  • Booking flow settings such as redirects and booking form fields

Authorizations

Authorization
string
header
required

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

Body

application/json

Event type to create

name
string
required

The name of the event type

Maximum string length: 55
slug
string
required

The URL-friendly identifier for the event type

Maximum string length: 80
Pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
type
enum<string>
required

The type of event

Available options:
one_on_one,
group,
round_robin,
collective
duration
integer
required

Duration in minutes

Required range: 1 <= x <= 1440
hidden_from_profile
boolean
required

Whether the event type is hidden from profile

color
string
required

Color code in hex format (e.g., #FF5733)

Pattern: ^#([A-Fa-f0-9]{6})$
description
string

Description of the event type

Maximum string length: 5000
max_group_size
integer

Maximum group size (required for group type, min: 2, max: 10)

Required range: 2 <= x <= 10
redirect_enabled
boolean

Whether bookings should redirect after confirmation

redirect_url
string<uri>

Redirect URL used when redirect is enabled

time_slot_interval
integer

Slot interval in minutes

Required range: 5 <= x <= 120
buffer_time_before_event
integer

Buffer before the event in minutes

Required range: 0 <= x <= 120
buffer_time_after_event
integer

Buffer after the event in minutes

Required range: 0 <= x <= 120
min_scheduling_notice
integer

Minimum scheduling notice amount

Required range: 0 <= x <= 43200
min_scheduling_notice_type
enum<string>

Unit for minimum scheduling notice

Available options:
minutes,
hours,
days
booking_frequency_limits
object[]

Optional booking limits by period

Maximum array length: 3
team_id
integer

Team ID (required for collective type)

Response

201 - application/json

Event type created

success
boolean
required

Indicates whether the request was successful

Example:

true

data
object
required

The response data. Can be an object, array, or null