Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Sendblue Imessage Api

ASecurity

当在服务端代码里收发 iMessage/SMS/RCS(文本、媒体、群发、特效、Tapback、状态回调、入站 Webhook)时使用;做 Sendblue HTTP API 集成并产出可运行的请求/回调处理;不适用于一次性 shell 发送(改用 sendblue-cli)或不需完整 HTTP 集成的场景;触发词:Sendblue、iMessage、SMS、RCS、message_handle、status_callback、webhook

3 stars
0 votes
0 copies
0 views
Added 9/19/2026
ai-agentsshellbashreactapi

Works with

cursorcliapi

Security Analysis

A100/100

Scanned 9/19/2026

$npx -y skills add findscripter/everything-skills --skill sendblue-imessage-api --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sendblue Imessage Api?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Sendblue Imessage Api
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/findscripter-sendblue-imessage-api/badge)](https://www.skillsdirectory.com/skills/findscripter-sendblue-imessage-api)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: sendblue-imessage-api
title: Sendblue 消息 API:代码收发 iMessage/SMS/RCS
description: 当在服务端代码里收发 iMessage/SMS/RCS(文本、媒体、群发、特效、Tapback、状态回调、入站 Webhook)时使用;做 Sendblue HTTP API 集成并产出可运行的请求/回调处理;不适用于一次性 shell 发送(改用 sendblue-cli)或不需完整 HTTP 集成的场景;触发词:Sendblue、iMessage、SMS、RCS、message_handle、status_callback、webhook
domain: 平台/integration
triggers: [Sendblue, iMessage 发送, 蓝色气泡, SMS API, RCS 消息, 发短信 API, 群发消息, iMessage 特效, send_style, Tapback 反应, status_callback, 入站 webhook, message_handle, evaluate-service, send-message 接口]
tags: [sendblue, imessage, sms, rcs, messaging, api, webhooks]
level: 进阶
status: stable
agents: [claude-code, codex, cursor, gemini-cli]
tools: [claude, cursor, gemini]
requires: []
related: [imessage-claude-bridge, twilio-communications, whatsapp-cloud-api, agentphone-voice-sms-agents]
combines_with: [transactional-email-template-builder, agentmail-email-infra, slack-bolt-bot-builder]
license: MIT
source: sickn33/agentic-awesome-skills
source_license: MIT
---
## 何时使用

- 在长期运行的服务(server / worker / function)里用应用代码发送 Sendblue 消息时。
- 需要通过 Webhook 接收入站消息时。
- 需要 CLI 不暴露的能力:发送特效(send styles)、反应(reactions)、群发、输入指示、状态回调、媒体上传,或超出基础 CRUD 的联系人 API。

不该用的边界:
- 只是 shell 上下文的一次性外发(脚本、cron、agent hook、「X 完成时 ping 我」)——改用 [[sendblue-cli]]。
- 不需要完整 HTTP 集成时,无需引入本技能。

风险提示:每一次外发、联系人/Webhook 变更、已读回执、反应、输入指示都是「改变状态」操作。先向用户预览收件人、发送线路、内容、回调/Webhook 变更,等明确确认后再发。

## 步骤

### 1. 鉴权

Base URL:`https://api.sendblue.com`。每个请求都需要两个请求头(外加 `Content-Type: application/json`):

```
sb-api-key-id: <YOUR_API_KEY_ID>
sb-api-secret-key: <YOUR_API_SECRET>
Content-Type: application/json
```

两个值必须留在服务端,绝不能下发到浏览器或移动端。

### 2. 发送消息

```bash
curl -X POST https://api.sendblue.com/api/send-message \
  -H "sb-api-key-id: $KEY_ID" \
  -H "sb-api-secret-key: $SECRET" \
  -H 'Content-Type: application/json' \
  -d '{
    "number": "+15551234567",
    "from_number": "+1YOUR_SENDBLUE_NUMBER",
    "content": "Hello from the API!"
  }'
```

- 号码必须是 E.164 格式(如 `+15551234567`)。
- `from_number` 必须是你自己拥有的线路,用 `GET /api/lines` 列出。

### 3. 跟踪送达

同步响应里有:
- `message_handle`(Apple GUID)——**务必持久化**,反应、回复、关联状态回调都要用它。
- `status`:`REGISTERED`、`PENDING`、`QUEUED`、`ACCEPTED`、`SENT`、`DELIVERED`、`DECLINED`、`ERROR`。

只有 `DELIVERED` 才代表真正送达。优先用 `status_callback`,而不是轮询 `GET /api/status`。

### 4. 接收入站

在 Dashboard 或通过 `POST /api/account/webhooks` 配置 Webhook URL。Sendblue 会向你的端点 POST JSON。**尽快返回 2xx**——非 2xx 会触发重试和重复投递。

事件类型:`receive`、`outbound`、`typing_indicator`、`call_log`、`line_blocked`、`line_assigned`、`contact_created`。

## 指令

核心端点:

| Method | Path | 用途 |
|--------|------|------|
| POST | `/api/send-message` | 发送 1:1 消息(文本和/或媒体) |
| POST | `/api/send-group-message` | 群发给多个收件人 |
| POST | `/api/create-group` | 创建命名群线程 |
| POST | `/api/send-reaction` | 发送 Tapback(love/like/dislike/laugh/emphasize/question) |
| POST | `/api/send-typing-indicator` | 在对方线程显示「正在输入…」 |
| POST | `/api/mark-read` | 发送已读回执 |
| POST | `/api/upload-file` / `/api/upload-media-object` | 上传媒体(直传或从 URL) |
| GET | `/api/status` | 轮询消息送达状态 |
| GET | `/api/evaluate-service` | 检查某号码是否在 iMessage 上 |
| GET | `/api/v2/messages` / `/api/v2/messages/:id` | 读取消息历史 |
| GET/POST/PUT/DELETE | `/api/v2/contacts[...]` | 管理联系人 |
| GET | `/api/lines` | 列出你的 Sendblue 号码 |
| POST | `/api/account/webhooks` | 增删改查 Webhook 订阅 |

## 示例

### 示例 1:带媒体、特效与状态回调

```json
POST /api/send-message
{
  "number": "+15551234567",
  "from_number": "+1YOUR_SENDBLUE_NUMBER",
  "content": "Optional text",
  "media_url": "https://example.com/img.jpg",
  "send_style": "celebration",
  "status_callback": "https://yourapp.com/sendblue/status"
}
```

`content` 和/或 `media_url` 至少有一个。`send_style` 仅 iMessage 生效(SMS 上静默忽略),合法值:`celebration`、`shooting_star`、`fireworks`、`lasers`、`love`、`confetti`、`balloons`、`spotlight`、`echo`、`invisible`、`gentle`、`loud`、`slam`。文本最长 18,996 字符;媒体 iMessage 最大 100 MB、SMS 最大 5 MB。

### 示例 2:群发

```json
POST /api/send-group-message
{
  "numbers": ["+15551234567", "+15557654321"],
  "from_number": "+1YOUR_SENDBLUE_NUMBER",
  "content": "Hey team"
}
```

响应返回 `group_id`——持久化它,后续往同一线程追加消息,避免每次新建群。

### 示例 3:对消息发反应

```json
POST /api/send-reaction
{
  "from_number": "+1YOUR_SENDBLUE_NUMBER",
  "message_handle": "<上一次发送返回的 message_handle>",
  "reaction": "love"
}
```

反应仅 iMessage 可用,且需要原消息的 `message_handle`。合法值:`love`、`like`、`dislike`、`laugh`、`emphasize`、`question`。

### 示例 4:入站 Webhook 载荷(`receive`)

```json
{
  "accountEmail": "you@example.com",
  "content": "Reply text",
  "media_url": "https://...",
  "is_outbound": false,
  "number": "+15551234567",
  "from_number": "+1YOUR_SENDBLUE_NUMBER",
  "service": "iMessage",
  "group_id": "...",
  "date_sent": "2024-01-01T12:00:00Z"
}
```

状态回调载荷(`outbound`)镜像 send-message 响应,随消息从 `SENT` → `DELIVERED`(或 `ERROR`)更新。

## 注意事项

最佳实践:
- 每次发送都持久化 `message_handle`——反应、回复、关联状态回调都靠它。
- 用 `status_callback` 取代轮询,更省成本也更准。
- Webhook 快速返回 2xx,再异步处理;非 2xx 会导致重复投递(同一 `message_handle` 可能到达多次,端点需幂等)。
- 依赖 iMessage 专属特性前,先用 `/api/evaluate-service` 检查对方服务类型。
- 入站媒体 URL 约 30 天过期,收到时立即转存到自己的存储。

常见坑:
- **只接受 E.164**:`5551234567` 或 `(555) 123-4567` 会失败,必须 `+15551234567`。
- **`from_number` 必须是你的线路**:伪造或未开通的号码会报错。
- **`send_style` 在 SMS 上静默无效**(绿色气泡收件人)。
- **状态是异步的**:`/api/send-message` 返回 200 只代表「已接受」,不等于「已送达」。
- **每条线路有速率限制**:单号码爆发式群发会触发 Apple 反垃圾启发式判定——放慢节奏或拆分到多条线路。

安全:
- `sb-api-key-id` / `sb-api-secret-key` 是服务端凭据,不能出现在浏览器、移动端或 CI 日志里。
- Webhook 端点应走 HTTPS 且幂等。
- 消息内容会在对方锁屏预览中可见,不要嵌入密钥、令牌或完整 PII——改为附带需鉴权的链接。
- 凭据泄露时从 Dashboard 轮换 API 密钥,旧密钥对在轮换后立即失效。

## 互见

- [[sendblue-cli]]——shell 上下文外发的封装(脚本、cron、agent hook),不需要完整 HTTP 集成时用它。
- [[sendblue-notify]]——在 API/CLI 之上做「X 完成时给我发消息」通知的模式与文案规则。
- 完整参考:https://docs.sendblue.com/ ;官网:https://sendblue.com
- 本文未展开的进阶能力:轮播卡片(`/api/send-carousel`)、FaceTime/联系人卡片分享、高级 Webhook 过滤、超出基础 CRUD 的联系人 API——见文档站。

---

采编自 sickn33/antigravity-awesome-skills(MIT)。

Attribution

findscripterfindscripter
View sourceSee grades on GitHubMore from findscripter →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →