將您的系統串接至 Marcomm AI
在您自己的系統中讀取新聞摘要、重要新聞與待核准項目,並透過自己的核准工具批准或駁回。API 於 Team 以上方案提供,需經過簡短審查。
開始使用
- 1申請存取權限
說明您的系統並選擇所需資料。我們會逐一審查申請。
- 2建立金鑰
核准後,在「設定 → API」中建立金鑰。金鑰只會顯示一次,請將它存放在您的系統中。
- 3傳送請求
在 Authorization 標頭中帶入金鑰,然後呼叫下方任一端點。
請求範例
curl https://app.marcomm.works/api/v1/news/digest?days=7 \
-H "Authorization: Bearer mc_live_..."驗證
每次請求都以 Bearer 權杖的形式傳送金鑰。個人金鑰會以建立者本人的身分運作,因此能以其名義讀取並處理核准。工作區金鑰由管理員建立,只能讀取。金鑰可設定到期時間、限制 IP 位址,也可以輪替:輪替後舊金鑰仍可使用 24 小時。
權限範圍
每把金鑰只帶有您的申請獲准的權限範圍。
- news
- 新聞摘要、文章與媒體。
- crisis
- 重要新聞與危機事件。
- approvals
- 待核准項目,以及使用個人金鑰批准或駁回。
- content
- 讀取新聞稿與部落格文章。
端點
路徑以 /api/v1 開頭。讀取端點使用 GET 並接受查詢參數。回應為 JSON,格式為 {"data": ...}。
| 方法 | 路徑 | 範圍 | 用途 |
|---|---|---|---|
| GET | /api/v1/news/digest | news | 某段期間的報導量、情緒與主要媒體。 |
| GET | /api/v1/news/articles | news | 搜尋新聞報導。 |
| GET | /api/v1/news/outlets | news | 報導您所關注公司的媒體。 |
| GET | /api/v1/crisis/incidents | crisis | 危機事件與重要文章。 |
| GET | /api/v1/approvals | approvals | 等待金鑰擁有者處理的新聞稿與部落格文章,以及金鑰擁有者送出核准的項目。 |
| GET | /api/v1/press-releases | content | 列出新聞稿。 |
| GET | /api/v1/press-releases/{id} | content | 單篇新聞稿,含導言與內文。 |
| GET | /api/v1/blog-posts | content | 列出部落格文章。 |
| GET | /api/v1/blog-posts/{id} | content | 單篇部落格文章,含內文。 |
| POST | /api/v1/approvals/press-releases/{id} | approvals | 批准或駁回等待金鑰擁有者處理的新聞稿。 |
| POST | /api/v1/approvals/blog-posts/{id} | approvals | 批准或駁回等待金鑰擁有者處理的部落格文章。 |
批准與駁回
向該項目傳送 {"decision": "approve"} 或 {"decision": "reject", "comment": "..."}。駁回時必須附上說明。決定遵循與應用程式及 Slack 相同的規則,並記錄在金鑰擁有者名下。當內文含有需要確認的用語時,您會收到附帶警告的 409 confirmation_required,此時可加上 "force": true 重新傳送請求。
curl -X POST https://app.marcomm.works/api/v1/approvals/press-releases/<id> \
-H "Authorization: Bearer mc_live_..." \
-H "Content-Type: application/json" \
-d '{"decision":"reject","comment":"Please fix the headline."}'速率限制
限制依工作區設定,分為每分鐘與每日(UTC)。回應都會附上下列標頭。超出限制時,您會收到 429 與 Retry-After。如需提高限制,請在「設定 → API」中申請,由我們的團隊審查。
- X-RateLimit-Limit
- 每分鐘允許的請求數。
- X-RateLimit-Remaining
- 目前這一分鐘剩餘的請求數。
- X-RateLimit-Reset
- 分鐘視窗重設時的 Unix 時間。
- X-RateLimit-Day-Limit
- 每日允許的請求數。
- X-RateLimit-Day-Remaining
- 今日剩餘的請求數。
- Retry-After
- 重試前需等待的秒數。僅在 429 時回傳。
錯誤
錯誤以 JSON 回傳,格式為 {"error": {"code": ..., "message": ...}}。
| 代碼 | 狀態 | 意義 |
|---|---|---|
| invalid_key | 401 | 金鑰遺失、格式不正確或已被撤銷。 |
| expired | 401 | 金鑰已過期。請建立新金鑰或輪替金鑰。 |
| ip_denied | 403 | 此金鑰僅限其他 IP 位址使用。 |
| plan_required | 403 | 工作區未訂閱 Team 或更高方案。 |
| access_required | 403 | 此工作區尚未獲准使用 API。 |
| suspended | 403 | 此工作區的 API 存取已被暫停。 |
| scope_denied | 403 | 金鑰不具備此端點所需的權限範圍。 |
| personal_key_required | 403 | 只有個人金鑰可以批准或駁回。 |
| denied | 403 | 金鑰擁有者的角色不允許此操作。 |
| unknown_endpoint | 404 | 不存在此端點。 |
| comment_required | 400 | 駁回時必須說明原因。 |
| confirmation_required | 409 | 警告需要確認。請將 force 設為 true 後重新傳送。 |
| rate_limited | 429 | 已超出每分鐘限制。 |
| daily_limit | 429 | 已達到每日限制。 |
Webhook
警示、核准請求與早晨簡報也可以推送到您的系統。在「設定 → API → Webhook」中新增接收端點。每個請求都是 JSON,包含欄位 event(alert、approval 或 briefing)、workspace、title、text、url、data 與 sentAt。核准請求帶有 data.kind(press_release、blog 或 event)與 data.id,可據此透過 API 讀取並處理。
每個請求都附有簽章。使用您的簽章金鑰對原始請求本文計算 HMAC-SHA256,並與格式為 sha256=<hex> 的 X-Marcomm-Signature 標頭比對。不相符的請求應予以拒絕。
在 Node.js 中驗證 Webhook
import { createHmac, timingSafeEqual } from 'node:crypto';
export function isFromMarcomm(rawBody: string, signature: string, secret: string) {
const expected = 'sha256=' + createHmac('sha256', secret).update(rawBody).digest('hex');
const a = Buffer.from(expected);
const b = Buffer.from(signature);
return a.length === b.length && timingSafeEqual(a, b);
}串接指南
在您的核准系統中批准
- 新增一個通用 Webhook 接收端點,並開啟核准請求。
- 收到核准 Webhook 時,驗證簽章並讀取 data.kind 與 data.id。
- 在您的核准系統中顯示該請求。如需內文,可透過 GET press-releases/{id} 或 blog-posts/{id} 讀取。
- 使用決策者的個人金鑰送出決定。活動與電子郵件寄送需透過訊息中的連結在應用程式內決定。
將新聞摘要匯入您的儀表板
- 建立帶有 news 與 crisis 權限範圍的工作區金鑰。
- 依排程呼叫 news/digest,例如每天早晨。
- 如需自建警示,可更頻繁地呼叫 crisis/incidents,並留意 X-RateLimit 標頭,以免超出限制。
在聊天工具中接收警示
- 對於 Teams 與 Google Chat,建立聊天室的 Webhook URL,並在「設定 → API → Webhook」中新增為接收端點。
- 對於 JANDI、Dooray! 與 Chatwork,請在「設定 → 整合」中連線。
- 為每個接收端點選擇要接收警示、核准請求與早晨簡報中的哪幾項,然後傳送一則測試訊息。
準備好串接了嗎?
工作區擁有者或管理員在「設定 → API」中提出申請。審查完成後,您會收到電子郵件與應用程式內通知。
開啟 API 設定