Referencia de la API del endpoint SESSION

Referencia de la API del endpoint SESSION

Registra las sesiones de los usuarios y habilita la atribución para instalaciones de apps, reengagement y métricas de retención a través de la API REST de Singular usando la integración server-to-server como alternativa a la implementación con SDK.


Descripción general

Caso de uso server-to-server

La API REST de Singular permite una integración server-to-server directa en la que las apps envían datos específicos del dispositivo a tu backend, que los transmite a los servidores de Singular para el procesamiento de atribución y los reportes de analytics.

Capacidades soportadas:

  • Atribución de instalación: Atribución de primer contacto a campañas de marketing
  • Atribución de reengagement: Atribución multitáctil para usuarios que regresan
  • Métricas de retención: Seguimiento del engagement basado en sesiones
  • Seguimiento de eventos: Medición de eventos personalizados dentro de la app

Arquitectura del flujo de datos

La integración server-to-server sigue un proceso de transmisión de datos de cuatro pasos.

  1. Recopilación en el cliente: La app recopila los datos requeridos del dispositivo y de la aplicación
  2. Transmisión al servidor: La app envía los datos recopilados a tu servidor backend
  3. Llamada a la API de Singular: Tu servidor envía los datos al endpoint de la API REST de Singular
  4. Gestión de la respuesta: Tu servidor recibe y procesa la respuesta de Singular

Diagrama del flujo de datos de sesión


Consideraciones clave

Requisitos críticos:

  • Procesamiento en tiempo real: Las solicitudes se procesan de forma individual: no hay soporte para lotes
  • Orden secuencial: Los eventos deben enviarse cronológicamente
  • Sin deduplicación: Singular no deduplica los datos: implementa la deduplicación del lado del servidor
  • Permanencia de los datos: Los datos a nivel de dispositivo no pueden eliminarse después de la ingesta: valídalos antes de enviarlos
  • La sesión primero: La sesión debe establecerse antes de cualquier seguimiento de eventos

Beneficios de la integración:

  • Flexibilidad: Control total sobre la recopilación de datos y el momento de la transmisión
  • Paridad de funcionalidades: Soporta toda la funcionalidad del SDK cuando se proporcionan los datos adecuados
  • Implementación personalizada: Adapta la integración a la arquitectura específica de tu backend

Gestión de sesiones

El endpoint SESSION notifica a Singular sobre los eventos de apertura de la app para inicializar las sesiones de usuario con fines de atribución y seguimiento.

Cuándo enviar sesiones

Disparadores de sesión

Envía solicitudes SESSION para estos eventos del ciclo de vida de la app:

  • Instalaciones nuevas: Primer inicio de la app después de la instalación
  • Inicio desde estado terminado: La app se abre desde un estado completamente cerrado
  • De segundo plano a primer plano: La app regresa a primer plano después de un periodo de tiempo de espera (recomendado: 60 segundos)

Lógica de tiempo de espera de la sesión

Implementa un tiempo de espera de sesión para evitar solicitudes SESSION excesivas durante breves pasos de la app a segundo plano.

Implementación recomendada:

  • Duración del tiempo de espera: 60 segundos (1 minuto)
  • Primer plano < tiempo de espera: No envíes SESSION si la app regresa a primer plano dentro del periodo de tiempo de espera
  • Primer plano > tiempo de espera: Envía SESSION si la app permanece en segundo plano más allá del periodo de tiempo de espera
  • Seguimiento del ciclo de vida de la app: Usa los eventos del ciclo de vida de la app y temporizadores para gestionar el estado de la sesión

Soporte para deep links: Envía siempre SESSION para las aperturas de la app a través de deep links, Universal Links o App Links con el openuri parámetro completado, independientemente del estado del tiempo de espera.


Procesamiento de atribución

Atribución basada en sesiones

Singular procesa las solicitudes SESSION para determinar el tipo de atribución y activar los flujos de trabajo apropiados.

