---
title: "Response Fields"
description: "Every field the SignupSieve email validation API returns, including the ip object and the evidence list, explained."
canonical_url: "https://signupsieve.pages.dev/docs/response-fields"
---

> Index of every page on this site: [llms.txt](https://signupsieve.pages.dev/llms.txt)

# Response fields

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        email
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      The address, trimmed and lowercased.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        canonical
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      The inbox it really reaches. Gmail dots and <code>
        +tags
      </code>
      
       are removed: <code>
        j.o.hn+promo@gmail.com
      </code>
      
       becomes <code>
        john@gmail.com
      </code>
      
      . <strong>
        Store this to stop one person creating many accounts.
      </strong>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        did_you_mean
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Present when the domain looks like a typo.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        account_type
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <code>
        work
      </code>
      
      , <code>
        free
      </code>
      
      , <code>
        school
      </code>
      
      , <code>
        relay
      </code>
      
      , <code>
        disposable
      </code>
      
       or <code>
        unknown
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        role_account
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      <code>
        info@
      </code>
      
      , <code>
        support@
      </code>
      
      , <code>
        sales@
      </code>
      
       and similar shared inboxes.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        disposable
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      A throwaway email service.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        relay
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      A privacy relay such as Apple Hide My Email or Firefox Relay. A real person hiding their address, <strong>
        not
      </strong>
      
       a fake.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        deliverable_domain
      </code>
    </td>
    
    <td>
      boolean or null
    </td>
    
    <td>
      The domain can receive mail. <code>
        null
      </code>
      
       if DNS could not be reached.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        mail_provider
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <code>
        google
      </code>
      
      , <code>
        microsoft
      </code>
      
      , <code>
        zoho
      </code>
      
      , <code>
        proton
      </code>
      
      , <code>
        yahoo
      </code>
      
      , <code>
        apple
      </code>
      
      , <code>
        gateway
      </code>
      
      , <code>
        other
      </code>
      
       or <code>
        none
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        domain_age_days
      </code>
    </td>
    
    <td>
      integer
    </td>
    
    <td>
      Age of the domain. Present once our background check for this domain has run.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        domain_pattern
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Company domains only: <code>
        match
      </code>
      
      , <code>
        mismatch
      </code>
      
       or <code>
        learning
      </code>
      
      . Does the address follow the shape the company uses (for example <code>
        first.last
      </code>
      
      )?
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        alias_variants
      </code>
    </td>
    
    <td>
      integer
    </td>
    
    <td>
      Distinct spellings of this same inbox you have checked in the last 90 days (shown when 2 or more). 3 or more suggests one person making many accounts.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        recent_signups
      </code>
    </td>
    
    <td>
      integer
    </td>
    
    <td>
      Unique addresses at this domain checked in about the last 10 minutes, across all customers (shown when 20 or more). A possible bot wave.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        domain_fake_rate
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      Share of outcomes that other customers reported as fake at this domain (shown once 2 or more customers have reported).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ip
      </code>
    </td>
    
    <td>
      object
    </td>
    
    <td>
      Present when you sent an <code>
        ip
      </code>
      
      . See below.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        evidence
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      With <code>
        explain: true
      </code>
      
      . See below.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        human_score
      </code>
    </td>
    
    <td>
      integer
    </td>
    
    <td>
      0 to 100. Higher means more likely a real, unique person.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        verdict
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <code>
        allow
      </code>
      
      , <code>
        review
      </code>
      
       or <code>
        block
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        reasons
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      Reason codes, most important first. See <a href="/docs/reason-codes">
        Reason codes
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        check_id
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Signed token (about 120 characters). Send it to <code>
        /v1/feedback
      </code>
      
       within 14 days.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        feedback_wanted
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      Present (<code>
        true
      </code>
      
      ) when the model is unsure about this address. Reporting its outcome teaches the model the most.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        model
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <code>
        baseline
      </code>
      
      , or <code>
        learned-v<N>
      </code>
      
       when the learned model is serving.
    </td>
  </tr>
</tbody>
</table>

## `ip` object

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        datacenter
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Cloud provider that owns the IP: <code>
        aws
      </code>
      
      , <code>
        google_cloud
      </code>
      
      , <code>
        oracle_cloud
      </code>
      
       or <code>
        digitalocean
      </code>
      
      . Real people rarely sign up from a server.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tor
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      The IP is a Tor exit node.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        signups_from_ip
      </code>
    </td>
    
    <td>
      integer
    </td>
    
    <td>
      Distinct inboxes from this IP at your account in the last hour.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ignored
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Why the IP was not used, for example a private address such as <code>
        192.168.1.5
      </code>
      
      .
    </td>
  </tr>
</tbody>
</table>

## `evidence` list (`explain: true`)

Each item shows one signal's effect on the score, in log-odds. Positive means more likely a real person.

```json
"evidence": [
  { "signal": "name_naturalness", "value": 0.496, "impact": 1.489 },
  { "signal": "bias", "value": 1, "impact": 1 },
  { "signal": "dotted_gmail", "value": 1, "impact": -0.4 },
  { "signal": "spf", "value": 1, "impact": 0.3 },
  { "signal": "dmarc", "value": 1, "impact": 0.3 }
]
```

## Sitemap

See the full [sitemap](https://signupsieve.pages.dev/sitemap.md) for all pages.
