API de plataforma digital: creatividades
Para que cualquier campaña sirva, debe tener creatividades válidas asociadas a ella. Toda la creatividad debe registrarse a través de la API, pero hacerlo puede ser complicado. La forma en que se deben cargar las creatividades depende en gran medida del formato de la creatividad.
Nota:
Independientemente del formato creativo, hay algunas consideraciones:
- Para comprar el inventario en tiempo real, los creativos deben participar en el proceso de auditoría, pero establecer
"audit_status"
"pending"
en y establecer"allow_audit"
en"true"
. - Una vez completada la auditoría de la creatividad, los distintos campos estado de auditoría y comentarios se rellenarán con información crítica sobre el resultado de la auditoría. Estos campos son
"audit_status"
,"audit_feedback"
,"google_audit_status"
,"google_audit_feedback"
, , ,"msft_audit_status"
"msft_audit_feedback"
. - Los
"content"
campos y"original_content"
tienen fines ligeramente diferentes. El"content"
campo es lo que realmente sirve el bus de impresiones en una llamada de anuncio y puede contener caracteres de escape para que se sirvan correctamente. La"original_content"
interfaz de usuario usa el campo para mostrar y modificar"content"
. Por este motivo, los valores de los"content"
campos y"original_content"
pueden ser ligeramente diferentes. - Cada creativo debe estar asociado a un solo anunciante. Esto se establece a través del
"advertiser_id"
parámetro . - Para realizar un seguimiento de los clics en una creatividad determinada, debe incluir la macro de url de clic (
"${CLICK_URL}"
o"${CLICK_URL_ENC}"
) y establecer el"track_clicks"
campotrue
en .
HTML y JavaScript devueltos por una dirección URL
HTML o JavaScript devueltos por una dirección URL ("format"
valores de "url-html"
y "url-js"
, respectivamente) son formatos relativamente directos que se deben usar para las creatividades. Por lo general, las direcciones URL no contienen caracteres que normalmente entren en conflicto con la sintaxis JSON. Registrar creatividades de este formato es relativamente sencillo. Consulte el ejemplo siguiente para obtener el "url-html"
formato. El "url-js"
formato es muy similar, por lo que se presenta un solo ejemplo.
Ejemplo del "url-html"
formato
Cree un archivo que contenga JSON y agregue los valores correctos. Los campos necesarios incluyen formato, ancho, alto, estado de auditoría y dirección URL multimedia.
$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}"
}
}
A continuación, para crear la nueva creatividad, envíe una POST
solicitud a la 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 hospedado e imágenes
Los formatos flash e imagen hospedados ("format"
valores de "flash"
y "image"
, respectivamente) son un poco más difíciles de crear a través de la API. La imagen del archivo Flash debe estar codificada en base 64 e incluirse en el "content"
campo. Una vez cargado en la API, comenzaremos a transferir esta creatividad a nuestra red CDN (red de entrega de contenido). Una vez que la creatividad se ha transferido completamente a la red CDN, la creatividad "content"
se cambiará a null y "media_url"
se cambiará para que apunte a la ubicación de la creatividad en la red CDN. El "format"
campo permanecerá o "image"
"flash"
, en función del valor original. En el ejemplo siguiente se muestra cómo cargar una creatividad de imagen. La imagen que usamos para el ejemplo se encuentra aquí: https://dummyimage.com/300x250.
¿Cómo cargar una imagen creativa?
Desde el terminal, puede obtener la codificación base-64 para un archivo con el siguiente comando.
Nota:
Si la salida de base64 contiene ajuste de texto, deberá quitarse la línea que devuelve.
$ 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==
Cree un archivo que contenga JSON y agregue los valores correctos. Los campos necesarios incluyen formato, ancho, alto, estado de auditoría y contenido.
Nota:
Las devoluciones de línea y los espacios adicionales se han incluido en el ejemplo siguiente para mejorar la legibilidad. En la práctica, las devoluciones de línea no son válidas en la sintaxis 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=="
}
}
A continuación, para crear la nueva creatividad, envíe una POST
solicitud a la 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 sin formato y JavaScript
Html sin formato y JavaScript ("format"
valores de "raw-html"
y "raw-js"
, respectivamente) pueden ser complicados por ciertos caracteres dentro del HTML o JavaScript que entran en conflicto con la sintaxis JSON. Todos los caracteres especiales, entre comillas dobles en particular, deben estar "escaped"
con una barra diagonal inversa ("\"). En el ejemplo siguiente se muestra cómo cargar una creatividad HTML sencilla.
Nota:
Cualquier devolución de línea debe codificarse como "\r\n", ya que la inclusión de las devoluciones de línea real da como resultado una sintaxis JSON no válida.
¿Cómo cargar una creatividad HTML simple?
Cree un archivo que contenga JSON y agregue los valores correctos. Los campos necesarios incluyen formato, ancho, alto, estado de auditoría y contenido. Debido a la forma en que escribimos nuestras creatividades HTML sin procesar, el HTML debe encapsularse en una llamada a document.write() de 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>"
}
}
A continuación, para crear la nueva creatividad, envíe una POST
solicitud a la 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 en un IFRAME
Para crear una creatividad HTML que se sirve en una etiqueta IFRAME ("format"
valor de "iframe-html"
), es muy similar a crear una creatividad HTML sin procesar. La principal diferencia es que el CÓDIGO HTML no está encapsulado en una llamada a document.write() de JavaScript. En el ejemplo siguiente se muestra cómo crear una creatividad HTML de IFRAME.
¿Cómo crear una creatividad HTML de IFRAME?
Cree un archivo que contenga JSON y agregue los valores correctos. Los campos necesarios incluyen formato, ancho, alto, estado de auditoría, contenido y contenido original.
$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>"
}
}
A continuación, para crear la nueva creatividad, envíe una POST
solicitud a la API.
$ curl -b cookies -c cookies -X POST --data-binary @creative 'https://api.appnexus.com/creative?advertiser_id=1234'
{
"response":{
"status": "OK",
"id": 123456
}
}
Asociación de creativos con campañas
Hay dos métodos para asociar creativos y campañas:
- Usar el servicio de campaña.
- Uso del servicio creativo.
Servicio de campaña
Para asociar varias creatividades a una sola campaña, PUT
una solicitud al servicio de campaña, actualizando el "creatives"
campo. En el ejemplo siguiente se muestra la sintaxis.
Nota:
La llamada API se ha abreviado para mejorar la legibilidad.
$ cat campaign
{
"campaign": {
"id": 6553,
"creatives":[
{"id": 123456},
{"id": 123457},
{"id": 123458},
{"id": 123459}
],
...
}
}
Servicio creativo
Para asociar un creativo a varias campañas, PUT
una solicitud al servicio creativo, campo de actualización "campaigns"
. En el ejemplo siguiente se muestra la sintaxis.
Nota:
La llamada API se ha abreviado para mejorar la legibilidad.
$ cat creative
{
"creative": {
"id": 123456,
"campaigns":[
{"id": 6553},
{"id": 6554},
{"id": 6555},
{"id": 6556}
],
...
}
}