GramClaw API

v1

通过脚本、AI 助手或 Telegram MCP 服务器驱动您的 Telegram 触达:搜索消息、管理 CRM 管道、设置自定义列,并发送消息、群发和营销活动。在此创建密钥: 设置 → API 密钥.

身份验证

每个请求都需要一个作为 Bearer 令牌的工作区 API 密钥。在设置 → API 密钥中创建一个——完整密钥( gc_live_…)仅显示一次。

基础 URL
https://gramclaw.com
每个请求
Authorization: Bearer gc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
快速开始
BASE="https://gramclaw.com"
KEY="gc_live_…"
curl -s "$BASE/api/v1/me" -H "Authorization: Bearer $KEY"

请注意: API 调用会直接执行——没有确认步骤(与应用内 AI 不同)。密钥即授权,请像密码一样妥善保管。速率限制: 每分钟 120 个请求 ,每个密钥都会在每次响应中附带 X-RateLimit-* 响应头。错误会返回 { "error": "…" } ,并带有 4xx/5xx 状态码。

权限范围: 密钥可携带 read (聊天、消息、搜索、分析), write (管道、列、Webhook), 以及/或 send (消息、群发、营销活动) ——在创建密钥时选择它们。发送类型的 POST 请求接受 Idempotency-Key 标头,因此重试永远不会重复发送。

端点

GET/api/v1/meVerify key & list accounts范围: read

Confirms a key works and returns the workspace plus the connected accounts it can act on (with account ids for broadcasting).

响应
{
  "workspace_id": "cbf805da-…",
  "key": { "name": "Claude MCP", "prefix": "gc_live_ab12cd34", "scopes": ["read","send"] },
  "accounts": [
    { "id": "acc_…", "provider": "Telegram", "type": "MESSAGING", "name": "…" }
  ]
}
GET/api/v1/chatsList conversations范围: read

The workspace's conversations newest-first, served from GramClaw's own store (fast — no provider calls). Cursor-paginated; filter by account, pipeline stage, or column value.

字段类型备注
cursorstringfrom previous next_cursor
limitnumberdefault 50, max 100
account_idstring
stage_keystringonly chats in this stage
column_idstringwith column_value: only matching chats
column_valuestring
请求
curl -s "$BASE/api/v1/chats?stage_key=qualified&limit=20" \
  -H "Authorization: Bearer $KEY"
响应
{
  "chats": [{ "id": "…", "name": "Sarah K", "provider": "TELEGRAM",
              "last_message_text": "…", "last_message_at": "…", "unread_count": 2 }],
  "next_cursor": "bzoyMA", "has_more": true
}
GET/api/v1/chats/{id}Get one chat范围: read

One chat enriched with its pipeline stage and custom-column values.

响应
{
  "chat": { "id": "…", "name": "Sarah K", "stage_key": "qualified",
            "columns": [{ "column_id": "…", "value": ["High"] }] }
}
GET/api/v1/chats/{id}/messagesRead message history范围: read

A chat's messages, oldest-first within the page. Pass `before` (ISO timestamp) to page older messages; the response's next_before feeds the next call.

字段类型备注
limitnumberdefault 30, max 100
beforestringISO timestamp — messages older than this
请求
curl -s "$BASE/api/v1/chats/CHAT_ID/messages?limit=50" \
  -H "Authorization: Bearer $KEY"
响应
{
  "messages": [{ "id": "…", "text": "Hey!", "is_sender": false,
                 "timestamp": "2026-07-06T10:00:00Z", "attachments": [] }],
  "source": "db", "next_before": "2026-07-01T08:00:00Z"
}
POST/api/v1/chats/startStart a new conversation范围: send

Start (or find) a DM with someone by phone, @username, or provider id — including people never messaged before. Optionally sends a first message. Supports Idempotency-Key.

字段类型备注
account_id*stringaccount to send from (see /me)
identifier*stringphone, @username, or provider id
providerstringhint: TELEGRAM, WHATSAPP, …
textstringoptional first message
请求
curl -s "$BASE/api/v1/chats/start" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"account_id":"acc_…","identifier":"@newlead","text":"Hi!"}'
响应
{ "chat": { "id": "…" } }
GET/api/v1/contactsList contacts范围: read

The workspace's contact cache (name + provider id per account). Cursor-paginated, searchable by name.

字段类型备注
cursorstring
limitnumberdefault 100, max 200
account_idstring
qstringname search
响应
{
  "contacts": [{ "account_id": "…", "provider_id": "…", "name": "Sarah K" }],
  "next_cursor": null, "has_more": false
}
GET/api/v1/pipelineGet pipeline

The workspace's pipeline stages and which chats sit in each stage. Chats not in placements are in the default 'new' stage.

响应
{
  "stages": [{ "key": "new", "label": "New", "terminal": false }, …],
  "placements": [{ "chat_id": "…", "stage_key": "qualified" }]
}
POST/api/v1/pipeline/moveMove a chat to a stage

Move a chat into a pipeline stage.

