No momento, o lance de app para celular está disponível somente para publishers selecionados.

Lance de servidor para servidor

A mediação interna não está disponível publicamente

No momento, os lances internos com o Audience Network estão na versão beta fechada e não estão disponíveis publicamente. Compartilharemos atualizações se isso mudar.

Como alternativa, você pode acessar os lances do Audience Network usando uma das nossas plataformas parceiras de mediação.

Nesta página:

O Audience Network do Facebook é compatível com lances em sites e apps para celular. As integrações de lances em apps para celular podem ser do cliente móvel para nosso servidor ou do seu servidor para o nosso. Esta visão geral abordará os conceitos gerais dos lances de app.

Introdução

O que são lances de apps

Com os lances do app, os publishers podem realizar um leilão aberto e imparcial de inventários de anúncios oferecendo as mesmas oportunidades para diversas fontes de demanda em tempo real. As fontes de demanda têm a oportunidade de competir e vencer impressões quando oferecerem valor mais alto.

Por que fazer lances de app

  • Um leilão em tempo real é uma oportunidade de otimizar as solicitações de anúncio.
  • Oferece visibilidade do valor real do inventário.
  • É fácil de manter e exige menos recursos de operações de anúncios.

Arquiteturas de integração

Os lances de app são oferecidos por meio de um ponto de extremidade que implementa o protocolo Open Real-Time Bidding (ORTB) para fornecer lances em oportunidades de impressão individuais. Nos lances de app, o SDK do Audience Network é necessário para realizar estas ações:

  • Obter o buyeruid (chamado bidderToken no SDK do Audience Network). Esse token é um campo obrigatório na solicitação de lance, sendo único por usuário e app (ou seja, ele não é válido para outro usuário ou app).
  • Carregar a resposta do lance e exibir um anúncio em caso de vitória em um leilão.
  • Registrar impressões e cliques.

Etapas importantes no fluxo de lances

  1. Obtenha o token do autor do lance. O Audience Network precisa desta string opaca para responder a uma solicitação de lance.
  2. Envie a solicitação de lance e obtenha a resposta. Essa é a principal interação com o ponto de extremidade do lance. Nesta etapa, você envia uma solicitação para um lance ORTB e recebe uma resposta de lance válida ou um erro.
  3. Execute o leilão. Execute um leilão e selecione o vencedor entre as respostas de lance. A maioria dos leilões compara lances em tempo real com CPMs estimados de outras fontes de demanda (como CPMs médios históricos). Isso é feito porque algumas fontes de demanda não são compatíveis com lances em tempo real. Os leilões podem ser executados por uma destas opções:
    • Um servidor interno que executa a sua lógica de leilão personalizada
    • Um servidor de leilões de terceiros
    • O cliente no dispositivo do usuário
  4. Recupere o anúncio com a resposta de lance. Se o Audience Network vencer o leilão, carregue o anúncio passando o campo adm da resposta de lance para o SDK do Audience Network no dispositivo do usuário. O campo adm não contém o anúncio real, mas sim informações que permitem ao SDK recuperar o anúncio no servidor do Audience Network.

Tipos de integração

Ao realizar um leilão (a terceira etapa no fluxo de lances acima), ele pode ser hospedado no lado do cliente ou do servidor. Veja abaixo três tipos diferentes de integração:

Arquitetura de integração de servidor para servidor

Na integração de servidor para servidor, um servidor de leilão chama o ponto de extremidade de lances do Audience Network do Facebook e todas as outras fontes de demanda para obter respostas de lances. Depois, o servidor de leilão executa o leilão e escolhe o lance vencedor. O servidor de leilão pode ser um servidor interno executando uma lógica de leilão criada por você ou um servidor de terceiros integrado aos lances de aplicativo do Audience Network. Isso permite que você utilize os recursos do servidor e a rede disponível para chamar os pontos de extremidade de lances das fontes de demanda. Permite ainda que você faça alterações a essas integrações dos pontos de extremidade sem necessariamente precisar atualizar o cliente.


Integração de servidor de anúncios externo

A integração do servidor de anúncios externo permite conectar o mundo atual de mediação de waterfall com lances de aplicativo. Isso funciona por meio de uma integração de servidor para servidor com as fontes de demanda compatíveis com lances de aplicativo, depois a passagem do vencedor do leilão à plataforma de mediação de waterfall que executa o waterfall e seleciona a fonte de demanda com vitória geral. Essa integração deve ser uma ponte intermediária entre os mundos da mediação de waterfall e de lances de aplicativo. Com esse tipo de integração, você não precisa escrever sua própria lógica de leilão.

