> ## 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 sinais de fuga

> Pontuação de risco de e-mail da Didit sem enviar OTP: entregabilidade, domínios descartáveis, violações e fraude numa chamada servidor a servidor.

Use `POST /v3/email/risk/` quando precisar de informação sobre o e-mail sem pedir ao utilizador que introduza um código de utilização única.

Não envia nenhum e-mail. Cria uma sessão da API, enriquece o endereço, aplica as suas regras de risco de e-mail e devolve, numa única resposta síncrona, o mesmo bloco de e-mail normalizado usado pela Verificação de e-mail.

Quando o pedido é guardado, a Didit também pode usar o e-mail pontuado como evidência agregada em **Redes**. Os grafos de rede podem mostrar informações de risco sobre e-mails de alto risco, contexto de fugas de dados e cobertura de perfis sociais em sinais de e-mail partilhados, mas não revelam o endereço de e-mail em bruto a outras organizações.

## Interpretar a resposta

* `status` é a decisão final para esta sessão da 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 aplicação.
* `email.breaches` lista as fugas de dados mais recentes conhecidas que contêm o endereço, quando existe cobertura, com a data da fuga e as classes de dados expostas.
* `email.email_intelligence.score` usa uma escala de risco de 0 a 100, em que um número mais alto significa um risco mais elevado. `breach_risk_level` (`Low`, `Medium`, `High`) e `no_of_breaches` são vistas derivadas.
* `email.email_intelligence.reason_codes` explica que sinais normalizados contribuíram para o resultado. Os valores podem aumentar com o tempo, por isso não rejeite códigos desconhecidos.
* `email.email_intelligence` e `email.enrichment` são alias de compatibilidade com o mesmo objeto normalizado. As 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 utilizador diferente. Use-o para a deteção de contas duplicadas.
* `request_id` é o ID da sessão da API. Guarde-o com `vendor_data` se precisar de correlacionar o resultado com webhooks posteriores ou com a atividade da consola.

> [!WARNING]
>
> `email.email_intelligence` e `email.enrichment` são campos que podem não estar disponíveis. Uma pesquisa concluída pode omitir ambos quando não é devolvido nenhum dado de inteligência utilizável para esse endereço, domínio ou plano. Construa primeiro as regras com base em `is_breached`, `is_disposable` e `is_undeliverable`, e trate a inteligência em falta como "desconhecido", não como "seguro".

## Complemento de presença nas redes sociais

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

* `email.email_social.profiles_registered` e `email.email_social.profiles_checked` são os números principais: as plataformas em que o endereço de e-mail está confirmado como registado, em relação às plataformas avaliadas.
* `email.email_social.registered_platforms` e `email.email_social.not_registered_platforms` listam cada plataforma com a sua `category` e o seu `scope` (`global`, ou `local` para plataformas específicas de uma região).
* `email.email_social.categories` indica a contagem e a proporção de plataformas registadas por categoria, e `email.email_social.profiles` contém os detalhes de perfil por plataforma, quando uma plataforma os disponibiliza (nome, URL da fotografia, texto de apresentação, estado de privacidade e indicação de conta empresarial).
* Os índices de resumo (`digital_footprint_diversity`, `digital_sophistication_index`, `engagement_depth_index`, `subscription_affordability_index`) são índices compostos numa escala de 0 a 10. Qualquer contagem pode ser `null` quando a verificação não devolveu 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 por si só com base nisso; use `email_no_social_presence_action` num fluxo de trabalho para o transformar num veredito de análise ou recusa.

O bloco não aparece quando `enable_social` não está definido, nem quando a verificação de redes sociais não pôde ser concluída, caso em que a verificação não é faturada.

## Comportamento no sandbox

As chaves de sandbox validam o pedido e devolvem dados determinísticos com estado aprovado. Não enviam nenhum e-mail, não consomem créditos, não criam uma sessão e não contribuem para as Redes. Com `enable_social` definido, devolvem também um bloco `email_social` determinístico.

## Faturação

