[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"public-landing":3,"help-categories-ms":22,"help-article-webhooks-ms":246},{"heroVariant":4,"testimonials":5,"whatsappUrl":6,"templateCount":7,"templateCountBasic":8,"recurringSeriesMax":9,"scheduleMaxPerDay":15,"blogLocales":16,"social":17},"e",[],null,114,57,{"free":10,"starter":11,"pro":12,"ultimate":13,"agency":14,"custom":14},0,3,10,20,30,25,[],{"instagram":18,"threads":19,"facebook":20,"tiktok":21},"https:\u002F\u002Finstagram.com\u002Fposto_id","https:\u002F\u002Fthreads.com\u002Fposto_id","https:\u002F\u002Ffacebook.com\u002Fposto.id","https:\u002F\u002Ftiktok.com\u002F@posto.id",{"locale":23,"items":24,"popular":239},"ms",[25,54,67,116,148,174,194,208,225],{"slug":26,"name":27,"sort":12,"articles":28},"getting-started","Bermula",[29,33,36,39,42,45,48,51],{"slug":30,"title":31,"category":26,"fallback":32},"create-first-carousel","Mencipta karusel pertama",false,{"slug":34,"title":35,"category":26,"fallback":32},"automatic-content-format","Format kandungan automatik",{"slug":37,"title":38,"category":26,"fallback":32},"sign-up-and-login","Daftar dan log masuk",{"slug":40,"title":41,"category":26,"fallback":32},"video-slides","Slaid video dalam karusel",{"slug":43,"title":44,"category":26,"fallback":32},"chat-assistant","Chat sokongan dengan pembantu Posto",{"slug":46,"title":47,"category":26,"fallback":32},"product-catalog-batch","Kumpulan kandungan daripada katalog produk",{"slug":49,"title":50,"category":26,"fallback":32},"reels-video-from-carousel","Hasilkan video Reels daripada karusel",{"slug":52,"title":53,"category":26,"fallback":32},"share-to-whatsapp","Kongsi ke WhatsApp",{"slug":55,"name":56,"sort":13,"articles":57},"credits","Kredit AI",[58,61,64],{"slug":59,"title":60,"category":55,"fallback":32},"how-credits-work","Cara Kredit AI berfungsi",{"slug":62,"title":63,"category":55,"fallback":32},"plan-and-top-up-credits","Kredit AI pelan dan Kredit AI tambah nilai",{"slug":65,"title":66,"category":55,"fallback":32},"credit-refunds","Kredit AI dipulangkan apabila penjanaan gagal",{"slug":68,"name":69,"sort":14,"articles":70},"plans-billing","Pakej & pembayaran",[71,74,77,80,83,86,89,92,95,98,101,104,107,110,113],{"slug":72,"title":73,"category":68,"fallback":32},"plans-and-payment-methods","Pelan dan kaedah bayaran",{"slug":75,"title":76,"category":68,"fallback":32},"upgrade-plan","Cara naik taraf pelan",{"slug":78,"title":79,"category":68,"fallback":32},"pay-with-qris","Bayar dengan QRIS",{"slug":81,"title":82,"category":68,"fallback":32},"pay-with-gopay","Bayar dengan GoPay (melalui QRIS)",{"slug":84,"title":85,"category":68,"fallback":32},"pay-with-virtual-account","Bayar dengan Akaun Maya",{"slug":87,"title":88,"category":68,"fallback":32},"pay-with-e-wallet","Bayar dengan DANA, OVO atau ShopeePay",{"slug":90,"title":91,"category":68,"fallback":32},"payment-not-confirmed","Bayaran belum disahkan",{"slug":93,"title":94,"category":68,"fallback":32},"paid-twice","Terbayar dua kali",{"slug":96,"title":97,"category":68,"fallback":32},"manage-subscription","Mengurus pelan di halaman Bil",{"slug":99,"title":100,"category":68,"fallback":32},"renewal-and-reminders","Pembaharuan & peringatan",{"slug":102,"title":103,"category":68,"fallback":32},"grace-period-and-locked","Pelan tamat & jadual dijeda",{"slug":105,"title":106,"category":68,"fallback":32},"cancel-or-downgrade","Membatalkan atau menurunkan pelan",{"slug":108,"title":109,"category":68,"fallback":32},"invoices-and-npwp","Invois & NPWP",{"slug":111,"title":112,"category":68,"fallback":32},"coupons","Menggunakan kupon",{"slug":114,"title":115,"category":68,"fallback":32},"top-up-credits","Tambah nilai Kredit AI",{"slug":117,"name":118,"sort":119,"articles":120},"team-agency","Pasukan & agensi",35,[121,124,127,130,133,136,139,142,145],{"slug":122,"title":123,"category":117,"fallback":32},"team-and-clients","Pasukan & klien",{"slug":125,"title":126,"category":117,"fallback":32},"client-approval-and-review","Kelulusan pasukan & pelanggan",{"slug":128,"title":129,"category":117,"fallback":32},"slide-comments","Komen pada slaid",{"slug":131,"title":132,"category":117,"fallback":32},"agency-calendar","Kalendar gabungan agensi",{"slug":134,"title":135,"category":117,"fallback":32},"client-credit-quota","Kuota Kredit AI setiap klien",{"slug":137,"title":138,"category":117,"fallback":32},"client-reports","Laporan bulanan klien",{"slug":140,"title":141,"category":117,"fallback":32},"client-reports-full","Laporan klien lengkap: AI, penyesuaian & hantar automatik",{"slug":143,"title":144,"category":117,"fallback":32},"private-templates-and-brief","Templat agensi, kunci jenama & brief",{"slug":146,"title":147,"category":117,"fallback":32},"white-label-and-custom-domain","White-label & domain tersuai",{"slug":149,"name":150,"sort":151,"articles":152},"scheduling","Jadual & akaun media sosial",40,[153,156,159,162,165,168,171],{"slug":154,"title":155,"category":149,"fallback":32},"connect-social-accounts","Menyambung akaun media sosial",{"slug":157,"title":158,"category":149,"fallback":32},"tiktok-paid-plans","TikTok untuk pelan berbayar",{"slug":160,"title":161,"category":149,"fallback":32},"schedule-posts","Menjadualkan siaran",{"slug":163,"title":164,"category":149,"fallback":32},"recurring-schedules","Jadual berulang",{"slug":166,"title":167,"category":149,"fallback":32},"post-own-media","Siarkan foto & video sendiri",{"slug":169,"title":170,"category":149,"fallback":32},"post-analytics","Analitik siaran",{"slug":172,"title":173,"category":149,"fallback":32},"make-similar-content","Buat lagi yang serupa daripada kandungan terbaik",{"slug":175,"name":176,"sort":177,"articles":178},"api-integrations","API & integrasi",42,[179,182,185,188,191],{"slug":180,"title":181,"category":175,"fallback":32},"api-and-mcp","API dan MCP: sambungkan Posto ke aplikasi lain",{"slug":183,"title":184,"category":175,"fallback":32},"claude-connector","Sambungkan Posto ke Claude sebagai custom connector",{"slug":186,"title":187,"category":175,"fallback":32},"mcp-via-npx","MCP melalui npx (@postoid\u002Fmcp)",{"slug":189,"title":190,"category":175,"fallback":32},"api-reels-and-recurring","Reels dan jadual berulang melalui API & MCP",{"slug":192,"title":193,"category":175,"fallback":32},"webhooks","Webhook: makluman automatik daripada Posto",{"slug":195,"name":196,"sort":197,"articles":198},"account","Akaun & data",45,[199,202,205],{"slug":200,"title":201,"category":195,"fallback":32},"export-data","Mengeksport data akaun",{"slug":203,"title":204,"category":195,"fallback":32},"delete-account","Memadam akaun",{"slug":206,"title":207,"category":195,"fallback":32},"unsubscribe-emails","Berhenti melanggan e-mel",{"slug":209,"name":210,"sort":211,"articles":212},"affiliate","Afiliasi & rujukan",47,[213,216,219,222],{"slug":214,"title":215,"category":209,"fallback":32},"invite-friends","Jemput rakan, dapatkan Kredit AI",{"slug":217,"title":218,"category":209,"fallback":32},"join-affiliate-program","Menyertai program afiliasi",{"slug":220,"title":221,"category":209,"fallback":32},"affiliate-commission","Komisen afiliasi",{"slug":223,"title":224,"category":209,"fallback":32},"affiliate-payouts","Pengeluaran komisen afiliasi",{"slug":226,"name":227,"sort":228,"articles":229},"troubleshooting","Masalah biasa",50,[230,233,236],{"slug":231,"title":232,"category":226,"fallback":32},"post-failed","Siaran gagal: punca biasa",{"slug":234,"title":235,"category":226,"fallback":32},"link-not-readable","Pautan tidak dapat dibaca",{"slug":237,"title":238,"category":226,"fallback":32},"photo-not-showing","Foto tidak muncul pada slaid",[240,241,242,243,244,245],{"slug":180,"title":181,"category":175,"fallback":32},{"slug":59,"title":60,"category":55,"fallback":32},{"slug":214,"title":215,"category":209,"fallback":32},{"slug":30,"title":31,"category":26,"fallback":32},{"slug":200,"title":201,"category":195,"fallback":32},{"slug":154,"title":155,"category":149,"fallback":32},{"slug":192,"locale":23,"requestedLocale":23,"fallback":32,"title":193,"html":247,"description":248,"toc":249,"faq":263,"updatedAt":264,"videoUrl":6,"category":265,"related":266,"locales":271},"\u003Cp>Webhook membolehkan Posto menghantar makluman ke pelayan atau alat automasi anda (cth. n8n) setiap kali sesuatu berlaku, contohnya karusel siap atau siaran diterbitkan. Webhook berada di halaman yang sama dengan kunci API, jadi memerlukan akses API &amp; MCP. Lihat \u003Ca href=\"\u002Fhelp\u002Fapi-and-mcp\">API dan MCP\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"tambah-webhook\">Tambah webhook\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Buka \u003Cstrong>Jenama &amp; akaun media sosial → API &amp; MCP\u003C\u002Fstrong> (\u003Ca href=\"\u002Fapp\u002Fsettings\u002Fapi\">\u002Fapp\u002Fsettings\u002Fapi\u003C\u002Fa>), bahagian \u003Cstrong>Webhook\u003C\u002Fstrong>, kemudian klik \u003Cstrong>Tambah webhook\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Isi \u003Cstrong>URL titik akhir\u003C\u002Fstrong>. Mesti \u003Ccode>https:\u002F\u002F\u003C\u002Fcode> dan alamat awam; alamat peribadi atau dalaman (cth. \u003Ccode>localhost\u003C\u002Fcode> atau \u003Ccode>192.168.x.x\u003C\u002Fcode>) ditolak. Pilih \u003Cstrong>Acara\u003C\u002Fstrong>, kemudian klik \u003Cstrong>Tambah webhook\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Klik \u003Cstrong>Salin rahsia\u003C\u002Fstrong> untuk menyimpan rahsia tandatangan (\u003Ccode>whsec_…\u003C\u002Fcode>). Rahsia hanya dipaparkan sekali.\u003C\u002Fli>\n\u003Cli>Klik \u003Cstrong>Hantar ping\u003C\u002Fstrong> untuk menguji. Hasilnya dipaparkan dalam \u003Cstrong>Sejarah\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Acara yang boleh dipilih: \u003Ccode>carousel.ready\u003C\u002Fcode>, \u003Ccode>carousel.failed\u003C\u002Fcode>, \u003Ccode>image.ready\u003C\u002Fcode>, \u003Ccode>post.published\u003C\u002Fcode>, \u003Ccode>post.failed\u003C\u002Fcode>, \u003Ccode>credits.low\u003C\u002Fcode>, \u003Ccode>approval.decided\u003C\u002Fcode>, \u003Ccode>series.paused\u003C\u002Fcode> (jadual berulang dijeda) dan \u003Ccode>series.ended\u003C\u002Fcode> (jadual berulang selesai atau ditamatkan). Maksimum 10 webhook bagi setiap workspace.\u003C\u002Fp>\n\u003Ch2 id=\"kandungan-penghantaran\">Kandungan penghantaran\u003C\u002Fh2>\n\u003Cp>Posto menghantar \u003Ccode>POST\u003C\u002Fcode> JSON seperti ini:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\n  \"id\": \"b2f6c1e0-…\",\n  \"type\": \"post.published\",\n  \"createdAt\": \"2026-10-17T12:30:41Z\",\n  \"workspaceId\": \"0b6e2d14-…\",\n  \"apiVersion\": \"v1\",\n  \"data\": { \"scheduleId\": \"…\", \"carouselId\": \"…\", \"platform\": \"instagram\", \"permalink\": \"…\" }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Pengepala yang disertakan: \u003Ccode>X-Posto-Event\u003C\u002Fcode>, \u003Ccode>X-Posto-Delivery\u003C\u002Fcode>, \u003Ccode>X-Posto-Timestamp\u003C\u002Fcode> (saat Unix) dan \u003Ccode>X-Posto-Signature\u003C\u002Fcode>. Balas \u003Ccode>2xx\u003C\u002Fcode> dalam 10 saat; ubah hala tidak diikuti. Penghantaran yang sama mungkin tiba lebih daripada sekali, jadi abaikan \u003Ccode>id\u003C\u002Fcode> acara yang sudah diproses.\u003C\u002Fp>\n\u003Ch2 id=\"mengesahkan-tandatangan\">Mengesahkan tandatangan\u003C\u002Fh2>\n\u003Cp>\u003Ccode>X-Posto-Signature\u003C\u002Fcode> mengandungi \u003Ccode>v1=&lt;hex&gt;\u003C\u002Fcode>: HMAC-SHA256 dengan rahsia webhook ke atas teks \u003Ccode>&lt;X-Posto-Timestamp&gt;.&lt;raw body&gt;\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Col>\n\u003Cli>Ambil raw body tepat seperti yang diterima. Jangan parse dan tukar semula kepada teks.\u003C\u002Fli>\n\u003Cli>Tolak penghantaran jika beza \u003Ccode>X-Posto-Timestamp\u003C\u002Fcode> dengan jam pelayan melebihi 5 minit (300 saat).\u003C\u002Fli>\n\u003Cli>Kira HMAC, kemudian bandingkan dengan setiap nilai \u003Ccode>v1=\u003C\u002Fcode> dalam pengepala menggunakan perbandingan masa-malar (\u003Ccode>timingSafeEqual\u003C\u002Fcode>).\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Contoh Node.js (Express):\u003C\u002Fp>\n\u003Cpre>\u003Ccode>import crypto from 'node:crypto'\nimport express from 'express'\n\nconst app = express()\nconst SECRET = process.env.POSTO_WEBHOOK_SECRET \u002F\u002F whsec_...\n\napp.post('\u002Fwebhook\u002Fposto', express.raw({ type: 'application\u002Fjson' }), (req, res) =&gt; {\n  const ts = req.get('X-Posto-Timestamp') || ''\n  const header = req.get('X-Posto-Signature') || ''\n  const raw = req.body \u002F\u002F Buffer: raw body, not parsed\n\n  if (!\u002F^[0-9]+$\u002F.test(ts) || Math.abs(Date.now() \u002F 1000 - Number(ts)) &gt; 300) {\n    return res.status(400).send('stale')\n  }\n  const expected = crypto.createHmac('sha256', SECRET).update(ts + '.').update(raw).digest()\n  const ok = header.split(',').some((part) =&gt; {\n    const m = \u002F^v1=([0-9a-f]{64})$\u002F.exec(part.trim())\n    return m !== null &amp;&amp; crypto.timingSafeEqual(Buffer.from(m[1], 'hex'), expected)\n  })\n  if (!ok) return res.status(401).send('bad signature')\n\n  const event = JSON.parse(raw.toString('utf8'))\n  res.status(200).end() \u002F\u002F reply fast, process event.id in the background (skip ids already seen)\n})\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"gagal-dihantar-dimatikan-dan-putaran-rahsia\">Gagal dihantar, dimatikan dan putaran rahsia\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>Penghantaran yang gagal dicuba semula 6 kali (1 minit, 5 minit, 30 minit, 2 jam, 8 jam, 24 jam). Setiap cubaan direkodkan dalam \u003Cstrong>Sejarah\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Jika 3 penghantaran berturut-turut gagal dan kegagalan berlarutan 3 hari, webhook dimatikan secara automatik dan pemilik serta admin workspace menerima e-mel. Betulkan titik akhir, kemudian klik \u003Cstrong>Hidupkan semula\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Putar rahsia\u003C\u002Fstrong> (dalam menu tindakan lain) mencipta rahsia baharu. Selama 24 jam pengepala memuatkan dua tandatangan (\u003Ccode>v1=&lt;baharu&gt;,v1=&lt;lama&gt;\u003C\u002Fcode>), jadi anda ada masa untuk menukar rahsia di pelayan.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Masih keliru? Hubungi \u003Ca href=\"mailto:support@posto.id\">support@posto.id\u003C\u002Fa>.\u003C\u002Fp>\n","Webhook membolehkan Posto menghantar makluman ke pelayan atau alat automasi anda (cth. n8n) setiap kali sesuatu berlaku, contohnya karusel siap atau siaran…",[250,254,257,260],{"id":251,"text":252,"level":253},"tambah-webhook","Tambah webhook",2,{"id":255,"text":256,"level":253},"kandungan-penghantaran","Kandungan penghantaran",{"id":258,"text":259,"level":253},"mengesahkan-tandatangan","Mengesahkan tandatangan",{"id":261,"text":262,"level":253},"gagal-dihantar-dimatikan-dan-putaran-rahsia","Gagal dihantar, dimatikan dan putaran rahsia",[],"2026-11-09T10:57:16.683Z",{"slug":175,"name":176},[267,268,269,270],{"slug":180,"title":181,"category":175,"fallback":32},{"slug":183,"title":184,"category":175,"fallback":32},{"slug":186,"title":187,"category":175,"fallback":32},{"slug":189,"title":190,"category":175,"fallback":32},[272,273,23],"en","id"]