Talk

Real-time chat and messaging between agents and customers, with support for multiple participants and message history.

API Reference: Talk endpoints

Overview

Note

AI Context

  • Complexity: Low

  • Cost: Free – Talk messaging does not incur per-message charges.

  • Async: No. POST https://api.voipbin.net/v1.0/service_agents/talk_chats and POST https://api.voipbin.net/v1.0/service_agents/talk_messages return synchronously with the created resource. Real-time delivery to other participants is handled via WebSocket push events.

VoIPBIN’s Talk API provides a modern messaging platform for real-time communication between agents. With support for threading, reactions, and group conversations, Talk enables efficient team collaboration and internal communication.

With the Talk API you can:

  • Create one-on-one and group conversations

  • Send messages with threading support

  • Add emoji reactions to messages

  • Attach media files to messages

  • Manage participants dynamically

How Talk Works

Talk provides a real-time messaging system where agents communicate through conversations called “talks.”

Talk Architecture

+----------+        +----------------+        +-----------+
| Agent A  |--API-->|    VoIPBIN     |--push->| Agent B   |
+----------+        |   Talk Hub     |        +-----------+
                    +----------------+
                           |
                    +------+------+
                    |  WebSocket  |
                    |  (real-time)|
                    +-------------+
                           |
          +----------------+----------------+
          v                v                v
     +---------+      +---------+      +---------+
     | Agent C |      | Agent D |      | Agent E |
     +---------+      +---------+      +---------+

Key Components

  • Talk: A conversation container with participants and messages

  • Participant: An agent who can send and receive messages in a talk

  • Message: Text, media, or system notifications within a talk

  • Thread: Messages grouped as replies to a parent message

Chat Types

VoIPBIN supports different chat types for various communication needs.

Chat Type Values

Type

Description

direct

1:1 Direct Message – private between two users

group

Group Direct Message – private multi-user chat, invite-only

talk

Public Open Channel – topic-based, searchable (e.g., #general)

Direct Chat (1:1)

Private conversation between two agents.

+-------------------------+
|      Talk (1:1)         |
+-------------------------+
|                         |
|  +---------+            |
|  | Agent A |<--------+  |
|  +---------+         |  |
|       |              |  |
|       v              |  |
|  +---------+         |  |
|  | Agent B |---------+  |
|  +---------+            |
|                         |
+-------------------------+

Group Chat

Multi-participant conversation for team discussions.

+---------------------------------------+
|            Talk (Group)               |
+---------------------------------------+
|                                       |
|  +---------+  +---------+  +-------+  |
|  | Agent A |  | Agent B |  | Agent |  |
|  +---------+  +---------+  |   C   |  |
|       |           |        +-------+  |
|       |           |            |      |
|       +-----+-----+------------+      |
|             |                         |
|             v                         |
|      +-------------+                  |
|      | All receive |                  |
|      |  messages   |                  |
|      +-------------+                  |
|                                       |
+---------------------------------------+

Chat Lifecycle

Chats are created and managed through the Talk API. Participants can be added and removed.

Note

AI Implementation Hint

The Talk API uses /service_agents/talk_chats for chat management and /service_agents/talk_messages for messaging. The owner_id for participants must be a valid agent UUID obtained from GET https://api.voipbin.net/v1.0/agents. Only agents who are participants of a chat can send or view messages.

Chat Flow

POST /service_agents/talk_chats
          |
          v
   +------------+
   |   Chat     |
   |  created   |
   +-----+------+
         |
         v
  Add participants,
  send messages,
  manage threads

Participant Management

POST /service_agents/talk_chats/{id}/participants
          |
          v
   +------------+
   | Participant|
   |   added    |
   +-----+------+
         |
         | DELETE /service_agents/talk_chats/{id}/participants/{pid}
         v
   +------------+
   | Participant|
   |  removed   |
   +------------+

Creating and Managing Chats

Create chats and manage participants through the Talk API.

Create a Chat

$ curl -X POST 'https://api.voipbin.net/v1.0/service_agents/talk_chats?token=<token>' \
    --header 'Content-Type: application/json' \
    --data '{
        "type": "group",
        "name": "Project Discussion",
        "participants": [
            {
                "owner_type": "agent",
                "owner_id": "agent-uuid-1"
            },
            {
                "owner_type": "agent",
                "owner_id": "agent-uuid-2"
            }
        ]
    }'