Solicitações/respostas ORTB e formatos de anúncio compatíveis

Solicitação ORTB

Nosso ponto de extremidade de lances é compatível com um subconjunto da versão 2.5 do protocolo OpenRTB.

Observação: veja um exemplo da solicitação completa em Configuração do servidor de leilão.

'id' => string, // platform's auction identifier,
'imp' => vec< // slots to bid on
shape(
'id' => string, // platform's identifier for this slot auction
// only for banner impression opportunities
'banner' => shape(
'w' => int, // width
'h' => int, // height
),
// only for native impression opportunities
'native' => shape(
'w' => int, // width 
'h' => int, // height 
),
// only for video impression opportunities
'video' => shape(
'w' => int, // width
'h' => int, // height
'linearity' => int, // 1 = instream, optional
'ext' => shape(
'videotype' => string, // 'rewarded' for Rewarded Video impression opportunities, optional
),
),
'tagid' => string, // Placement ID
'instl' => int, // interstitial flag, 1 = On, 0 = Off, optional
)
>,
// app details (in-app bidding only)
'app' => shape( 
'publisher' => shape(
'id' => string, // publisher app ID
),
),
'device' => shape(
'ua' => string, // device user-agent
'ifa' => string, // ID sanctioned for advertiser use
// Do not send ip or ipv6 if you are requesting bids from the client device.
// For server-side bid requests set ip or ipv6.
'ip' => string, // device IPv4
'ipv6' => string, // device IPv6
'dnt' => int, // "do not track", 1 = On, 0 = Off, optional
'lmt' => int, // "limit ad tracking", 1 = On, 0 = Off
),
'regs' => shape( // regulations object
'coppa' => int, // US FTC regulations for Children's Online Privacy Protection Act, 1 = On, 0 = Off, optional
),
'user' => shape(
'buyeruid' => string, // Audience Network Identity Token, mandatory
),
'ext' => shape(
'platformid' => string, // Mediation partner Platform ID or publisher FB app ID, mandatory
'authentication_id' => string // Authentication token to validate the originator of the request                     
),
'at' => int, // auction type: 1 = First Price, 2 = Second Price
'tmax' => int, // auction timeout in milliseconds
'test' => int, // 0 = normal, 1 = test-mode (we bid $99.99, but don't pay out), optional

Formatos de anúncios compatíveis

No momento, há quatro tipos de anúncios compatíveis que podem ser solicitados por meio de OpenRTB: em banner, nativo (nativo ou em banner nativo), de vídeo (com incentivo ou vídeo in-stream) e intersticial. Nota: os objetos de banner, nativo e vídeo se excluem mutuamente, mas um deles é necessário.

Veja aqui uma lista dos formatos de anúncio compatíveis na solicitação de lance:

Formato do anúncio Parâmetros da solicitação de lance

Nativo

{'id': ${AUCTION_ID}, 'native': { 'h': -1, 'w': -1 }, 'tagid': ${PLACEMENT_ID}}

Banner nativo

{'id': ${AUCTION_ID}, 'native': { 'h': -1, 'w': -1 }, 'tagid': ${PLACEMENT_ID}}

Intersticial

{'id': ${AUCTION_ID}, 'banner': { 'h': 0, 'w': 0 }, 'tagid': ${PLACEMENT_ID}, 'instl': 1}

Vídeo com incentivo

{'id': ${AUCTION_ID}, 'video': { 'h': 0, 'w': 0, 'ext': { 'videotype': 'rewarded' } }, 'tagid': ${PLACEMENT_ID}}

Banner - Altura: 50

{'id': ${AUCTION_ID}, 'banner': { 'h': 50, 'w': -1 }, 'tagid': ${PLACEMENT_ID}}

Banner - Altura: 250

{'id': ${AUCTION_ID}, 'banner': { 'h': 250, 'w': -1 }, 'tagid': ${PLACEMENT_ID}}

Vídeo In-stream

{'id': ${AUCTION_ID}, 'video': { 'h': 0, 'w': 0, 'linearity': 1 }, 'tagid': ${PLACEMENT_ID}}

