Create an event type

POST
/v1/scheduling/event_types

What can be booked: one_on_one with one host, pool for any free host, collective when every required host must be free, or group for a session with seats.

Authorization

bearerAuth
headerAuthorizationBearer <token>

A secret API key from the dashboard: coss_live_… for production environments, coss_test_… for sandbox environments.

Header Parameters

Coss-Version?"2026-10-10"

The API version (a date) to use for this request. Defaults to your organization's version, pinned to the latest one when it first used the API and upgraded from the dashboard. The SDK always sends the version it was built for.

Value in"2026-10-10"

Request Body

application/json
  1. body
uid?string
Length1 <= length <= 255
kind?string
Default"one_on_one"
Value in"one_on_one""pool""collective""group"
title*string

Shown to attendees and in emails. Host calendars always show a neutral title.

Length1 <= length <= 120
duration_minutes*integer
Range5 <= value <= 1440
duration_options?array<>
Itemsitems <= 10
step_minutes?integer

How far apart slots start. Default: the duration.

Range5 <= value <= 1440
grid_time_zone?|

The zone slots align in. Default: each host's own.

Length1 <= length <= 64
buffer_before_minutes?integer
Range0 <= value <= 480
buffer_after_minutes?integer
Range0 <= value <= 480
min_notice_minutes?integer
Range0 <= value <= 525600
booking_window?||null
limits?array<>
Itemsitems <= 4
capacity?|

Attendees per session. Required for, and only allowed on, group.

Range2 <= value <= 10000
requires_approval?boolean
approval_ttl_minutes?integer
Range5 <= value <= 43200
hold_ttl_seconds?integer
Range60 <= value <= 86400
cancel_notice_minutes?integer

Attendees can't cancel closer to the start than this. API keys can.

Range0 <= value <= 525600
reschedule_notice_minutes?integer
Range0 <= value <= 525600
questions?array<>
Itemsitems <= 25
locations?array<||||>
Itemsitems <= 10
host_filter?|

Pool members also include active hosts matching all of these attributes.

metadata?

Your own key-value pairs. Don't put sensitive data here.

hosts?array<>
Itemsitems <= 500
Default[]

Response Body

The event type.

application/json
  1. response
object*"scheduling.event_type"
Value in"scheduling.event_type"
id*string
uid*string|null
title*string
kind*string
Value in"one_on_one""pool""collective""group"
status*string
Value in"active""archived"
duration_minutes*number
duration_options*array<number>
step_minutes*number
grid_time_zone*string|null
buffer_before_minutes*number
buffer_after_minutes*number
min_notice_minutes*number
booking_window*||null
limits*array<>
capacity*number|null
requires_approval*boolean
approval_ttl_minutes*number
hold_ttl_seconds*number
cancel_notice_minutes*number
reschedule_notice_minutes*number
questions*array<>
locations*array<||||>
host_filter*|null
hosts*array<>
metadata*
created_at*string
updated_at*string
import { Coss } from "coss";const coss = new Coss({  apiKey: process.env.COSS_API_KEY,  baseUrl: "https://api.coss.com",});const { data, error } = await coss.scheduling.eventTypes.create({  title: "Initial consultation",  kind: "one_on_one",  duration_minutes: 30,  buffer_after_minutes: 10,  min_notice_minutes: 120,  hosts: [    {      host: "doctor_482",    },  ],});
{  "object": "scheduling.event_type",  "id": "evtype_01kd2m9a0b1c2d3e4f5g6h7j8m",  "uid": null,  "title": "Initial consultation",  "kind": "one_on_one",  "status": "active",  "duration_minutes": 30,  "duration_options": [],  "step_minutes": 30,  "grid_time_zone": null,  "buffer_before_minutes": 0,  "buffer_after_minutes": 10,  "min_notice_minutes": 120,  "booking_window": null,  "limits": [],  "capacity": null,  "requires_approval": false,  "approval_ttl_minutes": 1440,  "hold_ttl_seconds": 600,  "cancel_notice_minutes": 0,  "reschedule_notice_minutes": 0,  "questions": [],  "locations": [],  "host_filter": null,  "hosts": [    {      "host": "host_01kd2m9a0b1c2d3e4f5g6h7j8m",      "role": "member",      "weight": 100,      "schedule": null    }  ],  "metadata": {},  "created_at": "2027-01-01T10:00:00.000Z",  "updated_at": "2027-01-01T10:00:00.000Z"}