> ## 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 telefone: operadora e sinais de fraude

> A API da Didit avalia o risco de um número de telefone sem enviar OTP: operadora, tipo de linha, portabilidade, número descartável e fraude.

Use `POST /v3/phone/risk/` quando você precisar de inteligência telefônica antes de um fluxo de OTP, no lugar dele ou fora dele.

Esse endpoint não envia código ao usuário. Ele cria uma sessão de API, enriquece os dados do número, aplica suas regras de risco telefônico e retorna, em uma única resposta síncrona, o mesmo bloco de telefone normalizado usado pela Verificação de telefone.

Quando a requisição é salva, a Didit também pode usar o número de número de telefone avaliado como evidência agregada em **Networks**. Os grafos de rede podem mostrar inteligência telefônica de alto risco, portabilidade e contexto do tipo de linha em sinais telefônicos compartilhados, mas não revelam o número de telefone bruto a outras organizações.

## Interpretar a resposta

* `status` é a decisão final dessa sessão de API. Normalmente é `Approved`; a avaliação de risco pode resultar em `In Review` ou `Declined`.
* `phone.full_number` é o número normalizado no formato E.164. `phone.phone_number_prefix` e `phone.phone_number` o dividem em prefixo internacional e número nacional.
* `phone.is_disposable` e `phone.is_virtual` são os sinais estáveis de sim/não para a lógica da aplicação. A consulta à operadora acrescenta `carrier.name` e `carrier.type` (`mobile`, `voip` e similares).
* `phone.phone_intelligence.score` usa uma escala de risco de 0 a 100, em que um número maior indica risco maior. `phone_type_risk` (`Low`, `Medium`, `High`) e `phone_trust_index` (o inverso da pontuação) são representações derivadas.
* `phone.phone_intelligence` e `phone.enrichment` são aliases de compatibilidade com o mesmo objeto normalizado. Novas integrações podem ler `phone.enrichment`.
* `phone.matches` lista outras sessões da sua aplicação em que o mesmo número foi usado por outro usuário. Use esse campo 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]
>
> `phone.phone_intelligence` e `phone.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 número, país ou plano. Construa suas regras primeiro sobre os campos normalizados estáveis e trate a ausência de inteligência como "desconhecido", não como "seguro".

## Complemento de presença social

Defina `enable_social` como `true` para adicionar um bloco `phone_social` à resposta, dentro de `phone`: as plataformas online em que esse número de telefone está registrado, agrupadas por categoria, com as contagens resumidas e todos os detalhes de perfil que nossos parceiros de dados retornarem.

* `phone.phone_social.profiles_registered` e `phone.phone_social.profiles_checked` são os números principais: as plataformas em que o número de telefone tem registro confirmado, do total de plataformas avaliadas.
* `phone.phone_social.registered_platforms` e `phone.phone_social.not_registered_platforms` listam cada plataforma com sua `category` e seu `scope` (`global`, ou `local` para plataformas específicas de uma região).
* `phone.phone_social.categories` informa a contagem de registros e a proporção por categoria, e `phone.phone_social.profiles` traz 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 indicadores 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 número de telefone não foi encontrado em nenhuma delas, o que é um sinal comum de identidade sintética. Esse endpoint não age sobre isso por conta própria. Use `phone_no_social_presence_action` em um fluxo de verificação (workflow) para transformar esse resultado em um veredito Review ou Decline.

O bloco não aparece 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 aprovados predeterminados. Elas não enviam OTP, não consomem créditos, não criam sessão e não contribuem para Networks. Com `enable_social` definido, também retornam um bloco `phone_social` determinístico.

## Faturamento

As chamadas à Phone Risk API custam \$0.04 ao preço de tabela, menos do que a Verificação de telefone completa, porque nenhum OTP é enviado. Uma requisição no ambiente de produção é cobrada assim que a consulta começa, mesmo quando alguns campos fornecidos conforme disponibilidade não são retornados.

O complemento de presença social é cobrado separadamente: uma unidade `phone_social` por requisição, além do preço da Phone Risk API, sempre que a verificação é concluída. A verificação de créditos feita antes da consulta cobre os dois.


## OpenAPI

````yaml pt-br/openapi-25.json POST /v3/phone/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/phone/risk/:
    post:
      tags:
        - Standalone APIs
      summary: Calcular a pontuação de risco de um número de telefone
      description: >-
        Consulta um número de telefone e retorna sinais de operadora, tipo de
        linha, portabilidade, número descartável, 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 espelha `phone.status`.
        Normalmente ele é `Approved`; a avaliação de risco pode produzir `In
        Review` ou `Declined`.


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


        **Faturamento.** As chamadas no ambiente de produção usam os preços da
        Phone Risk API. A requisição é faturável 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 um OTP, 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 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 em todos os endpoints
        POST/PATCH/DELETE.


        **Presença em redes sociais.** Defina `enable_social` como `true` para
        adicionar um bloco `phone_social`: as plataformas online em que este
        número está registrado, com contagens por categoria e os detalhes de
        perfil disponíveis. `profiles_registered: 0` significa que as
        plataformas foram verificadas e o número não foi encontrado em nenhuma
        delas, o que é uma resposta válida e faturável. 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 ele não é faturado. O faturamento adiciona uma
        unidade `phone_social` por requisição, além do preço próprio deste
        endpoint.
      operationId: post_v3phone_risk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhoneRiskRequest'
            examples:
              Minimal:
                summary: Pontuar um número com os valores padrão
                value:
                  phone_number: '+14155552671'
              Full context:
                summary: Pontuar com sinais, indicação de país e IDs de correlação
                value:
                  phone_number: '+14155552671'
                  country_code: US
                  signals:
                    ip: 192.0.2.1
                    device_id: 8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2
                    device_platform: ios
                    device_model: iPhone17,2
                    os_version: 18.0.1
                    app_version: 1.2.34
                    user_agent: >-
                      Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X)
                      AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0
                      Mobile/15E148 Safari/604.1
                  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/PhoneRiskResponse'
              examples:
                Clean mobile number:
                  summary: Número de celular limpo com cobertura de inteligência
                  value:
                    request_id: 4fd09d2e-9bc9-4c4e-9c46-7f625ac0ab62
                    status: Approved
                    phone:
                      status: Approved
                      phone_number_prefix: '+1'
                      phone_number: '4155552671'
                      full_number: '+14155552671'
                      country_code: US
                      country_name: United States
                      carrier:
                        name: Example Mobile
                        type: mobile
                      is_disposable: false
                      is_virtual: false
                      verification_method: null
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      phone_intelligence:
                        score: 3
                        phone_type_risk: Low
                        phone_trust_index: 97
                        network_stability_index: 95
                        is_disposable: false
                        is_ported: false
                        is_recently_ported: false
                        carrier_type: mobile
                        reason_codes: []
                      enrichment:
                        score: 3
                        phone_type_risk: Low
                        phone_trust_index: 97
                        network_stability_index: 95
                        is_disposable: false
                        is_ported: false
                        is_recently_ported: false
                        carrier_type: mobile
                        reason_codes: []
                    vendor_data: lead-123
                    metadata:
                      source: signup_prescreen
                    created_at: '2026-09-01T10:30:00.123456+00:00'
                Number in review:
                  summary: Número descartável ou virtual sinalizado para revisão
                  value:
                    request_id: 8c22e1f0-4b3d-4a3a-9d1e-2f6b7c8d9e0f
                    status: In Review
                    phone:
                      status: In Review
                      phone_number_prefix: '+44'
                      phone_number: '7700900123'
                      full_number: '+447700900123'
                      country_code: GB
                      country_name: United Kingdom
                      carrier:
                        name: Example VoIP
                        type: voip
                      is_disposable: true
                      is_virtual: true
                      verification_method: null
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      phone_intelligence:
                        score: 72
                        phone_type_risk: High
                        phone_trust_index: 28
                        network_stability_index: 40
                        is_disposable: true
                        is_ported: true
                        is_recently_ported: true
                        carrier_type: voip
                        reason_codes:
                          - code: IR-5AC67A32
                            direction: risk
                            message: Phone type identified as non-mobile
                            impact_level: medium
                      enrichment:
                        score: 72
                        phone_type_risk: High
                        phone_trust_index: 28
                        network_stability_index: 40
                        is_disposable: true
                        is_ported: true
                        is_recently_ported: true
                        carrier_type: voip
                        reason_codes:
                          - code: IR-5AC67A32
                            direction: risk
                            message: Phone type identified as non-mobile
                            impact_level: medium
                    vendor_data: lead-124
                    metadata: null
                    created_at: '2026-09-01T10:30:00.123456+00:00'
        '400':
          $ref: '#/components/responses/PhoneRiskValidationError'
        '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/phone/risk/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "phone_number": "+14155552671",
                "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.phone.assess_risk(
                phone_number="+14155552671",
            )
            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.phone.assessRisk({
              phone_number: "+14155552671",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Phone.AssessRisk(ctx, didit.PhoneRiskRequest{\n\tPhoneNumber: \"+14155552671\",\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.PhoneRiskRequest;

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

            var result = client.phone().assessRisk(PhoneRiskRequest.builder()
                    .phoneNumber("+14155552671")
                    .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->phone->assessRisk([
                'phone_number' => '+14155552671',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.phone.assess_risk(phone_number: "+14155552671")
            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.Phone.AssessRiskAsync(new PhoneRiskRequest
            {
                PhoneNumber = "+14155552671",
            });
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    PhoneRiskRequest:
      type: object
      required:
        - phone_number
      properties:
        phone_number:
          type: string
          maxLength: 20
          description: >-
            Número de telefone a ser pontuado. Ele é validado e normalizado para
            E.164.
          example: '+14155552671'
        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 número: as
            plataformas de mensagens, redes sociais, e-commerce e profissionais
            em que ele está cadastrado. Cobrado como uma unidade `phone_social`
            por requisição, além do preço deste endpoint.
          example: true
    PhoneRiskResponse:
      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.
        phone:
          type: object
          description: >-
            Relatório de telefone normalizado, o mesmo bloco usado nas respostas
            de Verificação de telefone.
          required:
            - status
          properties:
            status:
              type: string
              enum:
                - Approved
                - In Review
                - Declined
              description: >-
                Decisão para este número de telefone. Espelha o `status` de
                nível superior.
            phone_number_prefix:
              type: string
              description: >-
                Código de discagem do país com `+` no início (por exemplo,
                `+1`).
              example: '+1'
            phone_number:
              type: string
              description: Número nacional sem o código de discagem do país.
              example: '4155552671'
            full_number:
              type: string
              description: Número completo no formato E.164.
              example: '+14155552671'
            country_code:
              type: string
              nullable: true
              description: País do número, no formato ISO 3166-1 alpha-2.
              example: US
            country_name:
              type: string
              description: Nome completo do país derivado de `country_code`.
              example: United States
            carrier:
              type: object
              nullable: true
              description: >-
                Rede que atende o número atualmente. `null` quando a consulta
                não conseguiu identificar uma operadora.
              properties:
                name:
                  type: string
                  description: >-
                    Nome da operadora. String vazia quando a consulta não
                    conseguiu identificá-la.
                type:
                  type: string
                  description: >-
                    Tipo de linha informado pela consulta: `mobile`,
                    `fixed_line`, `voip`, `isp`, `vpn`, `toll_free`,
                    `premium_rate` ou similar.
            is_disposable:
              type: boolean
              description: >-
                `true` quando o número pertence a um serviço de números
                temporários ou descartáveis.
            is_virtual:
              type: boolean
              description: >-
                `true` quando o tipo de linha é virtual (`voip`, `isp` ou
                `vpn`).
            verification_method:
              type: string
              nullable: true
              description: >-
                Canal de OTP da verificação subjacente. `null` para consultas de
                risco, que nunca enviam um código.
            verification_attempts:
              type: integer
              description: Envios de OTP para este número. `0` para consultas de risco.
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Quando o número foi verificado por OTP pela última vez. `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 eventos de envio.
              items:
                $ref: '#/components/schemas/RiskLifecycleEvent'
            matches:
              type: array
              description: >-
                Outras sessões da sua aplicação em que o mesmo número de
                telefone 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/PhoneMatchItem'
            phone_intelligence:
              $ref: '#/components/schemas/PhoneIntelligence'
            enrichment:
              $ref: '#/components/schemas/PhoneIntelligence'
            phone_social:
              $ref: '#/components/schemas/PhoneSocialFootprint'
    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.
    PhoneMatchItem:
      type: object
      description: >-
        Outra sessão da sua aplicação que usou o mesmo número de telefone com um
        `vendor_data` diferente.
      properties:
        session_id:
          type: string
          format: uuid
          description: ID da sessão da outra verificação que usou este número de telefone.
        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`).
        phone_number:
          type: string
          description: O número de telefone correspondente.
        status:
          type: string
          description: >-
            Status dessa sessão (por exemplo, `Approved`, `Declined`, `In
            Progress`).
        is_blocklisted:
          type: boolean
          description: Se o número de telefone 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`.
    PhoneIntelligence:
      type: object
      description: >-
        Bloco normalizado de inteligência de telefone. Presente apenas quando o
        complemento de inteligência foi executado para esta consulta; quando
        presente, também é exposto sob 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.
        phone_type_risk:
          type: string
          nullable: true
          description: '`Low`, `Medium` ou `High`, derivado da pontuação.'
        phone_trust_index:
          type: number
          nullable: true
          description: >-
            Inverso da pontuação, para painéis em que valores mais altos são
            melhores.
        network_stability_index:
          type: number
          nullable: true
          description: Estabilidade da rede da linha.
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` quando o número parece descartável ou virtual.'
        is_ported:
          type: boolean
          nullable: true
          description: '`true` quando o número mudou de operadora.'
        is_recently_ported:
          type: boolean
          nullable: true
          description: '`true` quando a portabilidade ocorreu recentemente.'
        carrier_type:
          type: string
          nullable: true
          description: >-
            Classificação da linha informada pela consulta (por exemplo,
            `mobile`).
        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.
    PhoneSocialFootprint:
      type: object
      nullable: true
      description: >-
        Pegada social do número de telefone: 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 número de telefone 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 número de telefone 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:
    PhoneRiskValidationError:
      description: A validação da requisição falhou.
      content:
        application/json:
          examples:
            Missing phone number:
              summary: Número de telefone ausente
              value:
                phone_number:
                  - This field is required.
            Invalid phone number:
              summary: Número de telefone inválido
              value:
                phone_number:
                  - Invalid phone number provided.
            Invalid signal IP:
              summary: IP de sinal inválido
              value:
                signals:
                  ip:
                    - Enter a valid IPv4 or IPv6 address.
    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.