Referência da API do Endpoint SESSION (Server-to-Server)

Referência da API do Endpoint SESSION

Rastreie sessões de usuários e habilite a atribuição para instalações de apps, reengajamento e métricas de retenção por meio da API REST da Singular usando integração server-to-server como alternativa à implementação de SDK.


Visão geral

Caso de uso Server-to-Server

O endpoint SESSION notifica a Singular quando um usuário abre seu app, alimentando a atribuição de instalação e de reengajamento e as métricas de retenção. Novo em Server-to-Server? Consulte o guia de Fundamentos de S2S para conceitos básicos e configuração compartilhada.

Recursos suportados:

  • Atribuição de instalação: Atribuição first-touch a campanhas de marketing
  • Atribuição de reengajamento: Atribuição multi-touch para usuários recorrentes
  • Métricas de retenção: Rastreamento de engajamento baseado em sessões

Gerenciamento de sessões

O endpoint SESSION notifica a Singular sobre eventos de abertura do app para inicializar as sessões de usuários para atribuição e rastreamento.

Quando enviar sessões

Gatilhos de sessão

Envie requisições SESSION para estes eventos do ciclo de vida do app:

  • Instalações novas: Primeira abertura do app após a instalação
  • Abertura a partir do estado encerrado: O app abre a partir de um estado totalmente fechado
  • De segundo plano para primeiro plano: O app retorna ao primeiro plano após o período de timeout (recomendado: 60 segundos)

Lógica de timeout de sessão

Implemente o timeout de sessão para evitar requisições SESSION excessivas durante breves períodos do app em segundo plano.

Implementação recomendada:

  • Duração do timeout: 60 segundos (1 minuto)
  • Primeiro plano < Timeout: Não envie SESSION se o app retornar ao primeiro plano dentro do período de timeout
  • Primeiro plano > Timeout: Envie SESSION se o app permanecer em segundo plano além do período de timeout
  • Rastreamento do ciclo de vida do app: Use eventos do ciclo de vida do app e temporizadores para gerenciar o estado da sessão

Suporte a deep link: Sempre envie SESSION para aberturas do app via deep links, Universal Links ou App Links com o parâmetro openuri preenchido, independentemente do status de timeout.


Processamento de atribuição

Atribuição baseada em sessão

A Singular processa as requisições SESSION para determinar o tipo de atribuição e acionar os fluxos de trabalho apropriados.

Tipo de sessão Processamento da Singular Resultado da atribuição
Primeira sessão (nova instalação) Processo de atribuição de instalação acionado Atribui a instalação a uma campanha de marketing
Qualificada para reengajamento Processo de atribuição de reengajamento acionado Atribui o retorno do usuário a uma campanha ou deep link
Sessão padrão Sessão registrada para rastreamento de retenção Conta para as métricas de atividade e engajamento do usuário

Saiba mais: FAQ de Atribuição de Reengajamento


Requisitos de ordem dos eventos

O momento das sessões e dos eventos impacta diretamente a precisão da atribuição e a qualidade dos dados.

Regras críticas de ordenação:

  1. Sessão antes dos eventos: Uma única SESSION deve ser recebida antes de quaisquer eventos daquela sessão
  2. Transmissão de eventos em tempo real: Os eventos in-app devem ser enviados em tempo real após a respectiva sessão
  3. Processamento sequencial: Uma ordem de sessão inválida resulta em inconsistências de dados e erros de atribuição

Especificação do Endpoint da API

O endpoint SESSION aceita requisições POST com parâmetros enviados como application/x-www-form-urlencoded .

Endpoint

URL base e método

POST https://s2s.singular.net/api/v1/launch

Cabeçalho obrigatório:

Content-Type: application/x-www-form-urlencoded

Formato da requisição:

POST /api/v1/launch HTTP/1.1
Host: s2s.singular.net
Content-Type: application/x-www-form-urlencoded

param1=value1&param2=value2

Parâmetros obrigatórios

Todas as requisições SESSION devem incluir estes parâmetros obrigatórios com valores e formatação adequados.

Autenticação da API

SDK Key

