Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour que toute campagne serve, elle doit avoir des créations valides associées. Tous les créatifs doivent être inscrits via l’API, mais cela peut être difficile. La façon dont les créations doivent être chargées dépend fortement du format de la création.
Remarque
Quel que soit le format créatif, il existe quelques considérations :
- Pour acheter un inventaire en temps réel, les créatifs doivent être activés dans le processus d’audit, mais définissez
"audit_status""pending"sur et"allow_audit""true"sur . - Une fois l’audit du créatif terminé, les différents champs d’audit status et de commentaires sont remplis avec des informations critiques concernant le résultat de l’audit. Ces champs sont
"audit_status","audit_feedback","google_audit_status","google_audit_feedback","msft_audit_status""msft_audit_feedback", . - Les
"content"champs et"original_content"ont des objectifs légèrement différents. Le"content"champ est ce qui est réellement servi par le bus d’impression lors d’un appel publicitaire et peut contenir des caractères d’échappement afin d’être correctement servi. Le"original_content"champ est utilisé par l’interface utilisateur pour afficher et modifier le"content". Pour cette raison, les valeurs des"content"champs et peuvent"original_content"être légèrement différentes. - Chaque créateur doit être associé à un seul annonceur. Cette valeur est définie via le
"advertiser_id"paramètre . - Pour suivre les clics sur un élément créatif donné, vous devez inclure la macro URL de clic (
"${CLICK_URL}"ou"${CLICK_URL_ENC}") et définir le"track_clicks"champtruesur .
HTML et JavaScript retournés par une URL
Les formats HTML ou JavaScript retournés par une URL ("format" respectivement les valeurs de "url-html" et "url-js", ) sont des formats relativement simples à utiliser pour les créations. En règle générale, les URL ne contiennent pas de caractères qui seraient normalement en conflit avec la syntaxe JSON. L’inscription des créatifs de ce format est relativement simple. Reportez-vous à l’exemple ci-dessous pour connaître le "url-html" format. Le "url-js" format étant très similaire, un seul exemple est présenté.
Exemple pour le "url-html" format
Créez un fichier contenant JSON et ajoutez les valeurs correctes. Les champs nécessaires incluent le format, la largeur, la hauteur, la status d’audit et l’URL du média.
$cat creative
{
"creative": {
"name": "HTML returned by a URL",
"advertiser_id": 1234,
"format": "url-html",
"width": 300,
"height": 250,
"audit_status": "pending",
"track_clicks": true,
"media_url": "http://ad.adserver.com/show_ad.php?ad_id=123456&width=300&height=250&click=${CLICK_URL}&random=${CACHEBUSTER}"
}
}
Ensuite, pour créer le nouveau créatif, envoyez une POST requête à l’API.
$ curl -b cookies -c cookies -X POST --data-binary @creative 'https://api.appnexus.com/creative?advertiser_id=1234'
{
"response":{
"status": "OK",
"id": 123456
}
}
Flash hébergé et images
Les formats Flash hébergé et image ("format" valeurs de "flash" et "image", respectivement) sont un peu plus difficiles à créer via l’API. L’image du fichier Flash doit être encodée en base 64 et incluse dans le "content" champ . Une fois chargé vers l’API, nous allons commencer à transférer ce contenu créatif vers notre CDN (réseau de distribution de contenu). Une fois que le créatif a été entièrement transféré vers le CDN, le créatif "content" est remplacé par null et le "media_url" est modifié pour pointer vers l’emplacement du créatif sur le CDN. Le "format" champ reste ou "image""flash", en fonction de la valeur d’origine. L’exemple ci-dessous montre comment charger une image créative. L’image que nous utilisons pour l’exemple se trouve ici : https://dummyimage.com/300x250.
Comment charger une image créative ?
À partir du terminal, vous pouvez obtenir l’encodage en base 64 pour un fichier avec la commande ci-dessous.
Remarque
Si la sortie de base64 contient un habillage de texte, les retours de ligne doivent être supprimés.
$ base64 300x250.gif
R0lGODdhLAH6AOMAAMzMzAAAAJmZmbKysjMzM39/f2ZmZkxMTBkZGQAAAAAAAAAAAAAAAAAA
AAAAAAAAACwAAAAALAH6AAAE/hDISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//A
oHBILBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7
/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0
tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq
6+zt7u/w8fLz9PX29/j5+vv8/f7/AAMKHEiwoMGDCBMqXMgwoICHECNKnChgAAgBBg4QIHDg
gAEB/icwauToEaSaASJHdixg8gNKijAjhhC5sePHIgIC6NzJs6fPAAQ6DDjwcyeCAxZBDC2q
82jSMQIOIGDa1MDTDQaoUm2pYSlTp0JyaqUaFOvYnQU+ZD0bIG0YAVPZBkDANcNauTvrXrg7
1u0PsXh5ls1AFO+BDoXlHgbDV65fwoHzbkjMdrEPwJGBaqDMEwGBuD4NTC7qGXRP0V8ay9Vb
gfPqzaQ/F0XdY0CB27hz6yYQOkMBnwgeAyhgWidrCb97Bq9A3OfxK3wJfHxqm7fyDdZ1EtDN
PfdV5sCFN+/5nIhq2heKW7bAGUEG9ZA7p55rVYNq4RWyB1hfAj6G9ky4/oaeBcntNBgG+rV1
QYHaYdcTfljc5gFnB1pg2oAjMKiZBglCOISADvL0nQUD9FShBAmOWEGJgrnBIk8aXIhCihu8
2CASrnk4gY37dZAgiT3xh2BPK6golA/FGQmAaTp6wKOQF/x4RIIKbqBhkxNcCR5PWCL3YAo5
YcjBZ0rSwJmSX5qgJQdrEkFllwBw5uRprREpFJ0h7SRmBtYhUKYMZ2aQZgly3snTnjwM8KYH
+rnngWkVNvoBpHkeymhnf8JA4wU8luejfI+2KMQAxVXZgWlQDmlUBah+IKkJmOmE6AQJ+rlD
cRl0ekKrl64aBKk+wTkBnojZOaylExpbQqwB/sxaa6Yv8Hjijj0NYJtUUyFwVAGZEstBoT8A
S55S3polIrXIdtAYtBswu+ezPGiIaKyuBakkj7NWsC4QGjbl2QHctjsoB/tKEKuwABRcabq0
KsfuC5tewOxYdGFwsFrV8nsWUhlc7IGGLXncAcgquEsBvPGaqEG/bKkoMpvj/sDyTxVLPLCV
MQPwMs48eXpRbwCgzENx5bF8lAFISwWczVx+QLLMctlqwc4r50y1bzmD6ZNGDvvQ2LQUaEgA
a/dNfXPVPQNh7doPFWBAqRtWcDUGT+t8NtZpszAxppf59GdUHXmEtq8UzL1g1kYIQKVehhNo
9d10I641aQ9HW1y+/iJEbDDkh+etRIJCNq5vxps37YHCetNcuQvi7pQqrDeLTgHqSPDoKAX4
YnyuBLmfTnoLrbvuQ/Bxs/DkiuXa97sSgVYQ5AfgSvB8sjCyTqVOr89AvNQuTE+B998qqwTt
S4r6KeESUNprU9ZTlT0M268OgvoU0D8mqExoOOKrp5qPIv4csF8KFKWcreEgfjIA3//QtwEB
JoF85ONUuSIIJIahgICYYtb7VgCXriWQJ0KiIPIsmIToZYlzYUNcmwZnHBagTIM06BcB5DeT
5K0Qb5Jpgmlu5zz/8Ul80vOhqnbiQg+WDoQyUA3YWsAZ1qjsftXLnwIb5jmLTTFokpPb/hVJ
ILQJwPAFrtngAH0yxBZqgF4+EBaPAnCcWHGPRERjmlHuFccUdLFwBjQelTB3Rldt0Y10zOIN
6FOeDgrxZCZSEfGWmKAZcqo4SwzBHbW4xREY0nQl+Ex9clUqJTVSkZD8QWdKwjYDXK+QPzlA
RQCAknopaWKqtEgrf0JDCzTmjVYUZAjWCJTA+fKXgTNSdrZVEWsJoADXmxUsVzlLv4kyM12a
mVawJE2qICx8TWEXZq55xsxUEZGRiaSXIsPNF0DTd3iBk2qmycS5VE4s5eyYN3NogetpRYwJ
C0w8XQA3pjjyA5ekSs06ENCv+GwEm7zIPnM5z+PU6yvXLChp0A5qg6j0symqJAEy/RnPjRZl
O1CZpxk5ZUqBgjRD9gTKQmlwTLch7Ta1XNExkWYAllxwpi+lqB9s49KaBuymPbVpQ4ZK1KIa
9ahITapSl8rUpjr1qVCNqlSnStWqWvWqWM2qVrfK1a569atgDatYx0rWspr1rGhNq1rXyta2
uvWtcI2rXOdK17ra9a54zate98rXvvr1r4ANrGAHS9jCGvawiE2sYhfL2MY69rGQjaxkJ0vZ
ylr2spjNrGY3y9nOevazoA2taEdL2tKa9rRbjQAAOw==
Créez un fichier contenant JSON et ajoutez les valeurs correctes. Les champs nécessaires incluent le format, la largeur, la hauteur, les status d’audit et le contenu.
Remarque
Des retours de ligne et des espaces supplémentaires ont été inclus dans l’exemple ci-dessous pour améliorer la lisibilité. Dans la pratique, les retours de ligne ne sont pas valides dans la syntaxe JSON.
$cat creative
{
"creative": {
"name": "Image",
"advertiser_id": 1234,
"format": "image",
"width": 300,
"height": 250,
"audit_status": "pending",
"track_clicks": true,
"content": "R0lGODdhLAH6AOMAAMzMzAAAAJmZmbKysjMzM39/f2ZmZkxMTBkZGQAAAAAAAAAAAAAAAAAA
AAAAAAAAACwAAAAALAH6AAAE/hDISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//A
oHBILBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7
/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0
tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq
6+zt7u/w8fLz9PX29/j5+vv8/f7/AAMKHEiwoMGDCBMqXMgwoICHECNKnChgAAgBBg4QIHDg
gAEB/icwauToEaSaASJHdixg8gNKijAjhhC5sePHIgIC6NzJs6fPAAQ6DDjwcyeCAxZBDC2q
82jSMQIOIGDa1MDTDQaoUm2pYSlTp0JyaqUaFOvYnQU+ZD0bIG0YAVPZBkDANcNauTvrXrg7
1u0PsXh5ls1AFO+BDoXlHgbDV65fwoHzbkjMdrEPwJGBaqDMEwGBuD4NTC7qGXRP0V8ay9Vb
gfPqzaQ/F0XdY0CB27hz6yYQOkMBnwgeAyhgWidrCb97Bq9A3OfxK3wJfHxqm7fyDdZ1EtDN
PfdV5sCFN+/5nIhq2heKW7bAGUEG9ZA7p55rVYNq4RWyB1hfAj6G9ky4/oaeBcntNBgG+rV1
QYHaYdcTfljc5gFnB1pg2oAjMKiZBglCOISADvL0nQUD9FShBAmOWEGJgrnBIk8aXIhCihu8
2CASrnk4gY37dZAgiT3xh2BPK6golA/FGQmAaTp6wKOQF/x4RIIKbqBhkxNcCR5PWCL3YAo5
YcjBZ0rSwJmSX5qgJQdrEkFllwBw5uRprREpFJ0h7SRmBtYhUKYMZ2aQZgly3snTnjwM8KYH
+rnngWkVNvoBpHkeymhnf8JA4wU8luejfI+2KMQAxVXZgWlQDmlUBah+IKkJmOmE6AQJ+rlD
cRl0ekKrl64aBKk+wTkBnojZOaylExpbQqwB/sxaa6Yv8Hjijj0NYJtUUyFwVAGZEstBoT8A
S55S3polIrXIdtAYtBswu+ezPGiIaKyuBakkj7NWsC4QGjbl2QHctjsoB/tKEKuwABRcabq0
KsfuC5tewOxYdGFwsFrV8nsWUhlc7IGGLXncAcgquEsBvPGaqEG/bKkoMpvj/sDyTxVLPLCV
MQPwMs48eXpRbwCgzENx5bF8lAFISwWczVx+QLLMctlqwc4r50y1bzmD6ZNGDvvQ2LQUaEgA
a/dNfXPVPQNh7doPFWBAqRtWcDUGT+t8NtZpszAxppf59GdUHXmEtq8UzL1g1kYIQKVehhNo
9d10I641aQ9HW1y+/iJEbDDkh+etRIJCNq5vxps37YHCetNcuQvi7pQqrDeLTgHqSPDoKAX4
YnyuBLmfTnoLrbvuQ/Bxs/DkiuXa97sSgVYQ5AfgSvB8sjCyTqVOr89AvNQuTE+B998qqwTt
S4r6KeESUNprU9ZTlT0M268OgvoU0D8mqExoOOKrp5qPIv4csF8KFKWcreEgfjIA3//QtwEB
JoF85ONUuSIIJIahgICYYtb7VgCXriWQJ0KiIPIsmIToZYlzYUNcmwZnHBagTIM06BcB5DeT
5K0Qb5Jpgmlu5zz/8Ul80vOhqnbiQg+WDoQyUA3YWsAZ1qjsftXLnwIb5jmLTTFokpPb/hVJ
ILQJwPAFrtngAH0yxBZqgF4+EBaPAnCcWHGPRERjmlHuFccUdLFwBjQelTB3Rldt0Y10zOIN
6FOeDgrxZCZSEfGWmKAZcqo4SwzBHbW4xREY0nQl+Ex9clUqJTVSkZD8QWdKwjYDXK+QPzlA
RQCAknopaWKqtEgrf0JDCzTmjVYUZAjWCJTA+fKXgTNSdrZVEWsJoADXmxUsVzlLv4kyM12a
mVawJE2qICx8TWEXZq55xsxUEZGRiaSXIsPNF0DTd3iBk2qmycS5VE4s5eyYN3NogetpRYwJ
C0w8XQA3pjjyA5ekSs06ENCv+GwEm7zIPnM5z+PU6yvXLChp0A5qg6j0symqJAEy/RnPjRZl
O1CZpxk5ZUqBgjRD9gTKQmlwTLch7Ta1XNExkWYAllxwpi+lqB9s49KaBuymPbVpQ4ZK1KIa
9ahITapSl8rUpjr1qVCNqlSnStWqWvWqWM2qVrfK1a569atgDatYx0rWspr1rGhNq1rXyta2
uvWtcI2rXOdK17ra9a54zate98rXvvr1r4ANrGAHS9jCGvawiE2sYhfL2MY69rGQjaxkJ0vZ
ylr2spjNrGY3y9nOevazoA2taEdL2tKa9rRbjQAAOw=="
}
}
Ensuite, pour créer le nouveau créatif, envoyez une POST requête à l’API.
$ curl -b cookies -c cookies -X POST --data-binary @creative 'https://api.appnexus.com/creative?advertiser_id=1234'
{
"response":{
"status": "OK",
"id": 123456
}
}
Code HTML brut et JavaScript
Html brut et JavaScript ("format" valeurs de "raw-html" et "raw-js", respectivement) peuvent être compliqués par certains caractères dans le code HTML ou JavaScript, ce qui est en conflit avec la syntaxe JSON. Tous les caractères spéciaux, en particulier les guillemets doubles, doivent être "escaped" avec une barre oblique inverse (« \ »). L’exemple ci-dessous montre comment charger une création HTML simple.
Remarque
Tous les retours de ligne doivent être codés en tant que « \r\n », car l’inclusion de retours de ligne réels entraîne une syntaxe JSON non valide.
Comment charger une création HTML simple ?
Créez un fichier contenant JSON et ajoutez les valeurs correctes. Les champs nécessaires incluent le format, la largeur, la hauteur, les status d’audit et le contenu. En raison de la façon dont nous écrivons nos créations HTML brutes, le code HTML doit être encapsulé dans un appel document.write() JavaScript.
$cat creative
{
"creative": {
"name": "Raw HTML",
"advertiser_id": 1234,
"format": "raw-html",
"width": 300,
"height": 250,
"audit_status": "pending",
"track_clicks": true,
"content": "document.write('<a href=\\\"http://www.advertiser.com/landingpage\\\" _target=\\\"blank\\\"><img src=\\\"http://dummyimage.com/300x250\\\" height=\\\"250\\\" and width=\\\"300\\\" /></a>');",
"original_content": "<a href=\"http://www.advertiser.com/landingpage\" _target=\"blank\"><img src=\"http://dummyimage.com/300x250\" height=\"250\" and width=\"300\" /></a>"
}
}
Ensuite, pour créer le nouveau créatif, envoyez une POST requête à l’API.
$ curl -b cookies -c cookies -X POST --data-binary @creative 'https://api.appnexus.com/creative?advertiser_id=1234'
{
"response":{
"status": "OK",
"id": 123456
}
}
HTML dans un IFRAME
Pour créer une création HTML qui est servie dans une balise IFRAME ("format" valeur de "iframe-html"), il est très similaire à la création d’un créatif HTML brut. La principale différence est que le code HTML n’est pas encapsulé dans un appel document.write() JavaScript. L’exemple ci-dessous montre comment créer une création HTML IFRAME.
Comment créer un IFRAME HTML créatif ?
Créez un fichier contenant JSON et ajoutez les valeurs correctes. Les champs nécessaires incluent le format, la largeur, la hauteur, la status d’audit, le contenu et le contenu d’origine.
$cat creative
{
"creative": {
"name": "Iframe HTML",
"advertiser_id": 1234,
"format": "iframe-html",
"width": 300,
"height": 250,
"audit_status": "pending",
"track_clicks": true,
"content": "<a href=\"http://www.advertiser.com/landingpage\" _target=\"blank\"><img src=\"http://dummyimage.com/300x250\" height=\"250\" and width=\"300\" /></a>",
"original_content": "<a href=\"http://www.advertiser.com/landingpage\" _target=\"blank\"><img src=\"http://dummyimage.com/300x250\" height=\"250\" and width=\"300\" /></a>"
}
}
Ensuite, pour créer le nouveau créatif, envoyez une POST requête à l’API.
$ curl -b cookies -c cookies -X POST --data-binary @creative 'https://api.appnexus.com/creative?advertiser_id=1234'
{
"response":{
"status": "OK",
"id": 123456
}
}
Associer des créations à des campagnes
Il existe deux méthodes pour associer des créations et des campagnes :
- Utilisation du service de campagne.
- Utilisation du service créatif.
Service de campagne
Pour associer plusieurs créations à une seule campagne, PUT une demande au service de campagne, en mettant à jour le "creatives" champ. L’exemple ci-dessous illustre la syntaxe.
Remarque
L’appel d’API a été abrégé pour plus de lisibilité.
$ cat campaign
{
"campaign": {
"id": 6553,
"creatives":[
{"id": 123456},
{"id": 123457},
{"id": 123458},
{"id": 123459}
],
...
}
}
Service créatif
Pour associer un créatif à plusieurs campagnes, PUT une demande au service créatif, mise à jour "campaigns" du champ. L’exemple ci-dessous illustre la syntaxe.
Remarque
L’appel d’API a été abrégé pour plus de lisibilité.
$ cat creative
{
"creative": {
"id": 123456,
"campaigns":[
{"id": 6553},
{"id": 6554},
{"id": 6555},
{"id": 6556}
],
...
}
}