Skip to main content

路径

GET /messages/:threadId 公网入口 https://agentapi.kira.art/messages/:threadId。直接读 Supabase messages 表。

认证

eitherAuth()Authorization: Bearer <Supabase JWT>X-Internal-Key: <INTERNAL_KEY>。按 resource_id = jwtPayload.sub 过滤,天然隔离他人数据。

请求

无 body。threadId 走路径参数。

响应

ChatMessagesResponseSchema / ResponseMessageSchemasrc/hono/agent/models.ts)校验:
{
  messages: Array<{
    id: string,
    role: "user" | "assistant",
    parts: any[],          // v5 message parts
    createdAt: string      // ISO timestamp(来自 DB created_at)
  }>
}
要点(严格按 code):
  • 只有 v5 格式,无 v4 兼容:DB 已 batch 迁完 v5,handler 不做任何 backward-compat 转换。
  • 时间升序.order("created_at", { ascending: true })
  • 过滤空消息:仅返回 parts 为非空数组的消息。
  • 查询条件 thread_id = :threadId AND resource_id = <userId>
正在跑的 task 其用户消息在 run 期间入库,故不会出现在本结果里。需要拼回末尾时用 GET /thread/:threadId/current-task 返回的 userMessage

状态码

含义
200返回 { messages: [...] }(可能为空数组)
401缺少有效 JWT / jwtPayload.sub
500DB 查询失败(Failed to fetch messages

示例

curl https://agentapi.kira.art/messages/22222222-2222-2222-2222-222222222222 \
  -H "Authorization: Bearer $SUPABASE_JWT"
# → 200
# {
#   "messages": [
#     { "id": "...", "role": "user", "parts": [...], "createdAt": "2026-06-03T10:00:00.000Z" },
#     { "id": "...", "role": "assistant", "parts": [...], "createdAt": "2026-06-03T10:00:05.000Z" }
#   ]
# }

src/hono/agent/index.ts:468src/hono/agent/models.ts:36ResponseMessageSchema)、:56ChatMessagesResponseSchema

相关