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
modelstringNoLLM model alias. Options: secondme/nano (default), secondme/pro
systemPromptstringNoSystem prompt, only effective on first request of new session
receiverUserIdnumberNoReceiver user ID (reserved field)
enableWebSearchbooleanNoEnable web search, defaults to false
maxTokensintegerNoMaximum output tokens, range 1-16000, defaults to 2000

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.