Add Participant

$ curl -X POST 'https://api.voipbin.net/v1.0/service_agents/talk_chats/<chat-id>/participants?token=<token>' \
    --header 'Content-Type: application/json' \
    --data '{
        "owner_type": "agent",
        "owner_id": "agent-uuid-3"
    }'

Remove Participant

$ curl -X DELETE 'https://api.voipbin.net/v1.0/service_agents/talk_chats/<chat-id>/participants/<participant-id>?token=<token>'

Sending Messages

Send messages within talks with support for threading and media.

Send a Message

Agent                                   VoIPBIN              Other Participants
   |                                       |                        |
   | POST /service_agents/talk_messages    |                        |
   +-------------------------------------->|                        |
   |                                       | Broadcast via WebSocket|
   |                                       +----------------------->|
   |  message_id                           |                        |
   |<--------------------------------------+                        |
   |                                       |                        |

Basic Message Example:

$ curl -X POST 'https://api.voipbin.net/v1.0/service_agents/talk_messages?token=<token>' \
    --header 'Content-Type: application/json' \
    --data '{
        "chat_id": "<chat-id>",
        "type": "normal",
        "text": "Hello team, let'\''s discuss the project status."
    }'

Reply to Message (Threading):

$ curl -X POST 'https://api.voipbin.net/v1.0/service_agents/talk_messages?token=<token>' \
    --header 'Content-Type: application/json' \
    --data '{
        "chat_id": "<chat-id>",
        "type": "normal",
        "text": "I agree, we should prioritize the API work.",
        "parent_id": "parent-message-id"
    }'

Message with Media:

$ curl -X POST 'https://api.voipbin.net/v1.0/service_agents/talk_messages?token=<token>' \
    --header 'Content-Type: application/json' \
    --data '{
        "chat_id": "<chat-id>",
        "type": "normal",
        "text": "Here is the design document.",
        "medias": [
            {
                "type": "file",
                "file_id": "<file-uuid>"
            }
        ]
    }'

Message Threading

Threading organizes conversations by grouping related messages.

Thread Structure

+---------------------------------------------------------------+
|  Talk: "Project Discussion"                                   |
+---------------------------------------------------------------+
|                                                               |
|  [Message 1] "What's the status of the API integration?"      |
|       |                                                       |
|       +-- [Reply 1.1] "Working on authentication now"         |
|       |                                                       |
|       +-- [Reply 1.2] "Should be done by Friday"              |
|       |                                                       |
|       +-- [Reply 1.3] "Great, let me know if you need help"   |
|                                                               |
|  [Message 2] "Meeting tomorrow at 2pm"                        |
|       |                                                       |
|       +-- [Reply 2.1] "I'll be there"                         |
|                                                               |
+---------------------------------------------------------------+

Thread Benefits

  • Keeps related discussions organized

  • Easy to follow conversation context

  • Reduces noise in main talk view

Message Reactions

Add emoji reactions to messages for quick feedback.

Add Reaction

$ curl -X POST 'https://api.voipbin.net/v1.0/service_agents/talk_messages/<message-id>/reactions?token=<token>' \
    --header 'Content-Type: application/json' \
    --data '{
        "emoji": "thumbsup"
    }'

Reaction Display

+-----------------------------------------------+
| [Agent A] "The deployment was successful!"    |
|                                               |
|  👍 3   🎉 2   ❤️ 1                           |
+-----------------------------------------------+

Common Reactions

Emoji

Common Use

👍

Agreement, acknowledgment

👎

Disagreement

❤️

Appreciation, love

🎉

Celebration, success

👀

Looking into it

Done, completed

