Accueil/AD/Documentation
En service · dérivé du code

AD, techniquement : comment ça marche et comment l'intégrer

Tout ce qu'une campagne exige fonctionne : comptes, campagnes, créations, zones, le moteur de diffusion, le panneau et les rapports. Cette page est générée à partir du code même qui diffuse les annonces — chaque limite, macro, événement et route ci-dessous est lu dans la source à chaque build, jamais saisi à la main.

Ce que c'est

Ce qu'est AD, et pour qui

AD est un serveur publicitaire direct : pas d'enchère, pas de boîte noire. Un éditeur vend l'espace publicitaire d'un site qu'il exploite déjà ; un annonceur choisit les zones exactes, règle le ciblage et lance. Un même compte peut jouer l'un ou l'autre rôle — ou les deux.

Annonceurs

Créez une campagne, ajoutez des créations, passez la revue, achetez un emplacement sur une zone de la vitrine et voyez impressions et clics arriver dans les rapports.

Éditeurs

Déclarez un site, définissez des zones avec une taille, un modèle de vente et un prix, collez une balise et gardez 80% de chaque vente. Diffuser vos propres annonces sur vos propres zones est gratuit.

Les deux à la fois

Un compte annonceur devient éditeur dès qu'il déclare un site ; rien n'est dupliqué. Le panneau affiche les onglets de chaque rôle que vous tenez.

Accès

Comment entrer

Connectez-vous sur forhosting.com et choisissez « Gérer mon AD » dans le menu de votre compte. Le panneau s'ouvre avec une session courte — un identifiant qui expire en quelques minutes (jamais plus de 60) et ne laisse aucune clé permanente dans le navigateur. Quand elle expire, rouvrez-le depuis le même menu.

Pour vos intégrations, créez une clé d'API depuis le panneau (Profil) ou avec POST /tenants/:id/keys. Deux portées : tenant (accès complet à votre propre compte) et read (lecture seule, pour tableaux de bord et robots). La clé n'est affichée qu'une fois ; si elle est perdue, créez-en une autre et révoquez l'ancienne.

Notre équipe peut ouvrir votre panneau « en tant que client » pour vous aider : cette session dure au plus 15 minutes et porte le nom de la personne qui l'a ouverte. La maison n'opère jamais votre compte avec une clé permanente.

Annonceurs

Campagnes et ciblage

La campagne est le conteneur : nom, dates, budgets facultatifs et le ciblage partagé par ses créations. Elle naît en draft ; vous la passez active, paused, ou ended quand elle est terminée. Seules les créations actives d'une campagne active sont diffusées — mettre la campagne en pause arrête la diffusion aussitôt.

