Validate up to 100 phone numbers
Validates up to 100 numbers in one call.
Request
POSThttps://phone-number-validator.p.apihiver.com/v1/validate/batch
JSON object. Required: numbers.
Request Body
Edit the values below to test different scenarios.
Parameters and body structure are inherited from this endpoint's definition. Changes here only apply to this test run.
Language
Client
1curl --request POST \
2 --url https://phone-number-validator.p.apihiver.com/v1/validate/batch \
3 --header 'Accept: application/json' \
4 --header 'Content-Type: application/json' \
5 --header 'X-API-Key: YOUR_API_KEY' \
6 --data '{
7 "country": "IN",
8 "numbers": [
9 "9876543210"
10 ]
11}'Validate up to 100 phone numbers: Phone Number Validation API reference
Validates up to 100 numbers in one call. This endpoint is part of the Phone Number Validation API: Validate and format phone numbers for 240+ countries: valid or not, mobile or landline, carrier, region, and E.164 format.
Validate up to 100 phone numbers: example requests in every language
POST /v1/validate/batch in Shell (cURL)
curl --request POST \
--url https://phone-number-validator.p.apihiver.com/v1/validate/batch \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{
"country": "IN",
"numbers": [
"9876543210"
]
}'POST /v1/validate/batch in Shell (HTTPie)
echo '{
"country": "IN",
"numbers": [
"9876543210"
]
}' | \
http POST https://phone-number-validator.p.apihiver.com/v1/validate/batch \
Accept:application/json \
Content-Type:application/json \
X-API-Key:YOUR_API_KEYPOST /v1/validate/batch in Shell (Wget)
wget --quiet \
--method POST \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--body-data '{\n "country": "IN",\n "numbers": [\n "9876543210"\n ]\n}' \
--output-document \
- https://phone-number-validator.p.apihiver.com/v1/validate/batchPOST /v1/validate/batch in Node.js (http)
const http = require('https');
const options = {
method: 'POST',
hostname: 'phone-number-validator.p.apihiver.com',
port: null,
path: '/v1/validate/batch',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({country: 'IN', numbers: ['9876543210']}));
req.end();POST /v1/validate/batch in Node.js (Request)
const request = require('request');
const options = {
method: 'POST',
url: 'https://phone-number-validator.p.apihiver.com/v1/validate/batch',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: {country: 'IN', numbers: ['9876543210']},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});POST /v1/validate/batch in Node.js (Unirest)
const unirest = require('unirest');
const req = unirest('POST', 'https://phone-number-validator.p.apihiver.com/v1/validate/batch');
req.headers({
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
});
req.type('json');
req.send({
country: 'IN',
numbers: [
'9876543210'
]
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});POST /v1/validate/batch in Node.js (Axios)
const axios = require('axios').default;
const options = {
method: 'POST',
url: 'https://phone-number-validator.p.apihiver.com/v1/validate/batch',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
data: {country: 'IN', numbers: ['9876543210']}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/validate/batch in Node.js (Fetch)
const fetch = require('node-fetch');
const url = 'https://phone-number-validator.p.apihiver.com/v1/validate/batch';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: '{"country":"IN","numbers":["9876543210"]}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/validate/batch in JavaScript (XMLHttpRequest)
const data = JSON.stringify({
country: 'IN',
numbers: [
'9876543210'
]
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open('POST', 'https://phone-number-validator.p.apihiver.com/v1/validate/batch');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Accept', 'application/json');
xhr.setRequestHeader('X-API-Key', 'YOUR_API_KEY');
xhr.send(data);POST /v1/validate/batch in JavaScript (Axios)
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://phone-number-validator.p.apihiver.com/v1/validate/batch',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
data: {country: 'IN', numbers: ['9876543210']}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/validate/batch in JavaScript (Fetch)
const url = 'https://phone-number-validator.p.apihiver.com/v1/validate/batch';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: '{"country":"IN","numbers":["9876543210"]}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/validate/batch in JavaScript (jQuery)
const settings = {
async: true,
crossDomain: true,
url: 'https://phone-number-validator.p.apihiver.com/v1/validate/batch',
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
processData: false,
data: '{\n "country": "IN",\n "numbers": [\n "9876543210"\n ]\n}'
};
$.ajax(settings).done(function (response) {
console.log(response);
});POST /v1/validate/batch in Python (http.client)
import http.client
conn = http.client.HTTPSConnection("phone-number-validator.p.apihiver.com")
payload = "{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}"
headers = {
'Content-Type': "application/json",
'Accept': "application/json",
'X-API-Key': "YOUR_API_KEY"
}
conn.request("POST", "/v1/validate/batch", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))POST /v1/validate/batch in Python (Requests)
import requests
url = "https://phone-number-validator.p.apihiver.com/v1/validate/batch"
payload = {
"country": "IN",
"numbers": ["9876543210"]
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())POST /v1/validate/batch in PHP (cURL)
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://phone-number-validator.p.apihiver.com/v1/validate/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'country' => 'IN',
'numbers' => [
'9876543210'
]
]),
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: application/json",
"X-API-Key: YOUR_API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}POST /v1/validate/batch in PHP (Guzzle)
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://phone-number-validator.p.apihiver.com/v1/validate/batch', [
'body' => '{
"country": "IN",
"numbers": [
"9876543210"
]
}',
'headers' => [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY',
],
]);
echo $response->getBody();POST /v1/validate/batch in PHP (PECL HTTP v1)
<?php
$request = new HttpRequest();
$request->setUrl('https://phone-number-validator.p.apihiver.com/v1/validate/batch');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders([
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
$request->setContentType('application/json');
$request->setBody(json_encode([
'country' => 'IN',
'numbers' => [
'9876543210'
]
]));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}POST /v1/validate/batch in PHP (PECL HTTP v2)
<?php
$client = new http\Client;
$request = new http\Client\Request;
$body = new http\Message\Body;
$body->append(json_encode([
'country' => 'IN',
'numbers' => [
'9876543210'
]
]));
$request->setRequestUrl('https://phone-number-validator.p.apihiver.com/v1/validate/batch');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders([
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();POST /v1/validate/batch in Java (AsyncHttp)
AsyncHttpClient client = new DefaultAsyncHttpClient();
client.prepare("POST", "https://phone-number-validator.p.apihiver.com/v1/validate/batch")
.setHeader("Content-Type", "application/json")
.setHeader("Accept", "application/json")
.setHeader("X-API-Key", "YOUR_API_KEY")
.setBody("{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}")
.execute()
.toCompletableFuture()
.thenAccept(System.out::println)
.join();
client.close();POST /v1/validate/batch in Java (java.net.http)
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://phone-number-validator.p.apihiver.com/v1/validate/batch"))
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());POST /v1/validate/batch in Java (OkHttp)
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}");
Request request = new Request.Builder()
.url("https://phone-number-validator.p.apihiver.com/v1/validate/batch")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();POST /v1/validate/batch in Java (Unirest)
HttpResponse<String> response = Unirest.post("https://phone-number-validator.p.apihiver.com/v1/validate/batch")
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.body("{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}")
.asString();POST /v1/validate/batch in C# (HttpClient)
using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://phone-number-validator.p.apihiver.com/v1/validate/batch"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "YOUR_API_KEY" },
},
Content = new StringContent("{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}POST /v1/validate/batch in C# (RestSharp)
var client = new RestClient("https://phone-number-validator.p.apihiver.com/v1/validate/batch");
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept", "application/json");
request.AddHeader("X-API-Key", "YOUR_API_KEY");
request.AddParameter("application/json", "{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}", ParameterType.RequestBody);
var response = client.Execute(request);POST /v1/validate/batch in Go (NewRequest)
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://phone-number-validator.p.apihiver.com/v1/validate/batch"
payload := strings.NewReader("{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}POST /v1/validate/batch in Ruby (net::http)
require 'uri'
require 'net/http'
url = URI("https://phone-number-validator.p.apihiver.com/v1/validate/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'YOUR_API_KEY'
request.body = "{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}"
response = http.request(request)
puts response.read_bodyPOST /v1/validate/batch in Swift (NSURLSession)
import Foundation
let headers = [
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
]
let parameters = [
"country": "IN",
"numbers": ["9876543210"]
] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://phone-number-validator.p.apihiver.com/v1/validate/batch")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()POST /v1/validate/batch in Objective-C (NSURLSession)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"Content-Type": @"application/json",
@"Accept": @"application/json",
@"X-API-Key": @"YOUR_API_KEY" };
NSDictionary *parameters = @{ @"country": @"IN",
@"numbers": @[ @"9876543210" ] };
NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://phone-number-validator.p.apihiver.com/v1/validate/batch"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];POST /v1/validate/batch in Kotlin (OkHttp)
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}")
val request = Request.Builder()
.url("https://phone-number-validator.p.apihiver.com/v1/validate/batch")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.build()
val response = client.newCall(request).execute()POST /v1/validate/batch in C (libcurl)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://phone-number-validator.p.apihiver.com/v1/validate/batch");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "X-API-Key: YOUR_API_KEY");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}");
CURLcode ret = curl_easy_perform(hnd);POST /v1/validate/batch in Clojure (clj-http)
(require '[clj-http.client :as client])
(client/post "https://phone-number-validator.p.apihiver.com/v1/validate/batch" {:headers {:X-API-Key "YOUR_API_KEY"}
:content-type :json
:form-params {:country "IN"
:numbers ["9876543210"]}
:accept :json})POST /v1/validate/batch in OCaml (CoHTTP)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://phone-number-validator.p.apihiver.com/v1/validate/batch" in
let headers = Header.add_list (Header.init ()) [
("Content-Type", "application/json");
("Accept", "application/json");
("X-API-Key", "YOUR_API_KEY");
] in
let body = Cohttp_lwt_body.of_string "{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}" in
Client.call ~headers ~body `POST uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)POST /v1/validate/batch in R (httr)
library(httr)
url <- "https://phone-number-validator.p.apihiver.com/v1/validate/batch"
payload <- "{\n \"country\": \"IN\",\n \"numbers\": [\n \"9876543210\"\n ]\n}"
encode <- "json"
response <- VERB("POST", url, body = payload, add_headers('X-API-Key' = 'YOUR_API_KEY'), content_type("application/json"), accept("application/json"), encode = encode)
content(response, "text")POST /v1/validate/batch in PowerShell (Invoke-WebRequest)
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$response = Invoke-WebRequest -Uri 'https://phone-number-validator.p.apihiver.com/v1/validate/batch' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"country": "IN",
"numbers": [
"9876543210"
]
}'POST /v1/validate/batch in PowerShell (Invoke-RestMethod)
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$response = Invoke-RestMethod -Uri 'https://phone-number-validator.p.apihiver.com/v1/validate/batch' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"country": "IN",
"numbers": [
"9876543210"
]
}'POST /v1/validate/batch in HTTP (HTTP/1.1)
POST /v1/validate/batch HTTP/1.1
Content-Type: application/json
Accept: application/json
X-Api-Key: YOUR_API_KEY
Host: phone-number-validator.p.apihiver.com
Content-Length: 58
{
"country": "IN",
"numbers": [
"9876543210"
]
}Example response (200, application/json)
Success.
1{
2 "results": [
3 {
4 "type": "mobile",
5 "input": "9876543210",
6 "valid": true,
7 "carrier": "Airtel",
8 "formats": {
9 "e164": "+919876543210",
10 "rfc3966": "tel:+91-98765-43210",
11 "national": "098765 43210",
12 "international": "+91 98765 43210"
13 },
14 "location": "India",
15 "possible": true,
16 "timezones": [
17 "Asia/Calcutta"
18 ],
19 "calling_code": "+91",
20 "country_code": "IN",
21 "national_number": "9876543210"
22 }
23 ]
24}Errors
- 400 — A required parameter is missing or a value has the wrong format.
1{ 2 "error": { 3 "code": "INVALID_INPUT", 4 "message": "numbers: Field required" 5 } 6}
Gateway errors (missing key, no subscription, rate limits) are listed in Error codes.
Other Phone Number Validation API endpoints
- GETValidate and format a phone number
- GETAn example number for a country and type
- GETFormat a number for display (E.164, international, national, or as dialled from another country)
- GETCalling codes for every country
Phone Number Validation API pricing →·Phone Number Validation API overview →