[{"data":1,"prerenderedAt":178},["ShallowReactive",2],{"pseo:features:follow-channels":3,"highlight:pillar:follow-channels":169},{"availability":4,"ban_risk":5,"ban_risk_note":6,"category":7,"cloud_api_status":11,"contrast":12,"endpoints":20,"faqs":52,"gotchas":65,"name":68,"published":69,"related":70,"search_terms":116,"seo":121,"slug":136,"step_summary":137,"steps":138,"summary":153,"tier":154,"updated":14,"url":131,"use_cases":155,"webhook_events":165},"ga","low","Following a handful of channels is what a normal account does. Following hundreds in a short period, or scraping a channel's entire history in a tight loop, is not, and both are easy for an abuse system to spot. Follow deliberately, page history at a human pace, and respect the publisher's terms about reusing their content.",{"name":8,"slug":9,"url":10},"Channels","channels","\u002Fwhatsapp-api\u002Fchannels\u002F","forbidden",{"demand":13,"meta_checked":14,"meta_doc_url":15,"meta_quote":16,"official_workaround":17,"short_verdict":18,"verdict":19},"medium","2026-09-15","https:\u002F\u002Fdevelopers.facebook.com\u002Fdocs\u002Fwhatsapp\u002Fcloud-api\u002Freference","Paraphrase (not a verbatim quote), checked against the Cloud API reference index: the reference has no endpoint for finding, following or reading a Channel.","None. A person follows the channel on a phone and reads it there.","No. The official API cannot follow or read a Channel.","Reading someone else's Channel is outside Meta's Cloud API entirely, which documents no channel or newsletter endpoints. There is no official way to mirror a public WhatsApp Channel into another system, which is why the teams doing it use an unofficial API.",[21,31,38,45],{"availability":4,"ban_risk":5,"curl":22,"method":25,"operationId":26,"path":27,"summary":28,"tag":29,"url":30},{"code":23,"lang":24},"curl --request GET \\\n  --url 'https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fnewsletters\u002Ffind?q=release%20notes&country=GB&count=50' \\\n  --header 'Authorization: Bearer wpt_YOUR_TOKEN'","bash","GET","findNewsletters","\u002Fnewsletters\u002Ffind","Search public WhatsApp Channels","newsletters","\u002Fdocs\u002Fapi\u002Fnewsletters\u002Ffind-newsletters\u002F",{"availability":4,"ban_risk":5,"curl":32,"method":25,"operationId":34,"path":35,"summary":36,"tag":29,"url":37},{"code":33,"lang":24},"curl --request GET \\\n  --url https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fnewsletters\u002Finvite\u002F0029VaAbCdEfGhIjKlMnOp \\\n  --header 'Authorization: Bearer wpt_YOUR_TOKEN'","getNewsletterByInvite","\u002Fnewsletters\u002Finvite\u002F{code}","Look up a Channel by invite code","\u002Fdocs\u002Fapi\u002Fnewsletters\u002Fget-newsletter-by-invite\u002F",{"availability":4,"ban_risk":5,"curl":39,"method":25,"operationId":41,"path":42,"summary":43,"tag":29,"url":44},{"code":40,"lang":24},"curl --request GET \\\n  --url 'https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fnewsletters\u002F120363099887766554@newsletter\u002Fmessages?count=50&offset=0' \\\n  --header 'Authorization: Bearer wpt_YOUR_TOKEN'","listNewsletterMessages","\u002Fnewsletters\u002F{id}\u002Fmessages","List posts in a WhatsApp Channel","\u002Fdocs\u002Fapi\u002Fnewsletters\u002Flist-newsletter-messages\u002F",{"availability":4,"ban_risk":5,"curl":46,"method":25,"operationId":48,"path":49,"summary":50,"tag":29,"url":51},{"code":47,"lang":24},"curl --request GET \\\n  --url 'https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fnewsletters\u002Finvite\u002F0029VaAbCdEfGhIjKlMnOp\u002Fmessages?count=50' \\\n  --header 'Authorization: Bearer wpt_YOUR_TOKEN'","previewNewsletterMessages","\u002Fnewsletters\u002Finvite\u002F{code}\u002Fmessages","Preview a Channel's posts by invite code","\u002Fdocs\u002Fapi\u002Fnewsletters\u002Fpreview-newsletter-messages\u002F",[53,56,59,62],{"a":54,"q":55},"Only if you have its invite link, which is how private channels are shared in the first place. There is no way to discover a private channel through search, and resolving a code you were not given will simply fail. Treat a channel link like any other credential.","Can I follow a private channel?",{"a":57,"q":58},"New posts from channels the linked number follows arrive as message events keyed to the channel id, so yes for anything published after you follow. History is a separate problem: page back through the messages endpoint once, then rely on the webhook for everything after that.","Do I get every post as a webhook?",{"a":60,"q":61},"That is a copyright and terms question rather than an API one, and the answer depends on the publisher and your jurisdiction. Reading a public channel to trigger your own workflow is uncontroversial; republishing someone else's posts wholesale is a decision to take with your own legal advice.","Is it legal to republish what I read?",{"a":63,"q":64},"Following and reading are ordinary API requests and count against the request allowance rather than the send allowance, since nothing is being sent. The practical constraint is the rate at which you page history, which is worth spreading out both for your quota and for your number's safety.","Does following count against my quota?",[66,67],"Channel search returns lookalikes. Resolve the invite link you were given rather than trusting a name match, especially when you are following on behalf of a customer.","Paging a long channel history is a lot of requests. Store the newest id you have processed and page forward from it rather than re-reading the archive on every run.","Follow Channels",true,{"endpoints":71,"errors":80,"glossary":81,"hub":10,"integrations":91,"siblings":92,"tutorials":105,"vs_cloud_api":115},[72,74,76,78],{"title":73,"url":30},"GET \u002Fnewsletters\u002Ffind",{"title":75,"url":37},"GET \u002Fnewsletters\u002Finvite\u002F{code}",{"title":77,"url":44},"GET \u002Fnewsletters\u002F{id}\u002Fmessages",{"title":79,"url":51},"GET \u002Fnewsletters\u002Finvite\u002F{code}\u002Fmessages",[],[82,85,88],{"title":83,"url":84},"Newsletter","\u002Fglossary\u002Fnewsletter\u002F",{"title":86,"url":87},"Invite code","\u002Fglossary\u002Finvite-code\u002F",{"title":89,"url":90},"Channel","\u002Fglossary\u002Fchannel\u002F",[],[93,96,99,102],{"title":94,"url":95},"Create Channel","\u002Fwhatsapp-api\u002Fcreate-channel\u002F",{"title":97,"url":98},"Post to Channel","\u002Fwhatsapp-api\u002Fpost-to-channel\u002F",{"title":100,"url":101},"Post Status","\u002Fwhatsapp-api\u002Fpost-status\u002F",{"title":103,"url":104},"Send Without Template","\u002Fwhatsapp-api\u002Fsend-message-without-template\u002F",[106,109,112],{"title":107,"url":108},"Python","\u002Fwhatsapp-api\u002Ffollow-channels\u002Fpython\u002F",{"title":110,"url":111},"Node.js","\u002Fwhatsapp-api\u002Ffollow-channels\u002Fnodejs\u002F",{"title":113,"url":114},"PHP","\u002Fwhatsapp-api\u002Ffollow-channels\u002Fphp\u002F","\u002Fvs-cloud-api\u002Ffollow-channels\u002F",[117,118,119,120],"follow whatsapp channel api","read whatsapp channel messages api","whatsapp channel search api","mirror whatsapp channel to slack",{"breadcrumb":122,"canonical":132,"description":133,"h1":134,"lastmod":14,"title":135},[123,126,129,130],{"name":124,"url":125},"Home","\u002F",{"name":127,"url":128},"WhatsApp API","\u002Fwhatsapp-api\u002F",{"name":8,"url":10},{"name":68,"url":131},"\u002Fwhatsapp-api\u002Ffollow-channels\u002F","https:\u002F\u002Fwapito.com\u002Fwhatsapp-api\u002Ffollow-channels\u002F","Find, follow and read WhatsApp Channels. No templates, no Meta approval, any number. 4 endpoints, code in Python, Node.js and PHP.","Find and Follow WhatsApp Channels","Follow WhatsApp Channels via API | Wapito","follow-channels","Search or resolve a link, verify it is the right channel, page back through the history, then handle new posts from the webhook.",[139,143,146,149],{"body":140,"operationId":26,"operation_url":30,"title":141,"webhook":142},"Search returns public channels matching a term. Treat the results as candidates rather than as matches: names are not unique and a lookalike channel is a real risk when you are following on a customer's behalf.","Search the directory",null,{"body":144,"operationId":34,"operation_url":37,"title":145,"webhook":142},"If you already have a channel link, resolve its code to get the name, description and follower count before doing anything else. This is how you confirm you have the official channel and not an imitation.","Resolve an invite link",{"body":147,"operationId":41,"operation_url":44,"title":148,"webhook":142},"Page back through the channel's posts to seed your own archive or to catch up after an outage. Store the message ids so a re-run does not process the same post twice.","Read what has been published",{"body":150,"operationId":142,"operation_url":142,"title":151,"webhook":152},"New posts arrive as message events from the channel id. Route them by that id so a bridge to another system knows which feed a post belongs to.","React to new posts","messages","Find, follow and read WhatsApp Channels.","t1b",[156,159,162],{"body":157,"title":158},"A retailer follows its main supplier's channel and forwards each new post into the buying team's Slack. Nobody has to watch WhatsApp for stock notices, and the posts are archived with the rest of the team's records.","Mirror a supplier's channel into Slack",{"body":160,"title":161},"A compliance team follows the regulator's public channel and stores every post with its timestamp, so there is a durable record of what was announced and when, independent of whether the channel later edits or removes a post.","Archive an official announcements feed",{"body":163,"title":164},"A logistics operator follows a port authority channel and parses each post for closure notices. A match opens a task in the operations system automatically instead of somebody noticing the message on their phone.","Trigger a workflow from a published update",[166],{"event":152,"receiver":167,"summary":168},"onMessages","Message sent or received",[170,172,174,176],{"label":73,"id":26,"lang":24,"code":23,"html":171},"\u003Cpre class=\"shiki shiki-themes github-light-default github-dark-default\" style=\"background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#953800;--shiki-dark:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\"> --request\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> GET\u003C\u002Fspan>\u003Cspan style=\"color:#CF222E;--shiki-dark:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\">  --url\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> 'https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fnewsletters\u002Ffind?q=release%20notes&#x26;country=GB&#x26;count=50'\u003C\u002Fspan>\u003Cspan style=\"color:#CF222E;--shiki-dark:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\">  --header\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> 'Authorization: Bearer wpt_YOUR_TOKEN'\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":75,"id":34,"lang":24,"code":33,"html":173},"\u003Cpre class=\"shiki shiki-themes github-light-default github-dark-default\" style=\"background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#953800;--shiki-dark:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\"> --request\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> GET\u003C\u002Fspan>\u003Cspan style=\"color:#CF222E;--shiki-dark:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\">  --url\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fnewsletters\u002Finvite\u002F0029VaAbCdEfGhIjKlMnOp\u003C\u002Fspan>\u003Cspan style=\"color:#CF222E;--shiki-dark:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\">  --header\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> 'Authorization: Bearer wpt_YOUR_TOKEN'\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":77,"id":41,"lang":24,"code":40,"html":175},"\u003Cpre class=\"shiki shiki-themes github-light-default github-dark-default\" style=\"background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#953800;--shiki-dark:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\"> --request\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> GET\u003C\u002Fspan>\u003Cspan style=\"color:#CF222E;--shiki-dark:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\">  --url\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> 'https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fnewsletters\u002F120363099887766554@newsletter\u002Fmessages?count=50&#x26;offset=0'\u003C\u002Fspan>\u003Cspan style=\"color:#CF222E;--shiki-dark:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\">  --header\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> 'Authorization: Bearer wpt_YOUR_TOKEN'\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":79,"id":48,"lang":24,"code":47,"html":177},"\u003Cpre class=\"shiki shiki-themes github-light-default github-dark-default\" style=\"background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#953800;--shiki-dark:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\"> --request\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> GET\u003C\u002Fspan>\u003Cspan style=\"color:#CF222E;--shiki-dark:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\">  --url\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> 'https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fnewsletters\u002Finvite\u002F0029VaAbCdEfGhIjKlMnOp\u002Fmessages?count=50'\u003C\u002Fspan>\u003Cspan style=\"color:#CF222E;--shiki-dark:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\">  --header\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> 'Authorization: Bearer wpt_YOUR_TOKEN'\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1790464899221]