Hubungkan sistem Anda ke Marcomm AI
Baca ringkasan berita, berita kritis, dan persetujuan yang tertunda dari sistem Anda sendiri, lalu setujui atau tolak dari alat persetujuan Anda. API tersedia di paket Team ke atas, setelah peninjauan singkat.
Mulai
- 1Ajukan akses
Jelaskan sistem Anda dan pilih data yang dibutuhkan. Kami meninjau setiap permohonan yang masuk.
- 2Buat kunci
Setelah disetujui, buat kunci di Pengaturan, API. Kunci hanya ditampilkan sekali, jadi simpan di sistem Anda.
- 3Kirim permintaan
Kirim kunci di header Authorization lalu panggil salah satu endpoint di bawah.
Contoh permintaan
curl https://app.marcomm.works/api/v1/news/digest?days=7 \
-H "Authorization: Bearer mc_live_..."Autentikasi
Kirim kunci Anda sebagai token Bearer pada setiap permintaan. Kunci pribadi bertindak sebagai orang yang membuatnya, sehingga dapat membaca dan memutuskan persetujuan atas nama orang tersebut. Kunci ruang kerja dibuat oleh admin dan hanya dapat membaca. Kunci dapat kedaluwarsa, dibatasi ke alamat IP tertentu, dan dirotasi: kunci lama tetap berfungsi selama 24 jam setelah rotasi.
Scope
Kunci hanya membawa scope yang disetujui untuk aplikasi Anda.
- news
- Ringkasan berita, artikel, dan media.
- crisis
- Berita kritis dan insiden krisis.
- approvals
- Persetujuan yang tertunda, serta menyetujui atau menolaknya dengan kunci pribadi.
- content
- Membaca siaran pers dan artikel blog.
Endpoint
Path diawali /api/v1. Endpoint baca memakai GET dan menerima parameter query. Responsnya JSON dengan bentuk {"data": ...}.
| Metode | Path | Scope | Fungsi |
|---|---|---|---|
| GET | /api/v1/news/digest | news | Volume pemberitaan, sentimen, dan media teratas untuk suatu periode. |
| GET | /api/v1/news/articles | news | Cari pemberitaan. |
| GET | /api/v1/news/outlets | news | Media yang memberitakan perusahaan Anda. |
| GET | /api/v1/crisis/incidents | crisis | Insiden krisis dan artikel kritis. |
| GET | /api/v1/approvals | approvals | Siaran pers dan artikel blog yang menunggu pemilik kunci, serta yang persetujuannya diminta oleh pemilik kunci. |
| GET | /api/v1/press-releases | content | Daftar siaran pers. |
| GET | /api/v1/press-releases/{id} | content | Satu siaran pers dengan paragraf pembuka dan isinya. |
| GET | /api/v1/blog-posts | content | Daftar artikel blog. |
| GET | /api/v1/blog-posts/{id} | content | Satu artikel blog dengan isinya. |
| POST | /api/v1/approvals/press-releases/{id} | approvals | Menyetujui atau menolak siaran pers yang menunggu pemilik kunci. |
| POST | /api/v1/approvals/blog-posts/{id} | approvals | Menyetujui atau menolak artikel blog yang menunggu pemilik kunci. |
Setujui dan tolak
Kirim {"decision": "approve"} atau {"decision": "reject", "comment": "..."} ke item. Penolakan memerlukan komentar. Keputusan mengikuti aturan yang sama dengan aplikasi dan Slack, dan dicatat atas nama pemilik kunci. Jika teks memuat frasa yang perlu dikonfirmasi, Anda menerima 409 confirmation_required beserta peringatannya, dan dapat mengirim ulang permintaan dengan "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."}'Batas laju
Batas ditetapkan per ruang kerja, per menit, dan per hari (UTC). Respons menyertakan header di bawah. Jika melewati batas, Anda menerima 429 dengan Retry-After. Untuk menaikkan batas, ajukan permintaan di Pengaturan, API. Tim kami akan meninjaunya.
- X-RateLimit-Limit
- Permintaan yang diizinkan per menit.
- X-RateLimit-Remaining
- Sisa permintaan pada menit berjalan.
- X-RateLimit-Reset
- Waktu Unix saat jendela menit direset.
- X-RateLimit-Day-Limit
- Permintaan yang diizinkan per hari.
- X-RateLimit-Day-Remaining
- Sisa permintaan hari ini.
- Retry-After
- Detik yang perlu ditunggu sebelum mencoba lagi. Hanya pada 429.
Kesalahan
Kesalahan mengembalikan JSON dengan bentuk {"error": {"code": ..., "message": ...}}.
| Kode | Status | Arti |
|---|---|---|
| invalid_key | 401 | Kunci tidak ada, formatnya salah, atau sudah dicabut. |
| expired | 401 | Kunci sudah kedaluwarsa. Buat atau rotasi kunci. |
| ip_denied | 403 | Kunci dibatasi ke alamat IP lain. |
| plan_required | 403 | Ruang kerja tidak berada di paket Team ke atas. |
| access_required | 403 | Akses API belum disetujui untuk ruang kerja ini. |
| suspended | 403 | Akses API untuk ruang kerja ini ditangguhkan. |
| scope_denied | 403 | Kunci tidak memiliki scope yang dibutuhkan endpoint ini. |
| personal_key_required | 403 | Hanya kunci pribadi yang dapat menyetujui atau menolak. |
| denied | 403 | Peran pemilik kunci tidak mengizinkan hal ini. |
| unknown_endpoint | 404 | Endpoint tersebut tidak ada. |
| comment_required | 400 | Alasan wajib diisi untuk menolak. |
| confirmation_required | 409 | Peringatan perlu dikonfirmasi. Kirim ulang dengan force diatur ke true. |
| rate_limited | 429 | Batas per menit terlampaui. |
| daily_limit | 429 | Batas harian tercapai. |
Webhook
Peringatan, permintaan persetujuan, dan ringkasan pagi juga dapat dikirim ke sistem Anda. Tambahkan tujuan di Pengaturan, API, Webhook. Setiap permintaan berupa JSON dengan kolom event (alert, approval, atau briefing), workspace, title, text, url, data, dan sentAt. Permintaan persetujuan membawa data.kind (press_release, blog, atau event) dan data.id, yang dapat Anda pakai untuk membaca dan memutuskan lewat API.
Permintaan ditandatangani. Hitung HMAC-SHA256 dari isi permintaan mentah dengan rahasia penandatanganan Anda, lalu bandingkan dengan header X-Marcomm-Signature yang berbentuk sha256=<hex>. Tolak permintaan yang tidak cocok.
Memverifikasi webhook di Node.js
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);
}Panduan koneksi
Setujui dari sistem persetujuan Anda
- Tambahkan tujuan webhook generik dan aktifkan permintaan persetujuan.
- Saat webhook persetujuan masuk, verifikasi tanda tangan dan baca data.kind dan data.id.
- Tampilkan permintaan di sistem persetujuan Anda. Jika perlu, baca isinya dengan GET press-releases/{id} atau blog-posts/{id}.
- Kirim keputusan dengan kunci pribadi orang yang memutuskan. Event dan pengiriman email diputuskan di aplikasi lewat tautan di pesan.
Alirkan ringkasan berita ke dasbor Anda
- Buat kunci ruang kerja dengan scope news dan crisis.
- Panggil news/digest sesuai jadwal, misalnya setiap pagi.
- Panggil crisis/incidents lebih sering jika Anda ingin peringatan sendiri. Pantau header X-RateLimit agar tetap dalam batas.
Peringatan di chat Anda
- Untuk Teams dan Google Chat, buat URL webhook ruangan lalu tambahkan sebagai tujuan di Pengaturan, API, Webhook.
- Untuk JANDI, Dooray!, dan Chatwork, hubungkan dari Pengaturan, Integrasi.
- Pilih apakah setiap tujuan menerima peringatan, permintaan persetujuan, dan ringkasan pagi, lalu kirim pesan uji.
Siap terhubung?
Pemilik atau admin ruang kerja mengajukan permohonan di Pengaturan, API. Anda diberi tahu lewat email dan di aplikasi saat peninjauan selesai.
Buka pengaturan API