Message Types

Messages can be different types based on their origin.

Normal Messages

Regular messages sent by agents.

{
    "type": "normal",
    "agent_id": "agent-123",
    "text": "Let's schedule a call tomorrow."
}

System Messages

Automated notifications about talk events.

{
    "type": "system",
    "text": "Agent B joined the conversation."
}

{
    "type": "system",
    "text": "Agent C left the conversation."
}

Real-Time Updates

Receive real-time message updates via WebSocket.

WebSocket Connection

Agent                          VoIPBIN
   |                              |
   | WebSocket connect            |
   +----------------------------->|
   |                              |
   | Subscribe to talk events     |
   +----------------------------->|
   |                              |
   |<==== chatmessage_created ====|
   |<==== chat_created ===========|
   |<==== chatparticipant_added ==|
   |                              |

Event Types

Event

When it fires

chat_created

New chat session created

chat_updated

Chat session details updated

chat_deleted

Chat session deleted

chatmessage_created

New message sent to chat

chatmessage_deleted

Message removed from chat

chatmessage_reaction_updated

Reaction added or removed on a message

chatparticipant_added

Participant joined the chat

chatparticipant_removed

Participant left the chat

Common Scenarios

Scenario 1: Team Project Discussion

Create a group talk for project collaboration.

1. Create chat with team members
   POST /service_agents/talk_chats
   { "type": "group", "name": "Q1 Project", "participants": [...] }

2. Send updates as messages
   POST /service_agents/talk_messages
   { "chat_id": "<chat-id>", "type": "normal", "text": "Sprint 1 completed!" }

3. Team reacts and replies in threads
   - Reactions: 🎉 👍
   - Thread: "Great work! What's next?"

Scenario 2: Quick Decision

Use reactions for quick polls.

[Agent A] "Should we deploy today? 👍 for yes, 👎 for no"
     |
     +-- 👍 Agent B
     +-- 👍 Agent C
     +-- 👍 Agent D
     +-- 👎 Agent E
     |
Result: 3-1, deploy approved

Scenario 3: Support Escalation

Internal discussion about customer issue.

+------------------------------------------------+
| Talk: "Customer Issue #12345"                  |
+------------------------------------------------+
|                                                |
| [Agent A] "Customer reporting payment failure" |
|                                                |
| [Agent B] "Let me check the logs"              |
|     |                                          |
|     +-- [Reply] "Found it - gateway timeout"   |
|     +-- [Reply] "Retrying the transaction"     |
|                                                |
| [Agent A] "Customer confirmed it works now"    |
|     👍 Agent B                                 |
|                                                |
+------------------------------------------------+

Best Practices

1. Talk Organization

  • Use descriptive talk names

  • Create separate talks for different topics

  • Archive inactive talks

2. Threading

  • Reply in threads to keep discussions organized

  • Use threads for detailed discussions

  • Keep main talk for announcements and new topics

3. Reactions

  • Use reactions for quick acknowledgments

  • Avoid over-reacting to every message

  • Use consistent reaction meanings in your team

4. Media Sharing

  • Use descriptive filenames

  • Keep file sizes reasonable

  • Reference shared files in message text

Troubleshooting

Message Issues

Symptom

Solution

Message not delivered

Check agent is participant in talk; verify WebSocket connection

Thread not showing

Verify parent_id is correct; check message exists

Media not loading

Check URL accessibility; verify file format

Participant Issues

Symptom

Solution

Can’t add participant

Verify agent exists; check talk is active

Not receiving messages

Check participant status; verify WebSocket subscription

Talk

Talk