Parâmetro Detalhes
a

Tipo: String
Singular SDK Key para autenticação da API.
Obtenha em: Singular UI → Menu Principal → Developer Tools .

Importante: Não use a Reporting API Key. As requisições serão rejeitadas.

Exemplo: sdkKey_afdadsf7asf56


Identificadores de dispositivo

Identificadores específicos da plataforma

Parâmetro Detalhes
idfa

Plataforma: iOS
Tipo: UUIDv4
Identifier for Advertisers (IDFA) permite o rastreamento de anúncios e a atribuição de campanhas.
Requisito de ATT: iOS 14.5+ exige o opt-in do usuário por meio do framework App Tracking Transparency.
Exemplo: DFC5A647-9043-4699-B2A5-76F03A97064B

  • Omita o parâmetro se o IDFA estiver indisponível (o usuário negou o prompt de ATT).
  • Nunca passe NULL ou string vazia.
  • Obter IDFA
idfv

Plataforma: iOS
Tipo: UUIDv4
Identifier for Vendors (IDFV) permanece consistente em todos os apps do mesmo fornecedor.
Sempre obrigatório: Deve ser incluído independentemente do status de ATT ou da disponibilidade do IDFA.
Exemplo: 21DB6612-09B3-4ECC-84AC-B353B0AF1334

aifa

Plataforma: Android
Tipo: UUIDv4
(Google Play)
Google Advertising ID (GAID) permite o rastreamento de publicidade redefinível pelo usuário no Android.
Exemplo: 8ecd7512-2864-440c-93f3-a3cabe62525b

  • Obrigatório em dispositivos Google Play.
  • Omita em dispositivos que não são Google Play.
  • Omita se estiver indisponível — nunca passe NULL ou string vazia.
  • Obter AIFA
asid

Plataforma: Android
Tipo: UUIDv4
(Google Play)
Android App Set ID oferece rastreamento entre apps com foco em privacidade para o mesmo desenvolvedor.
Sempre obrigatório: Deve ser incluído em dispositivos Google Play independentemente da disponibilidade do GAID.
Exemplo: edee92a2-7b2f-45f4-a509-840f170fc6d9

  • Omita em dispositivos que não são Google Play.
  • Obter ASID
amid

Plataforma: Android
Tipo: UUIDv4
(Amazon)
Amazon Advertising ID para dispositivos Amazon sem o Google Play Services.
Exemplo: df07c7dc-cea7-4a89-b328-810ff5acb15d

  • Obrigatório para dispositivos Amazon Fire.
  • Omita se estiver indisponível.
  • Obter AMID
oaid

Plataforma: Android
Tipo: UUIDv4
(Chinese OEMs)
Open Advertising Identifier (OAID) para dispositivos fabricados na China sem o Google Play Services (Huawei, Xiaomi, OPPO, etc.).
Exemplo: 01234567-89abc-defe-dcba-987654321012

  • Obrigatório para dispositivos de OEMs chineses sem o Google Play.
  • Omita se estiver indisponível.
  • Obter OAID
andi

Plataforma: Android
Tipo: String
(Non-Google Play)
O Android ID é um identificador de 64 bits gerado pelo dispositivo.

Uso restrito: Proibido em dispositivos Google Play — use AIFA e ASID em vez disso. Envie somente se nenhum outro identificador estiver disponível e o app não for distribuído via Google Play.

Exemplo: fc8d449516de0dfb

sdid

Plataforma: iOS, Android, PC, Xbox, PlayStation, Nintendo, MetaQuest, CTV
Tipo: UUIDv4
O Singular Device ID é um UUIDv4 anonimizado gerado no cliente que representa uma instalação única do app.
Identificador principal: Único identificador de dispositivo relevante para aplicações de PC e console.
Exemplo: 40009df0-d618-4d81-9da1-cbb3337b8dec


Parâmetros de dispositivo

Informações do dispositivo

Parâmetro Detalhes
p

Tipo: String
Plataforma da aplicação.
Valores permitidos (sensível a maiúsculas/minúsculas):
Exemplo: Android

  • Android
  • iOS
  • PC
  • Xbox
  • Playstation
  • Nintendo
  • MetaQuest
  • CTV
