> ## 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.

# Email Risk API: проверка доставляемости и утечек

> Оцените риск email без отправки OTP. Доставляемость, одноразовые домены, утечки и признаки мошенничества в одном серверном вызове Didit.

Используйте `POST /v3/email/risk/`, когда нужна информация о email, не запрашивая у пользователя ввод одноразового кода.

Запрос не отправляет письмо. Он создает API-сессию, обогащает адрес, применяет ваши правила оценки риска и возвращает в одном синхронном ответе тот же нормализованный блок email, что и Проверка электронной почты.

Когда запрос сохранен, Didit также может использовать оценку email как агрегированное доказательство в разделе **Сети**. Графы сетей могут показывать данные о высоком риске email, контекст утечек и покрытие социальных профилей по общим email-сигналам, но они не раскрывают другим организациям исходный адрес email.

## Интерпретация ответа

* `status` является окончательным решением для этой API-сессии. Обычно это `Approved`, а оценка риска может дать `In Review` или `Declined`.
* `email.is_breached`, `email.is_disposable` и `email.is_undeliverable` являются стабильными признаками «да/нет» для логики приложения.
* `email.breaches` перечисляет самые последние известные утечки, в которых присутствует адрес, если покрытие доступно, с датой утечки и раскрытыми классами данных.
* `email.email_intelligence.score` использует шкалу риска от 0 до 100, где большее число означает более высокий риск. `breach_risk_level` (`Low`, `Medium`, `High`) и `no_of_breaches` являются производными значениями.
* `email.email_intelligence.reason_codes` объясняет, какие нормализованные сигналы повлияли на результат. Значения со временем могут добавляться, поэтому не отклоняйте неизвестные коды.
* `email.email_intelligence` и `email.enrichment` являются псевдонимами для совместимости с тем же нормализованным объектом. Новые интеграции могут читать `email.enrichment`.
* `email.matches` перечисляет другие сессии вашего приложения, в которых тот же адрес использовал другой пользователь. Используйте это поле для обнаружения дублирующихся аккаунтов.
* `request_id` это id API-сессии. Сохраните его вместе с `vendor_data`, если нужно сопоставить результат с последующими webhook-событиями или активностью в консоли.

> [!WARNING]
>
> `email.email_intelligence` и `email.enrichment` являются полями «по возможности». Успешно завершенный поиск может не содержать ни одного из них, если для этого адреса, домена или тарифа не вернулись пригодные данные. Сначала стройте правила на основе `is_breached`, `is_disposable` и `is_undeliverable`, а отсутствие данных аналитики трактуйте как «неизвестно», а не как «безопасно».

## Дополнение для анализа социального следа

Установите `enable_social` в `true`, чтобы добавить в ответ блок `email_social` внутри `email`. Он содержит онлайн-платформы, на которых зарегистрирован этот адрес, сгруппированные по категориям, со сводными счетчиками и данными профилей, которые предоставляют наши партнеры по данным.

* `email.email_social.profiles_registered` и `email.email_social.profiles_checked` являются ключевыми показателями: платформы, где регистрация адреса подтверждена, из числа проверенных платформ.
* `email.email_social.registered_platforms` и `email.email_social.not_registered_platforms` перечисляют каждую платформу с ее `category` и `scope` (`global` или `local` для платформ, работающих в конкретном регионе).
* `email.email_social.categories` показывает количество зарегистрированных и долю по каждой категории, а `email.email_social.profiles` содержит данные профиля по каждой платформе, если платформа их раскрывает: имя, URL фото, текст «о себе», статус конфиденциальности и флаг бизнес-аккаунта.
* Сводные индексы (`digital_footprint_diversity`, `digital_sophistication_index`, `engagement_depth_index`, `subscription_affordability_index`) являются составными показателями от 0 до 10. Любой счетчик может быть `null`, если проверка не вернула для него данных.

`profiles_registered: 0` является реальным ответом, а не сбоем: платформы были проверены, и адрес не найден ни на одной из них. Это частый признак синтетической личности. Сам эндпоинт на это не реагирует. Чтобы превратить такой результат в решение «На проверке» или «Отклонена», используйте `email_no_social_presence_action` в сценарии.

Блок отсутствует, если `enable_social` не установлен, а также когда проверку социальных сетей не удалось завершить. В этом случае она не тарифицируется.

## Поведение в песочнице

Ключи песочницы проверяют запрос и возвращают детерминированные данные с результатом одобрения. Они не отправляют письмо, не расходуют кредиты, не создают сессию и не участвуют в Сетях. Если задан `enable_social`, они также возвращают детерминированный блок `email_social`.