CritèreFonctionnement
Pays, région, villeUne liste de pays ; facultativement une région et une ville. La ville exige sa région ; la région exige son pays. Si la position du visiteur est inconnue et que la campagne demande du géo, l'annonce n'est pas diffusée — jamais diffusée par accident.
Langue du navigateurUne liste de codes de langue (jusqu'à 30) annoncés par le navigateur du visiteur — qui n'est pas forcément celle du site. Un visiteur dont la langue n'est pas listée n'est pas servi : laissez donc une campagne sans langues, elle récupère tous les autres.
Appareilany, mobile ou desktop.
Système d'exploitationUne liste parmi : iPhone, iPad, iPod, Windows, Android, BlackBerry, Ubuntu, Linux, CrOs, Mac OS X.
ReferrerLa page d'où vient le visiteur doit contenir le texte que vous fixez (insensible à la casse).
DatesDébut et fin de la campagne. Chaque création peut aussi porter ses propres dates ; la fenêtre effective est l'intersection des deux.
Plafond de fréquencePar création : au plus N impressions par visiteur, comptées dans un cookie first-party qui vit 3 jours.
Limites duresPar création : impressions totales, impressions par jour et clics totaux. Quand une limite est atteinte, la création cesse d'être diffusée en moins de 5 minutes.

Entre les campagnes éligibles, le moteur ne tire pas au hasard : il fait tourner. Il en diffuse une, puis l'autre, et ce n'est qu'à égalité que le poids donné à chaque création départage — montrer dix fois de suite la même campagne au même visiteur ne vend rien. Les tours sont comptés par visiteur et par zone, dans le navigateur même du visiteur ; avec les cookies bloqués, il se rabat sur le tirage pondéré. Une création avec une limite de diffusion est aussi lissée (pacing) : toutes les 5 minutes son poids est réajusté pour que le budget s'étale sur les jours de la campagne au lieu de brûler dès le matin. Le pacing ne fait que freiner — il n'invente jamais de trafic.

Une création n'est diffusée que sur une zone où elle a une commande payée (voir « Acheter des emplacements »). Campagne, création, zone et commande sont visibles dans le panneau (Campagnes, Créations, Acheter des emplacements).

Annonceurs

Créations : six types, une balise

Chaque création a une URL de clic, une taille fixe facultative et un poids. Les limites de ce tableau sont celles que l'API applique à l'envoi — elles sont lues dans le code, pas écrites ici.

TypeCe que vous envoyezLimites
image · imageUn fichier : PNG, JPEG, GIF, WebP, AVIF.Jusqu'à 2 Mo et 2000×1800 px. Si la création déclare une taille fixe, le fichier doit mesurer exactement cela.
text · lien texteUn titre et un corps facultatif, sans fichier.Rendu comme un lien dans le style propre de la zone.
html5 · HTML5Un ZIP avec index.html à la racine (ou dans un unique dossier), ou un seul fichier HTML.ZIP jusqu'à 10 Mo. Diffusé dans une iframe avec une politique de contenu stricte : aucune requête vers d'autres origines.
video · vidéoUn fichier : MP4, WebM. Affiche et bouton son facultatifs.Jusqu'à 30 Mo. Lecture muette en autoplay dans notre lecteur, et les rapports reçoivent un événement start et un événement end par visionnage — plus un événement debug qui ne compte jamais ni pour l'un ni pour l'autre, pour quand vous vérifiez une pièce.
vignette · interstitielUne image (mêmes règles que image) ou une vidéo.Affiché en surimpression plein écran. La zone décide quand elle apparaît — sur un lien, après N navigations, ou quand le visiteur fait le geste de partir — et l'impression compte à l'ouverture de la surimpression.
script · scriptVotre propre HTML/JS avec les macros ci-dessous, plus jusqu'à 5 images.Uniquement sur les zones qui acceptent le format script. C'est du code tiers qui s'exécute sur la page de l'éditeur : la revue manuelle est la seule barrière — elle n'est jamais sautée.

Le contrat HTML5

Votre index.html est chargé dans une iframe avec la destination du clic dans la query sous clickTag. Lisez-la et utilisez-la comme href de votre zone cliquable — cette URL est signée et compte le clic ; un lien écrit à la main ne compte pas.

// index.html — the click goes where the engine says
var clickTag = new URLSearchParams(location.search).get("clickTag");
document.getElementById("ad").href = clickTag;

Si votre création doit grandir, indiquez à la page sa hauteur réelle par postMessage. La balise indique aussi à la création la largeur de l'emplacement au chargement et à chaque redimensionnement, et envoie visible la première fois que l'emplacement entre dans la fenêtre — le bon moment pour lancer une animation. Les hauteurs jusqu'à 10000 px sont appliquées.

// creative → page: ask for the real height (applied up to 10000 px)
parent.postMessage({ fh: "resize", nh: document.documentElement.scrollHeight }, "*");

// page → creative: { fh: "size" | "visible" }
window.addEventListener("message", function (ev) {
  if (ev.data && ev.data.fh === "visible") { /* start your animation */ }
});

Une création minimale qui fait les deux, prête à envoyer telle quelle : téléchargez le ZIP d'exemple

Macros des créations script

Dans une création script, le moteur remplace ces marqueurs à la publication de la zone. Un modèle du panneau est la même chose avec des marqueurs supplémentaires que vous remplissez dans un formulaire.

MacroRemplacée par
[CLICKTAG] · [TRACKLINK]L'URL de clic signée — utilisez-la comme href. Sans elle, le clic n'est pas compté.
[LINK]L'URL de destination brute, pour du code qui en a besoin sans le traqueur.
[TARGET]_blank ou _self, selon la création.
[ID]L'identifiant de la création.
[TITLE] · [TITOLO]Le titre de la création (échappé en HTML).
[IMG0][IMG4]L'URL de chaque image envoyée, dans l'ordre.
[TIMESTAMP] · [RANDOM]Un horodatage et un nombre aléatoire, fixés à la publication de la zone — pour casser le cache de vos propres pixels.
[CLICKTAG:<id>] · [TRACKLINK:<id>]L'URL de clic signée d'une destination nommée, pour qu'une création à deux boutons compte chacun séparément.

Plusieurs destinations dans une même création

Une création peut porter jusqu'à 8 destinations nommées en plus de son URL de clic principale — un bouton App Store et un bouton Google Play dans la même pièce, par exemple. Chacune a un identifiant d'au plus 20 caractères minuscules ; main est réservé à l'URL principale.

Dans une création HTML5, elles arrivent dans la query sous clickTag_<id>, à côté du clickTag habituel ; dans une création script, vous écrivez [CLICKTAG:<id>]. Chacune passe par le traqueur de clics : elles s'ajoutent donc au total et se détaillent bouton par bouton dans les rapports.

Suivi tiers et consentement

Toute création peut porter un code de suivi (un pixel ou un script d'un fournisseur de mesure). Il est émis après l'annonce avec chaque src transformé en data-src, de sorte que rien ne charge tant que la balise ne l'autorise pas.

Si vous indiquez l'identifiant IAB TCF v2 du fournisseur, le code ne charge qu'après le consentement du visiteur pour ce fournisseur, avec ${GDPR} et ${GDPR_CONSENT_n} renseignés. La balise attend jusqu'à 10 secondes le gestionnaire de consentement du site ; sans identifiant de fournisseur, le code charge comme un élément ordinaire.

Revue manuelle

Toute création naît en_revision et est revue par une personne avant de pouvoir diffuser. Approuvée, vous la passez active ou paused ; refusée, vous voyez le motif et pouvez la corriger et la soumettre de nouveau. Rien d'une création non revue — ni le balisage, ni le script, ni le code de suivi — n'atteint jamais un visiteur.

Changer l'URL de clic, le contenu ou le fichier d'une création approuvée la renvoie en revue : ce qui a été approuvé est ce qui est diffusé, jamais autre chose.

Annonceurs

Acheter des emplacements

La vitrine liste chaque zone en vente : site, taille, formats acceptés, modèle de vente et le prix fixé par l'éditeur. Vous choisissez une zone, une création d'un format que la zone accepte, un budget et une date de début. Le devis et le débit utilisent la même formule :

ModèleVous payez parVous obtenez
cpmmillier d'impressionsimpressions = budget × 1000 / prix
cpcclicclics = budget / prix
cpdjourjours = budget / prix

La commande minimale est de $5 ; le devis refuse tout montant inférieur. Une commande est un achat prépayé de volume — l'argent ne bouge qu'une fois, à l'achat. Envoyez une idempotencyKey et une requête réessayée renvoie la même commande au lieu d'en créer une seconde.

Comment vous payez

VoieFonctionnement
Solde du compteLa commande est payée dans le même appel depuis votre solde For Hosting. Si le solde est insuffisant, la commande reste en attente et la réponse renvoie vers recharger ; vous pouvez retenter le paiement plus tard.
ManuelLa commande est créée en attente ; notre équipe la marque payée après avoir reçu le paiement hors du panneau. Elle ne diffuse pas avant.
Annonces maisonVotre propre création sur votre propre zone : la commande naît payée à coût nul. Même enregistrement, pas d'argent.

Quand une commande est marquée payée, 80% de son prix final est crédité à l'éditeur de la zone — sur la commande entière, sans prorata de diffusion. La zone est republiée immédiatement et votre création commence à diffuser dans la minute.

Éditeurs

Sites, zones, balise et versements

Sites

Déclarez un site par son domaine (Devenir éditeur). Il naît en attente et se vérifie tout seul : publiez le jeton que nous vous donnons sur /.well-known/fh-ad-site-verification.txt ou dans la page d'accueil, demandez la vérification, et le site s'active de lui-même — sans file d'attente et sans que personne ici ait à le regarder d'abord. Un domaine non vérifié ne peut pas toucher de part. Retirer un site déclenche un délai de 90 jours sur le domaine : personne d'autre ne peut l'enregistrer entre-temps et hériter de son historique.

Zones

La zone est l'emplacement vendable : un nom, une taille en pixels (ou -1 pour une largeur adaptative), les formats qu'elle accepte, un modèle de vente avec son prix, et si elle est en vente dans la vitrine. Vous pouvez fixer une création de repli à vous qui diffuse quand rien d'autre n'est éligible — elle ignore ciblage et plafonds.

Deux comportements facultatifs s'exécutent dans le navigateur du visiteur : le rafraîchissement automatique (une nouvelle requête toutes les N secondes, minimum 5 ; un onglet masqué ne rafraîchit jamais, et un emplacement qui revient vide garde l'annonce précédente) et le report des paramètres (la query de la page voyage avec le clic jusqu'à la destination de l'annonceur).

Comment l'interstitiel se déclenche

L'overlay est une propriété de la zone, pas du site : rien n'a besoin d'être collé pour lui — la balise construit ce qu'il lui faut — et le rythme se change depuis le panneau où l'on achète. Quatre modes :

ModeQuand elle apparaîtRéglage
enlaceLe visiteur clique sur un lien qui correspond au sélecteur de la zone.Un sélecteur CSS — par défaut p a, nav a, h2 a.
navegacionAprès N navigations du même visiteur. Les chargements de page comptent, et les navigations internes aussi : la même balise fonctionne donc sur un site classique comme sur une application monopage, sans que personne n'écrive une ligne.Un calendrier échelonné, par exemple [3,5,10,20] : il se déclenche à la 3e navigation, puis en laisse passer 5, puis 10, puis 20, et répète la dernière. Jusqu'à 20 paliers, chacun entre 1 et 500.
salidaLe visiteur fait le geste de quitter l'onglet. Avec un pointeur fin, c'est la souris qui remonte vers la barre d'adresse ; sur un téléphone, c'est le bouton retour, ou le retour après une absence — jamais un défilement, qui serait un guet-apens.Minutes de silence entre deux surimpressions pour le même visiteur, jusqu'à 10080.
popunderLe premier clic du visiteur sur un vrai lien ouvre sa destination dans un nouvel onglet, et l'onglet qu'il laisse derrière lui charge l'annonce — uniquement lorsqu'il regarde déjà ailleurs, et annulé s'il revient.Un calendrier échelonné, une pause en minutes, ou les deux — l'un des deux est obligatoire. Et une destination : une page à nous contenant l'annonce, ou une URL précise.

Un rythme fixe fatigue le visiteur autant au 30e jour qu'au 1er — c'est à cela que sert le calendrier échelonné : il encaisse la première impression tôt, puis s'efface. Le compte vit dans le navigateur même du visiteur ; si le stockage est bloqué, il se rabat sur un comptage en mémoire au lieu de casser.

Quand les annonces sont demandées — votre site d'abord

Les annonces ne doivent pas ralentir votre site, et le réglage vit ici, pas dans votre HTML. Chaque site choisit quand la balise demande sa première annonce :

ModeQuand elle apparaît
carga-ociosoPar défaut. La page finit de charger, puis la balise attend un creux où le navigateur n'a rien à faire — avec un plafond de 2000 ms pour que, dans un onglet chargé, les annonces apparaissent quand même.
cargaDès que la page a fini de charger.
retrasoUne attente fixe après le chargement, entre 100 et 15000 ms.
inmediatoLe plus tôt possible, en concurrence avec votre propre contenu pour le réseau. Uniquement si vous savez pourquoi vous le voulez.

Et pendant que l'annonce est en route, l'emplacement n'est pas vide : la balise y peint un gabarit d'attente, et elle apprend la hauteur — la première visite réserve une taille prudente, et dès la deuxième l'emplacement réservé est le bon, de sorte que la page ne saute pas quand l'annonce arrive. Ce saut est ce que Google mesure comme décalage de mise en page, et c'est la raison habituelle pour laquelle une régie publicitaire coûte son score à un site.

La balise

Collez-la là où la publicité doit apparaître — ou laissez la zone dire où elle va et sautez cette étape entièrement (voir « Où sort la publicité », plus bas). L'id de zone vient du panneau (Sites et zones). La même balise sert tous les formats que la zone accepte ; une zone interstitielle utilise aussi la balise standard.

Standard (un div et un script, asynchrone) :

<div data-fh-ad="zon_XXXXXXXXXXXXXXXXXXXXXXXX"></div>
<script src="https://api.ad.forhosting.com/ad-tag.js" async></script>

Legacy, pour les CMS qui n'exécutent pas de scripts asynchrones :

<script src="https://api.ad.forhosting.com/ad-serve?zone=zon_XXXXXXXXXXXXXXXXXXXXXXXX&mode=js"></script>

Lien texte : une URL qui compte l'impression et redirige vers l'annonceur :

https://api.ad.forhosting.com/ad-serve?zone=zon_XXXXXXXXXXXXXXXXXXXXXXXX&mode=link

La balise se met à jour toute seule : son URL ne porte pas de version et ne change jamais, donc une amélioration de notre côté atteint tous les sites en environ 60 minutes et personne ne modifie de gabarit (elle sert v11 aujourd'hui, dans l'en-tête x-tag-version). Elle attend que votre page finisse de charger avant de demander quoi que ce soit : les annonces ne concurrencent jamais votre contenu. Ses seules marques dans votre page sont l'attribut data-fh-ad et l'id de l'overlay — vérifiés contre les listes de blocage courantes, sans aucune correspondance. Les plafonds de fréquence utilisent un cookie propriétaire.

Si le même emplacement se répète le long d'une page — « tous les N messages » sur un forum, par exemple — la balise demande toutes ses copies en une seule requête (jusqu'à 10), et le plafond de fréquence avance à l'intérieur de ce lot : une même création ne peut donc pas remplir tous les emplacements de la page. Si notre côté ne comprend pas le lot, la balise se rabat sur un emplacement à la fois plutôt que de laisser la page vide. Répéter une zone se déclare chez nous : en règle générale, une zone par emplacement, parce que la zone est ce qu'un rapport regroupe.