ip

Tipo: String
Exemplo: 172.58.29.235

Endereço IPv4 público do dispositivo. O IPv6 é suportado, mas o IPv4 é recomendado para compatibilidade de atribuição com redes de anúncios.
ve

Tipo: String
Exemplo: 9.2

Versão do SO do dispositivo no momento da sessão.
ma

Plataforma: iOS, Android
Tipo: String
Marca do dispositivo (nome do fabricante). Deve ser usado com mo (modelo).
Obter a marca do dispositivo
Exemplo: Samsung , LG , Apple

mo

Plataforma: iOS, Android
Tipo: String
Modelo do dispositivo. Deve ser usado com ma (marca).
Obter o modelo do dispositivo
Exemplo: iPhone 4S , Galaxy SIII

lc

Plataforma: iOS, Android
Tipo: String
Tag de locale IETF — código de idioma e país de duas letras separados por um sublinhado.
Obter o locale do dispositivo
Exemplo: en_US

bd

Plataforma: iOS, Android
Tipo: String
Identificador de build do dispositivo, codificado em URL.
Obter o build do dispositivo
Exemplo: Build%2F13D15


Parâmetros da aplicação

Informações do app

Parâmetro Detalhes
i

Tipo: String
Identificador do app (sensível a maiúsculas/minúsculas).
Exemplo: com.singular.app

  • Android: Package Name (ex.: com.singular.app )
  • iOS: Bundle ID (ex.: com.singular.app )
  • PC/Console: Seu identificador designado
app_v

Tipo: String
Exemplo: 1.2.3

Versão da aplicação.
att_authorization_status

Plataforma: iOS
Tipo: Integer
Código de status do App Tracking Transparency (ATT) (iOS 14.5+).
Valores de status:

  • 0 - Indeterminado (prompt não exibido)
  • 1 - Restrito (rastreamento em nível de dispositivo desativado)
  • 2 - Negado (o usuário negou a autorização)
  • 3 - Autorizado (o usuário concedeu a autorização)

Sempre obrigatório: Mesmo que o ATT não seja implementado, passe 0 (indeterminado).

Exemplo: 3

Parâmetro Detalhes
install

Tipo: Boolean
Indica se a sessão representa a primeira sessão após a instalação ou reinstalação.
Obrigatório para: Recursos de rastreamento de reinstalação
Exemplo: true

  • true - Primeira sessão após instalação nova/reinstalação
  • false - Sessão subsequente (app já instalado)
install_time

Plataforma: iOS, Android
Tipo: Integer
Timestamp Unix (segundos) de quando o app foi fisicamente instalado no dispositivo, conforme reportado pelo SO.
Exemplo: 1510040127

Este é o horário de instalação do dispositivo, não o horário de instalação de atribuição da Singular. A atribuição usa o timestamp da sessão ( utime ) da primeira sessão ( install=true ).

Consulte o Guia de Recuperação de Dados do Dispositivo para saber como obter esse valor no iOS e no Android.

update_time

Plataforma: iOS, Android
Tipo: Integer
Timestamp Unix (segundos) de quando o app foi atualizado pela última vez no dispositivo, conforme reportado pelo SO.
Exemplo: 1510040127

Consulte o Guia de Recuperação de Dados do Dispositivo para saber como obter esse valor no iOS e no Android.


Parâmetros de prevenção de fraude

Validação da origem de instalação

Parâmetro Detalhes
install_source

Plataforma: Android, PC
Tipo: String
Nome do pacote da origem de instalação ou identificador da loja.
Android: Nome do Pacote da Origem de Instalação
Exemplo Android: com.android.vending (Google Play Store)
Lojas de PC suportadas:

  • steam
  • epic
  • microsoftstore
  • humblestore
  • gog
  • selfdistributed
install_receipt

Plataforma: iOS
Tipo: String
Recibo de instalação iOS codificado em Base64 para validação de fraude.
Exemplo (truncado): MIJF9wYJKoZIhvcNAQcCoIJF6DCCReQCAQExCzAJBgUrDgMCGgUAMII1m...