Tipo de sesión Procesamiento de Singular Resultado de la atribución
Primera sesión (nueva instalación) Se activa el proceso de atribución de instalación Atribuye la instalación a la campaña de marketing
Calificada para reengagement Se activa el proceso de atribución de reengagement Atribuye el regreso del usuario a la campaña o al deep link
Sesión estándar La sesión se registra para el seguimiento de retención Cuenta para las métricas de actividad y engagement del usuario

Más información: Preguntas frecuentes sobre atribución de reengagement


Requisitos de orden de eventos

El momento de las sesiones y los eventos afecta directamente la precisión de la atribución y la calidad de los datos.

Reglas críticas de ordenamiento:

  1. Sesión antes de los eventos: Debe recibirse una única SESSION antes de cualquier evento de esa sesión
  2. Transmisión de eventos en tiempo real: Los eventos dentro de la app deben enviarse en tiempo real después de su respectiva sesión
  3. Procesamiento secuencial: Un orden de sesión inválido genera inconsistencias de datos y errores de atribución

Opciones avanzadas

Funcionalidad extendida

La integración S2S de Singular soporta capacidades avanzadas que requieren parámetros SESSION adicionales.

Funcionalidades avanzadas: Consulta Opciones avanzadas de S2S para conocer los requisitos de deep linking, SKAdNetwork y seguimiento entre dispositivos.


Especificación del endpoint de la API

El endpoint SESSION acepta solicitudes GET con parámetros de consulta que contienen datos del dispositivo, de la aplicación y de atribución.

URL del endpoint

URL base y método

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

Formato de la solicitud:

GET /api/v1/launch?param1=value1&param2=value2

Cuerpo de la solicitud: No proporciones un cuerpo en la solicitud: todos los parámetros deben enviarse como parámetros de consulta en la URL usando el método GET.


Parámetros requeridos

Todas las solicitudes SESSION deben incluir estos parámetros requeridos con los valores y el formato adecuados.

Autenticación de la API

SDK Key

Estos son parámetros S2S compartidos que se definen una sola vez en Fundamentos de S2S .


Identificadores de dispositivo

Identificadores específicos de la plataforma

Estos son parámetros S2S compartidos que se definen una sola vez en Fundamentos de S2S .


Parámetros del dispositivo

Información del dispositivo

Estos son parámetros S2S compartidos que se definen una sola vez en Fundamentos de S2S .


Parámetros de la aplicación

Información de la app

El identificador de la app ( i ), app_v y att_authorization_status son parámetros compartidos. Consulta Parámetros de la aplicación en Fundamentos de S2S .

Parámetro Detalles
install

boolean

Indica si la sesión representa la primera sesión después de la instalación o la reinstalación.

  • true - Primera sesión después de una instalación/reinstalación nueva
  • false - Sesión posterior (la app ya está instalada)

Requerido para: Capacidades de seguimiento de reinstalaciones

Ejemplo: true

install_time
iOS, Android

integer

Timestamp Unix de la primera instalación de la app.

Ejemplo: 1510040127

update_time
iOS, Android

integer

Timestamp Unix de la última actualización de la app.

Ejemplo: 1510040127


Parámetros de prevención de fraude

Validación de la fuente de instalación

Parámetro Detalles
install_source
Android, PC

string

Nombre del paquete de la fuente de instalación o identificador de la tienda.

Android: Install Source Package Name

Ejemplo de Android: com.android.vending (Google Play Store)

Tiendas de PC soportadas:

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

string

Recibo de instalación de iOS codificado en Base64 para la validación de fraude.

Ejemplo (truncado): MIJF9wYJKoZIhvcNAQcCoIJF6DCCReQCAQExCzAJBgUrDgMCGgUAMII1m...


Parámetros de deep linking

Soporte para deep links

Parámetro Detalles
openuri
iOS, Android

string

Deep link, Universal Link o App Link codificado en URL que abrió la app.

