[{"data":1,"prerenderedAt":768},["ShallowReactive",2],{"navigation_docs":3,"-external-api-reference":63,"-external-api-reference-surround":763},[4,21,37,47],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":20},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Campaign Configuration","\u002Fgetting-started\u002Fcampaign-configuration","1.getting-started\u002F2.campaign-configuration","i-lucide-megaphone",false,{"title":22,"icon":23,"path":24,"stem":25,"children":26,"page":20},"Embed","i-lucide-code","\u002Fembed","2.embed",[27,32],{"title":28,"path":29,"stem":30,"icon":31},"Integration Guide","\u002Fembed\u002Fguide","2.embed\u002F1.guide","i-lucide-book-open",{"title":33,"path":34,"stem":35,"icon":36},"API Reference","\u002Fembed\u002Fapi-reference","2.embed\u002F2.api-reference","i-lucide-file-code",{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":20},"External API","i-lucide-globe","\u002Fexternal-api","3.external-api",[43],{"title":44,"path":45,"stem":46,"icon":36},"Campaign Reference","\u002Fexternal-api\u002Freference","3.external-api\u002F1.reference",{"title":48,"icon":49,"path":50,"stem":51,"children":52,"page":20},"AI Assistants","i-lucide-bot","\u002Fai-assistants","4.ai-assistants",[53,58],{"title":54,"path":55,"stem":56,"icon":57},"Connect an Assistant","\u002Fai-assistants\u002Fconnect","4.ai-assistants\u002F1.connect","i-lucide-plug",{"title":59,"path":60,"stem":61,"icon":62},"What the Assistant Can Do","\u002Fai-assistants\u002Fcapabilities","4.ai-assistants\u002F2.capabilities","i-lucide-list-checks",{"id":64,"title":44,"body":65,"description":756,"extension":757,"links":758,"meta":759,"navigation":760,"path":45,"seo":761,"stem":46,"__hash__":762},"docs\u002F3.external-api\u002F1.reference.md",{"type":66,"value":67,"toc":743},"minimark",[68,72,77,80,83,87,98,104,109,129,379,382,431,435,615,619,630,636,639,652,659,663,715,719,726,729,733,739],[69,70,71],"p",{},"The External API lets you display an Activoice campaign on your own website, with your own design, without embedding our widget. It is read-only, needs no API key, and accepts calls from any domain — both from a browser and from your own server.",[73,74,76],"h2",{"id":75},"enabling-access","Enabling access",[69,78,79],{},"Access is granted per organization by the Activoice team. Contact support to have it enabled; there is no self-service switch in the backoffice.",[69,81,82],{},"Once enabled, any campaign of the organization can be read by anyone holding its identifier. Drafts included, so you can build and test your integration before the campaign goes live — a draft has no public page, so its identifier only circulates if you share it.",[73,84,86],{"id":85},"endpoint","Endpoint",[88,89,94],"pre",{"className":90,"code":92,"language":93},[91],"language-text","GET https:\u002F\u002Fapi.activoice.org\u002Fexternal\u002Fv1\u002Fcampaigns\u002F{campaign_id}\u002F\n","text",[95,96,92],"code",{"__ignoreMap":97},"",[69,99,100,103],{},[95,101,102],{},"campaign_id"," is the campaign UUID, visible in the backoffice URL and in the embed panel. Slugs are not accepted: they can be changed or left empty, while the UUID never changes.",[105,106,108],"h3",{"id":107},"example","Example",[88,110,114],{"className":111,"code":112,"language":113,"meta":97,"style":97},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl https:\u002F\u002Fapi.activoice.org\u002Fexternal\u002Fv1\u002Fcampaigns\u002F3f2b1c7e-1a4d-4f9e-9c11-8a0f7b2d5e63\u002F\n","bash",[95,115,116],{"__ignoreMap":97},[117,118,121,125],"span",{"class":119,"line":120},"line",1,[117,122,124],{"class":123},"sBMFI","curl",[117,126,128],{"class":127},"sfazB"," https:\u002F\u002Fapi.activoice.org\u002Fexternal\u002Fv1\u002Fcampaigns\u002F3f2b1c7e-1a4d-4f9e-9c11-8a0f7b2d5e63\u002F\n",[88,130,134],{"className":131,"code":132,"language":133,"meta":97,"style":97},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"id\": \"3f2b1c7e-1a4d-4f9e-9c11-8a0f7b2d5e63\",\n  \"name\": \"Stop concreting over farmland\",\n  \"description\": \"\u003Cp>Every year, an area the size of a county…\u003C\u002Fp>\",\n  \"cover_image\": \"https:\u002F\u002Fmedias.activoice.org\u002Fcampaigns\u002Fcover-abc.jpg\",\n  \"cover_image_mobile\": null,\n  \"state\": \"active\",\n  \"deactivation_reason\": \"\",\n  \"language\": \"en-GB\",\n  \"slug\": \"stop-concreting-farmland\",\n  \"progress\": { \"count\": 1234, \"target\": 2000 }\n}\n","json",[95,135,136,142,169,190,211,232,247,268,285,306,327,373],{"__ignoreMap":97},[117,137,138],{"class":119,"line":120},[117,139,141],{"class":140},"sMK4o","{\n",[117,143,145,148,152,155,158,161,164,166],{"class":119,"line":144},2,[117,146,147],{"class":140},"  \"",[117,149,151],{"class":150},"spNyl","id",[117,153,154],{"class":140},"\"",[117,156,157],{"class":140},":",[117,159,160],{"class":140}," \"",[117,162,163],{"class":127},"3f2b1c7e-1a4d-4f9e-9c11-8a0f7b2d5e63",[117,165,154],{"class":140},[117,167,168],{"class":140},",\n",[117,170,172,174,177,179,181,183,186,188],{"class":119,"line":171},3,[117,173,147],{"class":140},[117,175,176],{"class":150},"name",[117,178,154],{"class":140},[117,180,157],{"class":140},[117,182,160],{"class":140},[117,184,185],{"class":127},"Stop concreting over farmland",[117,187,154],{"class":140},[117,189,168],{"class":140},[117,191,193,195,198,200,202,204,207,209],{"class":119,"line":192},4,[117,194,147],{"class":140},[117,196,197],{"class":150},"description",[117,199,154],{"class":140},[117,201,157],{"class":140},[117,203,160],{"class":140},[117,205,206],{"class":127},"\u003Cp>Every year, an area the size of a county…\u003C\u002Fp>",[117,208,154],{"class":140},[117,210,168],{"class":140},[117,212,214,216,219,221,223,225,228,230],{"class":119,"line":213},5,[117,215,147],{"class":140},[117,217,218],{"class":150},"cover_image",[117,220,154],{"class":140},[117,222,157],{"class":140},[117,224,160],{"class":140},[117,226,227],{"class":127},"https:\u002F\u002Fmedias.activoice.org\u002Fcampaigns\u002Fcover-abc.jpg",[117,229,154],{"class":140},[117,231,168],{"class":140},[117,233,235,237,240,242,244],{"class":119,"line":234},6,[117,236,147],{"class":140},[117,238,239],{"class":150},"cover_image_mobile",[117,241,154],{"class":140},[117,243,157],{"class":140},[117,245,246],{"class":140}," null,\n",[117,248,250,252,255,257,259,261,264,266],{"class":119,"line":249},7,[117,251,147],{"class":140},[117,253,254],{"class":150},"state",[117,256,154],{"class":140},[117,258,157],{"class":140},[117,260,160],{"class":140},[117,262,263],{"class":127},"active",[117,265,154],{"class":140},[117,267,168],{"class":140},[117,269,271,273,276,278,280,283],{"class":119,"line":270},8,[117,272,147],{"class":140},[117,274,275],{"class":150},"deactivation_reason",[117,277,154],{"class":140},[117,279,157],{"class":140},[117,281,282],{"class":140}," \"\"",[117,284,168],{"class":140},[117,286,288,290,293,295,297,299,302,304],{"class":119,"line":287},9,[117,289,147],{"class":140},[117,291,292],{"class":150},"language",[117,294,154],{"class":140},[117,296,157],{"class":140},[117,298,160],{"class":140},[117,300,301],{"class":127},"en-GB",[117,303,154],{"class":140},[117,305,168],{"class":140},[117,307,309,311,314,316,318,320,323,325],{"class":119,"line":308},10,[117,310,147],{"class":140},[117,312,313],{"class":150},"slug",[117,315,154],{"class":140},[117,317,157],{"class":140},[117,319,160],{"class":140},[117,321,322],{"class":127},"stop-concreting-farmland",[117,324,154],{"class":140},[117,326,168],{"class":140},[117,328,330,332,335,337,339,342,344,347,349,351,355,358,360,363,365,367,370],{"class":119,"line":329},11,[117,331,147],{"class":140},[117,333,334],{"class":150},"progress",[117,336,154],{"class":140},[117,338,157],{"class":140},[117,340,341],{"class":140}," {",[117,343,160],{"class":140},[117,345,346],{"class":123},"count",[117,348,154],{"class":140},[117,350,157],{"class":140},[117,352,354],{"class":353},"sbssI"," 1234",[117,356,357],{"class":140},",",[117,359,160],{"class":140},[117,361,362],{"class":123},"target",[117,364,154],{"class":140},[117,366,157],{"class":140},[117,368,369],{"class":353}," 2000",[117,371,372],{"class":140}," }\n",[117,374,376],{"class":119,"line":375},12,[117,377,378],{"class":140},"}\n",[69,380,381],{},"When the campaign publishes no figure, the object stays in place with null fields:",[88,383,385],{"className":131,"code":384,"language":133,"meta":97,"style":97},"{\n  \"progress\": { \"count\": null, \"target\": null }\n}\n",[95,386,387,391,427],{"__ignoreMap":97},[117,388,389],{"class":119,"line":120},[117,390,141],{"class":140},[117,392,393,395,397,399,401,403,405,407,409,411,414,416,418,420,422,425],{"class":119,"line":144},[117,394,147],{"class":140},[117,396,334],{"class":150},[117,398,154],{"class":140},[117,400,157],{"class":140},[117,402,341],{"class":140},[117,404,160],{"class":140},[117,406,346],{"class":123},[117,408,154],{"class":140},[117,410,157],{"class":140},[117,412,413],{"class":140}," null,",[117,415,160],{"class":140},[117,417,362],{"class":123},[117,419,154],{"class":140},[117,421,157],{"class":140},[117,423,424],{"class":140}," null",[117,426,372],{"class":140},[117,428,429],{"class":119,"line":171},[117,430,378],{"class":140},[73,432,434],{"id":433},"fields","Fields",[436,437,438,454],"table",{},[439,440,441],"thead",{},[442,443,444,448,451],"tr",{},[445,446,447],"th",{},"Field",[445,449,450],{},"Type",[445,452,453],{},"Description",[455,456,457,472,485,502,516,529,543,566,585,598],"tbody",{},[442,458,459,464,469],{},[460,461,462],"td",{},[95,463,151],{},[460,465,466],{},[95,467,468],{},"string",[460,470,471],{},"The campaign UUID.",[442,473,474,478,482],{},[460,475,476],{},[95,477,176],{},[460,479,480],{},[95,481,468],{},[460,483,484],{},"Campaign title.",[442,486,487,491,495],{},[460,488,489],{},[95,490,197],{},[460,492,493],{},[95,494,468],{},[460,496,497,501],{},[498,499,500],"strong",{},"Rich text — contains HTML."," Insert it as HTML rather than escaping it, or your page will show raw tags. The markup is sanitised on our side.",[442,503,504,508,513],{},[460,505,506],{},[95,507,218],{},[460,509,510],{},[95,511,512],{},"string | null",[460,514,515],{},"Absolute URL of the desktop cover image.",[442,517,518,522,526],{},[460,519,520],{},[95,521,239],{},[460,523,524],{},[95,525,512],{},[460,527,528],{},"Absolute URL of the mobile cover image.",[442,530,531,535,540],{},[460,532,533],{},[95,534,254],{},[460,536,537],{},[95,538,539],{},"\"draft\" | \"active\" | \"ended\"",[460,541,542],{},"See below.",[442,544,545,549,553],{},[460,546,547],{},[95,548,275],{},[460,550,551],{},[95,552,468],{},[460,554,555,558,559,561,562,565],{},[498,556,557],{},"Contains HTML."," The message to show once the campaign is over. Only display it when ",[95,560,254],{}," is ",[95,563,564],{},"ended",".",[442,567,568,572,576],{},[460,569,570],{},[95,571,292],{},[460,573,574],{},[95,575,468],{},[460,577,578,579,582,583,565],{},"Language code of the campaign content, e.g. ",[95,580,581],{},"fr",", ",[95,584,301],{},[442,586,587,591,595],{},[460,588,589],{},[95,590,313],{},[460,592,593],{},[95,594,512],{},[460,596,597],{},"URL-friendly name, when one is set.",[442,599,600,604,609],{},[460,601,602],{},[95,603,334],{},[460,605,606],{},[95,607,608],{},"object",[460,610,611,614],{},[95,612,613],{},"{ \"count\": number | null, \"target\": number | null }",". Always present.",[105,616,618],{"id":617},"campaign-state","Campaign state",[69,620,621,623,624,626,627,629],{},[95,622,263],{}," means the campaign is running. ",[95,625,564],{}," means it is over: our embed stops rendering at that point, so if you built your own page you should switch it to a closing message yourself — ",[95,628,275],{}," holds the text to display.",[69,631,632,635],{},[95,633,634],{},"draft"," means the campaign is still being prepared and has no public page yet. It is returned so you can develop your integration ahead of the launch, but do not publish it to your visitors: its content is not final.",[105,637,638],{"id":334},"Progress",[69,640,641,643,644,647,648,651],{},[95,642,334],{}," reports how many people have taken part, and the next milestone the campaign is aiming for. The milestone is computed automatically: a round number a little above the current count (for instance ",[95,645,646],{},"11123"," participants aim for ",[95,649,650],{},"12000","), which moves up as soon as it is reached.",[69,653,654,655,658],{},"Both fields are ",[95,656,657],{},"null"," when the organization chose not to publish its collective progress, or while fewer than 100 people have taken part.",[73,660,662],{"id":661},"errors","Errors",[436,664,665,675],{},[439,666,667],{},[442,668,669,672],{},[445,670,671],{},"Status",[445,673,674],{},"Meaning",[455,676,677,687,701],{},[442,678,679,684],{},[460,680,681],{},[95,682,683],{},"404",[460,685,686],{},"The campaign does not exist, or its organization has not enabled the External API. The two cases are deliberately indistinguishable.",[442,688,689,694],{},[460,690,691],{},[95,692,693],{},"405",[460,695,696,697,700],{},"Only ",[95,698,699],{},"GET"," is supported.",[442,702,703,708],{},[460,704,705],{},[95,706,707],{},"429",[460,709,710,711,714],{},"Too many requests. Wait for the delay given in the ",[95,712,713],{},"Retry-After"," header.",[73,716,718],{"id":717},"caching","Caching",[69,720,721,722,725],{},"Responses are cached on our CDN for five minutes, and carry ",[95,723,724],{},"Cache-Control"," headers so browsers and your own server-side cache can reuse them. Campaign edits purge the cache immediately, so a change is visible without waiting out the delay.",[69,727,728],{},"Calling the endpoint with a changing query string does not bypass the cache and offers no benefit.",[73,730,732],{"id":731},"stability","Stability",[69,734,735,738],{},[95,736,737],{},"v1"," is a frozen contract. Fields are never removed, renamed, or narrowed. New fields may be added, so parse responses tolerantly and ignore keys you do not know.",[740,741,742],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":97,"searchDepth":144,"depth":144,"links":744},[745,746,749,753,754,755],{"id":75,"depth":144,"text":76},{"id":85,"depth":144,"text":86,"children":747},[748],{"id":107,"depth":171,"text":108},{"id":433,"depth":144,"text":434,"children":750},[751,752],{"id":617,"depth":171,"text":618},{"id":334,"depth":171,"text":638},{"id":661,"depth":144,"text":662},{"id":717,"depth":144,"text":718},{"id":731,"depth":144,"text":732},"Read a campaign's public data from your own website","md",null,{},{"icon":36},{"title":44,"description":756},"4dFKvFvJYDBtF-1YpU9j78LzX7eYK9sMM5JE6p-qw0E",[764,766],{"title":33,"path":34,"stem":35,"description":765,"icon":36,"children":-1},"Complete reference for the Activoice embed configuration",{"title":54,"path":55,"stem":56,"description":767,"icon":57,"children":-1},"Build and maintain campaigns from Claude, Cursor or any MCP-compatible AI assistant",1790330667591]