Parâmetros de deep linking

Suporte a deep link

Parâmetro Detalhes
openuri

Plataforma: iOS, Android
Tipo: String
Deep link, Universal Link ou App Link codificado em URL que abriu o app.
URL original: myapp://home/page?queryparam1=value1&queryparam2=value2
Exemplo codificado: myapp%3A%2F%2Fhome%2Fpage%3Fqueryparam1%3Dvalue1%26queryparam2%3Dvalue2

ddl_enabled

Plataforma: iOS, Android
Tipo: Boolean
Indica se o app espera uma URL de deferred deep link na resposta.
Exemplo de resposta:

  • true - Espera um deferred deep link na resposta
  • false - Não espera um deferred deep link
{
  "deferred_deeplink": "myapp://deferred-deeplink",
  "status": "ok",
  "deferred_passthrough": "passthroughvalue"
}
singular_link_resolve_required

Plataforma: iOS, Android
Tipo: Boolean
Solicita a resolução de um short link da Singular para long link. Deve ser usado com openuri contendo um short link da Singular.
Exemplo de resposta:

  • true - Retorna o long link expandido
  • false - Não resolve o link
{
  "status":"ok",
  "resolved_singular_link":"https://myapp.sng.link/A59c0/nha7?_dl=myapp%3A%2F%2Fdeeplink&_ddl=myapp%3A%2F%2Fdeferred-deeplink&_p=passthroughvalue"
}

Parâmetros avançados de atribuição

Aprimoramento de atribuição por plataforma

Parâmetro Detalhes
install_ref PC Nativo (Google Play Games)

Plataforma: Android (Google Play)
Tipo: JSON
Informações do Google Install Referrer em JSON codificado em URL. Oferece a atribuição mais precisa para instalações no Android e no Google Play Games para PC.
Estrutura JSON do Android:
Estrutura JSON do PC nativo:
Obrigatório para:
Mais informações:

Exemplo codificado em URL: %7B%22installBeginTimestampSeconds%22%3A%221568939453%22...

{
   "installBeginTimestampSeconds":"1568939453",
   "referrer":"utm_source=google-play&utm_medium=organic",
   "clickTimestampSeconds":"0",
   "referrer_source":"service",
   "current_device_time":"1568944524"
}
{
   "install_time_epoch_seconds":"1568939453",
   "install_referrer":"utm_source=google-play&utm_medium=organic"
}
  • Exportações em nível de usuário do Facebook
  • Compartilhamento de Data Destination
  • Precisão de postback
meta_ref

Plataforma: Android (Google Play)
Tipo: JSON

A partir de 18 de junho de 2025: Meta Advanced Mobile Measurement (AMM) elimina a necessidade de implementar o Meta Install Referrer. Não recomendado se o AMM estiver ativado.

Meta Install Referrer em JSON codificado em URL para dados de atribuição granulares em nível de usuário.
Estrutura JSON:
Saiba mais: FAQ do Meta Referrer

{
  "install_referrer": {
    "utm_source":"apps.facebook.com",
    "utm_campaign": "fb4a",
    "utm_content": {
      "source":{
        "data":"c7e6b890bf18a059c2185650bdb1af3dced7...",
        "nonce":"24859720343e2381daee9f39ae61"
        },
      "app":533744218636280,
      "t":1731181327
      },
    "is_ct":1,
    "actual_timestamp":1731181444
  }
}
attribution_token

Plataforma: iOS
Tipo: String
Token de atribuição do Apple Search Ads do framework AdServices (iOS 14.3+).
Obtenha usando: attributionToken() na primeira abertura do app após instalação/reinstalação.
Exemplo (truncado): KztLg%2FIkNsWDMuBMOU%2BySnkPU5myJb4OFmeaMUE%2BTqQJP...


Parâmetros opcionais

Os parâmetros opcionais aprimoram os recursos de rastreamento e oferecem suporte a recursos avançados.

Parâmetros de timestamp

Parâmetro Detalhes
utime

