Meeting Types
Update a meeting type
Partial update (`name`, `emoji`). **Requires `Idempotency-Key`.** Returns the updated entity: `{ data: { meeting_type: {...} } }`.
PATCH /v2/meeting-types/{meetingTypeId}
Parameters
Path parameters
meetingTypeId
string (uuid) required
Header parameters
Idempotency-Key
string required
Required. UUID per logical operation, reused on every retry. See
apps/rest-api/src/shared/idempotency.ts for the full contract. Missing → 400 BadRequest; same key + different body → 409 Conflict.Request body
Content-Type: application/json
name
string
emoji
string
Example
{
"name": "string",
"emoji": "string"
}
Responses
200 — Successful response
Content-Type: application/json
data
object required
data.meeting_type
object required
data.meeting_type.id
string (uuid) required
data.meeting_type.user_id
string
data.meeting_type.name
string required
data.meeting_type.emoji
string | null
data.meeting_type.created_at
string (date-time) required
Example
{
"data": {
"meeting_type": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"created_at": "2026-08-21T15:31:00.991Z"
}
}
}
400
No response body.
401
No response body.
403
No response body.
404
No response body.
409
No response body.
429
No response body.
500
No response body.
Code samples
curl https://api.prod.getdex.com/v2/meeting-types/00000000-0000-0000-0000-000000000000 \
--request PATCH \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"emoji": "string"
}'
fetch('https://api.prod.getdex.com/v2/meeting-types/00000000-0000-0000-0000-000000000000', {
method: 'PATCH',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'string',
emoji: 'string'
})
})
requests.patch(
"https://api.prod.getdex.com/v2/meeting-types/00000000-0000-0000-0000-000000000000",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"name": "string",
"emoji": "string"
}
)
Create a meeting type
Create ONE meeting type from `{ name, emoji? }`. Names are unique per user — a duplicate returns 400. **Requires `Idempotency-Key`.** Returns `{ data: { meeting_type: {...} } }` with status 201.
Delete a meeting type
Permanently delete a meeting type. Pass `?reassign_to=<meetingTypeId>` to move the type's existing notes onto another type; omit it and they fall back to the plain 'note' type. Both happen in one tran