Resposta ORTB

A resposta de lance é válida por 30 minutos. É possível solicitar o anúncio a qualquer momento até 30 minutos depois de receber a resposta do lance. As impressões baseadas em um lance com mais de 30 minutos não serão pagas.

Observação: quando você solicitar um anúncio com resposta de lance, ele poderá ser armazenado em cache no cliente, mas precisa ser exibido até 60 minutos após o carregamento. As impressões baseadas em um anúncio armazenado em cache por mais de 60 minutos não serão pagas.

1  
'id' => string // platform's request identifier
'seatbid' => vec<
    shape(
        'bid' => vec<
            shape(
                'id' => string, // Our identifier for this bid
                'impid' => string, // platform's identifier for this slot auction
                'price' => float, // Our bid price on CPM basis, in USD
                'adm' => string, // Our creative - see Rendering The Ad
                'nurl' => string, // URL to get if we win the impression
                'lurl' => string, // URL to get if we lose the impression
            )
        >,
    ),
>,
'bidid' => string, // Our identifier for this response
'cur' => string, // bid currency: USD

Notificações de ganhos/perdas/cobranças/tempo-limite

Nós exigimos notificações de ganhos, perdas, passível de cobrança e tempo limite com os códigos de perda apropriados conforme definido no ORTB. O nurl, lurl e burl do ORTB são oferecidos na resposta do lance. Consulte a seção anterior para ver um exemplo de resposta de lance. Caso o lance atinja o tempo limite, ofereceremos uma rota de geração de relatórios alternativa.

Notificação do vencedor

O nurl de vitória será oferecido na resposta do lance. É necessário popular o preço de venda no nurl:

"https://www.facebook.com/audiencenetwork/nurl/?partner=${PARTNER_FBID}&app=${APP_FBID}&placement=${PLACEMENT_FBID}&auction=${AUCTION_ID}&impression=${IMPRESSION_ID}&request=${BID_REQUEST_ID}&bid=${BID_ID}&ortb_loss_code=0&clearing_price=${AUCTION_PRICE}"
  • ${AUCTION_PRICE}: Deve ser substituído pelo preço de venda do leilão na mesma unidade do lance (ou seja, em dólares ou CPM).

Notificação de perda

Nossa lurl de perda contém dois sinalizadores que você deve preencher:

"https://www.facebook.com/audiencenetwork/nurl/?partner=${PARTNER_FBID}&app=${APP_FBID}&placement=${PLACEMENT_FBID}&auction=${AUCTION_ID}&impression=${IMPRESSION_ID}&request=${BID_REQUEST_ID}&bid=${BID_ID}&ortb_loss_code=${AUCTION_LOSS}&clearing_price=${AUCTION_PRICE}"
  • ${AUCTION_LOSS}: Deve ser substituído pelo código de perda do ORTB.
  • ${AUCTION_PRICE}: Deve ser substituído pelo preço de venda do leilão na mesma unidade do lance (ou seja, em dólares ou CPM).

Veja abaixo uma lista com diferentes códigos de perda e os motivos de perda correspondentes.

Motivo de perdaDescriçãoCódigo de perda ORTB v2.5

Resposta de lance inválida.

O lance é inválido (mas feito a tempo, não é um não lance e é válido o suficiente para extrair o nurl)

3

Tempo limite do lance *

Resposta de lance recebida, mas não a tempo de interromper o leilão

2

Não lance

Não lances são indicados como HTTP 204 (ou seja, sem nurl para chamar), mas você pode interpretar nossa resposta como um não lance (provavelmente um problema de integração). Você também pode solicitar lances para várias impressões, e nós faremos lances em alguns, mas não todos.

9

Não é o licitante RTB mais alto

Outro licitante nos superou, incluindo lances sintéticos (como trocas não RTB) se inseridas no mesmo leilão.

102

O inventário não se materializou

Nosso lance venceu o leilão, mas a impressão não se materializou (por exemplo, a página não era longa o bastante para incluir esse espaço, ou o usuário saiu do aplicativo antes que o anúncio armazenado em cache fosse usado). Nem todos os parceiros podem oferecer isso (é um não evento); por isso, o inferiremos caso ele não seja oferecido.

4902

Enviado para o servidor de anúncios

