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

# Email Scoring

> This method provides an additional layer of validation for your system. While validating email syntax is important, it is not sufficient.

This method goes beyond syntax validation by checking the domain's validity, the availability of the Mail Service, detecting Disposable Email (Temporary Emails), etc. By utilising this method, you can ensure a more thorough validation process for email addresses.

export const MCPCallout = () => {
  return <div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-[rgba(192, 132, 252, 0.2)] bg-[rgba(192, 132, 252, 0.1)] dark:border-[#c084fc4d] dark:bg-[#c084fc1a] text-[#6005BB] dark:text-[#FFFFFF]" data-callout-type="callout">
      <div class="mt-0.5 w-4" data-component-part="callout-icon">
        <svg class="h-4 w-4 !m-0 shrink-0 bg-[#c084fc] [mask-image:url('https://d3gk2c5xim1je2.cloudfront.net/v7.1.0/duotone/fire.svg')] [-webkit-mask-image:url('https://d3gk2c5xim1je2.cloudfront.net/v7.1.0/duotone/fire.svg')] [mask-repeat:no-repeat] [-webkit-mask-repeat:no-repeat] [mask-position:center] [-webkit-mask-position:center]"></svg>
      </div>
      <div class="text-sm prose dark:prose-invert min-w-0 w-full [&_kbd]:bg-background-light dark:[&_kbd]:bg-background-dark text-[#6005BB] dark:text-[#FFFFFF]" data-component-part="callout-content">
        <span data-as="p">
          Want to skip the docs? Use the{" "}
          <a class="link mint-text-xs border-[#C792FC]" href="/docs-mcp-server">
            <b>MCP Server</b>
          </a>
        </span>
      </div>
    </div>;
};

export const Availability = ({plan, color}) => {
  const colorMap = {
    green: "text-green-700 dark:text-green-400",
    blue: "text-blue-700 dark:text-blue-400",
    purple: "text-purple-700 dark:text-purple-400"
  };
  return <div dir="ltr" data-orientation="horizontal" class="p-4 px-5 mt-0 md:mt-4 flex flex-col sm:flex-row flex-wrap gap-2 relative overflow-hidden rounded-2xl border border-gray-950/10 dark:border-white/10 my-0 bg-gray-50 dark:bg-white/5 dark:codeblock-dark text-gray-950 dark:text-gray-50 codeblock-light text-sm prose prose-gray dark:prose-invert font-semibold no-wrap-words">
      Endpoint availability:{" "}
      <span class={` ${colorMap[color]} flex-1`}>{plan}</span>
      <a class="custom-link text-xs" href="https://greip.io/detailed-pricing">
        Learn more
      </a>
    </div>;
};

### Query Parameters

<ParamField query="email" type="string" placeholder="Email address" required>
  The email command is used to specify the email you want to validate.

  Expected values: an email address

  Sample value: `name@domain.com`
</ParamField>

<ParamField query="format" type="string" default="JSON" placeholder="Response format">
  The format command is used to get a response in a specific format.

  Expected values: `JSON`, `XML`, `CSV`, or `Newline`

  For more information please refer to [Response Format](/options/response-format).
</ParamField>

<ParamField query="mode" type="string" default="live" placeholder="Environment">
  The mode command is used to in the development stage to simulate the integration process before releasing it to the production environment.

  Expected values: `live`, or `test`.

  For more information please refer to [Development Environment](/options/development-environment).
</ParamField>

<ParamField query="userID" type="string" placeholder="User Identifier">
  The userID command can be used to identify requests sent by specific users to monitor in the [Events Page](/dashboard-guides/monitoring-capabilities/real-time-threat-monitoring).

  Expected values: email address, phone number, user id, name, etc.

  For more information please refer to [User Identifier](/options/user-identifier).
</ParamField>

<ParamField query="callback" type="string" placeholder="JSONP callback">
  The callback command can help you make the response as a JSONP format.

  Expected values: any name that can be used as a function name in Javascript, e.g: `myFunctionName`.

  For more information please refer to [JSONP Callback](/options/jsonp-callback).
</ParamField>

<Panel>
  <MCPCallout />

  <Availability plan="Premium and above" color="purple" />

  <ResponseExample>
    ```json Success theme={null}
    {
      "data": {
        "score": 3,
        "reason": "Email domain is considered dangerous.",
        "isValid": false,
        "isFree": false,
        "isRoleBased": true,
        "isEducational": false,
        "isDisposable": false,
        "blacklisted": false,
        "email": "test@dangerous-domain.com",
        "domain": {
          "name": "dangerous-domain.com",
          "is_dangerous": true,
          "is_spf": false,
          "is_dmarc": false,
          "is_dkim": false,
          "is_mx": false,
          "is_bimi": false,
          "created_at": "2025-02-05",
          "is_new": true
        },
        "custom_rules_applied": { "total": 0, "rules": [] }
      },
      "status": "success",
      "executionTime": 1
    }
    ```

    ```json Error theme={null}
    {
      "status": "error",
      "code": 101,
      "type": "invalid_key",
      "description": "The API Key is missing or invalid."
    }
    ```
  </ResponseExample>
</Panel>

### Response properties

<ResponseField name="data" type="object" required>
  <Expandable title="properties" defaultOpen={true}>
    <ResponseField name="score" type="integer" required>
      A risk-score from 0 to 3 indicating how risky this email address is
      (0=safe, 1=low-risk, 2=high-risk, 3=too-risky).
    </ResponseField>

    <ResponseField name="reason" type="string" required>
      The reason behind considering this email address as risky.

      **Note:** The value of this property will be empty if the `score` is `0`.
    </ResponseField>

    <ResponseField name="isFree" type="boolean" required>
      Indicates whether the email address is from a free email service provider.
    </ResponseField>

    <ResponseField name="isRoleBased" type="boolean" required>
      Indicates whether the email address is a role-based email address. Role-based email addresses are those that are associated with a particular role or group, such as `admin`, `support`, `info`, etc.
    </ResponseField>

    <ResponseField name="isEducational" type="boolean" required>
      Indicates whether the email address is an educational email address.
    </ResponseField>

    <ResponseField name="isValid" type="boolean" required>
      A boolean value that you can rely on to determine if the email address is 100% safe & valid or not.
    </ResponseField>

    <ResponseField name="isDisposable" type="boolean" required>
      Indicates whether the email address is a disposable email address (also known as Temporary Email Addresses).
    </ResponseField>

    <ResponseField name="blacklisted" type="boolean" required>
      Indicates if the email/domain is blacklisted due to applying [custom
      rules](/knowledge-base/custom-rules/overview) or were found in one of your
      blacklists.
    </ResponseField>

    <ResponseField name="domain" type="object">
      The information associated with the domain name of the email address.

      <Expandable title="properties" defaultOpen={true}>
        <ResponseField name="name" type="string" required>
          The full domain name associated with the email address (for example, `gmail.com`).
        </ResponseField>

        <ResponseField name="is_dangerous" type="boolean|null" required>
          Indicates whether the domain is flagged as dangerous or suspicious, which may suggest a higher risk of fraud or abuse.

          <Warning>
            If this property is set to `true`, the domain is considered high-risk or potentially malicious. As a result, the `isValid` property will also be `false`, indicating that the email address should not be trusted for critical communications or user registrations. It is strongly recommended to block or flag such email addresses in your application workflow.
          </Warning>
        </ResponseField>

        <ResponseField name="is_spf" type="boolean|null" required>
          Indicates whether the domain has a valid SPF (Sender Policy Framework) record, which helps prevent email spoofing.
        </ResponseField>

        <ResponseField name="is_dmarc" type="boolean|null" required>
          Indicates whether the domain has a valid DMARC (Domain-based Message Authentication, Reporting, and Conformance) record, which helps protect against email phishing and spoofing.
        </ResponseField>

        <ResponseField name="is_dkim" type="boolean|null" required>
          Indicates whether the domain has a valid DKIM (DomainKeys Identified Mail) record, which verifies the authenticity of the sender's domain.
        </ResponseField>

        <ResponseField name="is_mx" type="boolean|null" required>
          Indicates whether the domain has valid MX (Mail Exchange) records, confirming that it is capable of receiving emails.
        </ResponseField>

        <ResponseField name="is_bimi" type="boolean|null" required>
          Indicates whether the domain has a valid BIMI (Brand Indicators for Message Identification) record, which allows brand logos to be displayed in supported email clients.
        </ResponseField>

        <ResponseField name="created_at" type="string|null" required>
          The date when the domain was first registered or created, if available.
        </ResponseField>

        <ResponseField name="is_new" type="boolean|null" required>
          Indicates whether the domain is new or recently registered (registered within 1 year), which may affect its reputation and trustworthiness.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="custom_rules_applied" type="object">
      The custom rules applied to this request, [learn
      more](/knowledge-base/custom-rules/overview).

      <Expandable title="properties" defaultOpen={true}>
        <ResponseField name="total" type="integer" required>
          The total number of custom rules applied to this request.
        </ResponseField>

        <ResponseField name="rules" type="object" required>
          The custom rules applied to this request, [learn
          more](/knowledge-base/custom-rules/overview).

          <Expandable title="properties" defaultOpen={true}>
            <ResponseField name="id" type="string" required>
              The rule ID as shown in the dashboard (e.g: `CR104`).
            </ResponseField>

            <ResponseField name="title" type="string" required>
              The rule title you set when creating the rule.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>

  <ResponseField name="status" type="string" required>
    The response status.

    Expected values: `success`, or `error`.
  </ResponseField>

  <ResponseField name="executionTime" type="integer" required>
    Time spent in milliseconds to process the data.
  </ResponseField>
</ResponseField>

## What can I expect from this API?

* Detection of disposable email addresses (also known as Temporary Email Addresses)
* Detection of free email service providers
* Detection of role-based email addresses
* Testing the email service provider of a given email address
* Validation of email syntax
