Skip to main content
Fluxo de integração
Language

Events API

Integre o cside Device Intelligence na sua aplicação. Colete sinais do navegador, gere tokens de sessão e recupere inteligência detalhada de visitantes a partir do seu backend.

Este guia orienta você na integração completa da Events API de cside Device Intelligence: carregando o script do cliente, gerando um token de sessão, enviando-o para o seu backend e interpretando o payload de resposta.

Fluxo de integração

Adicione o script à sua página

Se a sua app é construída com um bundler, instale o pacote npm e chame initDeviceIntelligence({ teamID }) o mais cedo que a sua app permitir. Caso contrário, inclua o bootstrap de navegador fail-open no topo do <head>, antes dos outros scripts, e substitua o valor de script.src pela URL do seu time no painel do cside. O bootstrap carrega client.js de forma assíncrona, enfileira chamadas antecipadas e as rejeita quando o cside falha ou expira, mantendo a página funcionando.

Envie a telemetria e receba um token de sessão

Depois que o script for carregado, a função global sendClientTelemetry ficará disponível (o pacote npm retorna a mesma função a partir de initDeviceIntelligence). Carregar o script não cria um fingerprint de sessão sozinho. Chame sendClientTelemetry(externalIds?) para enviar telemetria para https://edge.csidefd.com/client e receber um token de sessão. Passe um objeto externalIds opcional se quiser anexar os seus próprios identificadores.

const result = await sendClientTelemetry({
  email: "user@example.com",
  userId: "1234567890",
});

// Ou chame sem argumentos
// const result = await sendClientTelemetry();

if (result.errors) {
  console.error(result.errors);
  throw new Error("A solicitação de telemetria falhou.");
}

const token = result.token;

Parâmetros

ParâmetroTipoObrigatórioDescrição
externalIdsRecord<string, string>NãoIdentificadores opcionais que você quer anexar ao fingerprint, como userId, orderId, paymentCardId ou email.

Para receber o sinal de e-mail descartável (fingerprint_enrichment.throwaway_email_detected em /token/v2/verify), passe o endereço de e-mail neste objeto usando a chave email. As regras de conta e o Identity graph usam userId como chave (o Identity graph também aceita teamId ou customerId), e a regra de teste de cartões usa paymentCardId; consulte Recuperar datapoints para o formato.

Valor de retorno

A função retorna um objeto JSON (já analisado, então você não precisa chamar .json() nele):

{
  "token": "eyJhbGciOiJIUzI1NiIs..."
}

O campo token contém o token de sessão de fingerprint. Se a coleta de telemetria encontrar problemas, o objeto também inclui um array opcional errors que você pode registrar; com o pacote npm, sendClientTelemetry nunca é rejeitado e, em vez disso, é resolvido com { token: null, errors }. Extraia result.token e envie apenas essa string do token de sessão para o seu backend.

Recupere dados de fingerprint a partir do seu backend

Gere uma chave de API de Device Intelligence apenas para backend no dashboard do cside, armazene-a como segredo do servidor e use-a para trocar o token de sessão com o cside. A chave de API é exibida apenas uma vez e não deve ser exposta em código de navegador.

if (!token) {
  throw new Error("O token de sessão de fingerprint não foi retornado.");
}

const response = await fetch("https://api.cside.com/token/v2/verify", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.CSIDE_FINGERPRINT_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ token }),
});

const data = await response.json();

Corpo da requisição

