> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API de risco de e-mail: entregabilidade e vazamentos

> A Didit avalia o risco de um e-mail sem enviar OTP: entregabilidade, domínio descartável, vazamentos e fraude em uma chamada servidor a servidor.

Use `POST /v3/email/risk/` quando você precisar de inteligência de e-mail sem pedir ao usuário que digite um código de uso único.

Ele não envia e-mail. Ele cria uma sessão de API, enriquece o endereço, aplica suas regras de risco de e-mail e retorna, em uma única resposta síncrona, o mesmo bloco de e-mail normalizado usado pela Verificação de e-mail.

Quando a requisição é salva, a Didit também pode usar o e-mail avaliado como evidência agregada em **Networks**. Os grafos de rede podem exibir inteligência de e-mail de alto risco, contexto de vazamentos e cobertura de perfis sociais em sinais de e-mail compartilhados, mas não revelam o endereço de e-mail original a outras organizações.

## Interpretar a resposta

* `status` é a decisão final desta sessão de API. Normalmente é `Approved`; a avaliação de risco pode produzir `In Review` ou `Declined`.
* `email.is_breached`, `email.is_disposable` e `email.is_undeliverable` são os sinais estáveis de sim/não para a lógica da sua aplicação.
* `email.breaches` lista os vazamentos conhecidos mais recentes que contêm o endereço, quando há cobertura, com a data do vazamento e as classes de dados expostas.
* `email.email_intelligence.score` usa uma escala de risco de 0 a 100, em que um número maior significa risco maior. `breach_risk_level` (`Low`, `Medium`, `High`) e `no_of_breaches` são visões derivadas.
* `email.email_intelligence.reason_codes` explica quais sinais normalizados contribuíram para o resultado. Os valores podem aumentar com o tempo, então não rejeite códigos desconhecidos.
* `email.email_intelligence` e `email.enrichment` são aliases de compatibilidade com o mesmo objeto normalizado. Novas integrações podem ler `email.enrichment`.
* `email.matches` lista outras sessões da sua aplicação em que o mesmo endereço foi usado por um usuário diferente. Use-o para detectar contas duplicadas.
* `request_id` é o ID da sessão de API. Armazene-o com `vendor_data` se precisar correlacionar o resultado com webhooks posteriores ou com a atividade no console.

> [!WARNING]
>
> `email.email_intelligence` e `email.enrichment` são campos sujeitos à disponibilidade de dados. Uma consulta concluída pode omitir ambos quando nenhum dado de inteligência utilizável é retornado para aquele endereço, domínio ou plano. Construa suas regras primeiro com base em `is_breached`, `is_disposable` e `is_undeliverable`, e trate a ausência de inteligência como "desconhecido", não como "seguro".

## Complemento de pegada social

Defina `enable_social` como `true` para adicionar um bloco `email_social` à resposta, dentro de `email`: as plataformas online em que este endereço de e-mail está cadastrado, agrupadas por categoria, com as contagens resumidas e os detalhes de perfil que nossos parceiros de dados retornarem.

* `email.email_social.profiles_registered` e `email.email_social.profiles_checked` são os números principais: plataformas em que o endereço de e-mail tem cadastro confirmado, do total de plataformas avaliadas.
* `email.email_social.registered_platforms` e `email.email_social.not_registered_platforms` listam cada plataforma com sua `category` e seu `scope` (`global`, ou `local` para plataformas específicas de uma região).
* `email.email_social.categories` informa a contagem de cadastros e a proporção por categoria, e `email.email_social.profiles` traz os detalhes de perfil por plataforma quando a plataforma os expõe (nome, URL da foto, texto de apresentação, status de privacidade, indicador de conta comercial).
* Os índices resumidos (`digital_footprint_diversity`, `digital_sophistication_index`, `engagement_depth_index`, `subscription_affordability_index`) são compostos de 0 a 10. Qualquer contagem pode ser `null` quando a verificação não retornou dados para ela.

