Timeline

Create a note

Create a note (a `timeline_items` row) optionally linked to contacts. Returns the created note in the canonical single-entity envelope.

POST /v2/timeline/notes

Parameters

Query parameters

include
object

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

note
object required
note.note
string
note.custom_emoji
string
note.event_time
any required
note.meeting_type
string enum
Possible values: "call", "coffee", "email", "meal", "meeting", "networking", "note", "other", "party", "text"
note.meeting_type_id
string (uuid)
note.meeting_types
any
note.attachments
array<object>
note.attachments[].id
string (uuid)
note.attachments[].url
string (uri)
note.attachments[].file_name
string
note.attachments[].file_size
number
note.timeline_items_contacts
array<object>
note.timeline_items_contacts[].contact_id
string (uuid)
note.timeline_items_contacts[].contacts
any
note.id
string (uuid)
note.google_calendar_event_id_v3
string
note.oauth_credential_id
string (uuid)
note.reminder_id
string (uuid)

Example

{
  "note": {
    "event_time": null
  }
}

Responses

201 — Created

Content-Type: application/json

data
object required
data.note
object required
data.note.id
string (uuid) required
data.note.user_id
string
data.note.note
string | null
data.note.custom_emoji
string | null
data.note.meeting_type
string | null
data.note.meeting_type_id
string (uuid) | null
data.note.event_time
string (date-time)
data.note.created_at
string (date-time)
data.note.google_calendar_event_id_v3
string | null
data.note.oauth_credential_id
string (uuid) | null
data.note.calendar_account_email
string | null
data.note.calendar_account_provider
string enum
Possible values: "GOOGLE", "OFFICE365"
data.note.reminder_id
string (uuid) | null
data.note.channels
array<string enum> required
data.note.next_cursor
string
data.note.meeting_types
object | null required
data.note.timeline_items_contacts
array<object>
data.note.attachments
array<object>

Example

{
  "data": {
    "note": {
      "id": "00000000-0000-0000-0000-000000000000",
      "channels": [
        "whatsapp"
      ],
      "meeting_types": {}
    }
  }
}

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/timeline/notes \
  --request POST \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "note": {
    "event_time": null
  }
}'
Copyright © 2026