Envie JSON no formato { "token": "<token de sessão>" }, em que o valor é result.token da etapa anterior. Apenas os endpoints /token/v2/* aceitam JSON; os endpoints /token/v1/* aceitam o token de sessão bruto como corpo text/plain.

Opções de lookup do token

Use o endpoint autenticado para trocas server-to-server em produção. Os endpoints públicos continuam disponíveis quando uma integração precisa especificamente do fluxo de lookup não autenticado.

EndpointAutenticaçãoCorpo da requisiçãoUse quando
/token/v2/verifyChave de APIJSON { "token" }Você precisar de recuperação backend autenticada com uma chave de API de Device Intelligence.
/token/v2/device/entriesChave de APIJSON { "token", "limit", "offset" }Você precisar de avaliações concluídas para o mesmo ID de dispositivo de um token de sessão.
/token/v1/clientNenhumaToken bruto, text/plainVocê precisar do payload público de resposta de fingerprinting.
/token/v1/clientIdNenhumaToken bruto, text/plainVocê precisar apenas do fingerprint ID estável do fluxo público de lookup.

Todos os endpoints retornam 202 Accepted com { "status": "pending" } enquanto a avaliação ainda está em processamento, e depois 200 OK quando ela termina. /token/v2/device/entries aceita { "token": "...", "limit": 100, "offset": 0 } e retorna { "device_id": "...", "entries": [...], "next_offset": 100, "has_more": true }, em que cada entrada usa o formato de resposta de /token/v2/verify. limit é opcional, o padrão é 500 e o limite máximo é 500. /token/v1/clientId retorna JSON { "status": "completed", "device_id": "..." }. Se não existir fingerprint ID para o token de sessão, ele retorna 404.

Erros e limites de requisições

As respostas de erro trazem um corpo JSON { "error": "<mensagem>", "code": <status HTTP> }:

StatusSignificado
400Corpo malformado ou um token de sessão que não pode ser decodificado.
401Chave de API ausente ou inválida, token expirado ou token emitido para um time diferente do da chave de API.
404Não existe avaliação para o token (token not found) ou, em /token/v1/clientId, não existe fingerprint ID (fingerprint id not found).
429Limite de requisições excedido. A resposta traz um header retry-after: 60. O limite padrão é de 1.000 requisições por minuto por time.

Uma avaliação concluída que falhou não é um erro HTTP: ela retorna 200 OK com "status": "failed" e um campo error_message. Verifique status antes de ler os campos de enriquecimento.

Exemplo de requisição no backend

const csideResponse = await fetch("https://api.cside.com/token/v2/verify", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.CSIDE_FINGERPRINT_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ token }),
});

const data = await csideResponse.json();

Interprete a resposta do backend

Seu backend retorna uma resposta JSON contendo o resultado da identificação e sinais associados. Consulte a referência completa de resposta abaixo.

Resposta de /token/v2/verify

O endpoint autenticado retorna um payload JSON plano. Cada entrada de /token/v2/device/entries usa o mesmo formato.

CampoTipoDescrição
statusstringpending, completed ou failed. Os campos de enriquecimento só estão presentes quando completed.
error_messagestringPor que a avaliação falhou. Presente apenas quando status é failed.
created_atnumberTimestamp Unix (milissegundos) de quando a avaliação foi criada.
updated_atnumberTimestamp Unix (milissegundos) da última atualização.
fingerprintobjectO fingerprint completo do dispositivo: sinais de navegador, hardware, renderização, ambiente e automação, mais os external_ids que você anexou. Mesmos campos do objeto fingerprint da exportação S3.
network_client_metricsobjectCaracterísticas TCP e TLS da conexão.
geo_dataobjectGeolocalização em nível de cidade do IP do visitante.
ip_enrichmentobjectDados de ASN, geo e privacidade (hosting, proxy, relay, tor, vpn, sinais de datacenter) do IP do visitante.
vpn_evaluationobjectis_vpn, vpn_probability, vpn_confidence, reasons, features e context.
botobjectO veredito de bot: is_bot, bot_probability, bot_confidence, bot_agent_id, reasons, pontuações e limiares por modelo e session_event_count. Consulte Detecção de agentes de IA.
fingerprint_enrichmentobjectSinais derivados do fingerprint. throwaway_email_detected é true quando o ID externo email usa um domínio descartável.
rule_evaluationsobjectResultados legados de regras (rules, policy_version). Vazio em avaliações criadas depois de 2026-08-27; mantido na resposta para que registros mais antigos ainda possam ser decodificados.
rule_evaluations_v2objectResultados do motor de regras: um array values em que cada item envolve uma evaluation com rule_slug, rule_version, outcome, evaluated_as (live ou shadow), transition e evaluated_at.

Os objetos aninhados correspondem à estrutura do registro da exportação S3, onde cada campo é documentado em detalhe.

rule_evaluations_v2

A tabela acima resume esse campo. Ele carrega o resultado de cada regra que rodou para o domínio, aninhado três níveis abaixo em rule_evaluations_v2.values[].evaluation, e os valores são inteiros em vez de strings, então vale a pena detalhá-los. Ele não faz parte do payload de /token/v1/client documentado abaixo.

CampoTipoDescrição
rule_slugstringO identificador da regra, por exemplo "account_shared_detected".
outcomenumberO resultado da avaliação. Veja a tabela abaixo.
evaluated_asnumberO estado de ciclo de vida da regra no momento da avaliação. Veja a tabela abaixo.
transitionnumberSe o resultado mudou nesta avaliação, independentemente de qual seja o resultado. 2 significa inalterado desde a última avaliação, 3 significa que mudou nesta. Combinado com outcome: 1, um 3 significa que a regra acabou de passar a corresponder; combinado com outcome: 2, significa que a regra acabou de parar de corresponder. 1 nunca é produzido.
key.key_hashstringUm hash do valor em que a regra se baseou. É uma string JSON, não um número, então sobrevive a JSON.parse sem perda de precisão. Não carrega o id da conta em si.
event_time, evaluated_atobject{ seconds, nanos }, diferente de created_at e updated_at no nível superior da resposta, que são timestamps em milissegundos.

outcome e evaluated_as são inteiros brutos, não strings:

outcomeSignificadoQuando você vai observar
0Não especificadoNão é produzido
1VerdadeiroContinuamente, em toda avaliação enquanto a condição se mantém
2FalsoContinuamente, em toda avaliação enquanto ela não se mantém. Este é o estado estável para uma regra saudável que não corresponde, não uma transição rara
3Ausente (estrutural)Continuamente, em toda avaliação em que a regra não consegue ler o campo de que precisa, como uma chave de id externo errada. Persistente, não uma ocorrência pontual
4Pendente (transitório)Quando uma medição exigida existe mas ainda não esquentou. Diferente de um status de nível superior igual a pending: pedir o mesmo token novamente não resolve isso, mas uma avaliação posterior da mesma entidade pode retornar 1 ou 2
evaluated_asSignificado
1Rascunho
2Shadow (um experimento; pode aparecer a qualquer momento)
3Ativo
4Arquivado

Toda regra avaliada e publicada relata uma entrada em cada evento, em qualquer resultado. rule_evaluations_v2 é um registro do que foi avaliado, não um fluxo de notificações, então outcome: 2 (falso) e outcome: 3 (ausente) não são suprimidos: eles viajam no array de forma tão confiável quanto outcome: 1. transition é o que diz se aquele resultado mudou desde a avaliação anterior.

Uma entrada ausente para um determinado rule_slug significa que a regra não foi avaliada de forma alguma: ela não está ativada para o domínio, é uma regra apenas de medição que não publica, ou a avaliação não rodou para aquele evento. Não significa “avaliada como falsa” - esse caso é outcome: 2, presente no array como qualquer outro. Veja Detectar compartilhamento de conta para um exemplo completo que lê esse campo do início ao fim.

Referência de resposta de /token/v1/client

Esta referência se aplica ao endpoint público /token/v1/client. É uma visão mais antiga e mais plana da mesma avaliação. Muitos dos seus campos são placeholders fixos mantidos por compatibilidade retroativa; o aviso abaixo lista esses campos. Para integrações novas, prefira /token/v2/verify.

Sempre valores placeholder na v1

Estes campos estão presentes em toda resposta, mas nunca são calculados:

  • identification.confidence e supplementary_id_high_recall.confidence são sempre { "score": 0.0, "version": "unknown" }
  • identification.visitor_found é sempre false; first_seen_at e last_seen_at são iguais ao timestamp do evento
  • proximity é sempre { "id": "unknown", "precision_radius": 0, "confidence": 0.0 }
  • client_referrer é sempre "unknown"
  • ip_blocklist.email_spam e ip_blocklist.attack_source são sempre false (apenas tor_node é preenchido)
  • raw_device_attributes.math é sempre "unknown"

Não construa lógica de detecção ou de fraude sobre eles.

Explicações das regras

Regras publicadas com resultado verdadeiro podem incluir rule_evaluations_v2.values[].evaluation.explanation.nodes. Cada nó visitado pode descrever seu node_id, outcome, valor tipado observed, subject e compared_to. As explicações são opcionais; resultados falsos, pendentes ou ausentes não as incluem. A ausência de explicação não altera o resultado registrado.

Trate subject e compared_to como texto para exibição, não como um formato a interpretar. Use node_id, valores tipados de observed e outcome no código. Leia esses campos de rule_evaluations_v2, não do objeto legado rule_evaluations. Consulte a API de eventos para os valores dos resultados e a diferença em relação ao formato legado.

Campos de nível superior

CampoTipoDescrição
linked_idstringO ID da sessão do navegador ou o ID do evento quando nenhum ID de sessão foi capturado. Não é um identificador fornecido por você; os seus externalIds aparecem em tags como external_id:<chave>.
tagsobjectUm mapa de diagnóstico do cside, não metadados do cliente: domain_id, team_id, request_id, session_id, fingerprint_match, network_match, flags de suporte à detecção como incognito_support e os seus externalIds como entradas external_id:<chave>.
timestampnumberTimestamp Unix (milissegundos) do evento.
event_idstringIdentificador único para este evento de fingerprinting.
urlstringA URL da página onde o fingerprint foi coletado.
ip_addressstringO endereço IP do visitante.
user_agentstringA string User-Agent bruta do navegador do visitante.
client_referrerstringSempre "unknown".
statusstringcompleted ou failed.
error_messagestringPresente quando status é failed.
domain_id, team_id, session_id, request_idstringMetadados da avaliação copiados do registro interno.
created_atstringHora da avaliação como string RFC 3339 (diferente de /token/v2/verify, que usa milissegundos).

A resposta também traz os objetos network_client_metrics, vpn_evaluation, proxy_details, tampering_details, tampering_anomaly_score, velocity e sdk. As contagens de velocity são derivadas apenas do evento atual (a janela events.24_hours é o único valor histórico); sdk informa platform: "js" com version: "unknown". Eles aparecem no exemplo completo, mas não fazem parte do contrato estável.

browser_details

Detalhes sobre o navegador e sistema operacional do visitante.

CampoTipoDescrição
browser_namestringNome do navegador (ex.: "Chrome").
browser_major_versionstringNúmero da versão principal.
browser_full_versionstringString da versão completa.
osstringNome do sistema operacional.
os_versionstringVersão do sistema operacional.
devicestringTipo de dispositivo (ex.: "Other", "Mobile").

identification

O resultado principal de identificação do visitante.

CampoTipoDescrição
visitor_idstringO ID estável do dispositivo deste visitante. É o único campo calculado do objeto.
confidence.scorenumberSempre 0.0.
confidence.versionstringSempre "unknown".
visitor_foundbooleanSempre false.
first_seen_atnumberSempre igual a timestamp.
last_seen_atnumberSempre igual a timestamp.

supplementary_id_high_recall

Um identificador secundário derivado dos seus externalIds (preferindo userId, depois accountId) para que uma conta possa ser vinculada entre dispositivos. Recorre ao ID do dispositivo quando nenhum ID externo foi anexado.

CampoTipoDescrição
visitor_idstringHash do ID externo escolhido ou o ID do dispositivo quando nenhum foi anexado.
visitor_foundbooleantrue quando um ID externo foi anexado, caso contrário false.
confidence.scorenumberSempre 0.0.
confidence.versionstringSempre "unknown".
first_seen_atnumberSempre igual a timestamp.
last_seen_atnumberSempre igual a timestamp.

proximity

Não preenchido. Sempre { "id": "unknown", "precision_radius": 0, "confidence": 0.0 }. Use geo_data e ip_enrichment em /token/v2/verify para localização.

ip_info

Informações do endereço IP do visitante.

CampoTipoDescrição
v4.addressstringEndereço IPv4.
v6.addressstringEndereço IPv6.

ip_blocklist

Se o IP do visitante aparece em listas de bloqueio conhecidas.

CampoTipoDescrição
email_spambooleanNão preenchido; sempre false.
attack_sourcebooleanNão preenchido; sempre false.
tor_nodebooleanIP é um nó de saída Tor.

Sinais de fraude e ambiente

Sinais indicando atributos suspeitos ou notáveis do visitante.

Alguns destes não são preenchidos atualmente

root_apps, emulator, jailbroken, frida, mitm_attack, replayed, high_activity_device, cloned_app, privacy_settings e location_spoofing estão presentes na resposta mas nunca são definidos. Retornam sempre false (factory_reset_timestamp é sempre 0). Não construa lógica de detecção ou de fraude sobre eles. Cada um está marcado na tabela abaixo.

CampoTipoDescrição
botstringUma string simples derivada apenas do User-Agent: "detected" quando ele contém bot, crawler, spider ou headless; "unknown" quando nenhum User-Agent foi capturado; caso contrário "not_detected". Não é o modelo de bot. Use bot.is_bot em /token/v2/verify para o veredito real. Consulte Detecção de agentes de IA.
root_appsbooleanDispositivo tem aplicativos root/superusuário instalados. Não preenchido atualmente; sempre false.
emulatorbooleanDispositivo é um emulador. Não preenchido atualmente; sempre false.
proxybooleanVisitante está usando um proxy, relay ou IP de datacenter.
proxy_confidencestring"low", "medium" ou "high" quando proxy é true; "unknown" caso contrário.
vpnbooleanVisitante está usando uma VPN.
vpn_confidencestring"low", "medium" ou "high" quando o modelo de VPN foi executado; "unknown" caso contrário.
vpn_origin_timezonestringFuso horário IANA informado pelo navegador.
vpn_origin_countrystringPaís inferido a partir do enriquecimento de IP ou "unknown".
vpn_methodsobjectSinais no nível de método relacionados ao uso de VPN e ao tráfego anonimizado. Consulte a subseção abaixo.
incognitobooleanNavegador está no modo anônimo/privado.
tamperingbooleanAtributos do navegador foram adulterados.
jailbrokenbooleanDispositivo está com jailbreak. Não preenchido atualmente; sempre false.
fridabooleanKit de instrumentação Frida detectado. Não preenchido atualmente; sempre false.
virtual_machinebooleanVisitante está executando em uma máquina virtual.
developer_toolsbooleanFerramentas de desenvolvedor do navegador estão abertas.
mitm_attackbooleanAtaque man-in-the-middle detectado. Não preenchido atualmente; sempre false.
replayedbooleanA requisição é uma repetição de uma requisição anterior. Não preenchido atualmente; sempre false.
high_activity_devicebooleanNúmero incomumente alto de identificações deste dispositivo. Não preenchido atualmente; sempre false.

O sinal de e-mail descartável não faz parte desta resposta. Leia fingerprint_enrichment.throwaway_email_detected em /token/v2/verify em vez disso.

vpn_methods

vpn_methods contém sinais no nível de método relacionados ao uso de VPN e ao tráfego anonimizado. Use o campo de nível superior vpn como veredito geral. O valor de um método pode ser true quando vpn é false, por exemplo, quando o cside detecta tráfego de proxy ou relay que o modelo de VPN não classifica como VPN.

CampoTipoDescrição
timezone_mismatchbooleanO fuso horário do navegador não corresponde à geolocalização do IP.
public_vpnbooleanO IP corresponde a um sinal conhecido de VPN pública ou de data center.
auxiliary_mobilebooleanReservado para detecção específica de dispositivos móveis. Atualmente é false para eventos do navegador.
os_mismatchbooleanO sistema operacional informado pelo navegador não corresponde à assinatura de rede.
relaybooleanO cside detectou um relay que anonimiza o tráfego, um proxy ou tráfego semelhante ao de um relay.
Nomes de campos achatados

Alguns pipelines de dados adicionam prefixos e achatam os campos aninhados. Nesses conjuntos de dados, vpn_methods.relay pode aparecer como cside_fingerprint_vpn_methods_relay.

raw_device_attributes

Componentes de fingerprint de baixo nível do navegador.

CampoTipoDescrição
mathstringNão preenchido; sempre "unknown".
vendorstringString do fornecedor de GPU/gráficos.

Exemplo completo de resposta

Uma resposta concluída de /token/v1/client. Os objetos aninhados que não fazem parte do contrato estável (network_client_metrics, vpn_evaluation, velocity) estão abreviados.

{
  "linked_id": "b3f1c9e2-4d7a-4b0e-9f1a-2c8d7e6f5a41",
  "tags": {
    "domain_id": "7371466449724252160",
    "team_id": "7196353823991660544",
    "request_id": "01J9ZK3Q8W",
    "session_id": "b3f1c9e2-4d7a-4b0e-9f1a-2c8d7e6f5a41",
    "fingerprint_match": "7371466449724252160",
    "external_id:userId": "1234567890",
    "incognito_support": "supported",
    "developer_tools_support": "supported",
    "virtual_machine_support": "heuristic",
    "tor_support": "ipinfo_privacy",
    "visit_summary_source": "recent_fingerprint.available"
  },
  "timestamp": 1708102555327,
  "event_id": "289076244130249728",
  "url": "http://www.example.com/login",
  "ip_address": "61.127.217.15",
  "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...",
  "client_referrer": "unknown",
  "browser_details": {
    "browser_name": "Chrome",
    "browser_major_version": "74",
    "browser_full_version": "74.0.3729",
    "os": "Windows",
    "os_version": "7",
    "device": "Other"
  },
  "identification": {
    "visitor_id": "Ibk1527CUFmcnjLwIs4A9",
    "confidence": { "score": 0.0, "version": "unknown" },
    "visitor_found": false,
    "first_seen_at": 1708102555327,
    "last_seen_at": 1708102555327
  },
  "supplementary_id_high_recall": {
    "visitor_id": "3HNey93AkBW6CRbxV6xP",
    "visitor_found": true,
    "confidence": { "score": 0.0, "version": "unknown" },
    "first_seen_at": 1708102555327,
    "last_seen_at": 1708102555327
  },
  "proximity": {
    "id": "unknown",
    "precision_radius": 0,
    "confidence": 0.0
  },
  "bot": "not_detected",
  "root_apps": false,
  "emulator": false,
  "ip_info": {
    "v4": { "address": "94.142.239.124" },
    "v6": { "address": "2001:db8:3333:4444:5555:6666:7777:8888" }
  },
  "ip_blocklist": {
    "email_spam": false,
    "attack_source": false,
    "tor_node": false
  },
  "proxy": true,
  "proxy_confidence": "low",
  "proxy_details": {
    "proxy_type": "datacenter",
    "last_seen_at": 1708102555327,
    "provider": "Example Hosting"
  },
  "vpn": false,
  "vpn_confidence": "high",
  "vpn_origin_timezone": "Europe/Amsterdam",
  "vpn_origin_country": "NL",
  "vpn_methods": {
    "timezone_mismatch": false,
    "public_vpn": true,
    "auxiliary_mobile": false,
    "os_mismatch": false,
    "relay": true
  },
  "vpn_evaluation": { "is_vpn": false, "vpn_probability": 0.04, "vpn_confidence": 0.91 },
  "incognito": false,
  "tampering": false,
  "tampering_anomaly_score": 0.0,
  "tampering_anti_detect_browser": false,
  "tampering_details": { "anomaly_score": 0.0, "anti_detect_browser": false },
  "cloned_app": false,
  "factory_reset_timestamp": 0,
  "jailbroken": false,
  "frida": false,
  "privacy_settings": false,
  "virtual_machine": false,
  "location_spoofing": false,
  "velocity": {
    "distinct_ip": { "5_minutes": 1, "1_hour": 1, "24_hours": 1 },
    "distinct_country": { "5_minutes": 0, "1_hour": 0, "24_hours": 0 },
    "events": { "5_minutes": 1, "1_hour": 1, "24_hours": 3 },
    "ip_events": { "5_minutes": 1, "1_hour": 1, "24_hours": 1 },
    "distinct_ip_by_linked_id": { "5_minutes": 1, "1_hour": 1, "24_hours": 1 },
    "distinct_visitor_id_by_linked_id": { "5_minutes": 1, "1_hour": 1, "24_hours": 1 }
  },
  "developer_tools": false,
  "mitm_attack": false,
  "sdk": { "platform": "js", "version": "unknown", "integrations": [] },
  "replayed": false,
  "high_activity_device": false,
  "raw_device_attributes": {
    "math": "unknown",
    "vendor": "Google Inc."
  },
  "network_client_metrics": { "client_ip": "61.127.217.15", "tls_ja4": "t13d1516h2_8daaf6152771_b186095e22b6" },
  "status": "completed",
  "domain_id": "7371466449724252160",
  "team_id": "7196353823991660544",
  "session_id": "b3f1c9e2-4d7a-4b0e-9f1a-2c8d7e6f5a41",
  "request_id": "01J9ZK3Q8W",
  "created_at": "2024-02-16T17:35:55.327Z"
}
Was this page helpful?