Inboxes - Reply To Message
curl --request POST \
--url https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"labels": [
"<string>"
],
"reply_to": "<string>",
"to": "<string>",
"cc": "<string>",
"bcc": "<string>",
"reply_all": true,
"text": "<string>",
"html": "<string>",
"attachments": [
{
"filename": "<string>",
"content_type": "<string>",
"content_id": "<string>",
"content": "<string>",
"url": "<string>"
}
],
"headers": {},
"track_opens": true
}
'import requests
url = "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply"
payload = {
"labels": ["<string>"],
"reply_to": "<string>",
"to": "<string>",
"cc": "<string>",
"bcc": "<string>",
"reply_all": True,
"text": "<string>",
"html": "<string>",
"attachments": [
{
"filename": "<string>",
"content_type": "<string>",
"content_id": "<string>",
"content": "<string>",
"url": "<string>"
}
],
"headers": {},
"track_opens": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
labels: ['<string>'],
reply_to: '<string>',
to: '<string>',
cc: '<string>',
bcc: '<string>',
reply_all: true,
text: '<string>',
html: '<string>',
attachments: [
{
filename: '<string>',
content_type: '<string>',
content_id: '<string>',
content: '<string>',
url: '<string>'
}
],
headers: {},
track_opens: true
})
};
fetch('https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply', 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}/messages/{message_id}/reply",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'labels' => [
'<string>'
],
'reply_to' => '<string>',
'to' => '<string>',
'cc' => '<string>',
'bcc' => '<string>',
'reply_all' => true,
'text' => '<string>',
'html' => '<string>',
'attachments' => [
[
'filename' => '<string>',
'content_type' => '<string>',
'content_id' => '<string>',
'content' => '<string>',
'url' => '<string>'
]
],
'headers' => [
],
'track_opens' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply"
payload := strings.NewReader("{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"reply_all\": true,\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"reply_all\": true,\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"reply_all\": true,\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}"
response = http.request(request)
puts response.read_body{
"message_id": "<string>",
"thread_id": "<string>"
}消息
Inboxes - Reply To Message
回复单封邮件并正确挂到会话上,返回 message_id 和 thread_id。
POST
https://api.aisa.one
/
apis
/
v1
/
agentmail
/
inboxes
/
{inbox_id}
/
messages
/
{message_id}
/
reply
Inboxes - Reply To Message
curl --request POST \
--url https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"labels": [
"<string>"
],
"reply_to": "<string>",
"to": "<string>",
"cc": "<string>",
"bcc": "<string>",
"reply_all": true,
"text": "<string>",
"html": "<string>",
"attachments": [
{
"filename": "<string>",
"content_type": "<string>",
"content_id": "<string>",
"content": "<string>",
"url": "<string>"
}
],
"headers": {},
"track_opens": true
}
'import requests
url = "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply"
payload = {
"labels": ["<string>"],
"reply_to": "<string>",
"to": "<string>",
"cc": "<string>",
"bcc": "<string>",
"reply_all": True,
"text": "<string>",
"html": "<string>",
"attachments": [
{
"filename": "<string>",
"content_type": "<string>",
"content_id": "<string>",
"content": "<string>",
"url": "<string>"
}
],
"headers": {},
"track_opens": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
labels: ['<string>'],
reply_to: '<string>',
to: '<string>',
cc: '<string>',
bcc: '<string>',
reply_all: true,
text: '<string>',
html: '<string>',
attachments: [
{
filename: '<string>',
content_type: '<string>',
content_id: '<string>',
content: '<string>',
url: '<string>'
}
],
headers: {},
track_opens: true
})
};
fetch('https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply', 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}/messages/{message_id}/reply",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'labels' => [
'<string>'
],
'reply_to' => '<string>',
'to' => '<string>',
'cc' => '<string>',
'bcc' => '<string>',
'reply_all' => true,
'text' => '<string>',
'html' => '<string>',
'attachments' => [
[
'filename' => '<string>',
'content_type' => '<string>',
'content_id' => '<string>',
'content' => '<string>',
'url' => '<string>'
]
],
'headers' => [
],
'track_opens' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply"
payload := strings.NewReader("{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"reply_all\": true,\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"reply_all\": true,\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"labels\": [\n \"<string>\"\n ],\n \"reply_to\": \"<string>\",\n \"to\": \"<string>\",\n \"cc\": \"<string>\",\n \"bcc\": \"<string>\",\n \"reply_all\": true,\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"attachments\": [\n {\n \"filename\": \"<string>\",\n \"content_type\": \"<string>\",\n \"content_id\": \"<string>\",\n \"content\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"headers\": {},\n \"track_opens\": true\n}"
response = http.request(request)
puts response.read_body{
"message_id": "<string>",
"thread_id": "<string>"
}回复单封邮件并正确挂到会话上,返回
在你的 agent 里把这个端点跑起来 →
message_id 和 thread_id。🔴 **这会发出真实邮件,且发出去收不回。**它只回复发件人——post_agentmail_inbox_message_reply_all 会回复所有收件人,波及范围完全不同,请刻意选择。所有 AIsa 调用方共用同一个 AgentMail 账号,因此这里会触及其他调用方创建的收件箱。要发给一组新收件人用 post_agentmail_inbox_message_send。
示例
curl -X POST "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
// 把整段复制给 Claude Code、Codex、Cursor 或任意 coding agent。
// 连接、授权、跑通这个例子需要的东西都在里面 ——
// 不用粘贴任何 key,浏览器里点一次 Allow 就好。
{
"operation_id": "post_agentmail_inbox_message_reply",
"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/post_agentmail-inboxes-inbox-id-messages-message-id-reply.md
// Then run the call and show me the result.
第一次用? 把任意 MCP 客户端指向
https://mcp.aisa.one/mcp —— Claude Code、
Codex、Cursor、VS Code 都可以。鉴权走 OAuth:客户端打开浏览器,你点一次
Allow,不需要粘贴任何 key。各客户端的具体命令和每次调用的价格见
aisa.one/zh-cn/mcp。费用与请求规则
公开参考值不是你的账户报价或最终扣费。对于支持 X-AISA-Cost-Mode: quote 的接口,执行前请针对完整请求获取免费报价;执行后通过响应费用元数据和 Usage Logs 核对结算费用。1 USD 等于 1,000,000 个整数 micro-USD。- 默认请求参考估价(USD): 0.012
- 计费依据: explicit_zero
- 结算证据来源: request_snapshot
授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
请求体
application/json
消息标签。
回复地址(一个或多个)。
收件人地址。
抄送收件人地址。
密送收件人地址。
回复原始消息的所有收件人。
消息的纯文本正文。
消息的 HTML 正文。
消息中要包含的附件。
Show child attributes
Show child attributes
消息中要包含的标头。
Show child attributes
Show child attributes
Track when this message is first opened. Requires a custom domain with tracking enabled and
an HTML body. Opens surface as the opened label on the message and as a message.opened
event. One pixel is injected per message, not per recipient, so a message with several
recipients fires once when any of them opens it, and the event does not identify which one.