As chamadas à Email Risk API custam \$0.04 ao preço de tabela, menos do que a Verificação de e-mail completa, porque não é enviado nenhum e-mail. Um pedido em produção é faturável assim que a pesquisa é iniciada, mesmo quando alguns campos podem não estar disponíveis.

O complemento de presença nas redes sociais é faturado à parte: uma unidade `email_social` por pedido, além do preço da Email Risk API, sempre que a verificação é concluída. A verificação de créditos feita antes da pesquisa abrange ambos.


## OpenAPI

````yaml pt/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: >-
        Devolve sinais de entregabilidade, endereço descartável, violações de
        dados, correspondência entre sessões e informações normalizadas de
        inteligência de risco sem enviar um OTP. O endpoint cria uma sessão de
        API e devolve o seu id como `request_id`.


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


        **Aliases de compatibilidade.** As respostas em produção expõem o objeto
        de inteligência normalizado tanto como `email.email_intelligence` como
        `email.enrichment`. Os valores são idênticos. Novas integrações podem
        ler `email.enrichment`. Ambas as chaves estão ausentes quando não foram
        devolvidos dados úteis de inteligência.


        **Faturação.** As chamadas em produção utilizam os preços da Email Risk
        API. O pedido é faturável assim que a consulta tem início, mesmo quando
        alguns campos, obtidos tanto quanto possível, não estão disponíveis.


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


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


        **Limite de pedidos.** Orçamento de escrita partilhado de 300 pedidos
        por minuto por chave de API em todos os endpoints POST/PATCH/DELETE (a
        criação de transações e a ingestão de eventos têm um orçamento separado
        de 600).


        **Presença social.** Defina `enable_social` como `true` para adicionar
        um bloco `email_social`: as plataformas online onde este endereço está
        registado, com contagens por categoria e quaisquer 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 faturável. O bloco está ausente quando o add-on não
        foi solicitado ou a verificação não pôde ser concluída, não sendo
        faturado nesse caso. A faturação adiciona uma unidade `email_social` por
        pedido ao preço próprio deste endpoint.
      operationId: post_v3email_risk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailRiskRequest'
            examples:
              Minimal:
                summary: Calcular a pontuação de uma morada com valores predefinidos
                value:
                  email: alice@example.com
              Full context:
                summary: Pontuação com sinais, sugestã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. Inspecione `status` para
            verificar a decisão; o código HTTP é sempre `200` para pesquisas
            concluídas.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailRiskResponse'
              examples:
                Clean address:
                  summary: >-
                    Endereço com capacidade de entrega sem exposição a violações
                    de segurança
                  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 violações conhecidas
                  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 avaliar.
          example: alice@example.com
        country_code:
          type: string
          maxLength: 3
          description: >-
            Sugestão opcional de país ISO 3166-1 alpha-2 ou alpha-3 para
            cobertura de inteligência.
          example: US
        signals:
          $ref: '#/components/schemas/RiskSignals'
        vendor_data:
          type: string
          description: >-
            A sua referência estável para este pedido. Armazenada na sessão da
            API e refletida na resposta.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Os seus metadados JSON não sensíveis. Armazenados na sessão da API e
            devolvidos na resposta.
        enable_social:
          type: boolean
          default: false
          description: >-
            Quando for true, consulta também a pegada social do endereço: as
            plataformas de e-mail, redes sociais, profissionais, de comércio
            eletrónico e de entretenimento nas quais está registado. Faturado
            como uma unidade `email_social` por pedido, além do preço do próprio
            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 este pedido. Guarde-o com
            `vendor_data` se precisar de correlacionar o resultado com webhooks
            posteriores ou atividade na consola.
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Decisão final para esta sessão de API. Normalmente `Approved`; a
            avaliação de risco pode produzir `In Review` ou `Declined`.
        vendor_data:
          type: string
          nullable: true
          description: Eco do `vendor_data` que enviou, `null` se não tiver enviado nenhum.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Eco do objeto `metadata` que enviou, `null` se não tiver enviado
            nenhum.
        created_at:
          type: string
          format: date-time
          description: Carimbo de data/hora desta resposta.
        email:
          type: object
          description: >-
            Relatório de e-mail normalizado, o mesmo bloco utilizado pelas
            respostas da 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. Reflete o `status` de
                nível superior.
            email:
              type: string
              description: O endereço avaliado.
              example: alice@example.com
            is_breached:
              type: boolean
              description: >-
                Indica se o endereço surge numa violação de credenciais
                conhecida.
            breaches:
              type: array
              description: >-
                Até 5 violações conhecidas mais recentes que contêm este
                endereço. Array vazio quando `is_breached` for `false`.
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Identificador da violação.
                  domain:
                    type: string
                    description: Domínio do serviço afetado pela violação.
                  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 na violação de dados.
                  description:
                    type: string
                    description: Descrição legível da violação (pode conter marcação HTML).
                  logo_path:
                    type: string
                    description: URL do logótipo do serviço comprometido.
                  data_classes:
                    type: array
                    items:
                      type: string
                    description: >-
                      Categorias de dados expostos, em snake_case (por ex.,
                      `email_addresses`, `passwords`).
                  is_verified:
                    type: boolean
                    description: Indica se a violação foi verificada como legítima.
            is_disposable:
              type: boolean
              description: >-
                Indica se o domínio pertence a um fornecedor de endereços
                descartáveis.
            is_undeliverable:
              type: boolean
              description: Indica se o endereço foi considerado não entregável.
            verification_attempts:
              type: integer
              description: Envios de OTP para este endereço. `0` para pesquisas 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 registados para este pedido. Array vazio quando
                não existirem.
              items:
                $ref: '#/components/schemas/RiskWarning'
            lifecycle:
              type: array
              description: >-
                Registo de auditoria cronológico do pedido. Array vazio para
                consultas de risco sem envios.
              items:
                $ref: '#/components/schemas/RiskLifecycleEvent'
            matches:
              type: array
              description: >-
                Outras sessões da sua aplicação onde o mesmo endereço de e-mail
                foi utilizado por um utilizador diferente (`vendor_data`
                diferente). Até 5 entradas. Array vazio quando não existirem
                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. Passá-los alimenta a deteção de
        correspondências entre sessões em Redes.
      properties:
        ip:
          type: string
          format: ip
          description: Endereço IPv4 ou IPv6 observado para o utilizador final.
          example: 192.0.2.1
        device_id:
          type: string
          maxLength: 255
          description: >-
            Identificador de dispositivo estável recolhido pela sua aplicação
            (Android `ANDROID_ID`, iOS `identifierForVendor`).
        device_platform:
          type: string
          enum:
            - android
            - ios
            - ipados
            - tvos
            - web
          description: Plataforma do dispositivo do utilizador final.
        device_model:
          type: string
          maxLength: 255
          description: Modelo do dispositivo comunicado pela sua aplicação.
        os_version:
          type: string
          maxLength: 64
          description: Versão do sistema operativo.
        app_version:
          type: string
          maxLength: 64
          description: Versão da sua aplicação.
        user_agent:
          type: string
          maxLength: 512
          description: Agente do utilizador do navegador ou da aplicação.
    RiskWarning:
      type: object
      required:
        - feature
        - risk
        - log_type
        - short_description
        - long_description
      properties:
        feature:
          type: string
          description: Funcionalidade que gerou o aviso.
        risk:
          type: string
          description: >-
            Código de risco legível por máquina. Podem ser adicionados novos
            valores ao longo do 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: Gravidade utilizada pelas regras de decisão.
        short_description:
          type: string
          description: Resumo de uma linha legível por humanos.
        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. Podem ser adicionados novos
            valores ao longo do tempo.
        timestamp:
          type: string
          format: date-time
          description: Quando o evento aconteceu.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: Payload específico do evento, ou `null`.
        fee:
          type: number
          description: Montante em USD faturado por este evento.
    EmailMatchItem:
      type: object
      description: >-
        Outra sessão da sua aplicação que utilizou o mesmo endereço de e-mail
        com um `vendor_data` diferente.
      properties:
        session_id:
          type: string
          format: uuid
          description: >-
            ID de sessão da outra verificação que utilizou este endereço de
            e-mail.
        session_number:
          type: integer
          description: Número sequencial legível da 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 correspondido.
        status:
          type: string
          description: >-
            Estado dessa sessão (por exemplo, `Approved`, `Declined`, `In
            Progress`).
        is_blocklisted:
          type: boolean
          description: >-
            Indica 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 autónoma que a criou; `null` para
            sessões de verificação normais.
        source:
          type: string
          description: >-
            Onde a correspondência foi encontrada. Habitualmente `session`; uma
            ocorrência na lista de bloqueio através de uma entrada de lista da
            organização utiliza `list_entry`.
    EmailIntelligence:
      type: object
      description: >-
        Bloco de inteligência de e-mail normalizado. Presente apenas quando o
        suplemento 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-100. Mais alto é mais arriscado.
        deliverable:
          type: string
          nullable: true
          description: Faixa de capacidade de entrega (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 violação.
        is_recent_breach:
          type: boolean
          nullable: true
          description: '`true` quando o endereço surge numa violação recente.'
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true` quando o endereço surge em muitas violações.'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` quando o domínio é de um fornecedor descartável.'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true` quando o domínio é de um fornecedor de e-mail gratuito.'
        is_breached:
          type: boolean
          nullable: true
          description: '`true` quando o endereço surge em violações conhecidas.'
        no_of_breaches:
          type: number
          nullable: true
          description: Número de violações de dados conhecidas que contêm o endereço.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Identificador Didit estável do sinal, por exemplo
                  `IR-5AC67A32`. Opaco: agrupe e filtre por ele, não tente
                  analisá-lo.
              value:
                nullable: true
                description: >-
                  Para um sinalizador de risco (por exemplo, `voip`, `leaked`,
                  `disposable`, `spam_trap`), o respetivo 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 adicionou 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 influenciou a pontuação, por
                  exemplo `low`, `medium` ou `high`.
          description: >-
            Sinais que explicam a pontuação, cada um com um código Didit
            estável, uma direção, uma mensagem e um nível de impacto. Podem
            surgir novos códigos ao longo do tempo, pelo que não deve rejeitar
            códigos desconhecidos.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        Presença social do endereço de e-mail: as plataformas online em que está
        registado. Presente apenas quando `enable_social` foi definido e a
        verificação foi concluída. Cada contagem pode ser nula quando não foram
        devolvidos dados 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 onde o endereço de e-mail está confirmado como
            registado.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Plataformas avaliadas quanto ao registo.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Plataformas que devolveram um nome associado.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Plataformas que devolveram uma fotografia de perfil.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Plataformas de comunicação com presença detetada.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Categorias de plataforma distintas com presença detetada.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indicador composto de maturidade digital, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indicador do nível de detalhe do perfil, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Distribuição da plataforma gratuita vs paga, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas gratuitas.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas totalmente pagas.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            Grau de preenchimento do perfil do WhatsApp. Apenas para telefone;
            nulo para e-mail.
          example: Partial
        registered_platforms:
          type: array
          description: Plataformas onde o registo está 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 e proporção de registos por categoria de plataforma.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Detalhes de 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 mundiais, `local` para plataformas
            específicas de uma região.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: Plataformas nesta categoria onde o registo está confirmado.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Percentagem de plataformas verificadas da categoria com registo,
            0.0-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 fotografia de perfil, quando a plataforma o disponibiliza.
        about:
          type: string
          nullable: true
          description: >-
            Texto de biografia/apresentação 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 empresarial, quando a plataforma o
            disponibiliza.
  responses:
    EmailRiskValidationError:
      description: A validação do pedido falhou.
      content:
        application/json:
          examples:
            Missing email:
              summary: E-mail em falta
              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á em falta ou é inválida, ou a organização não pode
        cobrir a consulta em tempo real. Esta API nunca devolve `401`.
      content:
        application/json:
          examples:
            Missing or invalid API key:
              summary: Sem 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 de escrita partilhado de 300 pedidos por minuto por chave de
        API foi excedido. Respeite o `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: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, 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á
        incorreta, 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 o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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