curl --request GET \
--url https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"inbox_id": "<string>",
"thread_id": "<string>",
"labels": [
"<string>"
],
"timestamp": "2023-11-07T05:31:56Z",
"senders": [
"<string>"
],
"recipients": [
"<string>"
],
"last_message_id": "<string>",
"message_count": 123,
"size": 123,
"updated_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"count": 123,
"messages": [
{
"inbox_id": "<string>",
"thread_id": "<string>",
"message_id": "<string>",
"labels": [
"<string>"
],
"timestamp": "2023-11-07T05:31:56Z",
"from": "<string>",
"to": [
"<string>"
],
"size": 123,
"updated_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"reply_to": [
"<string>"
],
"cc": [
"<string>"
],
"bcc": [
"<string>"
],
"subject": "<string>",
"preview": "<string>",
"text": "<string>",
"html": "<string>",
"extracted_text": "<string>",
"extracted_html": "<string>",
"attachments": [
{
"attachment_id": "<string>",
"size": 123,
"filename": "<string>",
"content_type": "<string>",
"content_disposition": "inline",
"content_id": "<string>"
}
],
"in_reply_to": "<string>",
"calendar_event_id": "<string>",
"references": [
"<string>"
],
"headers": {}
}
],
"received_timestamp": "2023-11-07T05:31:56Z",
"sent_timestamp": "2023-11-07T05:31:56Z",
"subject": "<string>",
"preview": "<string>",
"attachments": [
{
"attachment_id": "<string>",
"size": 123,
"filename": "<string>",
"content_type": "<string>",
"content_disposition": "inline",
"content_id": "<string>"
}
],
"limit": 123,
"next_page_token": "<string>"
}Manage Inbox Thread
获取会话
curl --request GET \
--url https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"inbox_id": "<string>",
"thread_id": "<string>",
"labels": [
"<string>"
],
"timestamp": "2023-11-07T05:31:56Z",
"senders": [
"<string>"
],
"recipients": [
"<string>"
],
"last_message_id": "<string>",
"message_count": 123,
"size": 123,
"updated_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"count": 123,
"messages": [
{
"inbox_id": "<string>",
"thread_id": "<string>",
"message_id": "<string>",
"labels": [
"<string>"
],
"timestamp": "2023-11-07T05:31:56Z",
"from": "<string>",
"to": [
"<string>"
],
"size": 123,
"updated_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"reply_to": [
"<string>"
],
"cc": [
"<string>"
],
"bcc": [
"<string>"
],
"subject": "<string>",
"preview": "<string>",
"text": "<string>",
"html": "<string>",
"extracted_text": "<string>",
"extracted_html": "<string>",
"attachments": [
{
"attachment_id": "<string>",
"size": 123,
"filename": "<string>",
"content_type": "<string>",
"content_disposition": "inline",
"content_id": "<string>"
}
],
"in_reply_to": "<string>",
"calendar_event_id": "<string>",
"references": [
"<string>"
],
"headers": {}
}
],
"received_timestamp": "2023-11-07T05:31:56Z",
"sent_timestamp": "2023-11-07T05:31:56Z",
"subject": "<string>",
"preview": "<string>",
"attachments": [
{
"attachment_id": "<string>",
"size": 123,
"filename": "<string>",
"content_type": "<string>",
"content_disposition": "inline",
"content_id": "<string>"
}
],
"limit": 123,
"next_page_token": "<string>"
}thread_id、inbox_id、labels、timestamp、received_timestamp、sent_timestamp、senders、recipients、subject、preview、附件以及邮件本身。要单封邮件用 get_agentmail_inbox_message。
示例
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
// 把整段复制给 Claude Code、Codex、Cursor 或任意 coding agent。
// 连接、授权、跑通这个例子需要的东西都在里面 ——
// 不用粘贴任何 key,浏览器里点一次 Allow 就好。
{
"operation_id": "get_agentmail_inbox_thread",
"arguments": {},
"max_price_usd": 0.05
}
// ── for the agent ─────────────────────────────────────────────────────────
// Register the AIsa MCP server, then call its `use` tool with the JSON above.
// name aisa
// endpoint https://mcp.aisa.one/mcp
// transport streamable-http
// auth OAuth. The server publishes RFC 9728 metadata, so open a
// browser and the user clicks Allow once — nothing to paste.
// If AISA_API_KEY is set, send it as a bearer header instead.
// Use your own MCP mechanism, not a hand-edited config file:
// Codex codex mcp add aisa --url https://mcp.aisa.one/mcp
// Claude Code claude mcp add --transport http -s user aisa https://mcp.aisa.one/mcp
// Cursor / VS Code a "url" entry for https://mcp.aisa.one/mcp in the MCP config
// The server lists five tools over https://mcp.aisa.one/servers worth of APIs:
// search, get_details, use, batch_use, list_categories. search and
// get_details are free; use is billed per call and max_price_usd refuses
// anything above the cap before spending. This operation's full contract —
// every argument, the response shape, the price and the pitfalls — is at
// https://aisa.one/docs/zh/api-reference/agentmail/get_agentmail-inboxes-inbox-id-threads-thread-id.md
// Then run the call and show me the result.
https://mcp.aisa.one/mcp —— Claude Code、
Codex、Cursor、VS Code 都可以。鉴权走 OAuth:客户端打开浏览器,你点一次
Allow,不需要粘贴任何 key。各客户端的具体命令和每次调用的价格见
aisa.one/zh-cn/mcp。授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
查询参数
Maximum number of messages to return. Cannot exceed 100. 返回项目数量的上限。
Token returned by the previous response for retrieving the next, older page. 用于分页的页面 token。
响应
状态码为 200 的响应
收件箱的 ID。
会话 ID。
会话标签。
最后发送或接收消息的时间戳。
会话中的发件人。格式为 username@domain.com 或 Display Name <username@domain.com>。
会话中的收件人。格式为 username@domain.com 或 Display Name <username@domain.com>。
会话串中最后一条消息的 ID。
会话中的消息数量。
线程大小(以字节为单位)。
线程上次更新的时间。
会话串的创建时间。
Number of messages in this response page.
Messages in this page, ordered by timestamp ascending. The first page contains the newest messages; follow next_page_token to retrieve older pages.
Show child attributes
Show child attributes
最后收到消息的时间戳。
最后发送消息的时间戳。
会话主题。
会话中最后一条消息的文本预览。
线程中的附件。
Show child attributes
Show child attributes
Maximum number of messages requested for this page.
Token for the next, older page of messages. Omitted when this page completes the thread.