重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
moralis-streams-api by moralisweb3/onchain-skills
npx skills add https://github.com/moralisweb3/onchain-skills --skill moralis-streams-api导致错误的首要原因是使用了错误的 HTTP 方法或流配置。
对于每一个端点:
rules/{端点名称}.md阅读顺序:
rules/ 目录中的端点规则文件references/ 目录中的模式参考(仅用于边缘情况)切勿要求用户将他们的 API 密钥粘贴到聊天中。 相反:
MORALIS_API_KEY(尝试运行 [ -n "$MORALIS_API_KEY" ] && echo "API key is set" || echo "API key is NOT set")。广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
.env 文件:MORALIS_API_KEY=.env 文件并将他们的密钥粘贴到那里。如果他们还没有密钥,请引导他们访问 admin.moralis.com/register(免费,无需信用卡)。
.env 文件的位置取决于技能的安装方式:
在项目根目录(用户运行 Claude Code 的同一目录)创建 .env 文件。确保 .env 在 .gitignore 中。
curl "https://api.moralis-streams.com/streams/evm?limit=10" \
-H "X-API-Key: $MORALIS_API_KEY"
https://api.moralis-streams.com
重要提示: 与数据 API (deep-index.moralis.io) 不同。
所有请求都需要:X-API-Key: $MORALIS_API_KEY
| 操作 | 方法 | 端点 |
|---|---|---|
| 创建流 | PUT | /streams/evm |
| 更新流 | POST | /streams/evm/{id} |
| 删除流 | DELETE | /streams/evm/{id} |
| 获取流列表 | GET | /streams/evm |
| 替换地址 | PATCH | /streams/evm/{id}/address |
常见错误: 使用 POST 创建流。请改用 PUT。
| 类型 | 描述 |
|---|---|
tx | 原生交易 |
log | 合约事件日志 |
erc20transfer | ERC20 代币转账 |
erc20approval | ERC20 授权 |
nfttransfer | NFT 转账 |
internalTx | 内部交易 |
// 错误 - 十六进制格式
"0x1234567890abcdef"
// 正确 - UUID 格式
"YOUR_STREAM_ID"
"0x1" // 以太坊
"0x89" // Polygon
"0x38" // BSC
"0xa4b1" // Arbitrum
"0xa" // Optimism
"0x2105" // Base
"Transfer(address,address,uint256)" // ERC20/NFT 转账
"Approval(address,address,uint256)" // ERC20 授权
"active" // 正确 - 正常运行状态
"paused" // 正确 - 手动暂停
"error" // 正确 - Webhook 成功率 <70% 时自动设置
"terminated" // 正确 - 处于 error 状态 24 小时后,不可恢复
"ACTIVE" // 错误
PUTapi.moralis-streams.com,而非 deep-index.moralis.io完整参考请参见 references/CommonPitfalls.md。
通过链上读取(例如 balanceOf)来丰富 Webhook 数据。触发器执行 view/pure 函数并将结果附加到 Webhook 事件。支持动态选择器($contract, $from, $to)。完整参考及示例请参见 references/Triggers.md。
配置 getNativeBalances 以在 Webhook 负载中包含原生代币余额(ETH、BNB 等)。需要商业版或更高计划。配置详情请参见 references/UsefulStreamOptions.md。
confirmed: false)+ 已确认(confirmed: true)。需要幂等处理程序。Webhook 使用您的流密钥(与 API 密钥不同)进行签名。
请求头: x-signature
算法: sha3(JSON.stringify(body) + secret)
const verifySignature = (req, secret) => { const provided = req.headers["x-signature"]; const generated = web3.utils.sha3(JSON.stringify(req.body) + secret); if (generated !== provided) throw new Error("Invalid Signature"); };
完整示例请参见 references/WebhookSecurity.md。
WEBHOOK_URL="https://your-server.com/webhook"
# 列出流(需要 limit 参数)
curl "https://api.moralis-streams.com/streams/evm?limit=100" \
-H "X-API-Key: $MORALIS_API_KEY"
# 创建流(使用 PUT,而非 POST)
curl -X PUT "https://api.moralis-streams.com/streams/evm" \
-H "X-API-Key: $MORALIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webhookUrl": "'${WEBHOOK_URL}'",
"description": "Test stream",
"tag": "test",
"topic0": ["Transfer(address,address,uint256)"],
"allAddresses": false,
"chainIds": ["0x1"]
}'
# 暂停流(POST 到 status 端点)
curl -X POST "https://api.moralis-streams.com/streams/evm/<stream_id>/status" \
-H "X-API-Key: $MORALIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "paused"}'
| 问题 | 原因 | 解决方案 |
|---|---|---|
| "400 Bad Request" | 无效配置 | 检查 webhookUrl、topic0 格式、chainIds |
| "404 Not Found" | 错误的流 ID | 验证 UUID 格式 |
| "Method Not Allowed" | 错误的 HTTP 方法 | 创建用 PUT,更新用 POST |
| "Missing limit" | GET /streams/evm | 添加 ?limit=100 |
| "No webhooks" | 流已暂停 | 检查状态是否为 "active" |
按类别组织的完整 Streams API 端点列表(共 20 个)。
创建、更新、删除和管理流。
| 端点 | 描述 |
|---|---|
| AddAddressToStream | 向流添加地址 |
| CreateStream | 创建流 |
| DeleteAddressFromStream | 从流中删除地址 |
| DeleteStream | 删除流 |
| DuplicateStream | 复制流 |
| GetAddresses | 按流获取地址 |
| GetHistory | 获取历史记录 |
| GetLogs | 获取日志 |
| GetSettings | 获取项目设置 |
| GetStats | 获取项目统计信息 |
| GetStatsByStreamId | 按流 ID 获取项目统计信息 |
| GetStream | 获取特定的 evm 流。 |
| GetStreamBlockDataByNumber | 根据提供的流配置获取在指定区块号上返回的 Webhook 数据 |
| GetStreamBlockDataToWebhookByNumber | 使用流配置和地址,基于特定区块号发送 Webhook。 |
| GetStreams | 获取流列表 |
| ReplaceAddressFromStream | 替换流中的地址 |
| UpdateStream | 更新流 |
| UpdateStreamStatus | 更新流状态 |
暂停/恢复流以及配置设置。
| 端点 | 描述 |
|---|---|
| SetSettings | 设置项目设置 |
流历史记录、重放、统计信息、日志和区块数据。
| 端点 | 描述 |
|---|---|
| ReplayHistory | 重放历史记录 |
设置 allAddresses: true 并配合 topic0 和 abi,可以监控链上每个合约的某个事件(例如,全网所有 ERC20 转账)。需要更高级别的计划。完整示例、ABI 模板和注意事项请参见 references/ListenToAllAddresses.md。
curl -X PUT "https://api.moralis-streams.com/streams/evm" \
-H "X-API-Key: $MORALIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webhookUrl": "https://your-server.com/webhook",
"description": "Monitor ERC20 transfers",
"tag": "erc20-monitor",
"topic0": ["Transfer(address,address,uint256)"],
"allAddresses": true,
"chainIds": ["0x1", "0x89"],
"advancedOptions": [{
"topic0": "Transfer(address,address,uint256)",
"includeNativeHash": true
}]
}'
列表端点使用基于游标的分页:
# 第一页
curl "...?limit=100" -H "X-API-Key: $KEY"
# 下一页
curl "...?limit=100&cursor=<cursor>" -H "X-API-Key: $KEY"
所有主要的 EVM 链:以太坊 (0x1)、Polygon (0x89)、BSC (0x38)、Arbitrum (0xa4b1)、Optimism (0xa)、Base (0x2105)、Avalanche (0xa86a) 等。
完整链 ID 列表请参见 references/StreamConfiguration.md。
rules/*.md 文件每周安装次数
52
代码仓库
GitHub 星标数
8
首次出现
2026年2月12日
安全审计
安装于
codex51
opencode51
github-copilot49
gemini-cli49
kimi-cli47
amp47
The #1 cause of bugs is using wrong HTTP methods or stream configurations.
For EVERY endpoint:
rules/{EndpointName}.mdReading Order:
rules/references/ (for edge cases only)Never ask the user to paste their API key into the chat. Instead:
MORALIS_API_KEY is set in the environment (try running [ -n "$MORALIS_API_KEY" ] && echo "API key is set" || echo "API key is NOT set")..env file with an empty placeholder: MORALIS_API_KEY=.env file and paste their key there themselves.If they don't have a key yet, point them to admin.moralis.com/register (free, no credit card).
The .env file location depends on how skills are installed:
Create the .env file in the project root (same directory the user runs Claude Code from). Make sure .env is in .gitignore.
curl "https://api.moralis-streams.com/streams/evm?limit=10" \
-H "X-API-Key: $MORALIS_API_KEY"
https://api.moralis-streams.com
Important: Different from Data API (deep-index.moralis.io).
All requests require: X-API-Key: $MORALIS_API_KEY
| Action | Method | Endpoint |
|---|---|---|
| Create stream | PUT | /streams/evm |
| Update stream | POST | /streams/evm/{id} |
| Delete stream | DELETE | /streams/evm/{id} |
| Get streams | GET |
Common mistake: Using POST to create streams. Use PUT instead.
| Type | Description |
|---|---|
tx | Native transactions |
log | Contract event logs |
erc20transfer | ERC20 token transfers |
erc20approval | ERC20 approvals |
nfttransfer | NFT transfers |
internalTx | Internal transactions |
// WRONG - Hex format
"0x1234567890abcdef"
// CORRECT - UUID format
"YOUR_STREAM_ID"
"0x1" // Ethereum
"0x89" // Polygon
"0x38" // BSC
"0xa4b1" // Arbitrum
"0xa" // Optimism
"0x2105" // Base
"Transfer(address,address,uint256)" // ERC20/NFT Transfer
"Approval(address,address,uint256)" // ERC20 Approval
"active" // CORRECT - normal operating state
"paused" // CORRECT - manually paused
"error" // CORRECT - auto-set when webhook success rate <70%
"terminated" // CORRECT - unrecoverable, after 24h in error
"ACTIVE" // WRONG
PUT insteadapi.moralis-streams.com, NOT deep-index.moralis.ioSee references/CommonPitfalls.md for complete reference.
Enrich webhook data with on-chain reads (e.g., balanceOf). Triggers execute view/pure functions and attach results to webhook events. Supports dynamic selectors ($contract, $from, $to). See references/Triggers.md for complete reference with examples.
Configure getNativeBalances to include native token balances (ETH, BNB, etc.) in webhook payloads. Requires Business plan+. See references/UsefulStreamOptions.md for configuration details.
confirmed: false) + Confirmed (confirmed: true). Idempotent handlers required.See references/DeliveryGuarantees.md and references/ErrorHandling.md.
Webhooks are signed with your streams secret (different from API key).
Header: x-signature
Algorithm: sha3(JSON.stringify(body) + secret)
const verifySignature = (req, secret) => { const provided = req.headers["x-signature"]; const generated = web3.utils.sha3(JSON.stringify(req.body) + secret); if (generated !== provided) throw new Error("Invalid Signature"); };
See references/WebhookSecurity.md for complete examples.
WEBHOOK_URL="https://your-server.com/webhook"
# List streams (requires limit)
curl "https://api.moralis-streams.com/streams/evm?limit=100" \
-H "X-API-Key: $MORALIS_API_KEY"
# Create stream (PUT, not POST)
curl -X PUT "https://api.moralis-streams.com/streams/evm" \
-H "X-API-Key: $MORALIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webhookUrl": "'${WEBHOOK_URL}'",
"description": "Test stream",
"tag": "test",
"topic0": ["Transfer(address,address,uint256)"],
"allAddresses": false,
"chainIds": ["0x1"]
}'
# Pause stream (POST to status)
curl -X POST "https://api.moralis-streams.com/streams/evm/<stream_id>/status" \
-H "X-API-Key: $MORALIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "paused"}'
| Issue | Cause | Solution |
|---|---|---|
| "400 Bad Request" | Invalid config | Check webhookUrl, topic0 format, chainIds |
| "404 Not Found" | Wrong stream ID | Verify UUID format |
| "Method Not Allowed" | Wrong HTTP method | PUT for create, POST for update |
| "Missing limit" | GET /streams/evm | Add ?limit=100 |
| "No webhooks" | Stream paused | Check status is "active" |
Complete list of all 20 Streams API endpoints organized by category.
Create, update, delete, and manage streams.
| Endpoint | Description |
|---|---|
| AddAddressToStream | Add address to stream |
| CreateStream | Create stream |
| DeleteAddressFromStream | Delete address from stream |
| DeleteStream | Delete stream |
| DuplicateStream | Duplicate stream |
| GetAddresses | Get addresses by stream |
| GetHistory | Get history |
Pause/resume streams and configure settings.
| Endpoint | Description |
|---|---|
| SetSettings | Set project settings |
Stream history, replay, statistics, logs, and block data.
| Endpoint | Description |
|---|---|
| ReplayHistory | Replay history |
Set allAddresses: true with a topic0 and abi to monitor an event across every contract on a chain (e.g., all ERC20 transfers network-wide). Requires higher-tier plans. See references/ListenToAllAddresses.md for complete examples, ABI templates, and gotchas.
curl -X PUT "https://api.moralis-streams.com/streams/evm" \
-H "X-API-Key: $MORALIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webhookUrl": "https://your-server.com/webhook",
"description": "Monitor ERC20 transfers",
"tag": "erc20-monitor",
"topic0": ["Transfer(address,address,uint256)"],
"allAddresses": true,
"chainIds": ["0x1", "0x89"],
"advancedOptions": [{
"topic0": "Transfer(address,address,uint256)",
"includeNativeHash": true
}]
}'
List endpoints use cursor-based pagination:
# First page
curl "...?limit=100" -H "X-API-Key: $KEY"
# Next page
curl "...?limit=100&cursor=<cursor>" -H "X-API-Key: $KEY"
All major EVM chains: Ethereum (0x1), Polygon (0x89), BSC (0x38), Arbitrum (0xa4b1), Optimism (0xa), Base (0x2105), Avalanche (0xa86a), and more.
See references/StreamConfiguration.md for complete chain ID list.
rules/*.md filesWeekly Installs
52
Repository
GitHub Stars
8
First Seen
Feb 12, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
codex51
opencode51
github-copilot49
gemini-cli49
kimi-cli47
amp47
飞书视频会议CLI工具:lark-vc技能详解,高效搜索与管理会议记录与纪要
47,500 周安装
Vitest 测试框架完整指南:JavaScript/TypeScript 项目极速测试与配置教程
171 周安装
Next.js客户端组件与服务器操作Cookie设置模式详解 | 主题切换与Cookie横幅实现
170 周安装
Discord Webhook 使用指南:无需机器人,通过curl向频道发送消息和文件
169 周安装
DeepSeek API 使用指南:聊天、推理与代码生成,OpenAI 经济替代方案
171 周安装
iOS SwiftUI 开发模式与最佳实践 - 状态管理、视图组合、异步处理
45 周安装
Arize Trace 技能:AI 可观测性工具,高效导出 LLM 追踪数据与 Span 分析
169 周安装
/streams/evm |
| Replace addresses | PATCH | /streams/evm/{id}/address |
| GetLogs | Get logs |
| GetSettings | Get project settings |
| GetStats | Get project stats |
| GetStatsByStreamId | Get project stats by Stream ID |
| GetStream | Get a specific evm stream. |
| GetStreamBlockDataByNumber | Get webhook data returned on the block number with provided stream config |
| GetStreamBlockDataToWebhookByNumber | Send webhook based on a specific block number using stream config and addresses. |
| GetStreams | Get streams |
| ReplaceAddressFromStream | Replaces address from stream |
| UpdateStream | Update stream |
| UpdateStreamStatus | Update stream status |