Tipo: Integer
Timestamp Unix de 10 dígitos da sessão.
Exemplo: 1483228800

umilisec

Tipo: Integer
Timestamp Unix de 13 dígitos com milissegundos.
Exemplo: 1483228800000


Parâmetros de rede e localização

Parâmetro Detalhes
use_ip

Tipo: Boolean
Instrui a Singular a extrair o endereço IP da requisição HTTP em vez do ip parâmetro.

Limitações:

  • Impede a geolocalização baseada em IP pela Singular.
  • Forneça um código de país de duas letras por meio do country parâmetro.
  • Mutuamente exclusivo com o ip parâmetro — não use ambos.
  • É necessário fornecer ip ou use_ip para evitar a rejeição dos dados.

Exemplo: true

country

Tipo: String
ISO 3166-1 alpha-2 código de país de duas letras.
Obrigatório quando: O endereço IP não está disponível ou use_ip=true .
Exemplo: US

ua

Tipo: String
String de User Agent codificada em URL.
Bruto: Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15...
Exemplo: Mozilla%2F5.0%20(iPhone%3B%20CPU%20iPhone%20OS%2014_0...

c

Plataforma: iOS, Android
Tipo: String
Tipo de conexão de rede.
Valores permitidos: wifi , carrier
Exemplo: wifi

cn

Plataforma: iOS, Android
Tipo: String
Exemplo: Comcast

Nome da operadora do provedor de internet.

Propriedades personalizadas

Parâmetro Detalhes
global_properties

Tipo: JSON
Objeto JSON codificado em URL com pares de chave-valor personalizados.
Limites:
JSON: {"key1":"value1","key2":"value2"}
Codificado em URL: %7B%22key1%22%3A%22value1%22%2C%22key2%22%3A%22value2%22%7D

  • Máximo de 5 pares de chave-valor
  • Máximo de 200 caracteres por chave e valor

Suporte a rastreamento de desinstalação

Parâmetro Detalhes
apns_token

Plataforma: iOS
Tipo: String
Token de dispositivo do Apple Push Notification Service (APNs) codificado em hexadecimal.
Exemplo: b0adf7c9730763f88e1a048e28c68a9f806ed032fb522debff5bfba010a9b052

  • Obrigatório para o rastreamento de desinstalação no iOS
  • Deve ser uma string codificada em hexadecimal
  • Obter o token APNs
fcm

Plataforma: Android
Tipo: String
Token de dispositivo do Firebase Cloud Messaging.
Exemplo: bk3RNwTe3H0CI2k_HHwgIpoDKCIZvvD...MExUdFQ3P1


Parâmetros de privacidade de dados

Parâmetro Detalhes
data_sharing_options

Tipo: JSON
Consentimento do usuário final para compartilhamento de dados em JSON codificado em URL. Deve ser persistido e enviado em todas as requisições SESSION e EVENT subsequentes.
Usuário consentiu (opt-in):
Usuário recusou (opt-out):
Exemplo: %7B%22limit_data_sharing%22%3Atrue%7D

{"limit_data_sharing":false}
{"limit_data_sharing":true}
dnt

Plataforma: iOS, Android
Tipo: Integer
Status de Do Not Track.
Exemplo: 0

  • 1 - Do Not Track ativado
  • 0 - Do Not Track desativado
dntoff

Plataforma: iOS, Android
Tipo: Integer
Indica se o Do Not Track está DESATIVADO.
Exemplo: 1

  • 0 - Do Not Track ativado (OFF=false)
  • 1 - Do Not Track desativado (OFF=true)

Suporte a múltiplos dispositivos

Parâmetro Detalhes
custom_user_id

Tipo: String
Seu ID de usuário interno para rastreamento entre dispositivos.

Sem PII: Não passe informações de identificação pessoal. Use um identificador interno com hash ou anonimizado de outra forma, não endereços de e-mail, números de telefone ou nomes brutos.

Exemplo: 123456789abcd


Suporte a SKAdNetwork

Parâmetro Detalhes
skan_conversion_value

Plataforma: iOS
Tipo: Integer
Valor de conversão mais recente do SKAdNetwork no momento da sessão.
Saiba mais: Implementação do SKAdNetwork
Exemplo: 7

skan_first_call_timestamp

Plataforma: iOS
Tipo: Integer
Timestamp Unix da primeira chamada à API do SKAdNetwork.
Exemplo: 1483228800

skan_last_call_timestamp

Plataforma: iOS
Tipo: Integer
Timestamp Unix da chamada mais recente à API do SKAdNetwork no momento da sessão.
Exemplo: 1483228800


Suporte a Google Ads ICM (Beta)

Parâmetro Detalhes
odm_info

Plataforma: iOS
Tipo: String
Obrigatório para o Google Ads Integrated Conversion Measurement (Beta).
Documentação do Google Ads ICM

odm_error

Plataforma: iOS
Tipo: String
Obrigatório para o Google Ads Integrated Conversion Measurement (Beta).
Documentação do Google Ads ICM


Exemplos de requisição

O código de exemplo demonstra a integração do endpoint SESSION em várias linguagens de programação.

Aviso sobre os exemplos: Os exemplos de código podem não incluir todos os parâmetros obrigatórios. Valide a lista completa de parâmetros antes da implementação em produção. Use um i (identificador do app) exclusivo para desenvolvimento/testes.

PYTHON CURL HTTP JAVA

Exemplo em Python

import requests

url = 'https://s2s.singular.net/api/v1/launch'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {
    'a': 'sdk_key_here',
    'p': 'Android',
    'i': 'com.singular.app',
    'ip': '10.1.2.3',
    've': '9.2',
    'ma': 'samsung',
    'mo': 'SM-G935F',
    'lc': 'en_US',
    'aifa': '8ecd7512-2864-440c-93f3-a3cabe62525b',
    'asid': 'edee92a2-7b2f-45f4-a509-840f170fc6d9',
    'install': 'true',
    'n': 'MyCoolAppName',
    'bd': 'Build/13D15',
    'app_v': '1.2.3',
    'openuri': 'myapp://home/page?queryparam1=value1',
    'ddl_enabled': 'true',
    'install_source': 'com.android.vending',
    'install_time': 1510040127,
    'update_time': 1510090877
}

response = requests.post(url, data=data, headers=headers)
print(response.json())

Códigos de resposta e erros

O endpoint SESSION retorna códigos de status HTTP e respostas JSON indicando o sucesso ou a falha da requisição.

Documentação completa de erros: Códigos de Resposta e Tratamento de Erros de S2S


Testes e validação

Verifique a integração S2S antes da implantação em produção usando o Singular SDK Console para validação de dados em tempo real.

Procedimento de teste

Validação de ponta a ponta

  1. Registre o dispositivo de teste: Obtenha o advertising ID do dispositivo e adicione ao Singular SDK Console
  2. Ative o log do Console: Adicione o identificador do dispositivo no SDK Console para capturar os dados de teste
  3. Use um App ID de desenvolvimento: Substitua o identificador do app pela versão de desenvolvimento (ex.: com.singular.app.dev ) para separar os dados de teste dos de produção
  4. Abra o app: Abra o app a partir do estado encerrado para acionar a sessão
  5. Valide os dados do cliente: Confirme que o app envia todos os pontos de dados obrigatórios da Singular para o seu servidor
  6. Verifique a requisição do servidor: Confirme que o seu servidor envia a requisição SESSION para https://s2s.singular.net/api/v1/launch com todos os parâmetros obrigatórios
  7. Verifique o SDK Console: Em segundos, o evento SESSION deve aparecer no SDK Console
  8. Repita os testes: Valide que a SESSION é acionada em cada entrada no app e operação em primeiro plano

SDK Console Session Event

Verificação crítica: Confirme que o evento SESSION ocorre na abertura/primeiro plano do app ANTES de qualquer requisição EVENT. Uma ordem inválida causa erros de atribuição.

Indicador de sucesso: Se a SESSION aparecer no SDK Console, você concluiu com sucesso o teste de integração de ponta a ponta!


Recursos adicionais

Documentação de testes

Guia completo de testes: Guia de Testes de Integração S2S