字段类型备注
chat_id*string
stage_key*stringfrom GET /api/v1/pipeline
请求
curl -s "$BASE/api/v1/pipeline/move" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"chat_id":"…","stage_key":"qualified"}'
响应
{ "ok": true, "message": "Moved to **Qualified**." }
GET/api/v1/columnsList custom columns

The workspace's custom columns (tags) with ids, types, and allowed option values.

响应
{
  "columns": [
    { "id": "…", "name": "Priority", "type": "select",
      "options": [{ "value": "High", "color": "#f87171" }] }
  ]
}
POST/api/v1/columns/setSet a column value

Set (or clear) a custom-column value on a chat. An empty value array clears it.

字段类型备注
column_id*stringfrom GET /api/v1/columns
chat_id*string
value*string[]empty clears
请求
curl -s "$BASE/api/v1/columns/set" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"column_id":"…","chat_id":"…","value":["High"]}'
响应
{ "ok": true, "message": "Set **Priority** = High." }
POST/api/v1/messagesSend a message

Send a single message to an existing chat.

字段类型备注
chat_id*string
text*string
请求
curl -s "$BASE/api/v1/messages" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"chat_id":"…","text":"Hi there!"}'
响应
{ "ok": true, "message": "Message sent." }
POST/api/v1/broadcastBroadcast to an audience

Send one message to everyone in a pipeline stage or with a custom-column value. Supports {{name}} personalization. Capped at 30 recipients per call.

字段类型备注
account_id*stringaccount to send from (see /me)
audience_type*"stage" | "column"
audience_ref*stringstage_key, or column_id for column
column_valuestringrequired for column audiences
message_text*stringmay include {{name}}
请求
curl -s "$BASE/api/v1/broadcast" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"account_id":"acc_…","audience_type":"stage",
       "audience_ref":"qualified","message_text":"Hi {{name}}!"}'
响应
{ "ok": true, "message": "Broadcast sent to **12** recipients.",
  "recipients": 12, "audience_total": 12, "capped": false }
POST/api/v1/campaignsCreate a campaign (large sends)范围: send

The API path for sends larger than broadcast's 30-recipient cap (max 5,000 contacts). GramClaw's background worker delivers every message — initial + optional follow-up steps — respecting per-account daily quotas. Supports Idempotency-Key. Also: GET /api/v1/campaigns lists campaigns; GET /api/v1/campaigns/{id} returns status + per-contact detail.

字段类型备注
namestring
account_idstringor account_pool: string[] to rotate accounts
message_text*stringmay include {{name}}
contacts*array[{ name?, identifier, chat_id? }]
stepsarrayfollow-ups: [{ branch, wait_hours, variants[] }]
daily_quota_per_accountnumberdefault 30
请求
curl -s "$BASE/api/v1/campaigns" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: launch-jul-06" \
  -d '{"account_id":"acc_…","message_text":"Hi {{name}}!",
       "contacts":[{"name":"Sarah","identifier":"@sarahk"}]}'
响应
{ "campaign": { "id": "…", "status": "queued" }, "queued": true }
GET/api/v1/analyticsCampaign analytics范围: read

Workspace campaign totals (sent, failed, replies, reply rate) plus the 50 most recent campaigns.

响应
{
  "totals": { "campaigns": 12, "sent": 452, "replies": 87, "reply_rate": 0.1925 },
  "campaigns": [ … ]
}
POST/api/v1/webhooksRegister a webhook范围: write

Get pushed events instead of polling: message.received, message.edited, message.deleted, pipeline.moved, campaign.replied. Deliveries are signed (X-GramClaw-Signature: sha256=HMAC_SHA256(secret, body)); the secret is returned once at creation. GET lists endpoints; PATCH /api/v1/webhooks/{id} updates url/events/active; DELETE removes. Max 10 per workspace; 20 consecutive failures auto-disable an endpoint.

字段类型备注
url*stringyour HTTPS endpoint
eventsstring[]omit or ["*"] for all events
请求
curl -s "$BASE/api/v1/webhooks" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/hooks/gramclaw",
       "events":["message.received","pipeline.moved"]}'
响应
{ "webhook": { "id": "…", "events": ["message.received","pipeline.moved"] },
  "secret": "whsec_…  ← shown once, signs every delivery" }

从 Claude / Cursor 连接(Telegram MCP)

最简单——远程连接器(一个 URL)。 在您的 MCP 客户端中,添加自定义连接器并粘贴您的个人 URL。在设置 → API 密钥中创建密钥,以获取包含您密钥的完整 URL。参见 Telegram MCP 概览 查看工具列表。

远程 MCP URL
https://gramclaw.com/api/mcp?key=gc_live_…

备选方案——本地服务器 (Cursor 或 Claude Desktop 配置文件):

claude_desktop_config.json
{
  "mcpServers": {
    "gramclaw": {
      "command": "npx",
      "args": ["-y", "gramclaw-mcp"],
      "env": {
        "GRAMCLAW_API_KEY": "gc_live_…",
        "GRAMCLAW_BASE_URL": "https://gramclaw.com"
      }
    }
  }
}
需要设置帮助?请访问 API 和 MCP 帮助指南.
Chat on Telegram