`profiles_registered: 0` é uma resposta real, não uma falha: as plataformas foram verificadas e o endereço de e-mail não foi encontrado em nenhuma delas, o que é um sinal comum de identidade sintética. Este endpoint não age sobre isso por conta própria: use `email_no_social_presence_action` em um workflow para transformá-lo em um veredito de revisão (Review) ou de recusa (Decline).

O bloco fica ausente quando `enable_social` não está definido e também quando a verificação social não pôde ser concluída; nesse caso, ela não é cobrada.

## Comportamento no sandbox

As chaves de sandbox validam a requisição e retornam dados determinísticos aprovados. Elas não enviam e-mail, não consomem créditos, não criam sessão e não contribuem para Networks. Com `enable_social` definido, elas também retornam um bloco `email_social` determinístico.

## Faturamento

As chamadas à Email Risk API custam \$0.04 pelo preço de tabela, menos do que custaria a Verificação de e-mail completa, porque nenhum e-mail é enviado. Uma requisição em produção passa a ser cobrada assim que a consulta começa, mesmo quando alguns campos fornecidos conforme disponibilidade não estão disponíveis.

O complemento de presença em redes sociais é cobrado à parte: uma unidade `email_social` por requisição, além do preço da Email Risk API, sempre que a verificação é concluída. A checagem de créditos antes da consulta cobre os dois.


## OpenAPI

