/v1/event-types
Read access to the account's event types. There are no public write endpoints
yet. Create, update, and delete are scoped (event_types:create,
event_types:update, event_types:delete) but not yet implemented; manage
event types from the Event Types page in the meantime.
Even though there's no write API, you can still track changes in real
time: editing, toggling on/off, or deleting an event type in the dashboard
emits the event_type.updated / event_type.deleted
webhooks. The event_type.updated payload is
byte-identical to GET /v1/event-types/:idOrSlug
below (locations, questions[], limits and all), so an integration can keep
its own mirror of your catalog in sync without polling.
GET /v1/event-types
List event types in the authenticated account.
| Method | GET |
| URL | https://api.42min.us/v1/event-types |
| Scope | event_types:read |
| Auth | Required |
Query parameters
| Param | Type | Notes |
|---|---|---|
limit | integer | Page size. Default 20, max 100. |
cursor | string | Opaque cursor from a prior response's meta.next_cursor. |
sort | string | created_at_desc (default), created_at_asc, or title_asc. |
user_id | UUID | Filter to event types owned by one user. |
slug | string | Filter by exact slug. |
active | boolean | true → status=on; false → status=off. Omit to include both. |
Response
{
"data": [
{
"id": "01HXXX…",
"slug": "intro-call",
"title": "Intro call",
"description": "30-minute introduction.",
"duration_minutes": 30,
"active": true,
"scheduling_type": "individual",
"hosts": [
{ "user_id": "01H…", "username": "ada", "name": "Ada Lovelace" }
],
"url": "https://42min.us/ada/intro-call",
"color": "#7c3aed",
"buffer_before_minutes": 0,
"buffer_after_minutes": 0,
"minimum_notice_hours": 4,
"future_limit_days": 60,
"timezone": "Europe/London",
"created_at": "2026-04-01T10:12:34.000Z",
"updated_at": "2026-05-02T08:00:00.000Z"
}
],
"meta": {
"request_id": "req_…",
"next_cursor": "eyJpZCI6Ii4uLiJ9",
"has_more": true
}
}
Field notes:
scheduling_type:individual(1:1),group(one host, many invitees), orcollective(round-robin distribution among a team).hosts: one entry for a 1:1 type; for round-robin types, the team members that can be assigned.url: the live booking page on the marketing host.nullif no host username is set.minimum_notice_hoursis rounded from minutes; the underlying field is per-minute.
curl
curl -H "Authorization: Bearer $TOKEN" \
"https://api.42min.us/v1/event-types?active=true&limit=50"
GET /v1/event-types/:idOrSlug
Return one event type with the full detail shape: locations, questions, and limits.
| Method | GET |
| URL | https://api.42min.us/v1/event-types/{id-or-slug} |
| Scope | event_types:read |
| Auth | Required |
Path parameter
{id-or-slug}: either a UUID, orusername/event-slug(URL-decoded by the router; passusername%2Fevent-slugin URLs).
Response
{
"data": {
"id": "01HXXX…",
"slug": "intro-call",
"title": "Intro call",
"description": "30-minute introduction.",
"duration_minutes": 30,
"active": true,
"scheduling_type": "individual",
"hosts": [{ "user_id": "01H…", "username": "ada", "name": "Ada Lovelace" }],
"url": "https://42min.us/ada/intro-call",
"color": "#7c3aed",
"buffer_before_minutes": 5,
"buffer_after_minutes": 5,
"minimum_notice_hours": 4,
"future_limit_days": 60,
"timezone": "Europe/London",
"locations": [
{ "type": "google_meet", "label": "Google Meet", "value": null }
],
"questions": [
{ "id": "01Q…", "key": "01Q…", "label": "Phone number", "type": "short_text", "required": false }
],
"max_bookings_per_day": 8,
"max_bookings_per_week": null,
"max_bookings_per_month": null,
"requires_confirmation": false,
"allow_reschedule": true,
"allow_cancel": true,
"created_at": "2026-04-01T10:12:34.000Z",
"updated_at": "2026-05-02T08:00:00.000Z"
},
"meta": { "request_id": "req_…" }
}
Field notes:
locations[].typeis one ofgoogle_meet,microsoft_teams,custom_url,phone,physical,ask_invitee.questions[].keyandidare the same value today, andidis reused as the stable key for booking-form responses.requires_confirmationis alwaysfalse; the feature isn't modelled yet.
curl
# By UUID
curl -H "Authorization: Bearer $TOKEN" \
https://api.42min.us/v1/event-types/01HXXX…
# By username/slug
curl -H "Authorization: Bearer $TOKEN" \
https://api.42min.us/v1/event-types/ada%2Fintro-call
Common errors
400 invalid_query_param: path segment is neither a UUID norusername/event-slug.404 event_type_not_found: no such event type in this account.
Last updated May 19, 2026.