[{"data":1,"prerenderedAt":192},["ShallowReactive",2],{"pseo:features:group-icon":3,"highlight:pillar:group-icon":183},{"availability":4,"ban_risk":5,"ban_risk_note":6,"category":7,"cloud_api_status":11,"contrast":12,"endpoints":19,"faqs":52,"gotchas":65,"name":68,"published":69,"related":70,"search_terms":131,"seo":136,"slug":151,"step_summary":152,"steps":153,"summary":167,"tier":168,"updated":13,"url":146,"use_cases":169,"webhook_events":179},"ga","low","Setting a group icon is innocuous. The one thing to avoid is churn: repeatedly changing a group's icon produces a system message every time and makes an automated account look erratic to the people in the group, which is the kind of oddity that prompts a report.",{"name":8,"slug":9,"url":10},"Groups","groups","\u002Fwhatsapp-api\u002Fgroups\u002F","forbidden",{"demand":5,"meta_checked":13,"meta_doc_url":14,"meta_quote":15,"official_workaround":16,"short_verdict":17,"verdict":18},"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 a business profile for the number but no group node and no group picture.","None for groups. A business can set its own profile picture through the official API, which is a different thing entirely.","No. There is no group, so there is no group icon.","Meta's Cloud API can manage a business profile picture for the number itself, but it documents no group object and therefore no group icon. The two are not substitutes: one is how your business appears, the other is how a shared conversation appears to its members.",[20,29,36,43],{"availability":4,"ban_risk":5,"curl":21,"method":24,"operationId":25,"path":26,"summary":27,"tag":9,"url":28},{"code":22,"lang":23},"curl --request GET \\\n  --url https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fgroups\u002F120363041234567890@g.us\u002Ficon \\\n  --header 'Authorization: Bearer wpt_YOUR_TOKEN'","bash","GET","getGroupIcon","\u002Fgroups\u002F{id}\u002Ficon","Get the group icon","\u002Fdocs\u002Fapi\u002Fgroups\u002Fget-group-icon\u002F",{"availability":4,"ban_risk":5,"curl":30,"method":32,"operationId":33,"path":26,"summary":34,"tag":9,"url":35},{"code":31,"lang":23},"curl --request PUT \\\n  --url https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fgroups\u002F120363041234567890@g.us\u002Ficon \\\n  --header 'Authorization: Bearer wpt_YOUR_TOKEN' \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\"media\":\"https:\u002F\u002Facme.example\u002Fbrand\u002Flaunch-team.png\"}'","PUT","setGroupIcon","Set the group icon","\u002Fdocs\u002Fapi\u002Fgroups\u002Fset-group-icon\u002F",{"availability":4,"ban_risk":5,"curl":37,"method":39,"operationId":40,"path":26,"summary":41,"tag":9,"url":42},{"code":38,"lang":23},"curl --request DELETE \\\n  --url https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fgroups\u002F120363041234567890@g.us\u002Ficon \\\n  --header 'Authorization: Bearer wpt_YOUR_TOKEN'","DELETE","deleteGroupIcon","Remove the group icon","\u002Fdocs\u002Fapi\u002Fgroups\u002Fdelete-group-icon\u002F",{"availability":4,"ban_risk":5,"curl":44,"method":46,"operationId":47,"path":48,"summary":49,"tag":50,"url":51},{"code":45,"lang":23},"curl --request POST \\\n  --url https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fmedia \\\n  --header 'Authorization: Bearer wpt_YOUR_TOKEN' \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\"data\":\"data:application\u002Fpdf;base64,JVBERi0xLjQK…\",\"filename\":\"Invoice-4182.pdf\"}'","POST","uploadMedia","\u002Fmedia","Upload a file","media","\u002Fdocs\u002Fapi\u002Fmedia\u002Fupload-media\u002F",[53,56,59,62],{"a":54,"q":55},"Square, and large enough that the client's downscale looks clean rather than soft - a few hundred pixels on a side is plenty. WhatsApp compresses aggressively, so fine detail and small text will not survive; a simple mark on a solid background reads far better in a chat list.","What size should the image be?",{"a":57,"q":58},"No. Like everything else about a group, the icon is visible only to members. Resolving an invite code gives you the group's name and size before joining, but not its picture, so a preview screen has to make do with the metadata the code returns.","Can I read the icon of a group I am not in?",{"a":60,"q":61},"It appears as a system message in the group naming the admin who changed it, which every member sees in the thread. It does not usually generate a push notification, but it does take up a line in the conversation, so batch changes rather than flipping the icon repeatedly.","Does changing the icon notify everyone?",{"a":63,"q":64},"The media stays uploaded and unused, and the group keeps its old icon. Retry the set call with the same media id rather than re-uploading, and expire unused media ids in your own records so a failed run does not leave you guessing which upload was which.","What happens if the upload succeeds but the set call fails?",[66,67],"Non-square images are cropped to a circle by the client, so anything important near an edge disappears; resize to a square before uploading rather than relying on the crop.","Setting the icon needs admin rights, and a group whose settings restrict edits to admins will refuse the call from a member that was demoted since your last run.","Group Icon",true,{"endpoints":71,"errors":80,"glossary":90,"hub":10,"integrations":100,"siblings":101,"tutorials":120,"vs_cloud_api":130},[72,74,76,78],{"title":73,"url":28},"GET \u002Fgroups\u002F{id}\u002Ficon",{"title":75,"url":35},"PUT \u002Fgroups\u002F{id}\u002Ficon",{"title":77,"url":42},"DELETE \u002Fgroups\u002F{id}\u002Ficon",{"title":79,"url":51},"POST \u002Fmedia",[81,84,87],{"title":82,"url":83},"payload_too_large (413)","\u002Fdocs\u002Ferrors\u002Fpayload-too-large\u002F",{"title":85,"url":86},"unsupported_media_type (415)","\u002Fdocs\u002Ferrors\u002Funsupported-media-type\u002F",{"title":88,"url":89},"internal_error (500)","\u002Fdocs\u002Ferrors\u002Finternal-error\u002F",[91,94,97],{"title":92,"url":93},"Group admin","\u002Fglossary\u002Fgroup-admin\u002F",{"title":95,"url":96},"JID","\u002Fglossary\u002Fjid\u002F",{"title":98,"url":99},"Business account","\u002Fglossary\u002Fbusiness-account\u002F",[],[102,105,108,111,114,117],{"title":103,"url":104},"Group Info","\u002Fwhatsapp-api\u002Fgroup-info\u002F",{"title":106,"url":107},"Create Group","\u002Fwhatsapp-api\u002Fcreate-group\u002F",{"title":109,"url":110},"Group Settings","\u002Fwhatsapp-api\u002Fgroup-settings\u002F",{"title":112,"url":113},"Profile Picture","\u002Fwhatsapp-api\u002Fprofile-picture\u002F",{"title":115,"url":116},"Group Participants","\u002Fwhatsapp-api\u002Fgroup-participants\u002F",{"title":118,"url":119},"Group Admins","\u002Fwhatsapp-api\u002Fgroup-admins\u002F",[121,124,127],{"title":122,"url":123},"Python","\u002Fwhatsapp-api\u002Fgroup-icon\u002Fpython\u002F",{"title":125,"url":126},"Node.js","\u002Fwhatsapp-api\u002Fgroup-icon\u002Fnodejs\u002F",{"title":128,"url":129},"PHP","\u002Fwhatsapp-api\u002Fgroup-icon\u002Fphp\u002F","\u002Fvs-cloud-api\u002Fgroup-icon\u002F",[132,133,134,135],"whatsapp group icon api","set group picture whatsapp api","change whatsapp group photo programmatically","whatsapp group avatar api",{"breadcrumb":137,"canonical":147,"description":148,"h1":149,"lastmod":13,"title":150},[138,141,144,145],{"name":139,"url":140},"Home","\u002F",{"name":142,"url":143},"WhatsApp API","\u002Fwhatsapp-api\u002F",{"name":8,"url":10},{"name":68,"url":146},"\u002Fwhatsapp-api\u002Fgroup-icon\u002F","https:\u002F\u002Fwapito.com\u002Fwhatsapp-api\u002Fgroup-icon\u002F","Read, replace and remove a group's picture. No templates, no Meta approval, any number. 4 endpoints, code in Python, Node.js and PHP.","Set a WhatsApp Group Icon via API","WhatsApp Group Icon API | Wapito","group-icon","Upload a square image, set it on the group, read it back for your dashboard, and clear it when the group is retired.",[154,158,161,164],{"body":155,"operationId":47,"operation_url":51,"title":156,"webhook":157},"Send a square JPEG or PNG and keep the source file to hand. A rectangular image is cropped by WhatsApp rather than letterboxed, so anything with text near the edge will lose it.","Upload the image",null,{"body":159,"operationId":33,"operation_url":35,"title":160,"webhook":157},"Apply the uploaded media to the group. The change is announced in the group, so avoid running this on a schedule that flips the icon back and forth.","Set it as the group icon",{"body":162,"operationId":25,"operation_url":28,"title":163,"webhook":157},"Fetch the current picture to show it in your own dashboard or to check whether an admin has replaced the one your automation set.","Read the current icon",{"body":165,"operationId":40,"operation_url":42,"title":166,"webhook":157},"Clearing the icon is a cheap, visible signal that a group is closed, which works well alongside renaming it and locking it to admins only.","Remove it when the group is retired","Read, replace and remove a group's picture.","t1b",[170,173,176],{"body":171,"title":172},"An agency sets the client's logo as the icon the moment a project group is created, so a consultant opening WhatsApp can identify the right thread at a glance among twenty similar-looking groups.","Brand every client group automatically",{"body":174,"title":175},"A support team uses a small set of coloured icons to show whether a job group is open, waiting on the customer, or closed. The icon is set by the same automation that moves the ticket, so it is never out of date.","Show status at a glance",{"body":177,"title":178},"At the end of an intake, the automation renames the group, clears its icon and locks it to admins. Members can still read the history, and it is obvious from the chat list that nothing new is coming.","Clear the icon when a group is archived",[180],{"event":9,"receiver":181,"summary":182},"onGroups","Group joined, left or updated",[184,186,188,190],{"label":73,"id":25,"lang":23,"code":22,"html":185},"\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\u002Fgroups\u002F120363041234567890@g.us\u002Ficon\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":33,"lang":23,"code":31,"html":187},"\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\"> PUT\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\u002Fgroups\u002F120363041234567890@g.us\u002Ficon\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>\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\"> 'Content-Type: application\u002Fjson'\u003C\u002Fspan>\u003Cspan style=\"color:#CF222E;--shiki-dark:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\">  --data\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> '{\"media\":\"https:\u002F\u002Facme.example\u002Fbrand\u002Flaunch-team.png\"}'\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":77,"id":40,"lang":23,"code":38,"html":189},"\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\"> DELETE\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\u002Fgroups\u002F120363041234567890@g.us\u002Ficon\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":47,"lang":23,"code":45,"html":191},"\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\"> POST\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\u002Fmedia\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>\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\"> 'Content-Type: application\u002Fjson'\u003C\u002Fspan>\u003Cspan style=\"color:#CF222E;--shiki-dark:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#0550AE;--shiki-dark:#79C0FF\">  --data\u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\"> '{\"data\":\"data:application\u002Fpdf;base64,JVBERi0xLjQK…\",\"filename\":\"Invoice-4182.pdf\"}'\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1790464899131]