Migrating from v1
API v2 uses English paths, fields, values and error codes. API v1 remains supported.
API v1 was released on October 28, 2026 with French names (/blocs, titre, reglages). API v2, released on October 29, 2026, exposes the same operations with English names. Both versions read and write the same data.
API v1 remains supported: existing integrations keep working without changes. New integrations should use v2.
What changes
| v1 | v2 | |
|---|---|---|
| Base URL | https://app.hopla.page/api/v1 | https://app.hopla.page/api/v2 |
| Paths, fields, enum values | French | English |
| Error object | { "erreur": { "code", "message" } }, French codes | { "error": { "code", "message" } }, English codes |
| CSV export header | email,prenom,inscrit,source | email,first_name,subscribed_at,source |
| MCP tools | lire_page, ajouter_bloc… | get_page, create_block… |
Authentication, rate limits, HTTP statuses and response structure do not change. In v2 requests, a field sent with its v1 name is still accepted: you can migrate one call at a time.
Theme ids (onyx), social network ids (instagram), icon ids and the text of your page (titles, bio) are not translated.
MCP server
The MCP server lists its tools with English names and fields. Former tool names are still accepted and keep their French fields, so an agent configured before October 29, 2026 keeps working. Reconnect the client to load the new tool list.
| v1 | v2 |
|---|---|
lire_page | get_page |
lire_compte | get_account |
lire_stats | get_analytics |
lire_semaine | get_weekly_views |
lire_resume | get_analytics_summary |
lire_liste | get_email_list |
lister_inscrits | list_subscribers |
lire_qr_code | get_qr_code |
lire_site | fetch_url_preview |
lire_flux | fetch_feed |
lire_note_avis | fetch_review_rating |
lister_themes | list_themes |
lister_reseaux | list_social_networks |
lister_pictos | list_icons |
lister_types | list_block_types |
lister_cles | list_api_keys |
modifier_reglages | update_settings |
ajouter_bloc | create_block |
modifier_bloc | update_block |
dupliquer_bloc | duplicate_block |
supprimer_bloc | delete_block |
ordonner_blocs | reorder_blocks |
envoyer_image | upload_image |
supprimer_inscrit | delete_subscriber |
envoyer_inscrits | sync_subscribers |
Endpoints
| v1 | v2 |
|---|---|
/page | /page |
/compte | /account |
/reglages | /settings |
/qr | /qr-code |
/blocs | /blocks |
/blocs/{id} | /blocks/{id} |
/blocs/{id}/dupliquer | /blocks/{id}/duplicate |
/ordre | /blocks/order |
/medias | /media |
/stats | /analytics |
/stats/semaine | /analytics/week |
/stats/resume | /analytics/summary |
/liste | /email-list |
/inscrits | /subscribers |
/inscrits/{id} | /subscribers/{id} |
/inscrits/envoyer | /subscribers/sync |
/apercu | /fetch/preview |
/flux | /fetch/feed |
/avis | /fetch/rating |
/cles | /api-keys |
/export | /export |
/themes | /themes |
/reseaux | /social-networks |
/pictos | /icons |
/types | /block-types |
Query parameters:
| v1 | v2 |
|---|---|
periode | period |
du | from |
au | to |
taille | size |
limite | limit |
depart | offset |
Fields
| v1 | v2 |
|---|---|
a | to |
abonnement | subscription |
acces | access |
adresse | url |
adressePostale | address |
apercu | preview |
appareil | device |
appareils | devices |
avant | previous |
bloc | block |
blocs | blocks |
bouton | button |
boutons | buttons |
branchee | connected |
bureau | desktopLayout |
cache | hiddenFor |
cadeau | gift |
chemin | path |
cle | key |
cles | apiKeys |
clesApi | apiKeys |
clics | clicks |
compte | account |
compteARebours | countdown |
conditionsAcceptees | termsAccepted |
coordonnees | contact |
couleurs | colors |
courante | current |
cree | createdAt |
creemAbonnement | creemSubscriptionId |
creemClient | creemCustomerId |
creneau | schedule |
de | from |
debut | startsAt |
dejaVue | everViewed |
demanderPrenom | askFirstName |
depart | offset |
derniereConnexion | lastSignInAt |
disposition | layout |
domaine | domain |
ecriture | writeAccess |
effet | effect |
enAttente | pending |
envoye | synced |
envoyes | synced |
erreur | error |
erreurs | failed |
essai | trial |
exporte | exportedAt |
faits | highlights |
famille | family |
fin | endsAt |
finPeriode | periodEnd |
fonctions | features |
fond | background |
forme | shape |
fournisseur | provider |
fuseau | timezone |
genre | kind |
historiqueStats | analyticsRetentionDays |
humeur | mood |
icone | icon |
imageFond | backgroundImage |
incluse | included |
inscrit | subscribedAt |
inscrits | subscribers |
integres | inAppBrowser |
jour | date |
jours | days |
jusqu | until |
le | at |
libelle | label |
limite | limit |
liste | list |
listeBranchee | connectedList |
masquer | hidden |
mention | disclosure |
montants | amounts |
nom | name |
nombre | count |
note | rating |
offre | plan |
offreOfferte | complimentaryPlan |
ombre | shadow |
outil | tool |
ouverts | opened |
ouvrirApps | openInApps |
partage | shareButton |
partenariat | partnership |
pays | countries |
periode | period |
phrase | sentence |
pictos | icons |
places | seats |
plage | customRange |
police | font |
poste | jobTitle |
precedent | previousPeriod |
prenom | firstName |
preuve | proof |
prix | price |
profil | profile |
pseudo | username |
public | visible |
redirection | redirect |
reglages | settings |
reponse | answer |
reseau | network |
reseaux | socialLinks |
reseauxPosition | socialLinksPosition |
restantes | remaining |
resume | summary |
resumeHebdo | weeklySummary |
semaine | week |
sensible | sensitive |
serie | daily |
societe | company |
sousTitre | subtitle |
statistiques | events |
stats | analytics |
statut | status |
suivant | next |
supprime | deleted |
synchro | syncStatus |
teinte | tint |
telephone | phone |
texte | text |
titre | title |
ton | trend |
utilisee | lastUsedAt |
vedette | featured |
versApp | openedInApp |
visiteurs | visitors |
vouvoiement | formal |
vues | views |
vuesReseaux | networkViews |
In GET /api-keys, debut becomes prefix; in GET /email-list, semaine becomes thisWeek; at the root of GET /social-networks, reseaux becomes socialNetworks.
Block types
| v1 | v2 |
|---|---|
lien | link |
titre | heading |
texte | text |
derniere-video | latest-video |
inscription | email-signup |
preuve | proof |
produit | product |
soutien | tip |
reservation | booking |
musique | music |
coordonnees | contact-card |
lieu | location |
galerie | gallery |
formulaire | contact-form |
flux | feed |
Enum values
| v1 | v2 |
|---|---|
format: bouton | button |
format: bandeau | banner |
format: carte | card |
animation: aucune | none |
animation: reflet | shine |
animation: orbite | orbit |
animation: lueur | glow |
animation: onde | wave |
animation: respiration | breathe |
animation: rebond | bounce |
animation: secousse | shake |
photo: ronde | round |
photo: grande | large |
socialLinksPosition: haut | top |
socialLinksPosition: bas | bottom |
style: plein | solid |
style: contour | outline |
style: doux | soft |
style: relief | raised |
style: verre | glass |
shape: pilule | pill |
shape: arrondi | rounded |
shape: carre | square |
shadow: aucune | none |
shadow: subtile | subtle |
shadow: marquee | strong |
kind: note | rating |
kind: compteur | counter |
kind: temoignage | testimonial |
disclosure: publicite | advertising |
layout: liste | list |
layout: grille | grid |
effect: avant | highlight |
effect: afficher | show |
effect: seulement | only |
effect: sauf | except |
desktopLayout: colonne | column |
desktopLayout: profil | profile |
desktopLayout: onepage | one-page |
font: geometrique | geometric |
font: technique | technical |
font: condensee | condensed |
font: elegante | elegant |
font: editoriale | editorial |
plan: gratuit | free |
period: mois | month |
period: an | year |
trend: hausse | up |
trend: baisse | down |
trend: neutre | neutral |
family: sombre | dark |
family: clair | light |
family: couleur | color |
family: degrade | gradient |
family: decale | quirky |
image: partage | share |
image: vignette | thumbnail |
Plan features
Keys of features in GET /account:
| v1 | v2 |
|---|---|
sansMention | noBranding |
blocs | unlimitedBlocks |
vitrine | storefront |
couleurs | customColors |
programmation | scheduling |
avis | reviews |
stats | analytics |
formulaire | contactForm |
galerie | gallery |
redirection | redirect |
fond | backgroundImage |
grandePhoto | largeProfilePhoto |
grille | gridLayout |
heure | timeSchedule |
listeEmail | emailList |
pays | countryTargeting |
cadeau | leadMagnet |
flux | feed |
Error codes
| v1 | v2 |
|---|---|
cle_absente | missing_api_key |
cle_invalide | invalid_api_key |
trop_d_essais | too_many_invalid_keys |
compte_suspendu | account_suspended |
conditions | terms_not_accepted |
offre | plan_required |
trop_d_appels | rate_limited |
lecture_seule | read_only_key |
rien_a_changer | empty_update |
theme_inconnu | unknown_theme |
bloc_introuvable | block_not_found |
type_reserve | block_type_unavailable |
bloc_refuse | block_rejected |
adresse_invalide | invalid_url |
type_inconnu | unknown_block_type |
ordre_incomplet | invalid_order |
periode | invalid_period |
image_absente | missing_image |
image_trop_grosse | image_too_large |
format_image | unsupported_image_format |
plus_de_place | storage_quota_exceeded |
inscrit_introuvable | subscriber_not_found |
rien_de_branche | no_integration |
adresse | invalid_url |
trop_de_lectures | rate_limited |
site_illisible | fetch_failed |
serveur | internal_error |
trop_gros | payload_too_large |
json | invalid_json |
methode | method_not_allowed |
introuvable | not_found |