{
    "id": "<string>",
    "customer_id": "<string>",
    "type": "<string>",
    "name": "<string>",
    "detail": "<string>",
    "member_count": "<integer>",
    "tm_create": "<string>",
    "tm_update": "<string>",
    "tm_delete": "<string>"
}
  • id (UUID): The talk’s unique identifier. Returned when creating via POST /service_agents/talk_chats or listing via GET /service_agents/talk_chats.

  • customer_id (UUID): The customer’s unique identifier. Obtained from GET /customers.

  • type (enum string): The talk’s type. See Type.

  • name (String): The talk’s name or title (e.g., “General”, “Project Alpha”).

  • detail (String): Additional description or context for the talk.

  • member_count (Integer): The number of members currently in the talk.

  • tm_create (string, ISO 8601): Timestamp when the talk was created.

  • tm_update (string, ISO 8601): Timestamp when the talk was last updated.

  • tm_delete (string, ISO 8601): Timestamp when the talk was deleted (soft delete).

Note

AI Implementation Hint

A tm_delete value of 9999-01-01 00:00:00.000000 means the talk has not been deleted. An empty string "" also indicates the talk is active.

Example

{
    "id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
    "type": "direct",
    "name": "Project Alpha",
    "detail": "Discussion channel for Project Alpha",
    "member_count": 3,
    "tm_create": "2024-01-17 10:30:00.000000",
    "tm_update": "2024-01-17 10:30:00.000000",
    "tm_delete": ""
}

Type

Talk’s type determines the chat channel style.

Type

Description

direct

1:1 direct message between two users. Private conversation.

group

Group direct message. Private multi-user chat, invite-only.

talk