Où sort la publicité — sans toucher à votre thème

Une zone peut déclarer elle va : un sélecteur CSS (jusqu'à 300 caractères) et une position par rapport à ce que ce sélecteur trouve. C'est la balise qui crée l'emplacement, donc déplacer une publicité coûte un changement dans le panneau et non une modification de votre thème.

PositionOù atterrit l'emplacement
despuesJuste après l'élément trouvé. C'est la valeur par défaut.
antesJuste avant lui.
dentro-inicioÀ l'intérieur, comme premier enfant.
dentro-finÀ l'intérieur, comme dernier enfant.

Deux nombres facultatifs gouvernent la répétition : l'un place l'emplacement toutes les N occurrences (jusqu'à 50) et un plafond limite le nombre d'emplacements créés — 4 par défaut quand on répète, 20 au maximum. Il y a toujours un plafond : un sélecteur lâche comme p correspond des centaines de fois dans un long article, et cette limite ne peut pas dépendre de la mémoire de celui qui configure.

Deux choses à savoir. Un div data-fh-ad que vous placez vous-même dans le thème l'emporte : la balise n'ajoutera pas un second emplacement pour cette zone, vous pouvez donc passer d'une méthode à l'autre sans payer deux impressions pour une. Et un sélecteur qui ne correspond à rien ne lève aucune erreur — votre page s'affiche très bien sans la publicité et le panneau reste au vert. Vérifiez l'emplacement dans un navigateur, en bureau et en mobile : un sélecteur peut exister sur l'article et pas sur l'accueil, ou mesurer 1360 px en bureau et 0 sur un téléphone.

WordPress : rien à coller

Si votre site tourne sous WordPress, il y a une extension, forhosting-ad. Installez-la et elle se présente toute seule : elle publie un défi sur votre propre domaine, nous le lisons, et l'identifiant est délivré une seule fois. Vous ne tapez aucune clé, aucun id, aucun jeton — et prouver que vous contrôlez le domaine n'est pas la même chose qu'être invité : rien n'est délivré tant que le site n'est pas approuvé.

À partir de là les zones se gèrent depuis le panneau, emplacement compris. L'extension demande en plus au cache de pages que votre site utilise de purger les pages dont le balisage a changé — elle reconnaît les plus courants et s'adresse à chacun à sa manière. Une page en cache est la raison la plus fréquente pour laquelle la balise est dans votre HTML et la publicité toujours pas à l'écran, et cela ne se voit pas en ligne de commande : la copie périmée n'est servie qu'à un vrai navigateur.

Il existe une seconde extension, forhosting-ad-updater, qui reçoit un paquet et l'installe. C'est par conception un canal d'exécution à distance, nous ne l'installons donc que sur nos propres sites ; chez vous, les mises à jour arrivent par le canal natif de WordPress et vous décidez quand les appliquer.

Versements

Votre part de 80% sur chaque commande payée s'accumule dans le panneau (Versements). Quand le cumul atteint $10, demandez le versement avec la méthode de votre profil (paypal, bank, other) ; notre équipe paie hors du panneau et enregistre la référence.

États : accruedrequestedprocessingpaid ; un versement échoué vous revient avec le motif pour que vous le redemandiez avec des coordonnées corrigées.

Pour tous

Rapports

Impressions, clics et début/fin de vidéo sont comptés en bordure, à chaque requête. Avant de compter, le trafic est filtré : robots connus par leur user agent, réseaux de centres de données, requêtes avec un score de bot très bas, et toute IP répétant la même requête en moins de 2 secondes. Une requête filtrée reçoit quand même son annonce ou sa redirection — seul le compteur est protégé.

Toutes les 5 minutes, les comptages sont consolidés en lignes journalières par création, zone et hôte du referrer. Le jour en cours peut avoir jusqu'à ce retard ; les jours clos ne changent jamais.

Le panneau (Rapports) montre les totaux et une série journalière, le CTR (clics ÷ impressions × 100) et l'eCPM (valeur délivrée × 1000 ÷ impressions), côté annonceur ou côté éditeur, et un classement regroupé selon l'une des six dimensions :

Regrouper parCe que vous obtenez
creativeUne ligne par création.
campaignUne ligne par campagne.
zoneUne ligne par zone.
siteUne ligne par site, en additionnant ses zones.
refHostUne ligne par hôte de la page d'où vient l'impression — l'hôte seul, jamais l'URL.
linkUne ligne par destination nommée : lequel de vos boutons a été cliqué. Les lignes de ce type portent des clics et aucune impression : lisez-les comme un détail, jamais comme un total.

Chacune de ces vues peut aussi être filtrée par campagne, création, zone, hôte du referrer ou destination, et les mêmes chiffres sont disponibles par l'API.

Avant tout comptage, le trafic passe par le filtre anti-robots, que la maison exploite dans l'un de trois modes : block (par défaut : les requêtes filtrées reçoivent quand même leur annonce, elles ne comptent simplement pas), log (elles comptent et sont enregistrées à part, pour mesurer avant de décider) et off.

Intégrer

Référence de l'API

URL de base https://api.ad.forhosting.com. Envoyez votre clé en jeton Bearer ; corps et réponses sont en JSON. Chaque réponse a la forme {"success":true,"data":…} ou {"success":false,"error":{"code","message"}} avec le statut HTTP correspondant.

curl https://api.ad.forhosting.com/me \
  -H "Authorization: Bearer ads_ten_…"

Portées des identifiants

PortéeCe qu'elle peut faire
sessionCe que le panneau utilise : votre propre compte, accès complet, expire en quelques minutes. Émise par le portail à l'ouverture du panneau.
tenantVotre propre compte, accès complet, permanente. Pour vos intégrations.
readVotre propre compte, lecture seule. Pour les tableaux de bord et robots qui ne doivent rien modifier.
systemLa maison : n'importe quel compte (avec un tenantId explicite), revues, vérification des sites, paiements manuels et versements. L'équipe utilise une session system qui expire aussi.

Un identifiant tenant, read ou session opère toujours son propre compte — un tenantId envoyé par le client est ignoré. Un identifiant qui appartient à quelqu'un d'autre renvoie 404, pas 403 : l'API ne confirme jamais qu'il existe.

Routes

Toutes les routes que le service annonce, avec la portée que le routeur exige — dérivée du routeur lui-même à chaque build.

MéthodeRoutePortée
GET/publique
GET/ad-servepublique
GET/ad-clickpublique
GET/ad-video-eventpublique
GET/ad-a/*publique
GET/ad-p/*publique
GET/ad-pu/*publique
GET/ad-preview/*publique
GET/ad-tag.jspublique
GET/wp/:plugin.jsonpublique
GET/wp/:plugin.zippublique
POST/wp/enrollpublique
POST/wp/enroll/:id/verifypublique
POST/wp/enroll/:id/updater-secretpublique
GET/wp/enroll/:idpublique
GET/wp/altassystem
POST/wp/altas/:id/approvesystem
POST/wp/altas/:id/rejectsystem
POST/wp/altas/:id/reopensystem
POST/wp/altas/:id/adoptarsystem
POST/wp/altas/:id/updater-secretsystem
GET/wp/preauthsystem
POST/wp/preauthsystem
DELETE/wp/preauthsystem
POST/tenantssystem
GET/tenantssystem
GET/tenants/:idn'importe laquelle
PATCH/tenants/:idécriture
POST/tenants/:id/sessionssystem
POST/sessions/staffsystem
DELETE/sessions/selfn'importe laquelle
DELETE/sessions/:idsystem
GET/men'importe laquelle
POST/tenants/:id/keysécriture / system
GET/tenants/:id/keyslecture / system
DELETE/tenants/:id/keys/:keyIdécriture / system
GET/me/payout-profilelecture
PUT/me/payout-profileécriture
POST/campaignsécriture
GET/campaignslecture
GET/campaigns/:idlecture
PATCH/campaigns/:idécriture
DELETE/campaigns/:idécriture
POST/campaigns/:id/duplicateécriture
POST/creativesécriture
GET/creativeslecture
GET/creatives/:idlecture
PATCH/creatives/:idécriture
DELETE/creatives/:idécriture
PUT/creatives/:id/assetécriture
POST/creatives/:id/duplicateécriture
POST/creatives/bulkécriture
GET/moderation/queuesystem
GET/moderation/preview-url/:idn'importe laquelle
POST/creatives/:id/approvesystem
POST/creatives/:id/rejectsystem
POST/creatives/:id/emergency-blocksystem
POST/sitesécriture
GET/siteslecture
GET/sites/pendingsystem
GET/sites/:idlecture
PATCH/sites/:idécriture
DELETE/sites/:idécriture
POST/sites/:id/verifyécriture
POST/zonesécriture
GET/zoneslecture
GET/zones/:idlecture
PATCH/zones/:idécriture
DELETE/zones/:idécriture
GET/zones/:id/taglecture
GET/zones/:id/quoten'importe laquelle
POST/zones/:id/publishsystem
GET/marketplacen'importe laquelle
POST/checkoutécriture
GET/orderslecture
GET/orders/:idlecture
GET/orders/pendingsystem
POST/orders/:id/payécriture
POST/orders/:id/mark-paidsystem
GET/payoutslecture
GET/payouts/pendingsystem
POST/payouts/:id/requestécriture
POST/payouts/:id/statussystem
POST/payouts/:id/mark-paidsystem
GET/statslecture
GET/stats/toplecture
GET/settingsn'importe laquelle
PUT/settingssystem
GET/templatesn'importe laquelle
POST/templatesécriture
PATCH/templates/:idécriture
DELETE/templates/:idécriture
POST/templates/:id/rendern'importe laquelle
GET/geo/countriesn'importe laquelle
GET/geo/regionsn'importe laquelle

publique: sans identifiant — le chemin de diffusion · n'importe laquelle: tout identifiant valide, sur son propre compte · lecture: tenant, session ou read · écriture: tenant ou session (read est refusé) · system: la maison seulement

Erreurs à connaître : 401 unauthorized (identifiant absent ou expiré), 403 forbidden (la portée ne peut pas faire cela), 404 not_found, 400 bad_request avec le motif dans le message, 409 conflict (une transition d'état non permise), 402 insufficient_balance au paiement d'une commande, et 503 payments_disabled si les ventes sont en pause.

Démarrer

Ouvrez votre panneau

Connectez-vous sur forhosting.com et choisissez « Gérer mon AD » dans le menu de votre compte. Les éditeurs ajoutent un site et récupèrent leur balise ; les annonceurs créent une campagne et achètent un emplacement.

FAQ

Questions techniques

Puis-je lancer une vraie campagne aujourd'hui ?

Oui — de bout en bout : créez la campagne et la création dans le panneau, passez la revue, achetez un emplacement, et la balise diffuse avec son suivi. Sur vos propres sites, activation instantanée et gratuite.

Où trouver la balise ?

Panneau → Sites et zones → obtenir la balise. Chaque zone a la sienne ; la variante standard est un div plus un script.

Pourquoi ma création n'a-t-elle pas diffusé tout de suite ?

Chaque création passe une courte revue manuelle avant de diffuser — cela protège les sites où votre annonce apparaît. Rotation et plafonds s'appliquent aussi : une création plafonnée ou lissée saute des requêtes à dessein, et une zone modifiée met jusqu'à une minute à se rafraîchir en bordure.