````yaml pt-br/openapi-25.json POST /v3/email/risk/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/email/risk/:
    post:
      tags:
        - Standalone APIs
      summary: Calcular a pontuação de risco de um endereço de e-mail
      description: >-
        Retorna sinais de entregabilidade, endereço descartável, vazamentos,
        correspondência entre sessões e inteligência de risco normalizada, sem
        enviar um OTP. O endpoint cria uma sessão de API e retorna o id dela
        como `request_id`.


        **Decisão.** O `status` de nível superior reflete `email.status`.
        Normalmente é `Approved`; a avaliação de risco pode resultar em `In
        Review` ou `Declined`.


        **Aliases de compatibilidade.** As respostas do ambiente de produção
        expõem o objeto de inteligência normalizado tanto como
        `email.email_intelligence` quanto como `email.enrichment`. Os valores
        são idênticos. Novas integrações podem ler `email.enrichment`. As duas
        chaves ficam ausentes quando nenhum dado de inteligência utilizável é
        retornado.


        **Faturamento.** As chamadas no ambiente de produção usam os preços da
        Email Risk API. A requisição é cobrada assim que a consulta começa,
        mesmo quando alguns campos de melhor esforço não estão disponíveis.


        **Sandbox.** As chaves de sandbox validam a requisição e retornam dados
        aprovados determinísticos, sem enviar e-mail, consumir créditos, criar
        uma sessão ou contribuir para o Networks.


        **Autenticação.** Envie a chave de API da sua aplicação em `x-api-key`.
        Credenciais ausentes ou inválidas retornam `403`: esta API nunca retorna
        `401`.


        **Limite de requisições.** Cota de escrita compartilhada de 300
        requisições por minuto por chave de API, somando todos os endpoints
        POST/PATCH/DELETE.


        **Presença em redes sociais.** Defina `enable_social` como `true` para
        adicionar um bloco `email_social`: as plataformas online em que este
        endereço está cadastrado, com contagens por categoria e os detalhes de
        perfil disponíveis. `profiles_registered: 0` significa que as
        plataformas foram verificadas e o endereço não foi encontrado em nenhuma
        delas, uma resposta válida e cobrada. O bloco fica ausente quando o
        complemento não foi solicitado ou a verificação não pôde ser concluída,
        e nesse caso não é cobrado. O faturamento adiciona uma unidade
        `email_social` por requisição, além do preço do próprio endpoint.
      operationId: post_v3email_risk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailRiskRequest'
            examples:
              Minimal:
                summary: Pontuar um endereço com os valores padrão
                value:
                  email: alice@example.com
              Full context:
                summary: Pontuar com sinais, indicação de país e IDs de correlação
                value:
                  email: alice@example.com
                  country_code: US
                  signals:
                    ip: 192.0.2.1
                    device_id: 8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2
                    device_platform: web
                    os_version: '14.4'
                    app_version: 1.2.34
                    user_agent: >-
                      Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
                      AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4
                      Safari/605.1.15
                  vendor_data: lead-123
                  metadata:
                    source: signup_prescreen
      responses:
        '200':
          description: >-
            A avaliação de risco foi concluída. Verifique `status` para ver a
            decisão; o HTTP é sempre `200` para consultas concluídas.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailRiskResponse'
              examples:
                Clean address:
                  summary: Endereço entregável sem exposição a vazamentos
                  value:
                    request_id: 82397be9-5921-4970-a979-2d5b43e08b33
                    status: Approved
                    email:
                      status: Approved
                      email: alice@example.com
                      is_breached: false
                      breaches: []
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      email_intelligence:
                        score: 4
                        deliverable: high
                        breach_risk_level: Low
                        breach_risk_index: 4
                        is_recent_breach: false
                        is_frequent_breached: false
                        is_disposable: false
                        is_free_domain: false
                        is_breached: false
                        no_of_breaches: 0
                        reason_codes: []
                      enrichment:
                        score: 4
                        deliverable: high
                        breach_risk_level: Low
                        breach_risk_index: 4
                        is_recent_breach: false
                        is_frequent_breached: false
                        is_disposable: false
                        is_free_domain: false
                        is_breached: false
                        no_of_breaches: 0
                        reason_codes: []
                    vendor_data: lead-123
                    metadata:
                      source: signup_prescreen
                    created_at: '2026-09-01T10:30:00.123456+00:00'
                Breached address:
                  summary: Endereço encontrado em vazamentos conhecidos
                  value:
                    request_id: d1e5c2a8-6f30-4c1a-8b2d-3e4f5a6b7c8d
                    status: In Review
                    email:
                      status: In Review
                      email: bob@example.org
                      is_breached: true
                      breaches:
                        - name: ExampleBreach2023
                          domain: example.org
                          breach_date: '2023-06-01'
                          breach_emails_count: 1200000
                          description: A data breach affecting example.org accounts.
                          logo_path: https://logos.example.org/example.png
                          data_classes:
                            - email_addresses
                            - passwords
                          is_verified: true
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      email_intelligence:
                        score: 58
                        deliverable: high
                        breach_risk_level: High
                        breach_risk_index: 72
                        is_recent_breach: true
                        is_frequent_breached: true
                        is_disposable: false
                        is_free_domain: true
                        is_breached: true
                        no_of_breaches: 4
                        reason_codes:
                          - code: IR-F784B630
                            direction: risk
                            message: Email's digital footprint diversity is Very Low
                            impact_level: low
                      enrichment:
                        score: 58
                        deliverable: high
                        breach_risk_level: High
                        breach_risk_index: 72
                        is_recent_breach: true
                        is_frequent_breached: true
                        is_disposable: false
                        is_free_domain: true
                        is_breached: true
                        no_of_breaches: 4
                        reason_codes:
                          - code: IR-F784B630
                            direction: risk
                            message: Email's digital footprint diversity is Very Low
                            impact_level: low
                    vendor_data: lead-125
                    metadata: null
                    created_at: '2026-09-01T10:30:00.123456+00:00'
        '400':
          $ref: '#/components/responses/EmailRiskValidationError'
        '403':
          $ref: '#/components/responses/RiskPermissionDenied'
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/email/risk/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "email": "alice@example.com",
                "country_code": "US",
                "vendor_data": "lead-123",
                "metadata": {"source": "signup_prescreen"}
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.email.assess_risk(
                email="alice@example.com",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.email.assessRisk({
              email: "alice@example.com",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Email.AssessRisk(ctx, didit.EmailRiskRequest{\n\tEmail: \"alice@example.com\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;
            import me.didit.types.EmailRiskRequest;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.email().assessRisk(EmailRiskRequest.builder()
                    .email("alice@example.com")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->email->assessRisk([
                'email' => 'alice@example.com',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.email.assess_risk(email: "alice@example.com")
            puts result.to_h
        - lang: csharp
          label: .NET
          source: |-
            using System;
            using System.Text.Json;
            using Didit;

            // Reads DIDIT_API_KEY.
            using var client = new DiditClient();

            var result = await client.Email.AssessRiskAsync(new EmailRiskRequest
            {
                Email = "alice@example.com",
            });
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    EmailRiskRequest:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
          description: Endereço de e-mail a ser pontuado.
          example: alice@example.com
        country_code:
          type: string
          maxLength: 3
          description: >-
            Indicação opcional de país em ISO 3166-1 alfa-2 ou alfa-3 para a
            cobertura de inteligência.
          example: US
        signals:
          $ref: '#/components/schemas/RiskSignals'
        vendor_data:
          type: string
          description: >-
            Sua referência estável para esta requisição. Armazenada na sessão da
            API e devolvida na resposta.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Seus metadados JSON não sensíveis. Armazenados na sessão da API e
            retornados na resposta.
        enable_social:
          type: boolean
          default: false
          description: >-
            Quando verdadeiro, também consulta a presença digital do endereço:
            as plataformas de e-mail, redes sociais, profissionais, e-commerce e
            entretenimento em que ele está cadastrado. Cobrado como uma unidade
            `email_social` por requisição, além do preço deste endpoint.
          example: true
    EmailRiskResponse:
      type: object
      required:
        - request_id
        - status
        - created_at
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            Id da sessão de API criada para esta requisição. Armazene-o com
            `vendor_data` se precisar correlacionar o resultado com webhooks
            posteriores ou com a atividade no console.
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Decisão final desta sessão de API. Normalmente `Approved`; a
            avaliação de risco pode resultar em `In Review` ou `Declined`.
        vendor_data:
          type: string
          nullable: true
          description: >-
            Eco do `vendor_data` que você enviou, `null` quando você não enviou
            nenhum.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Eco do `metadata` que você enviou, `null` quando você não enviou
            nenhum.
        created_at:
          type: string
          format: date-time
          description: Data e hora desta resposta.
        email:
          type: object
          description: >-
            Relatório de e-mail normalizado, o mesmo bloco usado nas respostas
            de Verificação de e-mail.
          required:
            - status
            - email
            - is_breached
            - breaches
            - is_disposable
            - is_undeliverable
          properties:
            status:
              type: string
              enum:
                - Approved
                - In Review
                - Declined
              description: >-
                Decisão para este endereço de e-mail. Espelha o `status` de
                nível superior.
            email:
              type: string
              description: O endereço pontuado.
              example: alice@example.com
            is_breached:
              type: boolean
              description: Se o endereço aparece em um vazamento de credenciais conhecido.
            breaches:
              type: array
              description: >-
                Até 5 vazamentos conhecidos mais recentes que contêm este
                endereço. Array vazio quando `is_breached` é `false`.
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Identificador do vazamento.
                  domain:
                    type: string
                    description: Domínio do serviço vazado.
                  breach_date:
                    type: string
                    format: date
                    description: Data em que a violação ocorreu.
                  breach_emails_count:
                    type: integer
                    description: Número total de contas expostas no vazamento.
                  description:
                    type: string
                    description: >-
                      Descrição legível do vazamento (pode conter marcação
                      HTML).
                  logo_path:
                    type: string
                    description: URL do logotipo do serviço vazado.
                  data_classes:
                    type: array
                    items:
                      type: string
                    description: >-
                      Categorias de dados expostos, em snake_case (por exemplo,
                      `email_addresses`, `passwords`).
                  is_verified:
                    type: boolean
                    description: Se o vazamento foi verificado como legítimo.
            is_disposable:
              type: boolean
              description: Se o domínio pertence a um provedor de e-mails descartáveis.
            is_undeliverable:
              type: boolean
              description: Se o endereço foi considerado não entregável.
            verification_attempts:
              type: integer
              description: Envios de OTP para este endereço. `0` para consultas de risco.
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Quando o endereço foi verificado pela última vez por um OTP.
                `null` para consultas de risco.
            warnings:
              type: array
              description: >-
                Avisos de risco registrados para esta requisição. Array vazio
                quando não há nenhum.
              items:
                $ref: '#/components/schemas/RiskWarning'
            lifecycle:
              type: array
              description: >-
                Trilha de auditoria cronológica da requisição. Array vazio para
                consultas de risco sem envios.
              items:
                $ref: '#/components/schemas/RiskLifecycleEvent'
            matches:
              type: array
              description: >-
                Outras sessões da sua aplicação em que o mesmo endereço de
                e-mail foi usado por um usuário diferente (`vendor_data`
                diferente). Até 5 entradas. Array vazio quando não há
                correspondências.
              items:
                $ref: '#/components/schemas/EmailMatchItem'
            email_intelligence:
              $ref: '#/components/schemas/EmailIntelligence'
            enrichment:
              $ref: '#/components/schemas/EmailIntelligence'
            email_social:
              $ref: '#/components/schemas/EmailSocialFootprint'
    RiskSignals:
      type: object
      description: >-
        Contexto opcional de dispositivo e rede observado pela sua aplicação.
        Todos os campos são opcionais. Enviá-los alimenta a detecção de
        correspondências entre sessões em Networks.
      properties:
        ip:
          type: string
          format: ip
          description: Endereço IPv4 ou IPv6 observado para o usuário final.
          example: 192.0.2.1
        device_id:
          type: string
          maxLength: 255
          description: >-
            Identificador estável do dispositivo coletado pela sua aplicação
            (`ANDROID_ID` no Android, `identifierForVendor` no iOS).
        device_platform:
          type: string
          enum:
            - android
            - ios
            - ipados
            - tvos
            - web
          description: Plataforma do dispositivo do usuário final.
        device_model:
          type: string
          maxLength: 255
          description: Modelo do dispositivo informado pela sua aplicação.
        os_version:
          type: string
          maxLength: 64
          description: Versão do sistema operacional.
        app_version:
          type: string
          maxLength: 64
          description: Versão da sua aplicação.
        user_agent:
          type: string
          maxLength: 512
          description: User agent do navegador ou do app.
    RiskWarning:
      type: object
      required:
        - feature
        - risk
        - log_type
        - short_description
        - long_description
      properties:
        feature:
          type: string
          description: Recurso que gerou o aviso.
        risk:
          type: string
          description: >-
            Código de risco legível por máquina. Novos valores podem ser
            adicionados com o tempo.
        additional_data:
          type: object
          nullable: true
          additionalProperties: true
          description: Contexto específico do risco, ou `null`.
        log_type:
          type: string
          enum:
            - error
            - warning
            - information
          description: Severidade usada pelas regras de decisão.
        short_description:
          type: string
          description: Resumo legível de uma linha.
        long_description:
          type: string
          description: Explicação legível.
    RiskLifecycleEvent:
      type: object
      required:
        - type
        - timestamp
        - details
        - fee
      properties:
        type:
          type: string
          description: >-
            Tipo de evento legível por máquina. Novos valores podem ser
            adicionados ao longo do tempo.
        timestamp:
          type: string
          format: date-time
          description: Quando o evento ocorreu.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: Payload específico do evento, ou `null`.
        fee:
          type: number
          description: Valor em USD cobrado por este evento.
    EmailMatchItem:
      type: object
      description: >-
        Outra sessão da sua aplicação que usou o mesmo endereço de e-mail com um
        `vendor_data` diferente.
      properties:
        session_id:
          type: string
          format: uuid
          description: ID da sessão da outra verificação que usou este endereço de e-mail.
        session_number:
          type: integer
          description: Número sequencial de fácil leitura dessa sessão.
        vendor_data:
          type: string
          nullable: true
          description: '`vendor_data` dessa sessão.'
        verification_date:
          type: string
          description: Quando essa sessão foi criada (`YYYY-MM-DDTHH:MM:SSZ`).
        email:
          type: string
          description: O endereço de e-mail correspondente.
        status:
          type: string
          description: >-
            Status dessa sessão (por exemplo, `Approved`, `Declined`, `In
            Progress`).
        is_blocklisted:
          type: boolean
          description: Se o endereço de e-mail está na lista de bloqueio da sua aplicação.
        api_service:
          type: string
          nullable: true
          description: >-
            Para sessões do tipo API, a API independente que a criou; `null`
            para sessões de verificação comuns.
        source:
          type: string
          description: >-
            Onde a correspondência foi encontrada. Normalmente `session`; uma
            ocorrência na lista de bloqueio por meio de uma entrada de lista da
            organização usa `list_entry`.
    EmailIntelligence:
      type: object
      description: >-
        Bloco normalizado de inteligência de e-mail. Presente apenas quando o
        complemento de inteligência foi executado para este e-mail; quando
        presente, também é exposto como o alias `enrichment`, com valores
        idênticos.
      properties:
        score:
          type: number
          nullable: true
          description: >-
            Pontuação de risco normalizada de 0 a 100. Quanto maior, mais
            arriscado.
        deliverable:
          type: string
          nullable: true
          description: Faixa de entregabilidade (por exemplo, `high`).
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium` ou `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: Índice numérico de risco de vazamento.
        is_recent_breach:
          type: boolean
          nullable: true
          description: '`true` quando o endereço aparece em um vazamento recente.'
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true` quando o endereço aparece em muitos vazamentos.'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` quando o domínio é um provedor descartável.'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true` quando o domínio é um provedor de e-mail gratuito.'
        is_breached:
          type: boolean
          nullable: true
          description: '`true` quando o endereço aparece em vazamentos conhecidos.'
        no_of_breaches:
          type: number
          nullable: true
          description: Número de vazamentos conhecidos que contêm o endereço.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Identificador estável da Didit para o sinal, por exemplo
                  `IR-5AC67A32`. Opaco: agrupe e filtre por ele, mas não o
                  interprete.
              value:
                nullable: true
                description: >-
                  Para um indicador de risco (por exemplo, `voip`, `leaked`,
                  `disposable`, `spam_trap`), o seu valor: um booleano, um nível
                  ou uma data. Nulo para um código de motivo com pontuação.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: Se o sinal aumentou o risco ou acrescentou confiança.
              message:
                type: string
                description: Explicação legível do sinal, em inglês.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Com que intensidade o sinal alterou a pontuação, por exemplo
                  `low`, `medium` ou `high`.
          description: >-
            Sinais que explicam a pontuação, cada um com um código estável da
            Didit, uma direção, uma mensagem e um nível de impacto. Novos
            códigos podem surgir com o tempo, portanto não rejeite códigos
            desconhecidos.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        Pegada social do endereço de e-mail: as plataformas online em que ele
        está cadastrado. Presente apenas quando `enable_social` foi definido e a
        verificação foi concluída. Qualquer contagem pode ser nula quando nenhum
        dado foi retornado para ela. `profiles_registered: 0` significa que as
        plataformas foram verificadas e o endereço de e-mail não foi encontrado
        em nenhuma delas: uma resposta válida, faturável e um sinal comum de
        identidade sintética.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: Plataformas em que o cadastro do endereço de e-mail foi confirmado.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Plataformas avaliadas quanto a cadastro.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Plataformas que retornaram um nome associado.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Plataformas que retornaram uma foto de perfil.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Plataformas de comunicação com presença detectada.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Categorias distintas de plataforma com presença detectada.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indicador composto de maturidade digital, de 0 a 10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indicador de riqueza do perfil, de 0 a 10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Combinação de plataformas gratuitas e pagas, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registros em plataformas gratuitas.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registros em plataformas totalmente pagas.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registros em plataformas freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            Completude do perfil do WhatsApp. Apenas para telefone; null para
            e-mail.
          example: Partial
        registered_platforms:
          type: array
          description: Plataformas em que o cadastro foi confirmado.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Plataformas verificadas com resultado negativo.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Contagem de registros e proporção por categoria de plataforma.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Detalhes do perfil por plataforma, indexados por plataforma, quando
            a plataforma os disponibiliza.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Identificador da plataforma.
          example: whatsapp
        category:
          type: string
          description: >-
            Categoria da plataforma, por exemplo MESSAGING, SOCIAL_MEDIA,
            ECOMMERCE, PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` para plataformas de alcance mundial, `local` para
            plataformas específicas de uma região.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: Plataformas desta categoria em que o cadastro foi confirmado.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Proporção das plataformas verificadas da categoria com cadastro, de
            0.0 a 1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Nome do perfil, quando a plataforma o disponibiliza.
        photo:
          type: string
          nullable: true
          description: URL da foto do perfil, quando a plataforma a disponibiliza.
        about:
          type: string
          nullable: true
          description: Texto "sobre"/bio do perfil, quando a plataforma o disponibiliza.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Visibilidade do perfil, quando a plataforma a disponibiliza.
        business_account:
          type: boolean
          nullable: true
          description: Se o perfil é uma conta comercial, quando a plataforma informa isso.
  responses:
    EmailRiskValidationError:
      description: A validação da requisição falhou.
      content:
        application/json:
          examples:
            Missing email:
              summary: E-mail ausente
              value:
                email:
                  - This field is required.
            Invalid email:
              summary: E-mail inválido
              value:
                email:
                  - Enter a valid email address.
            Invalid country hint:
              summary: Indicação de país inválida
              value:
                country_code:
                  - Ensure this field has no more than 3 characters.
    RiskPermissionDenied:
      description: >-
        A chave de API está ausente ou é inválida, ou a organização não consegue
        cobrir a consulta em tempo real. Esta API nunca retorna `401`.
      content:
        application/json:
          examples:
            Missing or invalid API key:
              summary: >-
                Nenhum cabeçalho `x-api-key`, ou a chave é inválida ou foi
                revogada
              value:
                detail: You do not have permission to perform this action.
            Not enough credits:
              summary: O saldo da organização não cobre o preço da consulta
              value:
                error: You don't have enough credits to perform this request.
    RateLimitedWrite:
      description: >-
        O limite compartilhado de escrita de 300 requisições por minuto por
        chave de API foi excedido. Respeite `Retry-After` antes de tentar
        novamente.
      content:
        application/json:
          schema:
            type: object
            required:
              - detail
            properties:
              detail:
                type: string
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Chave de API da sua aplicação, em Developers -> API keys no Business
        Console. A chave principal tem acesso total. Uma chave nomeada pode ter
        escopo restrito: nenhum acesso, leitura ou escrita por recurso, limitada
        a alguns fluxos ou a sessões aprovadas, a uma lista de endereços IP e a
        uma data de validade. 401 significa que a chave está errada, revogada ou
        expirada; 403 significa que nenhuma chave foi enviada, que a chave não
        tem acesso a este recurso ou ação, ou que a requisição veio de um
        endereço fora da sua lista de IPs; 404 em uma rota de sessão significa
        que a sessão está fora dos fluxos ou status da chave. Uma chave sem
        acesso a mídia recebe URLs de imagem, vídeo e PDF como null, e uma chave
        sem permissão de escrita em sessões recebe links e tokens de sessão como
        null. Consulte https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.