URL original: myapp://home/page?queryparam1=value1&queryparam2=value2

Ejemplo codificado: myapp%3A%2F%2Fhome%2Fpage%3Fqueryparam1%3Dvalue1%26queryparam2%3Dvalue2

ddl_enabled
iOS, Android

boolean

Indica si la app espera una URL de deferred deep link en la respuesta.

  • true - Esperar un deferred deep link en la respuesta
  • false - No esperar un deferred deep link

Ejemplo de respuesta:

{
  "deferred_deeplink": "myapp://deferred-deeplink",
  "status": "ok",
  "deferred_passthrough": "passthroughvalue"
}
singular_link_resolve_required
iOS, Android

boolean

Solicita la resolución de un short link de Singular a un long link. Debe usarse con openuri que contenga un short link de Singular.

  • true - Devolver el long link expandido
  • false - No resolver el link

Ejemplo de respuesta:

{
  "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 avanzados de atribución

Mejora de la atribución por plataforma

Parámetro Detalles
install_ref
Android (Google Play)
Native PC (Google Play Games)

JSON

Información del Google Install Referrer codificada en JSON URL. Proporciona la atribución más precisa para instalaciones de Android y de Google Play Games en PC.

Estructura JSON de Android:

{
   "installBeginTimestampSeconds":"1568939453",
   "referrer":"utm_source=google-play&utm_medium=organic",
   "clickTimestampSeconds":"0",
   "referrer_source":"service",
   "current_device_time":"1568944524"
}

Estructura JSON de Native PC:

{
   "install_time_epoch_seconds":"1568939453",
   "install_referrer":"utm_source=google-play&utm_medium=organic"
}

Requerido para:

  • Exportaciones a nivel de usuario de Facebook
  • Compartir con Data Destination
  • Precisión de los postbacks

Más información:

Ejemplo codificado en URL: %7B%22installBeginTimestampSeconds%22%3A%221568939453%22...

meta_ref
Android (Google Play)

JSON

A partir del 18 de junio de 2025: Meta Advanced Mobile Measurement (AMM) elimina la necesidad de implementar el Meta Install Referrer. No se recomienda si AMM está habilitado.

Meta Install Referrer codificado en JSON URL para obtener datos de atribución granulares a nivel de usuario.

Estructura JSON:

{
  "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
  }
}

Más información: Preguntas frecuentes sobre el Meta Referrer

attribution_token
iOS

string

Token de atribución de Apple Search Ads del framework AdServices (iOS 14.3+).

Obtén con: attributionToken() en el primer inicio de la app después de la instalación/reinstalación.

Ejemplo (truncado): KztLg%2FIkNsWDMuBMOU%2BySnkPU5myJb4OFmeaMUE%2BTqQJP...


Parámetros opcionales

Los parámetros opcionales mejoran las capacidades de seguimiento y soportan funcionalidades avanzadas.

Parámetros de timestamp

Parámetro Detalles
utime

integer

Timestamp Unix de 10 dígitos de la sesión.

Ejemplo: 1483228800

umilisec

integer

Timestamp Unix de 13 dígitos con milisegundos.

Ejemplo: 1483228800000


Parámetros de red y ubicación

Estos son parámetros S2S compartidos que se definen una sola vez en Fundamentos de S2S .


Propiedades personalizadas

Parámetro Detalles
global_properties

JSON

Objeto JSON codificado en URL con pares clave-valor personalizados.

Límites:

  • Máximo 5 pares clave-valor
  • Máximo 200 caracteres por clave y valor

JSON: {"key1":"value1","key2":"value2"}

Codificado en URL: %7B%22key1%22%3A%22value1%22%2C%22key2%22%3A%22value2%22%7D


Soporte para seguimiento de desinstalaciones

Parámetro Detalles
apns_token
iOS

string

Token de dispositivo de Apple Push Notification Service (APNs) codificado en hexadecimal.