## Биллинг

Вызовы Email Risk API стоят \$0.04 по прайс-листовой цене, что дешевле полной Проверки электронной почты, поскольку письмо не отправляется. Запрос в рабочей среде тарифицируется, как только начинается поиск, даже если некоторые поля «по возможности» недоступны.

Дополнение для анализа социального следа тарифицируется отдельно: одна единица `email_social` за запрос сверх цены Email Risk API, когда проверка завершена. Проверка баланса кредитов перед поиском покрывает оба списания.


## OpenAPI

````yaml ru/openapi-25.json POST /v3/email/risk/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: >-
    API верификации личности. Аутентификация выполняется с помощью заголовка
    x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/email/risk/:
    post:
      tags:
        - Standalone APIs
      summary: Рассчитать оценку риска для адреса электронной почты
      description: >-
        Возвращает сигналы доставки, использования одноразовых адресов, утечек,
        совпадений между сессиями и нормализованные аналитические данные о
        рисках без отправки OTP. Endpoint создаёт API-сессию и возвращает её
        идентификатор как `request_id`.


        **Решение.** Поле верхнего уровня `status` дублирует `email.status`.
        Обычно оно имеет значение `Approved`; оценка риска может дать `In
        Review` или `Declined`.


        **Псевдонимы для совместимости.** Ответы в продакшн-среде предоставляют
        нормализованный аналитический объект как в `email.email_intelligence`,
        так и в `email.enrichment`. Значения идентичны. Новые интеграции могут
        использовать `email.enrichment`. Оба ключа отсутствуют, если пригодные
        аналитические данные не были получены.


        **Биллинг.** Запросы в продакшн-среде тарифицируются по ценам Email Risk
        API. Запрос подлежит оплате с момента начала поиска, даже если некоторые
        поля, предоставляемые по возможности, недоступны.


        **Песочница.** Ключи песочницы валидируют запрос и возвращают
        детерминированные одобренные данные без отправки электронного письма,
        списания кредитов, создания сессии или передачи данных в Networks.


        **Аутентификация.** Передавайте API-ключ вашего приложения в заголовке
        `x-api-key`. При отсутствии или недействительности учетных данных
        возвращается `403` - этот API никогда не возвращает `401`.


        **Лимит запросов.** Общий лимит на запись составляет 300 запросов в
        минуту на API-ключ для всех endpoints POST/PATCH/DELETE (для создания
        транзакций и приёма событий действует отдельный лимит в 600).


        **Цифровой след в соцсетях.** Установите `enable_social` в значение
        `true`, чтобы добавить блок `email_social`: онлайн-платформы, на которых
        зарегистрирован этот адрес, с подсчётом по категориям и всеми доступными
        данными профиля. `profiles_registered: 0` означает, что платформы были
        проверены и адрес ни на одной из них не найден - это корректный,
        оплачиваемый ответ. Блок отсутствует, если опция не была запрошена или
        проверку не удалось завершить; в этом случае плата за него не взимается.
        При биллинге добавляется одна единица `email_social` за запрос поверх
        собственной цены этого endpoint.
      operationId: post_v3email_risk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailRiskRequest'
            examples:
              Minimal:
                summary: Оценить адрес со значениями по умолчанию
                value:
                  email: alice@example.com
              Full context:
                summary: >-
                  Оценить с сигналами, подсказкой о стране и идентификаторами
                  корреляции
                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: >-
            Оценка риска завершена. Проверьте `status` для получения решения;
            для завершённых запросов HTTP-код всегда `200`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailRiskResponse'
              examples:
                Clean address:
                  summary: Доставляемый адрес без обнаруженных утечек данных
                  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: Адрес обнаружен в известных утечках данных
                  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: Адрес электронной почты для скоринга.
          example: alice@example.com
        country_code:
          type: string
          maxLength: 3
          description: >-
            Необязательная подсказка страны ISO 3166-1 alpha-2 или alpha-3 для
            аналитического покрытия.
          example: US
        signals:
          $ref: '#/components/schemas/RiskSignals'
        vendor_data:
          type: string
          description: >-
            Ваш постоянный идентификатор для этого запроса. Сохраняется в
            API-сессии и возвращается в ответе.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Ваши неконфиденциальные метаданные JSON. Сохраняются в сессии API и
            возвращаются в ответе.
        enable_social:
          type: boolean
          default: false
          description: >-
            Если true, также запрашивает цифровой след адреса: платформы
            электронной почты, социальные, профессиональные сети, площадки
            электронной коммерции и развлекательные сервисы, где он
            зарегистрирован. Тарифицируется как одна единица `email_social` за
            запрос дополнительно к цене самого endpoint.
          example: true
    EmailRiskResponse:
      type: object
      required:
        - request_id
        - status
        - created_at
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            Идентификатор API-сессии, созданной для этого запроса. Сохраняйте
            его вместе с `vendor_data`, если нужно сопоставлять результат с
            последующими событиями webhook или действиями в консоли.
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Окончательное решение для этой сессии API. Обычно `Approved`; оценка
            риска может дать `In Review` или `Declined`.
        vendor_data:
          type: string
          nullable: true
          description: >-
            Эхо-значение переданного вами `vendor_data`, либо `null`, если вы
            его не передавали.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Эхо-значение переданного вами `metadata`, либо `null`, если вы его
            не передавали.
        created_at:
          type: string
          format: date-time
          description: Временная метка этого ответа.
        email:
          type: object
          description: >-
            Нормализованный отчёт по электронной почте, аналогичный блоку,
            используемому в ответах Проверки электронной почты.
          required:
            - status
            - email
            - is_breached
            - breaches
            - is_disposable
            - is_undeliverable
          properties:
            status:
              type: string
              enum:
                - Approved
                - In Review
                - Declined
              description: >-
                Решение для этого адреса электронной почты. Дублирует
                верхнеуровневый `status`.
            email:
              type: string
              description: Оценённый адрес.
              example: alice@example.com
            is_breached:
              type: boolean
              description: Фигурирует ли адрес в известной утечке учетных данных.
            breaches:
              type: array
              description: >-
                До 5 последних известных утечек, содержащих этот адрес. Пустой
                массив, если `is_breached` имеет значение `false`.
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Идентификатор утечки.
                  domain:
                    type: string
                    description: Домен скомпрометированного сервиса.
                  breach_date:
                    type: string
                    format: date
                    description: Дата, когда произошло нарушение.
                  breach_emails_count:
                    type: integer
                    description: >-
                      Общее количество аккаунтов, данные которых оказались в
                      утечке.
                  description:
                    type: string
                    description: Понятное описание утечки (может содержать HTML-разметку).
                  logo_path:
                    type: string
                    description: URL логотипа скомпрометированного сервиса.
                  data_classes:
                    type: array
                    items:
                      type: string
                    description: >-
                      Категории раскрытых данных в формате snake_case (например,
                      `email_addresses`, `passwords`).
                  is_verified:
                    type: boolean
                    description: Была ли утечка подтверждена как подлинная.
            is_disposable:
              type: boolean
              description: Принадлежит ли домен провайдеру одноразовой почты.
            is_undeliverable:
              type: boolean
              description: Был ли адрес признан недоставляемым.
            verification_attempts:
              type: integer
              description: >-
                Количество отправок одноразового кода для этого адреса. `0` для
                проверок риска.
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Когда адрес в последний раз верифицировался с помощью OTP.
                `null` для проверок риска.
            warnings:
              type: array
              description: >-
                Предупреждения о рисках, зафиксированные для этого запроса.
                Пустой массив, если предупреждений нет.
              items:
                $ref: '#/components/schemas/RiskWarning'
            lifecycle:
              type: array
              description: >-
                Хронологический журнал аудита запроса. Пустой массив для
                проверок риска без отправок.
              items:
                $ref: '#/components/schemas/RiskLifecycleEvent'
            matches:
              type: array
              description: >-
                Другие сессии вашего приложения, где тот же адрес электронной
                почты использовался другим пользователем (другой `vendor_data`).
                До 5 записей. Пустой массив при отсутствии совпадений.
              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: >-
        Необязательный контекст устройства и сети, зафиксированный вашим
        приложением. Все поля необязательны. Их передача обеспечивает
        обнаружение межсессионных совпадений в Networks.
      properties:
        ip:
          type: string
          format: ip
          description: Адрес IPv4 или IPv6, зафиксированный для конечного пользователя.
          example: 192.0.2.1
        device_id:
          type: string
          maxLength: 255
          description: >-
            Постоянный идентификатор устройства, собранный вашим приложением
            (Android `ANDROID_ID`, iOS `identifierForVendor`).
        device_platform:
          type: string
          enum:
            - android
            - ios
            - ipados
            - tvos
            - web
          description: Платформа устройства конечного пользователя.
        device_model:
          type: string
          maxLength: 255
          description: Модель устройства, переданная вашим приложением.
        os_version:
          type: string
          maxLength: 64
          description: Версия операционной системы.
        app_version:
          type: string
          maxLength: 64
          description: Версия вашего приложения.
        user_agent:
          type: string
          maxLength: 512
          description: Идентификатор браузера или приложения.
    RiskWarning:
      type: object
      required:
        - feature
        - risk
        - log_type
        - short_description
        - long_description
      properties:
        feature:
          type: string
          description: Функция, вызвавшая предупреждение.
        risk:
          type: string
          description: >-
            Машиночитаемый код риска. Со временем могут добавляться новые
            значения.
        additional_data:
          type: object
          nullable: true
          additionalProperties: true
          description: Контекст конкретного риска или `null`.
        log_type:
          type: string
          enum:
            - error
            - warning
            - information
          description: Уровень серьёзности, используемый правилами принятия решений.
        short_description:
          type: string
          description: Краткая сводка в одну строку в понятном человеку формате.
        long_description:
          type: string
          description: Понятное объяснение.
    RiskLifecycleEvent:
      type: object
      required:
        - type
        - timestamp
        - details
        - fee
      properties:
        type:
          type: string
          description: >-
            Машиночитаемый тип события. Со временем могут добавляться новые
            значения.
        timestamp:
          type: string
          format: date-time
          description: Когда событие произошло.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: payload, специфичный для события, или `null`.
        fee:
          type: number
          description: Сумма в USD, списанная за это событие.
    EmailMatchItem:
      type: object
      description: >-
        Другая сессия вашего приложения, в которой использовался тот же адрес
        электронной почты с другим `vendor_data`.
      properties:
        session_id:
          type: string
          format: uuid
          description: >-
            ID сессии другой верификации, в которой использовался этот адрес
            электронной почты.
        session_number:
          type: integer
          description: Понятный порядковый номер этой сессии.
        vendor_data:
          type: string
          nullable: true
          description: '`vendor_data` этой сессии.'
        verification_date:
          type: string
          description: Когда была создана эта сессия (`YYYY-MM-DDTHH:MM:SSZ`).
        email:
          type: string
          description: Совпавший адрес электронной почты.
        status:
          type: string
          description: >-
            Статус этой сессии (например, `Approved`, `Declined`, `In
            Progress`).
        is_blocklisted:
          type: boolean
          description: >-
            Находится ли адрес электронной почты в списке блокировки вашего
            приложения.
        api_service:
          type: string
          nullable: true
          description: >-
            Для сессий типа API это отдельный API, создавший её; `null` для
            обычных сессий верификации.
        source:
          type: string
          description: >-
            Где было найдено совпадение. Обычно `session`; при попадании в
            список блокировки через запись в списке организации используется
            `list_entry`.
    EmailIntelligence:
      type: object
      description: >-
        Нормализованный блок аналитики электронной почты. Присутствует только в
        том случае, если для этого адреса электронной почты запускалось
        дополнение для аналитики; если он присутствует, то также доступен через
        псевдоним `enrichment` с идентичными значениями.
      properties:
        score:
          type: number
          nullable: true
          description: Нормализованная оценка риска от 0 до 100. Чем выше, тем выше риск.
        deliverable:
          type: string
          nullable: true
          description: Диапазон доставляемости (например, `high`).
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium` или `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: Числовой индекс риска утечки данных.
        is_recent_breach:
          type: boolean
          nullable: true
          description: '`true`, когда адрес фигурирует в недавней утечке данных.'
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true`, когда адрес фигурирует во множестве утечек данных.'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true`, если домен принадлежит сервису одноразовой почты.'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true`, если домен принадлежит бесплатному почтовому сервису.'
        is_breached:
          type: boolean
          nullable: true
          description: '`true`, когда адрес фигурирует в известных утечках данных.'
        no_of_breaches:
          type: number
          nullable: true
          description: Количество известных утечек, содержащих этот адрес.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Постоянный идентификатор сигнала Didit, например
                  `IR-5AC67A32`. Непрозрачный: группируйте и фильтруйте по нему,
                  не парсите его.
              value:
                nullable: true
                description: >-
                  Для флага риска (например, `voip`, `leaked`, `disposable`,
                  `spam_trap`), его значение: логическое значение, уровень или
                  дата. Null для скорингового кода причины.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: Повысил ли сигнал риск или повысил уровень доверия.
              message:
                type: string
                description: Понятное объяснение сигнала на английском языке.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Насколько сильно сигнал повлиял на скоринг, например `low`,
                  `medium` или `high`.
          description: >-
            Сигналы, объясняющие оценку, каждый с фиксированным кодом Didit,
            направлением, сообщением и уровнем влияния. Со временем могут
            появляться новые коды, поэтому не отклоняйте неизвестные коды.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        Цифровой след адреса электронной почты: онлайн-платформы, на которых он
        зарегистрирован. Присутствует, только если был задан параметр
        `enable_social` и проверка завершилась. Любое количество может быть
        null, если данные по нему не были возвращены. `profiles_registered: 0`
        означает, что платформы были проверены и адрес электронной почты не
        найден ни на одной из них - это валидный, тарифицируемый ответ и частый
        признак синтетической личности.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: Платформы, где подтверждена регистрация адреса электронной почты.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Платформы, проверенные на наличие регистрации.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Платформы, вернувшие связанное имя.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Платформы, вернувшие фото профиля.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Коммуникационные платформы с обнаруженным присутствием.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Уникальные категории платформ с обнаруженным присутствием.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Составной индикатор цифровой зрелости, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Индикатор заполненности профиля, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Соотношение бесплатных и платных платформ, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Регистрации на бесплатных платформах.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Регистрации на полностью платных платформах.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Регистрации на freemium-платформах.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            Полнота профиля WhatsApp. Только для телефона; null для электронной
            почты.
          example: Partial
        registered_platforms:
          type: array
          description: Платформы, где подтверждена регистрация.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Платформы, проверенные с отрицательным результатом.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Количество регистраций и их соотношение по категориям платформ.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Сведения о профиле на платформе, сгруппированные по платформам, если
            платформа их предоставляет.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Идентификатор платформы.
          example: whatsapp
        category:
          type: string
          description: >-
            Категория платформы, например: MESSAGING, SOCIAL_MEDIA, ECOMMERCE,
            PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: '`global` для глобальных платформ, `local` для региональных.'
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: Платформы этой категории, где подтверждена регистрация.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Доля проверенных платформ категории с наличием регистрации, от 0.0
            до 1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Имя профиля, если платформа его предоставляет.
        photo:
          type: string
          nullable: true
          description: URL фотографии профиля, если платформа её предоставляет.
        about:
          type: string
          nullable: true
          description: Текст «о себе»/биография профиля, если платформа его предоставляет.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Видимость профиля, если платформа её предоставляет.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Является ли профиль бизнес-аккаунтом, если платформа раскрывает эту
            информацию.
  responses:
    EmailRiskValidationError:
      description: Ошибка валидации запроса.
      content:
        application/json:
          examples:
            Missing email:
              summary: Отсутствует адрес электронной почты
              value:
                email:
                  - This field is required.
            Invalid email:
              summary: Недопустимый адрес электронной почты
              value:
                email:
                  - Enter a valid email address.
            Invalid country hint:
              summary: Недопустимая подсказка страны
              value:
                country_code:
                  - Ensure this field has no more than 3 characters.
    RiskPermissionDenied:
      description: >-
        API-ключ отсутствует или недействителен, либо организация не может
        покрыть проверку в реальном времени. Этот API никогда не возвращает
        `401`.
      content:
        application/json:
          examples:
            Missing or invalid API key:
              summary: >-
                Отсутствует заголовок `x-api-key`, либо ключ недействителен или
                отозван
              value:
                detail: You do not have permission to perform this action.
            Not enough credits:
              summary: Баланс организации недостаточен для оплаты цены поиска
              value:
                error: You don't have enough credits to perform this request.
    RateLimitedWrite:
      description: >-
        Превышен общий лимит на запись в 300 запросов в минуту на один API-ключ.
        Подождите время, указанное в `Retry-After`, перед повторной попыткой.
      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: >-
        API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в
        Business Console. Основной ключ имеет полный доступ. Именованный ключ
        может иметь ограниченную область действия: без доступа, чтение или
        запись для каждого ресурса, ограничение определенными сценариями или
        одобренными сессиями, списком IP-адресов и сроком действия. 401
        означает, что ключ неверен, отозван или его срок действия истек; 403
        означает, что ключ не был передан, у ключа нет доступа к этому ресурсу
        или действию, либо запрос поступил с адреса вне его списка IP-адресов;
        404 на маршруте сессии означает, что сессия не входит в сценарии или
        статусы ключа. Ключ без доступа к медиа получает URL изображений, видео
        и PDF как null, а ключ без прав на запись сессий получает ссылки на
        сессии и токены как null. См. https://docs.didit.me/console/api-keys.

````

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