---
agentTools:
  projectIndex: https://validto.readme.io/llms.txt
---

# Download a bulk validation list

The result of the bulk validation email list can be downloaded using this endpoint. The bulk validation results can be downloaded only if the verification of the list gets 'completed'. You can download the file in the .csv format, also customise your verification result based on the result codes. The result codes are deliverable, undeliverable, unknown and accept-all.

## Response

```text
"Email","Verification Result","Verified At","Syntax Error","ISP","Role","Disposable","Trap"
"marketing@example.com","deliverable","2021-09-21T09:52:19.734Z","N","Y","N","N","N"
"sales@example.com","deliverable","2021-09-21T09:52:19.409Z","N","Y","N","N","N"
"support@example.in","accept-all","2021-09-21T09:52:19.061Z","N","N","Y","N","N"
```

## Response Parameters

| Parameter                   | Type         | Description                                                                            |
| :-------------------------- | :----------- | :------------------------------------------------------------------------------------- |
| **`"Email"`**               | \[email]     | The email that was verified.                                                           |
| **`"Verification Result"`** | \[string]    | The verified results will be: deliverable, undeliverable, unknown, accept-all          |
| **`"Verified At"`**         | \[date time] | The time at which the email is verified                                                |
| **`"Syntax Error"`**        | \[0, 1]      | Whether the email is syntactically incorrect                                           |
| **`"ISP"`**                 | \[0, 1]      | Whether the email is hosted by a free email provider like Gmail, Yahoo!, Hotmail etc.. |
| **`"Role"`**                | \[0, 1]      | Whether the email is considered a role address. (e.g. "sales@, info@, help@, etc.)     |
| **`"Disposable"`**          | \[0, 1]      | Whether this is a temporary email.                                                     |
| **`"Trap"`**                | \[0, 1]      | Is this a honey-trap email                                                             |

## Other Responses

The response you get when the API key is invalid:

```json
HTTP/1.1 401 Unauthorized
{   
   "result":"Invalid API Key",
   "success": false
}
```

The response you get when you provide invalid job\_id:

```json
HTTP/1.1 400 BadRequest
{
    "result": "Job not found. Invalid jobId",
    "success": false
}
```

The response you get when your account is under review or restricted:

```json
HTTP/1.1 400 BadRequest
{
    "result": "DOWNLOAD-RESTRICTED",
    "success": false
}
```

The response you get when you passed the invalid job\_id:

```json
HTTP/1.1 400 BadRequest
{
    "result": "Job not found. Invalid jobId",
    "success": false
}
```

The response you get when you passed the incorrect filter result options:

```json
HTTP/1.1 400 BadRequest
{
  "result": "Invalid filterResult. Please provide correct filterResult options",
  "success": false
}
```

The response you get when the job is still verifying:

```json
HTTP/1.1 400 BadRequest
{
  "result": "Job is being verified, please wait until it completes.",
  "success": false
}
```

The response you get when the job is ready to begin verification:

```json
HTTP/1.1 400 BadRequest
{
  "result": "Job is ready for verification, please start verification and download your results once list verified.",
  "success": false
}
```

The response you get when the job is still being preparing for verification:

```json
HTTP/1.1 400 BadRequest
{
  "result": "Job is being prepared for verification, please start verifying and then download you result.",
  "success": false
}
```

The response you get when the uploaded list contains invalid data:

```json
HTTP/1.1 400 BadRequest
{
  "result": "List cannot be downloaded, The uploaded list contains invalid data.",
  "success": false
}
```

The response you get when the job not available:

```json
HTTP/1.1 400 BadRequest
{
  "result": "Job not found.",
  "success": false
}
```

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Bulk download",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.validto.com/v1/"
    }
  ],
  "security": [
    {}
  ],
  "paths": {
    "/download": {
      "post": {
        "summary": "Download a bulk validation list",
        "description": "The result of the bulk validation email list can be downloaded using this endpoint. The bulk validation results can be downloaded only if the verification of the list gets 'completed'. You can download the file in the .csv format, also customise your verification result based on the result codes. The result codes are deliverable, undeliverable, unknown and accept-all.",
        "operationId": "download-a-bulk-validation-list",
        "parameters": [
          {
            "name": "jobId",
            "in": "query",
            "description": "The id of the job to download",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "apikey",
            "in": "query",
            "description": "API key",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "RAW_BODY": {
                    "type": "string",
                    "description": "Provide the results type to include in the download file",
                    "default": "{ \"filterResult\":[\"deliverable\", \"undeliverable\", \"accept_all\", \"unknown\"] }",
                    "format": "json"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "text/plain": {
                "examples": {
                  "Result": {
                    "value": "\"Email\",\"Verification Result\",\"Verified At\",\"Syntax Error\",\"ISP\",\"Role\",\"Disposable\",\"Trap\"\n\"marketing@example.com\",\"deliverable\",\"2021-09-21T09:52:19.734Z\",\"N\",\"Y\",\"N\",\"N\",\"N\"\n\"sales@example.com\",\"deliverable\",\"2021-09-21T09:52:19.409Z\",\"N\",\"Y\",\"N\",\"N\",\"N\"\n\"support@example.in\",\"accept-all\",\"2021-09-21T09:52:19.061Z\",\"N\",\"N\",\"Y\",\"N\",\"N\""
                  }
                }
              }
            }
          }
        },
        "deprecated": false,
        "x-readme": {
          "code-samples": [
            {
              "language": "php",
              "code": "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n  CURLOPT_URL => 'https://api.validto.com/v1/download?jobId={JOB_ID}&apikey={API_KEY}',\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_ENCODING => '',\n  CURLOPT_MAXREDIRS => 10,\n  CURLOPT_TIMEOUT => 0,\n  CURLOPT_FOLLOWLOCATION => true,\n  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n  CURLOPT_CUSTOMREQUEST => 'POST',\n));\n\n$response = curl_exec($curl);\n\ncurl_close($curl);\necho $response;\n\n?>"
            },
            {
              "language": "node",
              "code": "var request = require('request');\nvar options = {\n  'method': 'GET',\n  // Replace API_KEY with your API Key and jobId with your list's jobId, you need to download\n  'url': 'https://api.validto.com/v1/download?jobId=jobId&apikey=API_KEY',\n  'headers': {}\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n"
            },
            {
              "language": "go",
              "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n   // Replace jobId with your list's jobId and API_KEY with your API Key\n  url := \"https://api.validto.com/v1/download?jobId={jobId}&apikey=API_KEY\"\n  method := \"POST\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
            }
          ],
          "samples-languages": [
            "php",
            "node",
            "go"
          ]
        }
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true,
  "_id": "615ea506daaab2005b8bd7bc:615aa8402484c00038f67a07"
}
```