Envie isso se o último ponto de contato com o processo de decisão estiver enviando nosso lance alto ao servidor de anúncios. A impressão poderá continuar perdida por meio da perda dos itens de linha, do servidor de anúncios se sobrepondo ao leilão ou do inventário não se materializando.

4900

Vencedor do RTB não escolhido pelo servidor de anúncios

Vencemos o leilão do RTB, mas o servidor de anúncios se sobrepôs ao leilão (por exemplo, diretamente).

4903

Vitória

Vencemos a árvore de decisão completa, e a tag foi posicionada na página (Web) ou o objeto de anúncio foi armazenado em ache (aplicativo). Ainda assim, a impressão visualizável pode não resultar.

0

Notificação de passível de cobrança

Nós exigimos uma notificação de passível de cobrança caso um retorno de chamada de impressão seja acionado no SDK do Audience Network. É necessário popular o preço de venda no burl:

"https://www.facebook.com/audiencenetwork/burl/?partner=${PARTNER_FBID}&app=${APP_FBID}&placement=${PLACEMENT_FBID}&auction=${AUCTION_ID}&impression=${IMPRESSION_ID}&request=${BID_REQUEST_ID}&bid=${BID_ID}&ortb_loss_code=0&clearing_price=${AUCTION_PRICE}"
  • ${AUCTION_PRICE}: Deve ser substituído pelo preço de venda do leilão na mesma unidade do lance (ou seja, em dólares ou CPM).

Notificação de tempo limite

Caso o lance atinja o tempo limite, ofereceremos uma rota de geração de relatórios alternativa. No nurl genérico que pode ser chamado sem a necessidade de esperar pela chegada do lance. O formato é o seguinte:

"https://www.facebook.com/audiencenetwork/nurl/?partner=${PARTNER_FBID}&app=${APP_FBID}&auction=${AUCTION_ID}&ortb_loss_code=2"

Nota:${PARTNER_FBID}, ${APP_FBID} e ${AUCTION_ID} devem ser preenchidos com os valores adequados. A tabela abaixo oferece uma explicação sobre esses valores.

ParâmetroTipoDescrição

PARTNER_FBID

Int

ID do servidor de leilão de anúncios emitido pelo Facebook. Use o ID do aplicativo aqui caso não tenha um parceiro dedicado de leilão de anúncios.

APP_FBID

Int

ID emitido pelo Facebook do aplicativo ou da empresa que iniciou um leilão.

AUCTION_ID

cadeia de caracteres

ID do leilão gerado pelo cliente que você usou para emitir uma solicitação de lance.

Pagamentos, leilões, visibilidade e latência

Preços e pagamentos

Os preços são orçados em dólares americanos com base em CPM (por exemplo, 4,25 significa que pagaremos US$ 4,25 para cada 1.000 impressões se vencermos). A mesma unidade deve ser usada para o preço de venda em nurl e lurl. Os pagamentos são feitos diretamente ao publisher.

Mecânica do leilão

Sempre fazemos lances com base no primeiro preço, o que significa que pagamos o valor do lance e fazemos o lance supondo que pagaremos o valor total. Dessa forma, ficamos em desvantagem em leilões de segundo preço, nos quais outros licitantes podem fazer lances supondo que pagarão menos que o valor do lance.

Visibilidade

Para impressões de apps, pagamos somente se a impressão for vista, independentemente de termos sido o maior lance.

Latência

  • Para a latência mínima, solicite um lance único por chamada de API (ou seja, se estiver leiloando cinco vagas, faça cinco chamadas de API, uma por lance).
  • Não fornecemos pontos de extremidade específicos para regiões. A infraestrutura do Facebook encaminhará a solicitação de lance para o data center mais próximo.
  • Use conexões HTTP/2 persistentes.
  • Preencha o campo tmax do ORTB na solicitação de lance com o tempo-limite do leilão, e escolheremos uma estratégia que equilibre a latência e o desempenho. Veja o exemplo de solicitação de lance acima para saber mais informações sobre o tmax.
  • Para atingir as metas de latência, podemos adiar uma parte do processamento do tempo de renderização (ou seja, um lance mais rápido pode significar um anúncio com renderização mais lenta, e resultados de lance mais lentos podem significar um anúncio com renderização mais rápida).
  • Estamos trabalhando ativamente para melhorar a latência. No momento, recomendamos o tempo-limite de 800 ms em lances de servidor para servidor.