Public open channel. Topic-based and searchable (e.g., #general, #random).

Message

Message

{
    "id": "<string>",
    "customer_id": "<string>",
    "owner_type": "<string>",
    "owner_id": "<string>",
    "chat_id": "<string>",
    "parent_id": "<string>",
    "type": "<string>",
    "text": "<string>",
    "medias": [
        {
            "type": "<string>"
        }
    ],
    "metadata": {
        "reactions": [
            {
                "emoji": "<string>",
                "owner_type": "<string>",
                "owner_id": "<string>",
                "tm_create": "<string>"
            }
        ]
    },
    "tm_create": "<string>",
    "tm_update": "<string>",
    "tm_delete": "<string>"
}
  • id (UUID): The message’s unique identifier. Returned when creating via POST /service_agents/talk_messages or listing via GET /service_agents/talk_messages.

  • customer_id (UUID): The customer’s unique identifier. Obtained from GET /customers.

  • owner_type (enum string): Type of the message owner. Currently only "agent" for user-sent messages, or "system" for system-generated messages.

  • owner_id (UUID): The agent’s unique identifier who sent the message. Obtained from GET /agents.

  • chat_id (UUID): The talk’s unique identifier that this message belongs to. Obtained from GET /service_agents/talk_chats.

  • parent_id (UUID, optional): Parent message ID for threaded replies. Must be the id of an existing message in the same talk. Omit or set to empty string for top-level messages.

  • type (enum string): Message type. See Type.

  • text (String): Message text content.

  • medias (Array of Object): Array of media attachments. Each object contains type (MIME type string), url (String), and name (String).

  • metadata (Object): Message metadata including reactions. Contains a reactions array.

  • tm_create (string, ISO 8601): Timestamp when the message was created.

  • tm_update (string, ISO 8601): Timestamp when the message was last updated.

  • tm_delete (string, ISO 8601): Timestamp when the message was deleted (soft delete).

Note

AI Implementation Hint

A tm_delete value of empty string "" means the message has not been deleted. To create a threaded reply, set parent_id to the id of the message you want to reply to. The parent message must exist in the same talk.

Example

{
    "id": "a3c5e8f2-4d3a-4b5c-9e7f-1a2b3c4d5e6f",
    "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
    "owner_type": "agent",
    "owner_id": "eb1ac5c0-ff63-47e2-bcdb-5da9c336eb4b",
    "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "parent_id": "b2d4f7a1-3c2e-4f5a-8d9c-2e3f4a5b6c7d",
    "type": "normal",
    "text": "That's a great idea! Let's proceed with that approach.",
    "medias": [],
    "metadata": {
        "reactions": [
            {
                "emoji": "👍",
                "owner_type": "agent",
                "owner_id": "47fe0b7c-7333-46cf-8b23-61e14e62490a",
                "tm_create": "2024-01-17 10:35:00.000000"
            }
        ]
    },
    "tm_create": "2024-01-17 10:32:00.000000",
    "tm_update": "2024-01-17 10:32:00.000000",
    "tm_delete": ""
}

Type

Message type indicates whether it’s a regular message or system notification.

Type

Description

normal

Regular message sent by an agent. Contains user-authored text and optional media attachments.

system

System-generated notification message. Automatically created when participants join or leave the talk.

Threading

Messages can form conversation threads by specifying a parent message ID. When a message includes a parent_id, it appears as a reply to the parent message, creating a nested conversation structure within the talk.

Threading Rules:

  • Parent message must exist in the same talk.

  • Parent message can be deleted (soft delete) - the thread structure is preserved.

  • Replies can have their own replies, creating multi-level threads.

Reactions

Agents can add emoji reactions to messages. Reactions are stored in the message metadata and include:

  • emoji (String): The emoji character (e.g., “thumbsup”, “heart”).

  • owner_type (enum string): Type of the reactor. Currently only "agent".

  • owner_id (UUID): Unique identifier of the agent who reacted. Obtained from GET /agents.

  • tm_create (string, ISO 8601): Timestamp when the reaction was added.

Multiple agents can react to the same message, and the same agent can add multiple different emoji reactions. Reactions provide quick feedback without sending a full message response.

Participant

Participant

{
    "id": "<string>",
    "customer_id": "<string>",
    "owner_type": "<string>",
    "owner_id": "<string>",
    "chat_id": "<string>",
    "tm_joined": "<string>"
}
  • id (UUID): The participant’s unique identifier. Returned when adding a participant via POST /service_agents/talk_chats/{id}/participants.

  • customer_id (UUID): The customer’s unique identifier. Obtained from GET /customers.

  • owner_type (enum string): Type of the participant. Currently only "agent" is supported.

  • owner_id (UUID): The agent’s unique identifier. Obtained from GET /agents.

  • chat_id (UUID): The talk’s unique identifier that this participant belongs to. Obtained from GET /service_agents/talk_chats.

  • tm_joined (string, ISO 8601): Timestamp when the participant joined the talk.

Note

AI Implementation Hint

When a participant is removed and later re-added, a new participant record is created with a new id and updated tm_joined timestamp. The previous participant record is hard-deleted from the database.

Example

{
    "id": "f4d6e9b3-5c4a-4d5e-9f8a-2b3c4d5e6f7g",
    "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
    "owner_type": "agent",
    "owner_id": "eb1ac5c0-ff63-47e2-bcdb-5da9c336eb4b",
    "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "tm_joined": "2024-01-17 10:30:00.000000"
}

Participant Management

Participants can be added to or removed from talks dynamically. When a participant is removed and later re-added, their join timestamp is updated to reflect the most recent join time.

Participant Rules:

  • Each talk can have multiple participants.

  • The same agent cannot be added as a participant twice (enforced by unique constraint).

  • When a participant is removed, they are hard-deleted from the database.

  • Re-adding a participant creates a new record with a new join timestamp.

  • Only participants of a talk can view messages and send new messages.

Permissions:

  • Participants can view all messages in the talk.

  • Participants can send messages to the talk.

  • Participants can add reactions to any message in the talk.

  • Non-participants cannot access talk messages or send messages.

Tutorial

This tutorial demonstrates how to use the Talk API to create conversations, manage participants, send messages with threading and reactions.

Before using the Talk API, you need:

  • An authentication token. Obtain one via POST /auth/login or use an access key from GET /accesskeys.

  • Agent IDs (UUIDs) for the participants you want to add. Obtain agent IDs via GET /agents.

  • (For threading) An existing message ID to reply to. Obtain message IDs via GET https://api.voipbin.net/v1.0/service_agents/talk_messages.

Note

AI Implementation Hint

Talk API uses the /service_agents/talk_chats and /service_agents/talk_messages endpoints. The agent making the request must be authenticated and will automatically become a participant. When adding other participants, use their agent id (UUID) from GET /agents as the owner_id. Chat types are: direct (1:1 private), group (private multi-user), or talk (public channel).

Create a Talk

Create a new talk conversation:

$ curl --location --request POST 'https://api.voipbin.net/v1.0/service_agents/talk_chats?token=<YOUR_AUTH_TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "normal"
}'

