Email validation (credits)
Bulk Job Results
Retrieve verification results for a bulk job. Returns an array of EmailVerificationResponse objects for every email processed so far.
GET
/
v1
/
bulk
/
{job_id}
/
results
Get Bulk Job Results
curl --request GET \
--url https://api.orbisearch.com/v1/bulk/{job_id}/results \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.orbisearch.com/v1/bulk/{job_id}/results"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.orbisearch.com/v1/bulk/{job_id}/results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.orbisearch.com/v1/bulk/{job_id}/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.orbisearch.com/v1/bulk/{job_id}/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.orbisearch.com/v1/bulk/{job_id}/results")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbisearch.com/v1/bulk/{job_id}/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"job_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "complete",
"total_results": 500,
"results": [
{
"email": "jane.doe@acme.com",
"status": "safe",
"substatus": "deliverable",
"explanation": "Safe to email. The mailbox exists and is deliverable.",
"email_provider": "Google Workspace",
"is_disposable": false,
"is_role_account": false,
"is_free": false
}
],
"pending_retries": [],
"retry_count": 0
}{
"detail": "Email list cannot be empty"
}{
"detail": "API key required in X-API-Key header"
}{
"detail": "Job not found"
}{
"detail": "Job is not completed yet. Current status: in_progress"
}{
"detail": "Missing required query parameter: email.",
"errors": [
{
"loc": "query.email",
"msg": "Missing required query parameter: email.",
"type": "missing"
}
]
}{
"detail": "Rate limit exceeded. Maximum 20 requests per second per account. Contact us to discuss higher limits.",
"code": "rate_limited"
}Use this endpoint to retrieve the verification results for a bulk job. It returns an array of EmailVerificationResponse objects, one for each email in the job. You can call this endpoint before the job has fully completed to retrieve partial results, though the
results array will only contain entries for emails processed so far.
Fetching partial results
You do not need to wait for a job to reachcomplete status before calling this endpoint. If you call it while the job is still in_progress, the response will contain whatever results are available at that moment. The total_results field reflects the number of results in the current response, not the final total for the job.
To confirm you have all results, check that the job status is complete and pending_retries is empty ([]) before treating the result set as final. pending_retries is an array of email addresses still queued for automatic greylist retry. An empty array means the job has fully settled.Authorizations
API key for authentication
Path Parameters
Response
Successful Response
Results of a completed bulk verification job.
Unique job identifier.
Example:
"123e4567-e89b-12d3-a456-426614174000"
Job status when results were fetched.
Available options:
complete, partial_complete_retrying Example:
"complete"
Total number of results in this response.
Example:
500
Array of email verification results.
Show child attributes
Show child attributes
Emails still being retried (greylisted, awaiting MTA retry window). Empty when the job has fully settled.
Example:
[]
The number of emails still queued for retry. Always the same as the number of entries in pending_retries.
Example:
0
⌘I
Get Bulk Job Results
curl --request GET \
--url https://api.orbisearch.com/v1/bulk/{job_id}/results \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.orbisearch.com/v1/bulk/{job_id}/results"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.orbisearch.com/v1/bulk/{job_id}/results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.orbisearch.com/v1/bulk/{job_id}/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.orbisearch.com/v1/bulk/{job_id}/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.orbisearch.com/v1/bulk/{job_id}/results")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbisearch.com/v1/bulk/{job_id}/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"job_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "complete",
"total_results": 500,
"results": [
{
"email": "jane.doe@acme.com",
"status": "safe",
"substatus": "deliverable",
"explanation": "Safe to email. The mailbox exists and is deliverable.",
"email_provider": "Google Workspace",
"is_disposable": false,
"is_role_account": false,
"is_free": false
}
],
"pending_retries": [],
"retry_count": 0
}{
"detail": "Email list cannot be empty"
}{
"detail": "API key required in X-API-Key header"
}{
"detail": "Job not found"
}{
"detail": "Job is not completed yet. Current status: in_progress"
}{
"detail": "Missing required query parameter: email.",
"errors": [
{
"loc": "query.email",
"msg": "Missing required query parameter: email.",
"type": "missing"
}
]
}{
"detail": "Rate limit exceeded. Maximum 20 requests per second per account. Contact us to discuss higher limits.",
"code": "rate_limited"
}