Skip to main content

Threads API

Realtime chat channels that hang off a live Meeting. Every Meeting starts with one default thread (main) and - just like a Slack channel - any client can spin up extra threads on‑the‑fly (/v1/meetings/{meeting_id}/threads). Use them to separate side‑bars (qa‑chat), action‑items, or Assistant‑only command lanes.

Looking for auth, base URLs, pagination, or error formats? Head over to API Foundations.

Endpoints at a glance

Method & PathPurpose
POST /v1/meetings/{meeting_id}/threadsCreate a new thread
GET /v1/meetings/{meeting_id}/threads/{id}Show a single thread
PATCH /v1/meetings/{meeting_id}/threads/{id}Update metadata or rename

Real‑world hook: Daily Scrum Assistant auto‑flags new blockers in the blockers thread while the team is still in the stand‑up.

Thread object schema

FieldTypeDescription
idstringUnique identifier, prefixed th_.
meeting_idstringParent Meeting.
namestringHuman‑friendly label ("main", "action‑items").
created_attimestampWhen the thread was instantiated (ISO‑8601 UTC).
closed_attimestampWhen the meeting ended - after this point the thread becomes read‑only.
readonlybooleantrue once closed_at is set or thread manually locked.
message_countintegerNumber of messages currently stored.
metadataobjectFree‑form (< 8 KB) JSON for your integrations.

Thread statuses

Threads have no separate lifecycle events; instead readonly = false/true tells you if writing is allowed. Posting into a read‑only thread yields thread_readonly.

Create a Thread

POST /v1/meetings/{meeting_id}/threads

Body parameters

FieldTypeDescription
namestringHuman‑friendly label ("main", "action‑items").
metadataobject?Free‑form (< 8 KB) JSON for your integrations.

Example request

curl -X POST https://api.voilo.io/meetings/meeting_123/threads \
-H "Authorization: Bearer $VOILO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "blockers",
"metadata": { "jira_epic": "AI‑123" }
}'

Response 201 Created

{
"id": "th_blockers",
"meeting_id": "meeting_123",
"name": "blockers",
"created_at": "2025-06-17T11:44:12Z",
"readonly": false,
"message_count": 0,
"metadata": { "jira_epic": "AI‑123" }
}

Show a Thread

GET /v1/meetings/{meeting_id}/threads/{id}

Example request

curl -X GET https://api.voilo.io/meetings/meeting_123/threads/th_blockers \
-H "Authorization: Bearer $VOILO_API_KEY"

200 OK – returns the Thread object.

404 Not Found – if the thread doesn’t exist.

Update a Thread (rename / metadata)

PATCH /v1/meetings/{meeting_id}/threads/{id}
Body paramTypeNotes
namestring?Change the display name.
metadataobject?Replace entire metadata blob.

Example request

curl -X PATCH https://api.voilo.io/meetings/meeting_123/threads/th_blockers \
-H "Authorization: Bearer $VOILO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "blockers",
"metadata": { "jira_epic": "AI‑123" }
}'

200 OK – returns the Thread object.

See also