Channels API
Channels are the core communication containers in LVNG. They hold messages, members, and digital twin assignments. Every message belongs to a channel, and channels belong to workspaces. All endpoints require JWT authentication and are rate-limited to 300 requests per minute.
Base path: /api/v2/channels
Channel CRUD
Create, read, update, and delete channels within a workspace.
/api/v2/channelsAuthenticatedList channels in a workspace. Includes aggregate counts for messages and members.
Query Parameters
workspace_idstringrequiredUUID of the workspace to list channels from.
typestringFilter by channel_type (e.g. text, voice, thread).
is_archivedbooleanFilter by archived status.
limitintegerMaximum channels to return.
offsetintegerNumber of channels to skip.
Request
400">curl -X 400">GET 400">class="text-emerald-400">"https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels?workspace_id=550e8400-e29b-41d4-a716-446655440000&limit=25" \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"channels": [
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"6ba7b810-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"550e8400-e29b-41d4-a716-446655440000",
400">class="text-emerald-400">"name": 400">class="text-emerald-400">"general",
400">class="text-emerald-400">"display_name": 400">class="text-emerald-400">"General",
400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Main workspace channel",
400">class="text-emerald-400">"channel_type": 400">class="text-emerald-400">"text",
400">class="text-emerald-400">"topic": null,
400">class="text-emerald-400">"is_archived": false,
400">class="text-emerald-400">"message_count": 1423,
400">class="text-emerald-400">"member_count": 8,
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-01-15T10:00:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T12:00:00.000Z"
},
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"6ba7b811-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"550e8400-e29b-41d4-a716-446655440000",
400">class="text-emerald-400">"name": 400">class="text-emerald-400">"engineering",
400">class="text-emerald-400">"display_name": 400">class="text-emerald-400">"Engineering",
400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Dev team discussions",
400">class="text-emerald-400">"channel_type": 400">class="text-emerald-400">"text",
400">class="text-emerald-400">"topic": 400">class="text-emerald-400">"Sprint 23 planning",
400">class="text-emerald-400">"is_archived": false,
400">class="text-emerald-400">"message_count": 892,
400">class="text-emerald-400">"member_count": 5,
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-02-01T09:00:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-18T16:30:00.000Z"
}
],
400">class="text-emerald-400">"pagination": {
400">class="text-emerald-400">"limit": 25,
400">class="text-emerald-400">"offset": 0,
400">class="text-emerald-400">"total": 2,
400">class="text-emerald-400">"hasMore": false
}
}/api/v2/channelsAuthenticatedCreate a new channel. Creator is auto-added as member for private channels.
Body Parameters
workspace_idstringrequiredUUID of the workspace.
namestringrequiredURL-safe channel name (lowercase, hyphens).
display_namestringHuman-readable display name.
descriptionstringChannel description.
channel_typestringrequiredChannel type: text, voice, thread, or dm.
topicstringCurrent topic displayed in the channel header.
parent_channel_idstringUUID of parent channel (for sub-channels).
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-d '{
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"550e8400-e29b-41d4-a716-446655440000",
400">class="text-emerald-400">"name": 400">class="text-emerald-400">"product-launches",
400">class="text-emerald-400">"display_name": 400">class="text-emerald-400">"Product Launches",
400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Coordinate product launch activities",
400">class="text-emerald-400">"channel_type": 400">class="text-emerald-400">"text"
}'Response 201
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"channel": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"f47ac10b-58cc-4372-a567-0e02b2c3d479",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"550e8400-e29b-41d4-a716-446655440000",
400">class="text-emerald-400">"name": 400">class="text-emerald-400">"product-launches",
400">class="text-emerald-400">"display_name": 400">class="text-emerald-400">"Product Launches",
400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Coordinate product launch activities",
400">class="text-emerald-400">"channel_type": 400">class="text-emerald-400">"text",
400">class="text-emerald-400">"topic": null,
400">class="text-emerald-400">"is_archived": false,
400">class="text-emerald-400">"parent_channel_id": null,
400">class="text-emerald-400">"created_by": 400">class="text-emerald-400">"a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-19T15:30:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T15:30:00.000Z"
}
}/api/v2/channels/:idAuthenticatedGet a channel with member count and message count. Checks access permissions.
Path Parameters
idstringrequiredUUID of the channel.
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8 \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"channel": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"6ba7b810-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"550e8400-e29b-41d4-a716-446655440000",
400">class="text-emerald-400">"name": 400">class="text-emerald-400">"general",
400">class="text-emerald-400">"display_name": 400">class="text-emerald-400">"General",
400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Main workspace channel",
400">class="text-emerald-400">"channel_type": 400">class="text-emerald-400">"text",
400">class="text-emerald-400">"topic": null,
400">class="text-emerald-400">"is_archived": false,
400">class="text-emerald-400">"member_count": 8,
400">class="text-emerald-400">"message_count": 1423,
400">class="text-emerald-400">"created_by": 400">class="text-emerald-400">"a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-01-15T10:00:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T12:00:00.000Z"
}
}/api/v2/channels/:idAuthenticatedUpdate channel properties. Requires owner, admin, or creator role.
Path Parameters
idstringrequiredUUID of the channel.
Body Parameters
display_namestringUpdated display name.
descriptionstringUpdated description.
topicstringUpdated channel topic.
is_archivedbooleanSet to true to archive the channel.
Request
400">curl -X 400">PATCH https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8 \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-d '{
400">class="text-emerald-400">"display_name": 400">class="text-emerald-400">"General Discussion",
400">class="text-emerald-400">"topic": 400">class="text-emerald-400">"Weekly standup notes and general chat"
}'Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"channel": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"6ba7b810-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"550e8400-e29b-41d4-a716-446655440000",
400">class="text-emerald-400">"name": 400">class="text-emerald-400">"general",
400">class="text-emerald-400">"display_name": 400">class="text-emerald-400">"General Discussion",
400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Main workspace channel",
400">class="text-emerald-400">"channel_type": 400">class="text-emerald-400">"text",
400">class="text-emerald-400">"topic": 400">class="text-emerald-400">"Weekly standup notes and general chat",
400">class="text-emerald-400">"is_archived": false,
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-01-15T10:00:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T15:35:00.000Z"
}
}/api/v2/channels/:idAuthenticatedDelete a channel. CASCADE deletes all related data (messages, members, pins). Broadcasts socket event.
Path Parameters
idstringrequiredUUID of the channel to delete.
Request
400">curl -X 400">DELETE https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/f47ac10b-58cc-4372-a567-0e02b2c3d479 \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"message": 400">class="text-emerald-400">"Channel deleted successfully"
}Channel Members
Manage channel membership. Members are validated against workspace membership before being added. Supports individual adds, bulk adds, role updates, and email-based invites.
/api/v2/channels/:id/membersAuthenticatedList all members of a channel. LEFT JOINs user profiles for display details.
Path Parameters
idstringrequiredUUID of the channel.
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/members \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"members": [
{
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
400">class="text-emerald-400">"display_name": 400">class="text-emerald-400">"Matty Squarzoni",
400">class="text-emerald-400">"email": 400">class="text-emerald-400">"matty@lvng.ai",
400">class="text-emerald-400">"avatar_url": 400">class="text-emerald-400">"https:400">class="text-zinc-500">//storage.lvng.ai/avatars/a0eebc99.jpg",
400">class="text-emerald-400">"role": 400">class="text-emerald-400">"admin",
400">class="text-emerald-400">"joined_at": 400">class="text-emerald-400">"2026-01-15T10:00:00.000Z"
},
{
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"b1ffc99a-0d1c-5fa9-cc7e-7cc0ce491b22",
400">class="text-emerald-400">"display_name": 400">class="text-emerald-400">"Sarah Chen",
400">class="text-emerald-400">"email": 400">class="text-emerald-400">"sarah@lvng.ai",
400">class="text-emerald-400">"avatar_url": null,
400">class="text-emerald-400">"role": 400">class="text-emerald-400">"member",
400">class="text-emerald-400">"joined_at": 400">class="text-emerald-400">"2026-01-16T09:30:00.000Z"
}
],
400">class="text-emerald-400">"count": 2
}/api/v2/channels/:id/membersAuthenticatedAdd a user to the channel. Validates workspace membership first.
Path Parameters
idstringrequiredUUID of the channel.
Body Parameters
user_idstringrequiredUUID of the user to add.
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/members \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-d '{
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"c2aad00b-1e2d-6gb0-dd8f-8dd1df502c33"
}'Response 201
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"member": {
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"c2aad00b-1e2d-6gb0-dd8f-8dd1df502c33",
400">class="text-emerald-400">"channel_id": 400">class="text-emerald-400">"6ba7b810-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"role": 400">class="text-emerald-400">"member",
400">class="text-emerald-400">"joined_at": 400">class="text-emerald-400">"2026-03-19T15:40:00.000Z"
}
}/api/v2/channels/:id/members/:userIdAuthenticatedUpdate a member's role within the channel.
Path Parameters
idstringrequiredUUID of the channel.
userIdstringrequiredUUID of the user to update.
Body Parameters
rolestringrequiredNew role: admin or member.
Request
400">curl -X 400">PATCH https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/members/b1ffc99a-0d1c-5fa9-cc7e-7cc0ce491b22 \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-d '{
400">class="text-emerald-400">"role": 400">class="text-emerald-400">"admin"
}'Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"member": {
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"b1ffc99a-0d1c-5fa9-cc7e-7cc0ce491b22",
400">class="text-emerald-400">"channel_id": 400">class="text-emerald-400">"6ba7b810-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"role": 400">class="text-emerald-400">"admin",
400">class="text-emerald-400">"joined_at": 400">class="text-emerald-400">"2026-01-16T09:30:00.000Z"
}
}/api/v2/channels/:id/members/:userIdAuthenticatedRemove a member from the channel.
Path Parameters
idstringrequiredUUID of the channel.
userIdstringrequiredUUID of the user to remove.
Request
400">curl -X 400">DELETE https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/members/c2aad00b-1e2d-6gb0-dd8f-8dd1df502c33 \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"message": 400">class="text-emerald-400">"Member removed successfully"
}/api/v2/channels/:id/inviteAuthenticatedInvite a user by email. Looks up the user and adds them if found.
Path Parameters
idstringrequiredUUID of the channel.
Body Parameters
emailstringrequiredEmail address to invite.
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/invite \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-d '{
400">class="text-emerald-400">"email": 400">class="text-emerald-400">"alex@example.com"
}'Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"added",
400">class="text-emerald-400">"member": {
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"d3bbe11c-2f3e-7hc1-ee9g-9ee2eg613d44",
400">class="text-emerald-400">"channel_id": 400">class="text-emerald-400">"6ba7b810-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"role": 400">class="text-emerald-400">"member",
400">class="text-emerald-400">"joined_at": 400">class="text-emerald-400">"2026-03-19T15:45:00.000Z"
}
}/api/v2/channels/:id/members/bulkAuthenticatedAdd up to 50 members in a single request. Uses UPSERT to avoid duplicates.
Path Parameters
idstringrequiredUUID of the channel.
Body Parameters
user_idsstring[]requiredArray of user UUIDs to add. Maximum 50.
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/members/bulk \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-d '{
400">class="text-emerald-400">"user_ids": [
400">class="text-emerald-400">"d3bbe11c-2f3e-7hc1-ee9g-9ee2eg613d44",
400">class="text-emerald-400">"e4ccf22d-3g4f-8id2-ff0h-0ff3fh724e55",
400">class="text-emerald-400">"f5ddg33e-4h5g-9je3-gg1i-1gg4gi835f66"
]
}'Response 201
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"members": [
{
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"d3bbe11c-2f3e-7hc1-ee9g-9ee2eg613d44",
400">class="text-emerald-400">"role": 400">class="text-emerald-400">"member",
400">class="text-emerald-400">"joined_at": 400">class="text-emerald-400">"2026-03-19T15:50:00.000Z"
},
{
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"e4ccf22d-3g4f-8id2-ff0h-0ff3fh724e55",
400">class="text-emerald-400">"role": 400">class="text-emerald-400">"member",
400">class="text-emerald-400">"joined_at": 400">class="text-emerald-400">"2026-03-19T15:50:00.000Z"
},
{
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"f5ddg33e-4h5g-9je3-gg1i-1gg4gi835f66",
400">class="text-emerald-400">"role": 400">class="text-emerald-400">"member",
400">class="text-emerald-400">"joined_at": 400">class="text-emerald-400">"2026-03-19T15:50:00.000Z"
}
],
400">class="text-emerald-400">"added": 3
}Digital Twins
Assign digital twins to channels. Twins process incoming messages and can respond based on their configuration and knowledge base.
/api/v2/channels/:id/twinsAuthenticatedList all digital twins assigned to a channel.
Path Parameters
idstringrequiredUUID of the channel.
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/twins \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"twins": [
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed",
400">class="text-emerald-400">"name": 400">class="text-emerald-400">"Research Assistant",
400">class="text-emerald-400">"participation_mode": 400">class="text-emerald-400">"active",
400">class="text-emerald-400">"assigned_at": 400">class="text-emerald-400">"2026-02-10T14:00:00.000Z"
}
]
}/api/v2/channels/:id/twinsAuthenticatedAssign a digital twin to the channel.
Path Parameters
idstringrequiredUUID of the channel.
Body Parameters
ai_twin_idstringrequiredUUID of the digital twin to assign.
participation_modestringHow the twin participates: active, passive, or on-demand.
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/twins \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-d '{
400">class="text-emerald-400">"ai_twin_id": 400">class="text-emerald-400">"2c0e7dce-ccge-5c3e-0c6e-bc9egcce5cfe",
400">class="text-emerald-400">"participation_mode": 400">class="text-emerald-400">"active"
}'Response 201
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"twin": {
400">class="text-emerald-400">"ai_twin_id": 400">class="text-emerald-400">"2c0e7dce-ccge-5c3e-0c6e-bc9egcce5cfe",
400">class="text-emerald-400">"channel_id": 400">class="text-emerald-400">"6ba7b810-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"participation_mode": 400">class="text-emerald-400">"active",
400">class="text-emerald-400">"assigned_at": 400">class="text-emerald-400">"2026-03-19T16:00:00.000Z"
}
}/api/v2/channels/:id/twins/:twinIdAuthenticatedRemove a digital twin from the channel.
Path Parameters
idstringrequiredUUID of the channel.
twinIdstringrequiredUUID of the twin to remove.
Request
400">curl -X 400">DELETE https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/twins/2c0e7dce-ccge-5c3e-0c6e-bc9egcce5cfe \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN"Response 200
{
400">class="text-emerald-400">"success": true
}Pinned Messages
Pin and unpin messages within a channel. Pinned state is stored in the message's metadata column as pinned: true.
/api/v2/channels/:id/messages/:messageId/pinAuthenticatedPin a message. Sets metadata.pinned=true on the message.
Path Parameters
idstringrequiredUUID of the channel.
messageIdstringrequiredUUID of the message to pin.
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/messages/7c9e6679-7425-40de-944b-e07fc1f90ae7/pin \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"message": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"7c9e6679-7425-40de-944b-e07fc1f90ae7",
400">class="text-emerald-400">"channel_id": 400">class="text-emerald-400">"6ba7b810-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"content": 400">class="text-emerald-400">"Q2 roadmap finalized. All features listed below are confirmed.",
400">class="text-emerald-400">"metadata": {
400">class="text-emerald-400">"pinned": true,
400">class="text-emerald-400">"pinned_by": 400">class="text-emerald-400">"a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
400">class="text-emerald-400">"pinned_at": 400">class="text-emerald-400">"2026-03-19T16:10:00.000Z"
},
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T16:10:00.000Z"
}
}/api/v2/channels/:id/messages/:messageId/pinAuthenticatedUnpin a message. Strips pinned fields from metadata.
Path Parameters
idstringrequiredUUID of the channel.
messageIdstringrequiredUUID of the message to unpin.
Request
400">curl -X 400">DELETE https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/messages/7c9e6679-7425-40de-944b-e07fc1f90ae7/pin \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"message": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"7c9e6679-7425-40de-944b-e07fc1f90ae7",
400">class="text-emerald-400">"channel_id": 400">class="text-emerald-400">"6ba7b810-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"content": 400">class="text-emerald-400">"Q2 roadmap finalized. All features listed below are confirmed.",
400">class="text-emerald-400">"metadata": {},
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T16:12:00.000Z"
}
}/api/v2/channels/:id/pinsAuthenticatedList all pinned messages in a channel. Filters by metadata->>pinned='true'.
Path Parameters
idstringrequiredUUID of the channel.
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/channels/6ba7b810-9dad-11d1-80b4-00c04fd430c8/pins \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_JWT_TOKEN"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"pins": [
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"7c9e6679-7425-40de-944b-e07fc1f90ae7",
400">class="text-emerald-400">"channel_id": 400">class="text-emerald-400">"6ba7b810-9dad-11d1-80b4-00c04fd430c8",
400">class="text-emerald-400">"content": 400">class="text-emerald-400">"Q2 roadmap finalized. All features listed below are confirmed.",
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
400">class="text-emerald-400">"metadata": {
400">class="text-emerald-400">"pinned": true,
400">class="text-emerald-400">"pinned_by": 400">class="text-emerald-400">"a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
400">class="text-emerald-400">"pinned_at": 400">class="text-emerald-400">"2026-03-19T16:10:00.000Z"
},
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-19T14:30:00.000Z"
}
],
400">class="text-emerald-400">"count": 1
}