深度

OpenClaw API 开发指南:用 REST API 和 Webhook 把 AI 助手集成到任意系统

OpenClaw API 完整开发文档:Gateway REST API 端点说明、会话管理 API、消息发送 API、Webhook 接收外部事件、MCP(Model Context Protocol)服务器集成、API 认证方式、限流配置,以及将 OpenClaw AI 能力嵌入自有应用的完整代码示例。

2026/3/174分钟 阅读ClaudeEagle

OpenClaw Gateway 暴露了一套 REST API,让你可以从任意外部系统调用 AI 助手、 触发工作流或接收事件通知。本文是完整的开发者参考。

API 基础信息

默认 Base URL:http://localhost:18789 认证方式:Bearer Token(在 openclaw.json 中配置) 内容类型:application/json

查看 Gateway 状态:

bash
curl http://localhost:18789/health
# 返回:{"status":"ok","version":"1.4.2"}

认证配置

在 ~/.openclaw/openclaw.json 中设置 API Token:

json
{
  "api": {
    "enabled": true,
    "token": "your-secret-api-token",
    "allowedOrigins": ["http://localhost:3000", "https://your-app.com"]
  }
}

所有 API 请求需携带认证头:

bash
curl -H "Authorization: Bearer your-secret-api-token"      http://localhost:18789/api/sessions

核心 API 端点

发送消息给 AI

bash
# POST /api/message
curl -X POST http://localhost:18789/api/message   -H "Authorization: Bearer your-token"   -H "Content-Type: application/json"   -d '{
    "message": "帮我分析这段代码的性能瓶颈",
    "sessionKey": "dev-session-001"
  }'

# 响应:
{
  "success": true,
  "reply": "分析如下:...",
  "sessionKey": "dev-session-001",
  "usage": { "inputTokens": 245, "outputTokens": 512 }
}

会话管理

bash
# 列出所有会话
GET /api/sessions

# 获取特定会话历史
GET /api/sessions/{sessionKey}/messages

# 清空会话历史
DELETE /api/sessions/{sessionKey}

# 创建新会话
POST /api/sessions
{
  "label": "我的开发会话",
  "model": "claude-sonnet-4-5"
}

触发事件

bash
# POST /api/trigger  —— 触发自定义事件
curl -X POST http://localhost:18789/api/trigger   -H "Authorization: Bearer your-token"   -H "Content-Type: application/json"   -d '{
    "event": "deploy_complete",
    "data": {
      "version": "v2.3.1",
      "environment": "production",
      "deployer": "CI/CD"
    }
  }'

在 SOUL.md 中处理该事件:

markdown
## 事件处理

### deploy_complete 事件
收到后:
1. 发 Telegram 通知:版本 + 环境 + 操作人
2. 在 Notion 「发布记录」中创建条目
3. 更新 HEARTBEAT.md 中的部署状态

主动推送通知

bash
# POST /api/notify  —— 向指定频道发消息(不经过 AI 处理)
curl -X POST http://localhost:18789/api/notify   -H "Authorization: Bearer your-token"   -H "Content-Type: application/json"   -d '{
    "channel": "telegram",
    "message": "🚨 服务器 CPU 超过 90%,请立即查看!",
    "target": "chat_id_或_用户名"
  }'

流式响应(Streaming)

对于长回复,使用 Server-Sent Events(SSE)流式接收:

javascript
// Node.js 示例
const EventSource = require('eventsource');

const es = new EventSource(
  'http://localhost:18789/api/message/stream?message=写一首诗',
  { headers: { 'Authorization': 'Bearer your-token' } }
);

es.onmessage = (event) => {
  const data = JSON.parse(event.data);
  if (data.type === 'text_delta') {
    process.stdout.write(data.text);
  } else if (data.type === 'end') {
    console.log('
完成');
    es.close();
  }
};

MCP(Model Context Protocol)集成

OpenClaw 支持作为 MCP Host,让 AI 访问 MCP 服务器提供的工具:

json
// ~/.openclaw/openclaw.json
{
  "mcp": {
    "servers": [
      {
        "name": "filesystem",
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
      },
      {
        "name": "github",
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-github"],
        "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx" }
      }
    ]
  }
}

配置后,Claude 可以直接使用 MCP 工具:

你:帮我在 GitHub 上创建一个新 Issue,标题是「修复登录 Bug」 Claude:[调用 github MCP 工具] 已创建 Issue #45:修复登录 Bug

在应用中嵌入 OpenClaw

Python SDK 示例

python
import requests

class OpenClawClient:
    def __init__(self, base_url="http://localhost:18789", token="your-token"):
        self.base_url = base_url
        self.headers = {"Authorization": f"Bearer {token}"}

    def chat(self, message: str, session: str = "default") -> str:
        resp = requests.post(
            f"{self.base_url}/api/message",
            headers=self.headers,
            json={"message": message, "sessionKey": session}
        )
        return resp.json()["reply"]

    def notify(self, message: str, channel: str = "telegram"):
        requests.post(
            f"{self.base_url}/api/notify",
            headers=self.headers,
            json={"channel": channel, "message": message}
        )

# 使用
client = OpenClawClient()
reply = client.chat("分析这个错误:" + error_log)
print(reply)

典型集成场景

python
# CI/CD 流水线集成:构建失败时 AI 自动分析
def on_build_failure(build_log: str):
    client = OpenClawClient()
    analysis = client.chat(
        f"这是构建失败日志,分析根本原因并给出修复建议:
{build_log}",
        session="ci-analysis"
    )
    client.notify(f"构建失败分析:
{analysis}")

API 限流配置

防止外部系统滥用 API:

json
{
  "api": {
    "rateLimit": {
      "requestsPerMinute": 60,
      "burstSize": 10
    }
  }
}

来源:OpenClaw 官方文档 - docs.openclaw.ai/gateway