消息 APIAPI

用你自己的代码,收发每个网络的私信

FoPost 将已连接账号的每个私信会话集中在一处。列出会话、发起新会话、一次性给一组联系人发消息,或在数天内陆续发送一系列消息,全部使用同一个 API 密钥。

GET /v1/inbox/conversations
curl "https://api.fopost.com/v1/inbox/conversations?workspace_id=9b2f6c1e-..." \
  -H "X-API-Key: $API_KEY"

{
  "data": [
    {
      "workspace_id": "9b2f6c1e-...",
      "account_id": "4a71d80b-...",
      "conversation_id": "t_1029384756",
      "message_count": 6,
      "unread_count": 2,
      "last_message_at": "2026-11-10T16:42:08Z",
      "last_message_text": "Is the large size back in stock?",
      "last_message_outbound": false,
      "participant": { "name": "Jordan P.", "handle": "jordanp", "avatar_url": "https://..." },
      "account": { "id": "4a71d80b-...", "platform": "instagram", "username": "yourbrand" }
    }
  ],
  "meta": { "page": 1, "per_page": 25, "total": 1, "total_pages": 1 }
}

统一的会话列表

所有已连接账号的私信会话,按最新时间排序。

群发

向筛选出的联系人已有的会话中发送同一条消息。

序列

一系列消息,每条在上一条发出后间隔设定的小时数发送。

会话

读取会话、回复,或发起新会话

使用 POST /v1/inbox/:id/reply 在已有会话中回复。在 X、Mastodon、Reddit 和 Slack 上可通过用户名发起新会话,也可传入 comment_id 以私信回复 Instagram 或 Facebook 的评论。在 Facebook 和 Instagram 上还能显示“正在输入”提示,在 Messenger 上可将会话移交给其他应用并再收回。

阅读会话接口参考
POST /v1/inbox/conversations
curl -X POST https://api.fopost.com/v1/inbox/conversations \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "4a71d80b-...",
    "handle": "jordanp",
    "text": "Thanks for the order. Your tracking link is on its way."
  }'

{ "conversation_id": "t_1029384756", "item": { "id": "2c9d4e81-...", "type": "dm", ... } }

文本与媒体

在网络允许的情况下,可附带最多 10 个来自媒体库的媒体 ID。

输入状态与移交

适用于 Meta 会话的 POST /v1/inbox/conversations/:id/typing 和 /handover。

X Chat

加密的 X 会话以密文形式透传,密钥只保留在浏览器中。

群发

在不违反平台规则的前提下向分组发送消息

群发消息会进入你的账号与一组联系人已有的会话,可按网络、标签、来源或自定义字段筛选。Facebook、Instagram 和 WhatsApp 只允许在联系人最后一条消息后的 24 小时内发送商家消息,因此窗口之外的收件人会被跳过并附上原因,不会尝试发送。在 WhatsApp 上,已通过审核的模板可以突破这一限制。

查看群发接口参考
POST /v1/broadcasts/:id/send
curl -X POST https://api.fopost.com/v1/broadcasts \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace_id": "9b2f6c1e-...",
    "account_id": "4a71d80b-...",
    "name": "Restock, November",
    "text": "The large size is back in stock this week.",
    "audience": { "platforms": ["instagram"], "label_ids": ["d41e7a90-..."] }
  }'

curl -X POST https://api.fopost.com/v1/broadcasts/8e2a5c13-.../send -H "X-API-Key: $API_KEY"

{ "id": "8e2a5c13-...", "status": "sending", "recipients": 212 }

立即或稍后发送

设置 scheduled_at 即可排队,发出前也可取消。

逐个收件人的结果

GET /v1/broadcasts/:id/recipients 显示已发送、已跳过或失败,以及原因。

只发送一次

每个收件人在发送前都会被先行锁定,因此重试不会重复发送。

序列

在数天内自动跟进

序列最多包含 20 个步骤,每个步骤由一条消息和相对上一步的延迟小时数组成。可按 ID 或与群发相同的受众筛选器登记联系人,也可随时取消登记。落在消息窗口之外的步骤会被跳过,序列继续执行。

查看序列接口参考
POST /v1/sequences/:id/enroll
curl -X POST https://api.fopost.com/v1/sequences/5b9c2e40-.../enroll \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "contact_ids": ["a7f3c2d1-..."] }'

{ "id": "5b9c2e40-...", "enrolled": 1 }

随时暂停

将 status 设为 paused,恢复之前不会再发出后续步骤。

取消登记

POST /v1/sequences/:id/unenroll 立即停止对该联系人的发送。

登记数量统计

按序列统计进行中、已完成、已停止和失败的数量。

联系人

了解你在和谁交流

给你的账号发过消息的人会自动成为联系人。你也可以手动添加,或导入最多 5,000 行、包含平台和用户名列的 CSV。每个工作区最多可定义 50 个自定义字段(文本、数字、日期、选项或是/否),并据此筛选群发和序列。

开始构建
工作区内汇集各网络的已连接账号

CSV 导入

POST /v1/contacts/import 返回已创建、已合并和已跳过的行及原因。

自定义字段

与字段键匹配的列会在导入时自动填入。

完整历史

GET /v1/contacts/:id/conversations 列出每位联系人发来的内容。

关于 消息 API 的常见问题解答

可以给哪些网络发消息?

在账号已授予消息权限的前提下,可读取 Bluesky、Facebook、Instagram、Mastodon、Reddit、Slack、Telegram、WhatsApp 和 X 的会话。通过用户名发起新会话适用于 X、Mastodon、Reddit 和 Slack。

什么是消息窗口?

Facebook、Instagram 和 WhatsApp 只接受联系人最后一条消息后 24 小时内的商家消息。群发和序列在每次发送前都会检查,并跳过窗口之外的对象,同时记录原因。

需要哪些 API 密钥权限范围?

读取会话、联系人、群发和序列需要 inbox 范围。凡是会向网络发出消息的操作,例如发送群发或登记联系人,还需要 publish。

群发能给从未联系过我们的人发消息吗?

不能。群发只会进入账号与联系人已有的会话。没有会话的联系人会因“从未发过消息”被跳过。

没有我的请求,会有消息自动发出吗?

群发在你调用 send 或到达你设定的时间时发出。序列在你登记某人之后发送其各个步骤。凡是你没有设置的,都不会发送。

有速率限制吗?

有,每个密钥每分钟 100 次请求。各网络也有自己的限制,发送被拒时会返回网络给出的原因。

今天就基于 消息 API 开始构建

免费开始,包含完整 API。创建密钥,几分钟内完成第一次调用。

获取 API 密钥