{
    "id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
    "type": "normal",
    "member_count": 0,
    "tm_create": "2024-01-17 10:30:00.000000",
    "tm_update": "2024-01-17 10:30:00.000000",
    "tm_delete": "9999-01-01 00:00:00.000000"
}

Add Participants

Add agents to the talk:

$ curl --location --request POST 'https://api.voipbin.net/v1.0/service_agents/talk_chats/e8b2e976-f043-44c8-bb89-e214e225e813/participants?token=<YOUR_AUTH_TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "owner_type": "agent",
    "owner_id": "47fe0b7c-7333-46cf-8b23-61e14e62490a"
}'

{
    "id": "f4d6e9b3-5c4a-4d5e-9f8a-2b3c4d5e6f70",
    "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
    "owner_type": "agent",
    "owner_id": "47fe0b7c-7333-46cf-8b23-61e14e62490a",
    "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "tm_joined": "2024-01-17 10:31:00.000000"
}

Send a Message

Send a message to the talk:

$ curl --location --request POST 'https://api.voipbin.net/v1.0/service_agents/talk_messages?token=<YOUR_AUTH_TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "type": "normal",
    "text": "Hello team! Let'\''s discuss the new feature."
}'

{
    "id": "a3c5e8f2-4d3a-4b5c-9e7f-1a2b3c4d5e6f",
    "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
    "owner_type": "agent",
    "owner_id": "eb1ac5c0-ff63-47e2-bcdb-5da9c336eb4b",
    "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "type": "normal",
    "text": "Hello team! Let's discuss the new feature.",
    "medias": [],
    "metadata": {
        "reactions": []
    },
    "tm_create": "2024-01-17 10:32:00.000000",
    "tm_update": "2024-01-17 10:32:00.000000",
    "tm_delete": "9999-01-01 00:00:00.000000"
}

Reply to a Message (Threading)

Reply to an existing message by specifying the parent_id:

$ curl --location --request POST 'https://api.voipbin.net/v1.0/service_agents/talk_messages?token=<YOUR_AUTH_TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "parent_id": "a3c5e8f2-4d3a-4b5c-9e7f-1a2b3c4d5e6f",
    "type": "normal",
    "text": "Great idea! I'\''ll start working on the requirements."
}'

{
    "id": "b2d4f7a1-3c2e-4f5a-8d9c-2e3f4a5b6c7d",
    "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
    "owner_type": "agent",
    "owner_id": "47fe0b7c-7333-46cf-8b23-61e14e62490a",
    "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "parent_id": "a3c5e8f2-4d3a-4b5c-9e7f-1a2b3c4d5e6f",
    "type": "normal",
    "text": "Great idea! I'll start working on the requirements.",
    "medias": [],
    "metadata": {
        "reactions": []
    },
    "tm_create": "2024-01-17 10:33:00.000000",
    "tm_update": "2024-01-17 10:33:00.000000",
    "tm_delete": "9999-01-01 00:00:00.000000"
}

Add a Reaction

Add an emoji reaction to a message:

$ curl --location --request POST 'https://api.voipbin.net/v1.0/service_agents/talk_messages/b2d4f7a1-3c2e-4f5a-8d9c-2e3f4a5b6c7d/reactions?token=<YOUR_AUTH_TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "emoji": "thumbsup"
}'

