Screen numbers against Provident staff
curl --request POST \
--url https://devapi.prov.ae/v2/public/phone-screening/employees \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phones": [
"0501234567",
"+971 50 765 4321",
"+447700900123"
]
}
'import requests
url = "https://devapi.prov.ae/v2/public/phone-screening/employees"
payload = { "phones": ["0501234567", "+971 50 765 4321", "+447700900123"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({phones: ['0501234567', '+971 50 765 4321', '+447700900123']})
};
fetch('https://devapi.prov.ae/v2/public/phone-screening/employees', 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://devapi.prov.ae/v2/public/phone-screening/employees",
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([
'phones' => [
'0501234567',
'+971 50 765 4321',
'+447700900123'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://devapi.prov.ae/v2/public/phone-screening/employees"
payload := strings.NewReader("{\n \"phones\": [\n \"0501234567\",\n \"+971 50 765 4321\",\n \"+447700900123\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://devapi.prov.ae/v2/public/phone-screening/employees")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phones\": [\n \"0501234567\",\n \"+971 50 765 4321\",\n \"+447700900123\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://devapi.prov.ae/v2/public/phone-screening/employees")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phones\": [\n \"0501234567\",\n \"+971 50 765 4321\",\n \"+447700900123\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"input": "0501234567",
"phone": "+971501234567",
"status": "match",
"currentEmployee": true,
"employees": null
},
{
"input": "+971 50 765 4321",
"phone": "+971507654321",
"status": "match",
"currentEmployee": false,
"employees": null
},
{
"input": "+447700900123",
"phone": "+447700900123",
"status": "no_match",
"currentEmployee": false,
"employees": null
}
],
"meta": {
"requested": 3,
"unique": 3,
"invalid": 0,
"matched": 2,
"maxNumbersPerRequest": 1000
}
}{
"statusCode": 400,
"code": "PHONE_SCREENING_TOO_MANY_NUMBERS",
"message": "At most 1000 numbers per request; this one had 1001.",
"path": "/v2/public/phone-screening/employees",
"timestamp": "2026-10-19T09:30:02.871Z",
"details": {
"maxNumbersPerRequest": 1000
}
}{
"statusCode": 401,
"code": "OAUTH_TOKEN_EXPIRED",
"message": "OAuth access token expired",
"path": "/v2/public/projects/filters",
"timestamp": "2026-07-27T06:31:04.512Z"
}{
"statusCode": 403,
"code": "OAUTH_CLIENT_GRANT_MISSING",
"message": "This client is not allowed to use this endpoint. It needs the \"client:dncr:check:create\" grant.",
"details": {
"requiredGrant": "client:dncr:check:create"
},
"path": "/v2/public/dncr/check",
"timestamp": "2026-10-06T12:00:00.000Z"
}{
"statusCode": 422,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"errors": [
"property page should not exist"
],
"path": "/v2/public/developers?page=1&limit=2",
"timestamp": "2026-08-19T07:20:28.507Z"
}{
"statusCode": 429,
"code": "RATE_LIMITED",
"message": "Too Many Requests",
"path": "/v2/public/leads",
"timestamp": "2026-07-27T06:31:04.512Z"
}Phone screening
Screen numbers against Provident staff
Tells you which of up to 1000 phone numbers belong to Provident employees, work or personal numbers, checked live. Former employees match too (currentEmployee: false), so remove every match from a client list. It says whether a number is staff, never who: employees is always null. Enabled on your credentials separately from the broker check.
POST
/
public
/
phone-screening
/
employees
Screen numbers against Provident staff
curl --request POST \
--url https://devapi.prov.ae/v2/public/phone-screening/employees \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phones": [
"0501234567",
"+971 50 765 4321",
"+447700900123"
]
}
'import requests
url = "https://devapi.prov.ae/v2/public/phone-screening/employees"
payload = { "phones": ["0501234567", "+971 50 765 4321", "+447700900123"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({phones: ['0501234567', '+971 50 765 4321', '+447700900123']})
};
fetch('https://devapi.prov.ae/v2/public/phone-screening/employees', 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://devapi.prov.ae/v2/public/phone-screening/employees",
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([
'phones' => [
'0501234567',
'+971 50 765 4321',
'+447700900123'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://devapi.prov.ae/v2/public/phone-screening/employees"
payload := strings.NewReader("{\n \"phones\": [\n \"0501234567\",\n \"+971 50 765 4321\",\n \"+447700900123\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://devapi.prov.ae/v2/public/phone-screening/employees")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phones\": [\n \"0501234567\",\n \"+971 50 765 4321\",\n \"+447700900123\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://devapi.prov.ae/v2/public/phone-screening/employees")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phones\": [\n \"0501234567\",\n \"+971 50 765 4321\",\n \"+447700900123\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"input": "0501234567",
"phone": "+971501234567",
"status": "match",
"currentEmployee": true,
"employees": null
},
{
"input": "+971 50 765 4321",
"phone": "+971507654321",
"status": "match",
"currentEmployee": false,
"employees": null
},
{
"input": "+447700900123",
"phone": "+447700900123",
"status": "no_match",
"currentEmployee": false,
"employees": null
}
],
"meta": {
"requested": 3,
"unique": 3,
"invalid": 0,
"matched": 2,
"maxNumbersPerRequest": 1000
}
}{
"statusCode": 400,
"code": "PHONE_SCREENING_TOO_MANY_NUMBERS",
"message": "At most 1000 numbers per request; this one had 1001.",
"path": "/v2/public/phone-screening/employees",
"timestamp": "2026-10-19T09:30:02.871Z",
"details": {
"maxNumbersPerRequest": 1000
}
}{
"statusCode": 401,
"code": "OAUTH_TOKEN_EXPIRED",
"message": "OAuth access token expired",
"path": "/v2/public/projects/filters",
"timestamp": "2026-07-27T06:31:04.512Z"
}{
"statusCode": 403,
"code": "OAUTH_CLIENT_GRANT_MISSING",
"message": "This client is not allowed to use this endpoint. It needs the \"client:dncr:check:create\" grant.",
"details": {
"requiredGrant": "client:dncr:check:create"
},
"path": "/v2/public/dncr/check",
"timestamp": "2026-10-06T12:00:00.000Z"
}{
"statusCode": 422,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"errors": [
"property page should not exist"
],
"path": "/v2/public/developers?page=1&limit=2",
"timestamp": "2026-08-19T07:20:28.507Z"
}{
"statusCode": 429,
"code": "RATE_LIMITED",
"message": "Too Many Requests",
"path": "/v2/public/leads",
"timestamp": "2026-07-27T06:31:04.512Z"
}Authorizations
Body
application/json
Phone numbers, at most 1000, as strings. Any country. +971501234567, 00971501234567, 971501234567, 0501234567 and 501234567 are the same number; spaces, dashes and brackets are ignored. A number with no country code and no leading 0 is read as already including its country code, except a 9-digit number starting with 5, which is read as a UAE mobile.
Required array length:
1 - 1000 elementsExample:
[
"0501234567",
"+971 50 765 4321",
"+447700900123"
]