Ejemplo: b0adf7c9730763f88e1a048e28c68a9f806ed032fb522debff5bfba010a9b052

fcm
Android

string

Token de dispositivo de Firebase Cloud Messaging.

Ejemplo: bk3RNwTe3H0CI2k_HHwgIpoDKCIZvvD...MExUdFQ3P1


Parámetros de privacidad de datos

Estos son parámetros S2S compartidos que se definen una sola vez en Fundamentos de S2S .


Soporte entre dispositivos

Estos son parámetros S2S compartidos que se definen una sola vez en Fundamentos de S2S .


Soporte para SKAdNetwork

Parámetro Detalles
skan_conversion_value
iOS

integer

Valor de conversión de SKAdNetwork más reciente al momento de la sesión.

Más información: Implementación de SKAdNetwork

Ejemplo: 7

skan_first_call_timestamp
iOS

integer

Timestamp Unix de la primera llamada a la API de SKAdNetwork.

Ejemplo: 1483228800

skan_last_call_timestamp
iOS

integer

Timestamp Unix de la llamada más reciente a la API de SKAdNetwork al momento de la sesión.

Ejemplo: 1483228800


Soporte para Google Ads ICM (Beta)

Parámetro Detalles
odm_info
iOS

string

Requerido para Google Ads Integrated Conversion Measurement (Beta).

Documentación de Google Ads ICM

odm_error
iOS

string

Requerido para Google Ads Integrated Conversion Measurement (Beta).

Documentación de Google Ads ICM


Ejemplos de solicitud

El código de muestra ilustra la integración del endpoint SESSION en múltiples lenguajes de programación.

Aviso sobre los ejemplos: Los ejemplos de código pueden no incluir todos los parámetros requeridos. Valida la lista completa de parámetros antes de la implementación en producción. Usa un i (identificador de la app) único para desarrollo/pruebas.

PYTHON CURL HTTP JAVA

Ejemplo de Python

import requests

params = {
    '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.get('https://s2s.singular.net/api/v1/launch', params=params)
print(response.json())

Códigos de respuesta y errores

El endpoint SESSION devuelve códigos de estado HTTP y respuestas JSON que indican el éxito o el fallo de la solicitud.

Documentación completa de errores: Códigos de respuesta S2S y gestión de errores


Pruebas y validación

Verifica la integración S2S antes del despliegue en producción usando la SDK Console de Singular para la validación de datos en tiempo real.

Procedimiento de prueba

Validación de extremo a extremo

  1. Registra un dispositivo de prueba: Obtén el ID de publicidad del dispositivo y añádelo a la SDK Console de Singular
  2. Habilita el registro en la Console: Añade el identificador del dispositivo en la SDK Console para capturar los datos de prueba
  3. Usa un ID de app de desarrollo: Anula el identificador de la app con la versión de desarrollo (por ejemplo, com.singular.app.dev ) para separar los datos de prueba de los de producción
  4. Inicia la app: Abre la app desde el estado terminado para activar una sesión
  5. Valida los datos del cliente: Confirma que la app envía todos los puntos de datos de Singular requeridos a tu servidor
  6. Verifica la solicitud del servidor: Confirma que tu servidor envía la solicitud SESSION a https://s2s.singular.net/api/v1/launch con todos los parámetros requeridos
  7. Revisa la SDK Console: En cuestión de segundos, el evento SESSION debería aparecer en la SDK Console
  8. Repite las pruebas: Valida que SESSION se active en cada entrada a la app y en cada operación de primer plano

Evento de sesión en la SDK Console

Verificación crítica: Confirma que el evento SESSION ocurra en la apertura/primer plano de la app ANTES de cualquier solicitud EVENT. Un orden inválido causa errores de atribución.

Indicador de éxito: Si SESSION aparece en la SDK Console, ¡has completado con éxito una prueba de integración de extremo a extremo!


Recursos adicionales

Documentación de pruebas

Guía de pruebas completa: Guía de pruebas de integración S2S