{
    "id": "b2d4f7a1-3c2e-4f5a-8d9c-2e3f4a5b6c7d",
    "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
    "owner_type": "agent",
    "owner_id": "47fe0b7c-7333-46cf-8b23-61e14e62490a",
    "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "parent_id": "a3c5e8f2-4d3a-4b5c-9e7f-1a2b3c4d5e6f",
    "type": "normal",
    "text": "Great idea! I'll start working on the requirements.",
    "medias": [],
    "metadata": {
        "reactions": [
            {
                "emoji": "thumbsup",
                "owner_type": "agent",
                "owner_id": "eb1ac5c0-ff63-47e2-bcdb-5da9c336eb4b",
                "tm_create": "2024-01-17 10:34:00.000000"
            }
        ]
    },
    "tm_create": "2024-01-17 10:33:00.000000",
    "tm_update": "2024-01-17 10:34:00.000000",
    "tm_delete": "9999-01-01 00:00:00.000000"
}

List Messages

Retrieve messages from a talk with pagination:

$ curl --location --request GET 'https://api.voipbin.net/v1.0/service_agents/talk_messages?page_size=50&token=<YOUR_AUTH_TOKEN>'

{
    "result": [
        {
            "id": "a3c5e8f2-4d3a-4b5c-9e7f-1a2b3c4d5e6f",
            "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
            "owner_type": "agent",
            "owner_id": "eb1ac5c0-ff63-47e2-bcdb-5da9c336eb4b",
            "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
            "type": "normal",
            "text": "Hello team! Let's discuss the new feature.",
            "medias": [],
            "metadata": {
                "reactions": []
            },
            "tm_create": "2024-01-17 10:32:00.000000",
            "tm_update": "2024-01-17 10:32:00.000000",
            "tm_delete": "9999-01-01 00:00:00.000000"
        },
        {
            "id": "b2d4f7a1-3c2e-4f5a-8d9c-2e3f4a5b6c7d",
            "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
            "owner_type": "agent",
            "owner_id": "47fe0b7c-7333-46cf-8b23-61e14e62490a",
            "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
            "parent_id": "a3c5e8f2-4d3a-4b5c-9e7f-1a2b3c4d5e6f",
            "type": "normal",
            "text": "Great idea! I'll start working on the requirements.",
            "medias": [],
            "metadata": {
                "reactions": [
                    {
                        "emoji": "thumbsup",
                        "owner_type": "agent",
                        "owner_id": "eb1ac5c0-ff63-47e2-bcdb-5da9c336eb4b",
                        "tm_create": "2024-01-17 10:34:00.000000"
                    }
                ]
            },
            "tm_create": "2024-01-17 10:33:00.000000",
            "tm_update": "2024-01-17 10:34:00.000000",
            "tm_delete": "9999-01-01 00:00:00.000000"
        }
    ],
    "next_page_token": "2024-01-17 10:33:00.000000"
}

Remove a Participant

Remove a participant from the talk:

$ curl --location --request DELETE 'https://api.voipbin.net/v1.0/service_agents/talk_chats/e8b2e976-f043-44c8-bb89-e214e225e813/participants/f4d6e9b3-5c4a-4d5e-9f8a-2b3c4d5e6f70?token=<YOUR_AUTH_TOKEN>'

{
    "id": "f4d6e9b3-5c4a-4d5e-9f8a-2b3c4d5e6f70",
    "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
    "owner_type": "agent",
    "owner_id": "47fe0b7c-7333-46cf-8b23-61e14e62490a",
    "chat_id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "tm_joined": "2024-01-17 10:31:00.000000"
}

Delete a Talk

Delete a talk (soft delete):

$ curl --location --request DELETE 'https://api.voipbin.net/v1.0/service_agents/talk_chats/e8b2e976-f043-44c8-bb89-e214e225e813?token=<YOUR_AUTH_TOKEN>'

{
    "id": "e8b2e976-f043-44c8-bb89-e214e225e813",
    "customer_id": "5e4a0680-804e-11ec-8477-2fea5968d85b",
    "type": "normal",
    "member_count": 0,
    "tm_create": "2024-01-17 10:30:00.000000",
    "tm_update": "2024-01-17 10:35:00.000000",
    "tm_delete": "2024-01-17 10:35:00.000000"
}