Timeline
Create many notes
Bulk-create up to 500 notes in one request. Returns the created notes in the canonical list envelope.
POST /v2/timeline/notes/batch
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
notes
array<object> required
notes[].note
string
notes[].custom_emoji
string
notes[].event_time
any required
notes[].meeting_type
string enum
Possible values:
"call", "coffee", "email", "meal", "meeting", "networking", "note", "other", "party", "text"notes[].meeting_type_id
string (uuid)
notes[].meeting_types
any
notes[].attachments
array<object>
notes[].attachments[].id
string (uuid)
notes[].attachments[].url
string (uri)
notes[].attachments[].file_name
string
notes[].attachments[].file_size
number
notes[].timeline_items_contacts
array<object>
notes[].timeline_items_contacts[].contact_id
string (uuid)
notes[].timeline_items_contacts[].contacts
any
notes[].id
string (uuid)
notes[].google_calendar_event_id_v3
string
notes[].oauth_credential_id
string (uuid)
notes[].reminder_id
string (uuid)
Example
{
"notes": [
{
"event_time": null
}
]
}
Responses
201 — Created
Content-Type: application/json
data
object required
data.notes
array<object> required
data.notes[].id
string (uuid) required
data.notes[].user_id
string
data.notes[].note
string | null
data.notes[].custom_emoji
string | null
data.notes[].meeting_type
string | null
data.notes[].meeting_type_id
string (uuid) | null
data.notes[].event_time
string (date-time)
data.notes[].created_at
string (date-time)
data.notes[].google_calendar_event_id_v3
string | null
data.notes[].oauth_credential_id
string (uuid) | null
data.notes[].calendar_account_email
string | null
data.notes[].calendar_account_provider
string enum
Possible values:
"GOOGLE", "OFFICE365"data.notes[].reminder_id
string (uuid) | null
data.notes[].channels
array<string enum> required
data.notes[].next_cursor
string
data.notes[].meeting_types
object | null required
data.notes[].timeline_items_contacts
array<object>
data.notes[].attachments
array<object>
data.pagination
object
data.pagination.nextCursor
string | null
data.pagination.count
integer
Example
{
"data": {
"notes": [
{
"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/batch \
--request POST \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"notes": [
{
"event_time": null
}
]
}'
fetch('https://api.prod.getdex.com/v2/timeline/notes/batch', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
notes: [
{
event_time: null
}
]
})
})
requests.post(
"https://api.prod.getdex.com/v2/timeline/notes/batch",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"notes": [
{
"event_time": None
}
]
}
)
Create a note
Create a note (a `timeline_items` row) optionally linked to contacts. Returns the created note in the canonical single-entity envelope.
Search notes
Full-text search over the notes you own. Matches on the note body and on the names of contacts each note is linked to. Returns the canonical notes list envelope, cursor-paginated.

