SecondMeSecondMe API
SecondMe API

Chat

Streaming chat, session list, and message history

Chat endpoints.

Base URL: https://api.mindverse.com/gate/lab


Streaming Chat

Have streaming conversations as the user's AI avatar.

POST /api/secondme/chat/stream

Authentication

Requires OAuth2 Token.

Required Permissions

chat.write

Request Headers

HeaderRequiredDescription
AuthorizationYesBearer Token
Content-TypeYesapplication/json
X-App-IdNoApplication ID, defaults to general

Request Parameters

ParameterTypeRequiredDescription
messagestringYesUser message content
sessionIdstringNoSession ID, auto-generated if not provided
appIdstringNoApplication ID, takes priority over Header
systemPromptstringNoSystem prompt, only effective on first request of new session
receiverUserIdnumberNoReceiver user ID (reserved field)
enableWebSearchbooleanNoEnable web search, defaults to false

Request Example

curl -X POST "https://api.mindverse.com/gate/lab/api/secondme/chat/stream" \
  -H "Authorization: Bearer lba_at_your_access_token" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Hello, introduce yourself",
    "systemPrompt": "Please reply in a friendly tone"
  }'

With WebSearch enabled:

curl -X POST "https://api.mindverse.com/gate/lab/api/secondme/chat/stream" \
  -H "Authorization: Bearer lba_at_your_access_token" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "What are today tech news",
    "enableWebSearch": true
  }'

Response

Response type is text/event-stream (Server-Sent Events).

First message for new session:

event: session
data: {"sessionId": "labs_sess_a1b2c3d4e5f6"}

Chat content stream:

data: {"choices": [{"delta": {"content": "Hello"}}]}

data: {"choices": [{"delta": {"content": "! I am"}}]}

data: {"choices": [{"delta": {"content": " your AI avatar"}}]}

data: [DONE]

Event stream when WebSearch is enabled:

event: session
data: {"sessionId": "labs_sess_a1b2c3d4e5f6"}

event: tool_call
data: {"toolName": "web_search", "status": "searching"}

event: tool_result
data: {"toolName": "web_search", "query": "tech news", "resultCount": 5}

data: {"choices": [{"delta": {"content": "Based on search results..."}}]}

data: [DONE]

Stream Data Format

Event TypeDescription
sessionReturns session ID when new session is created
tool_callTool call started, triggered when WebSearch is enabled
tool_resultTool call result, contains search query and result count
dataIncremental chat content
[DONE]End of stream marker

Handling Streaming Response Example (Python)

import requests

response = requests.post(
    "https://api.mindverse.com/gate/lab/api/secondme/chat/stream",
    headers={
        "Authorization": "Bearer lba_ak_xxx",
        "Content-Type": "application/json"
    },
    json={"message": "Hello"},
    stream=True
)

for line in response.iter_lines():
    if line:
        line = line.decode('utf-8')
        if line.startswith('data: '):
            data = line[6:]
            if data == '[DONE]':
                break
            print(data)

Error Codes

Error CodeDescription
apikey.permission.deniedMissing chat.write permission
secondme.user.invalid_idInvalid user ID
secondme.stream.errorStreaming response error

Get Session List

Get user's chat session list.

GET /api/secondme/chat/session/list

Authentication

Requires OAuth2 Token.

Required Permissions

chat.read

Query Parameters

ParameterTypeRequiredDescription
appIdstringNoFilter by application ID

Request Example

curl -X GET "https://api.mindverse.com/gate/lab/api/secondme/chat/session/list?appId=general" \
  -H "Authorization: Bearer lba_at_your_access_token"

Response

Success (200)

{
  "code": 0,
  "data": {
    "sessions": [
      {
        "sessionId": "labs_sess_a1b2c3d4",
        "appId": "general",
        "lastMessage": "Hello, introduce yourself...",
        "lastUpdateTime": "2024-01-20T15:30:00Z",
        "messageCount": 10
      },
      {
        "sessionId": "labs_sess_e5f6g7h8",
        "appId": "general",
        "lastMessage": "What's the weather today?",
        "lastUpdateTime": "2024-01-19T10:00:00Z",
        "messageCount": 5
      }
    ]
  }
}
FieldTypeDescription
sessionsarraySession list, sorted by last update time (descending)
sessions[].sessionIdstringSession ID
sessions[].appIdstringApplication ID
sessions[].lastMessagestringLast message preview (truncated to 50 chars)
sessions[].lastUpdateTimestringLast update time (ISO 8601)
sessions[].messageCountnumberMessage count

Error Codes

Error CodeDescription
apikey.permission.deniedMissing chat.read permission

Get Session Messages

Get message history for a specific session.

GET /api/secondme/chat/session/messages

Authentication

Requires OAuth2 Token.

Required Permissions

chat.read

Query Parameters

ParameterTypeRequiredDescription
sessionIdstringYesSession ID

Request Example

curl -X GET "https://api.mindverse.com/gate/lab/api/secondme/chat/session/messages?sessionId=labs_sess_a1b2c3d4" \
  -H "Authorization: Bearer lba_at_your_access_token"

Response

Success (200)

{
  "code": 0,
  "data": {
    "sessionId": "labs_sess_a1b2c3d4",
    "messages": [
      {
        "messageId": "msg_001",
        "role": "system",
        "content": "Please reply in a friendly tone",
        "senderUserId": 12345,
        "receiverUserId": null,
        "createTime": "2024-01-20T15:00:00Z"
      },
      {
        "messageId": "msg_002",
        "role": "user",
        "content": "Hello, introduce yourself",
        "senderUserId": 12345,
        "receiverUserId": null,
        "createTime": "2024-01-20T15:00:05Z"
      },
      {
        "messageId": "msg_003",
        "role": "assistant",
        "content": "Hello! I am your AI avatar...",
        "senderUserId": 12345,
        "receiverUserId": null,
        "createTime": "2024-01-20T15:00:10Z"
      }
    ]
  }
}
FieldTypeDescription
sessionIdstringSession ID
messagesarrayMessage list, sorted by creation time (ascending)
messages[].messageIdstringMessage ID
messages[].rolestringRole: system/user/assistant
messages[].contentstringMessage content
messages[].senderUserIdnumberSender user ID
messages[].receiverUserIdnumberReceiver user ID (reserved)
messages[].createTimestringCreation time (ISO 8601)

Error Codes

Error CodeDescription
apikey.permission.deniedMissing chat.read permission
secondme.session.unauthorizedNot authorized to access this session

Note: If sessionId does not exist, the API will return success (code=0) with an empty messages array.