Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
All responses are returned in JSON format. We specify this by sending the Content-Type header.
Below is a table containing descriptions of the various status codes we currently support against various resources.
When a request is made with a pagination query, the meta data is included in the response to allow for easy traversal of previous, current, first, and last page of the data set.
Forbidden
404
Resource Not Found
405
Method Not Allowed
406
Not Acceptable
422
Unprocessable Entity
429
Too Many Requests
500
Internal Server Error
200
OK / Partial Success
201
Resource Created
202
Accepted
400
Bad Request / Validation Error
401
Unauthorized
403
{
"data": [
// Response data
],
"meta": {
"total_pages": 100,
"total_rows": 2000,
"order": "DESC",
"order_by": "resource_field",
"limit": 20,
"offset": 0,
"next_key": ""
}
}To authenticate, add an x-http-authorization header to your API request that contains an API Key.
IAF CertSearch’s Verification Users API supports the use of API Keys. API Keys allow you to use another method of authentication separate from your account username and password. API Keys add an additional layer of security for your account and can be assigned to limit which areas of your account can be accessed. API Keys can be generated in your account. To use keys, you must set a plain text header named “x-http-authorization” with the contents of the header being “(API Key)” where (API Key) is your API Secret Key.
For more information about the API URL, see the requests page.
GET {API_URL}/sample-endpoint HTTP/1.1
x-http-authorization: Your.API.Key-HEREcurl -X "GET" "{API_URL}/sample-endpoint" -H "x-http-authorization: Your.API.Key-HERE" -H "Content-Type: application/json"Generating an API Key
To generate the API Key, go to API Settings from the left navigation. Under the Generate API Key section, click the Generate API Key button.
Make sure you have curl installed on your machine.
All requests must be made over HTTPS. The API does not support HTTP.
You must provide an authorization header as described in Authentication.
GET Retrieve a resource or group of resources
POST Create a new resource
PUT Update an existing resource
DELETE Delete an existing resource
OPTIONS View allowed verbs against a specific resource
The API provides JSON responses. It doesn’t currently require the accept header, but might in the future. If not set, the API will use application/json.
When you send an array of data in a GET request, you will include the parameter multiple times on the URL. The parameter name does not require brackets.
When submitting data to a resource via POST or PUT, you must submit your payload in JSON.
Some GET resources allow for retrieval of information in batches. We will provide the query parameters in the resource documentation when applicable.
When requesting multiple items, we will default the request limit to 20 items. You can specify a different limit using the limit parameter when you need to. The maximum value for the limit parameter that we accept is 100.
Below you can see an example of an API request which retrieves the first 100 records as specified by the limit=100 and offset=0 parameters.
To retrieve the next batch of records, increment the offset parameter by 1.
Verb
Resource object returned
GET
Returns a single resource object or array of resource objects
PATCH
Returns the updated resource object
PUT
Returns the updated resource object
DELETE
No content is returned
POST
Returns the newly created resource object
GET {API_URL}/sample-endpoint HTTP/1.1
Accept: application/jsonGET {API_URL}/sample-endpoint?parameter=data1¶meter=data2 HTTP/1.1POST {API_URL}/sample-endpoint HTTP/1.1
Content-Type: application/json{
"name": "new example name"
}GET {API_URL}/sample-endpoint?limit=100&offset=0 HTTP/1.1Sometimes your API call will generate an error. Here you will find additional information about what to expect if you don’t format your request properly, or we fail to properly process your request.
Status Code Description
400 Bad request
401 Requires authentication
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Missing Accept header. For example: Accept: application/json
429 Too many requests/Rate limit exceeded
500 Internal server error
The general format guidelines are displayed when the accompanying status code is returned.
GET {API_URL}/sample-endpoint HTTP/1.1HTTP/1.1 404 BAD REQUEST
Content-Type: application/json
{
"type": "{ERROR_TYPE_DOCUMENTATION_LINK}",
"title": "{ERROR_TITLE}",
"status": {STATUS_CODE},
"detail": "{ERROR_DETAILS}",
"instance": "{API_ENDPOINT}",
"code": "{ERROR_CODE}",
"errors": [
{
"field": "{FIELD}",
"detail": "{DETAILS}"
}
]
}Get multiple companies and certificates by IAF IDs.
POST /bulk-company-by-id
Fields that are marked with an asterisk (*) are mandatory.
The API can match multiple Certified Entities from IAFCertSearch per request.
Certified Entity Requirements:
ce_ids must be provided.
The maximum number of
Request Successful
Some data are Confidential
No Results
Unauthorized Access
Forbidden Access
Insufficient Credit
ce_idsResponse Value:
The API will return a list of matched Certified Entities with its Certificates.
Content-Type*
String
application/json
x-http-authorization*
String
API Key received from https://www.iafcertsearch.org/api-verification
Example:
x-http-authorization: <<API KEY>>
ce_ids
Array of strings
ID of the companies or Certified Entities. Example: { "ce_ids": [ "ce_O8fEcGngmWwaU9OOKxGlR2gV" ] } The maximum number of IDs that this endpoint accepts is 1000.
{
"ce_ids": [
"string",
"string",
"string"
]
}curl --location --request POST '{API_URL}/bulk-company-by-id' \
--header 'x-http-authorization: <API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"ce_ids": [
"string"
]
}'require "uri"
require "json"
require "net/http"
url = URI("{API_URL}/bulk-company-by-id")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-http-authorization"] = "<API_KEY>"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"ce_ids": [
"string"
]
})
response = https.request(request)
puts response.read_body
import http.client
import json
conn = http.client.HTTPSConnection("{API_URL}")
payload = json.dumps({
"ce_ids": [
"ce_O8fEcGngmWwaU9OOKxGlR2gV"
]
})
headers = {
'x-http-authorization': '{{API_KEY}}',
'Content-Type': 'application/json'
}
conn.request("POST", "/bulk-company-by-id", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{API_URL}/bulk-company-by-id',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"ce_ids": [
"string"
]
}',
CURLOPT_HTTPHEADER => array(
'x-http-authorization: {{API_KEY}}',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"ce_ids\": [\n \"string\"\n ]\n}");
Request request = new Request.Builder()
.url("{API_URL}/bulk-company-by-id")
.method("POST", body)
.addHeader("x-http-authorization", "{{API_KEY}}")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();const axios = require('axios');
let data = JSON.stringify({
"ce_ids": [
"string"
]
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '{API_URL}/bulk-company-by-id',
headers: {
'x-http-authorization': '{API_KEY}',
'Content-Type': 'application/json'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "{API_URL}/bulk-company-by-id"
method := "POST"
payload := strings.NewReader(`{
"ce_ids": [
"string"
]
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("x-http-authorization", "{API_KEY}")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}var options = new RestClientOptions("{API_URL}/bulk-company-by-id")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Post);
request.AddHeader("x-http-authorization", "{API_KEY}");
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@" ""ce_ids"": [" + "\n" +
@" ""string""" + "\n" +
@" ]" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);{
"data": [
{
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": string,
"certified_entity_trading_name": string,
"country": string,
"certified_entity_addresses": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"country": string
}
],
"certificates": [
{
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": string,
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": [
{
"standard_name": string,
"scheme_name": string,
"is_accredited_mla": boolean
}
],
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"updated_at": integer
}
]
}
]
}{
"data": [
{
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": "Confidential",
"certified_entity_trading_name": "Confidential",
"country": string,
"certified_entity_addresses": [
{
"street": "Confidential",
"city": "Confidential",
"state": "Confidential",
"post_code": "Confidential",
"full_address": "Confidential",
"country": string
}
],
"certificates": [
{
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": string,
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": [
{
"standard_name": string,
"scheme_name": string,
"is_accredited_mla": boolean
}
],
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"updated_at": integer
}
]
}
]
}{
"data": []
}{
"type": "string",
"title": "Unauthorized access.",
"status": 401,
"detail": "Authentication failed due to invalid credentials or missing token.",
"instance": "/bulk-company-by-id",
"code": "unauthorized"
}{
"type": "string",
"title": "Forbidden access.",
"status": 403,
"detail": "You do not have access to this resource.",
"instance": "/bulk-company-by-id",
"code": "forbidden"
}{
"type": "string",
"title": "Insufficient credit.",
"status": 403,
"detail": "You are trying to access data that exceeds your available credits. To increase your available credits, please contact us at [email protected].",
"instance": "/bulk-company-by-id",
"code": "insufficient_credit"
}{
"type": "string",
"title": "API request limit reached.",
"status": 403,
"detail": "API request limit reached. To increase your API request limit, contact us at [email protected].",
"instance": "/bulk-company-by-id",
"code": "api_request_limit_reached"
}Certificate Information Requirements:
The API requires the cert_id of a Certificate.
Response value:
The API will return a single matched Certificate record.
Content-Type*
String
application/json
x-http-authorization*
String
API Key received from https://www.iafcertsearch.org/api-verification
Example:
x-http-authorization: <<API KEY>>
cert_id*
String
The ID of the Certificate.
Example:
cert_GuFIQmBnjaNG8Xvz7Q3DeBVx
Request Successful
Some data are Confidential
All data are Confidential
Unauthorized Access
Forbidden Access
Insufficient Credit
API Request Limit Reached
Not Found
Get company and certificates by IAF ID.
GET /company/{ce_id}
Fields that are marked with an asterisk (*) are mandatory.
Certified Entity Requirements:
The API requires the ce_id of a Certified Entity.
Multiple Certified Entities can be verified in one request by providing a comma separated string value for ce_id .
Request Successful
Some data are Confidential
Multiple Results
Multiple with No Result
Unauthorized Access
Forbidden Access
curl --location --globoff --request GET '{API-URL}/certificate/{cert_id}' \
--header 'x-http-authorization: <API_KEY>' \
--header 'Content-Type: application/json'require "uri"
require "json"
require "net/http"
url = URI("{API_URL}/certificate/{cert_id}")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["x-http-authorization"] = "<API_KEY>"
request["Content-Type"] = "application/json"
response = http.request(request)
puts response.read_bodyimport http.client
import json
conn = http.client.HTTPConnection("{API_URL}")
payload = ''
headers = {
'x-http-authorization': '<API_KEY>',
'Content-Type': 'application/json'
}
conn.request("GET", "/certificate/{cert_id}", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{API_URL}/certificate/{cert_id}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'x-http-authorization: <API_KEY>',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{API_URL}/certificate/{cert_id}")
.method("GET", body)
.addHeader("x-http-authorization", "<API_KEY>")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: '{API_URL}/certificate/{cert_id}',
headers: {
'x-http-authorization': '<API_KEY>',
'Content-Type': 'application/json'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "{API_URL}/certificate/{cert_id}"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("x-http-authorization", "<API_KEY>")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}var options = new RestClientOptions("{API_URL}")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/certificate/{cert_id}", Method.Get);
request.AddHeader("x-http-authorization", "<API_KEY>");
request.AddHeader("Content-Type", "application/json");
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);{
"data": {
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": string,
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": [
{
"standard_name": string,
"scheme_name": string,
"is_accredited_mla": boolean
}
],
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"certified_entities": [
{
"ce_id": string,
"certified_entity_name": string,
"certified_entity_english_name": string,
"certified_entity_trading_name": string,
"country": string,
"certified_entity_addresses": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"country": string
}
],
}
],
"updated_at": integer
}
}{
"data": {
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": "Confidential",
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": "Confidential",
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"certified_entities": [
{
"ce_id": string,
"certified_entity_name": string,
"certified_entity_english_name": "Confidential",
"certified_entity_trading_name": "Confidential",
"country": string,
"certified_entity_addresses": [
{
"street": "Confidential",
"city": "Confidential",
"state": "Confidential",
"post_code": "Confidential",
"full_address": "Confidential",
"country": string
}
],
}
],
"updated_at": integer
}
}{
"data": "Confidential"
}{
"type": "string",
"title": "Unauthorized access.",
"status": 401,
"detail": "Authentication failed due to invalid credentials or missing token.",
"instance": "/certificate/{cert_id}",
"code": "unauthorized"
}{
"type": "string",
"title": "Forbidden access.",
"status": 403,
"detail": "You do not have access to this resource.",
"instance": "/certificate/{cert_id}",
"code": "forbidden"
}{
"type": "string",
"title": "Insufficient credit.",
"status": 403,
"detail": "You are trying to access data that exceeds your available credits. To increase your available credits, please contact us at [email protected].",
"instance": "/certificate/{cert_id}",
"code": "insufficient_credit"
}The maximum number of ce_id that this endpoint accepts is 100.
Response value:
The API will return matched Certified Entity records with its Certificates.
Insufficient Credit - Multiple IAF ID
API Request Limit Reached
Not Found
Content-Type*
String
application/json
x-http-authorization*
String
API Key received from https://www.iafcertsearch.org/api-verification
Example:
x-http-authorization: <<API KEY>>
ce_id*
String
The ID of the Company or Certified Entity.
Example:
ce_KMi1zsb9CH2EorSzOJ9YEgtV
To verify multiple Companies using their IDs, separate them with comma ( , ).
Example:
ce_KMi1zsb9CH2EorSzOJ9YEgtV,ce_KMi1zsb9CH2EorSzOJ9YEgtV
The maximum number of IDs that this endpoint accepts is 100.
{
"type": "string",
"title": "API request limit reached.",
"status": 403,
"detail": "API request limit reached. To increase your API request limit, contact us at [email protected].",
"instance": "/certificate/{cert_id}",
"code": "api_request_limit_reached"
}{
"type": "string",
"title": "Resource not found.",
"status": 404,
"detail": "Certification not found in IAFCertSearch.",
"instance": "/certificate/{cert_id}",
"code": "not_found"
}{
"type": "string",
"title": "Insufficient credit.",
"status": 403,
"detail": "You are trying to access data that exceeds your available credits. To increase your available credits, please contact us at [email protected].",
"instance": "/company/{ce_id},{ce_id},{ce_id}",
"code": "insufficient_credit"
}{
"type": "string",
"title": "API request limit reached.",
"status": 403,
"detail": "API request limit reached. To increase your API request limit, contact us at [email protected].",
"instance": "/company/{ce_id}",
"code": "api_request_limit_reached"
}{
"type": "string",
"title": "Resource not found.",
"status": 404,
"detail": "Certified Entity not found in IAFCertSearch.",
"instance": "/company/{ce_id}",
"code": "not_found"
}curl --location --globoff --request GET '{API-URL}/company/{ce_id}' \
--header 'x-http-authorization: <API_KEY>' \
--header 'Content-Type: application/json'require "uri"
require "json"
require "net/http"
url = URI("{API_URL}/company/{ce_id}")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["x-http-authorization"] = "<API_KEY>"
request["Content-Type"] = "application/json"
response = http.request(request)
puts response.read_bodyimport http.client
import json
conn = http.client.HTTPConnection("{API_URL}")
payload = ''
headers = {
'x-http-authorization': '<API_KEY>',
'Content-Type': 'application/json'
}
conn.request("GET", "/company/{ce_id}", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{API_URL}/company/{ce_id}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'x-http-authorization: <API_KEY>',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{API_URL}/company/{ce_id}")
.method("GET", body)
.addHeader("x-http-authorization", "<API_KEY>")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: '{API_URL}/company/{ce_id}',
headers: {
'x-http-authorization': '<API_KEY>',
'Content-Type': 'application/json'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "{API_URL}/company/{ce_id}"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("x-http-authorization", "<API_KEY>")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}var options = new RestClientOptions("{API_URL}")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/company/{ce_id}", Method.Get);
request.AddHeader("x-http-authorization", "<API_KEY>");
request.AddHeader("Content-Type", "application/json");
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);{
"data": {
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": string,
"certified_entity_trading_name": string,
"country": string,
"certified_entity_addresses": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"country": string
}
],
"certificates": [
{
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": string,
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": [
{
"standard_name": string,
"scheme_name": string,
"is_accredited_mla": boolean
}
],
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"updated_at": integer
}
]
}{
"data": {
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": "Confidential",
"certified_entity_trading_name": "Confidential",
"country": string,
"certified_entity_addresses": [
{
"street": "Confidential",
"city": "Confidential",
"state": "Confidential",
"post_code": "Confidential",
"full_address": "Confidential",
"country": string
}
],
"certificates": [
{
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": string,
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": [
{
"standard_name": string,
"scheme_name": string,
"is_accredited_mla": boolean
}
],
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"updated_at": integer
}
]
}{
"data": [
{
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": string,
"certified_entity_trading_name": string,
"country": string,
"certified_entity_addresses": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"country": string
}
],
"certificates": [
{
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": string,
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": [
{
"standard_name": string,
"scheme_name": string,
"is_accredited_mla": boolean
}
],
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"updated_at": integer
}
]
}
]
}{
"data": []
}{
"type": "string",
"title": "Unauthorized access.",
"status": 401,
"detail": "Authentication failed due to invalid credentials or missing token.",
"instance": "/company/{ce_id}",
"code": "unauthorized"
}{
"type": "string",
"title": "Forbidden access.",
"status": 403,
"detail": "You do not have access to this resource.",
"instance": "/company/{ce_id}",
"code": "forbidden"
}{
"type": "string",
"title": "Insufficient credit.",
"status": 403,
"detail": "You are trying to access data that exceeds your available credits. To increase your available credits, please contact us at [email protected].",
"instance": "/company/{ce_id}",
"code": "insufficient_credit"
}Find multiple companies and certificates by name and match rate.
POST /bulk-companies
Fields that are marked with an asterisk (*) are mandatory.
The API accepts multiple Company Information and can match multiple Certified Entities from IAFCertSearch per request.
Companies:
The companies must be provided.
The maximum number of company data that this endpoint accepts is
Request Successful
Some data are Confidential
No Results
Unauthorized Access
Forbidden Access
Insufficient Credit
Find company and certificates by name and match rate.
POST /company
Fields that are marked with an asterisk (*) are mandatory.
The API can only match one Certified Entity from IAFCertSearch per request.
Company Information Requirements:
At least one of the two fields, company_name or company_identifiers, must be provided.
Request Successful
Some data are Confidential
Bad Request - Validation Errors
Unauthorized Access
Forbidden Access
Insufficient Credit
Companies Information Requirements
At least one of the two fields, company_name or company_identifiers, must be provided.
Match Rate Value:
The default rate value is set to 100.
The minimum acceptable rate value is 80, regardless of whether a lower threshold is specified.
Valid rate values range from 80 to 100, in increments of 5.
Any rate value exceeding 100 will automatically be capped at 100.
Response Value:
The API will return a list of matched Certified Entities with its Certificates.
You may use the companies_request_index field in the response to correlate which item from the companies request data array the Certified Entity was matched with. The first element of the companies request data array starts with the index 0. (i.e., The corresponding matched record will have a value of companies_request_index: 0 )
match_rate
Number / String
The percentage or similarity score indicating how closely the details of two companies match during the verification process.
Example:
100 | "100%"
Content-Type*
String
application/json
x-http-authorization*
String
API Key received from https://www.iafcertsearch.org/api-verification
Example:
x-http-authorization: <<API KEY>>
companies
Array of Objects
Array of companies to be matched The maximum number of company data that this endpoint accepts is 100
companies.*company_country*
String
Country/Economy of the main entity address for the Certified Entity.
Supports full country name, alpha-2 and alpha-3 format (click for more information)
Example:
Australia | AU | AUS
companies.*.company_name
String
Certified Entity Name (Company Name) as detailed on the Certificate.
companies.*.company_identifiers
Object
Additional Company Fields
Format:
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
}
Match Rate Value:
The default rate value is set to 100.
The minimum acceptable rate value is 80, regardless of whether a lower threshold is specified.
Valid rate values range from 80 to 100, in increments of 5.
Any rate value exceeding 100 will automatically be capped at 100.
Response Value:
The API will return a single matched Certified Entity record with its Certificates.
Not Found
Content-Type*
String
application/json
x-http-authorization*
String
API Key received from https://www.iafcertsearch.org/api-verification
Example:
x-http-authorization: <<API KEY>>
company_country*
String
Country/Economy of the main entity address for the Certified Entity.
Supports full country name, alpha-2 and alpha-3 format (click for more information)
Example:
Australia | AU | AUS
company_name
String
Certified Entity Name (Company Name) as detailed on the Certificate.
company_identifiers
Object
Additional Company Fields
Format:
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
}
match_rate
Number / String
The percentage or similarity score indicating how closely the details of two companies match during the verification process.
Example:
100 | "100%"
{
"companies": [
{
"company_name": "IAF",
"company_country": "Australia",
"company_identifiers": {
"vat": null,
"tax_id": null,
"business_registration_number": null,
"duns_number": null,
"company_id_number": null
}
}
],
"match_rate": 90
}{
"companies": [
{
"company_name": null,
"company_country": "Australia",
"company_identifiers": {
"vat": "VAT",
"tax_id": "TAX ID",
"business_registration_number": "BUSINESS REGISTRATION NUMBER",
"duns_number": "DUNS NUMBER",
"company_id_number": "COMPANY ID NUMBER"
}
}
],
"match_rate": 90
}{
"companies": [
{
"company_name": "IAF",
"company_country": "Australia",
"company_identifiers": {
"vat": null,
"tax_id": null,
"business_registration_number": null,
"duns_number": "DUNS NUMBER",
"company_id_number": "COMPANY ID NUMBER"
}
}
],
"match_rate": 100
}{
"companies": [
{
"company_name": "QualityTrade",
"company_country": "Australia",
"company_identifiers": { // Have priority over company_name
"vat": "VAT",
"tax_id": "TAX ID",
"business_registration_number": "BUSINESS REGISTRATION NUMBER",
"duns_number": "DUNS NUMBER",
"company_id_number": "COMPANY ID NUMBER"
}
}
],
"match_rate": 100
}curl --location --globoff --request POST '{API_URL}/bulk-companies' \
--header 'x-http-authorization: {API_KEY}' \
--header 'Content-Type: application/json' \
--data '{
"companies": [
{
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
}
}
],
"match_rate": 90
}'require "uri"
require "json"
require "net/http"
url = URI("{API_URL}/bulk-companies")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["x-http-authorization"] = "{API_KEY}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"companies": [
{
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
}
}
],
"match_rate": 90
})
response = http.request(request)
puts response.read_body
import http.client
import json
conn = http.client.HTTPSConnection("{API_URL}")
payload = json.dumps({
"companies": [
{
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
}
}
],
"match_rate": 90
})
headers = {
'x-http-authorization': '{API_KEY}',
'Content-Type': 'application/json'
}
conn.request("POST", "/bulk-companies", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{API_URL}/bulk-companies',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"companies": [
{
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
}
}
],
"match_rate": 90
}',
CURLOPT_HTTPHEADER => array(
'x-http-authorization: {API_KEY}',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"companies\": [\n {\n \"company_name\": \"string\",\n \"company_country\": \"string\",\n \"company_identifiers\": {\n \"vat\": \"string\",\n \"tax_id\": \"string\",\n \"business_registration_number\": \"string\",\n \"duns_number\": \"string\",\n \"company_id_number\": \"string\"\n }\n }\n ],\n \"match_rate\": 90\n}");
Request request = new Request.Builder()
.url("{API_URL}/bulk-companies")
.method("POST", body)
.addHeader("x-http-authorization", "{API_KEY}")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();const axios = require('axios');
let data = JSON.stringify({
"companies": [
{
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
}
}
],
"match_rate": 90
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '{API_URL}/bulk-companies',
headers: {
'x-http-authorization': '{API_KEY}',
'Content-Type': 'application/json'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "{API_URL}/bulk-companies"
method := "POST"
payload := strings.NewReader(`{
"companies": [
{
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
}
}
],
"match_rate": 90
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("x-http-authorization", "{API_KEY}")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}var options = new RestClientOptions("{API_URL}/bulk-companies")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Post);
request.AddHeader("x-http-authorization", "{API_KEY}");
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@" ""companies"": [" + "\n" +
@" {" + "\n" +
@" ""company_name"": ""string""," + "\n" +
@" ""company_country"": ""string""," + "\n" +
@" ""company_identifiers"": {" + "\n" +
@" ""vat"": ""string""," + "\n" +
@" ""tax_id"": ""string""," + "\n" +
@" ""business_registration_number"": ""string""," + "\n" +
@" ""duns_number"": ""string""," + "\n" +
@" ""company_id_number"": ""string""" + "\n" +
@" }" + "\n" +
@" }" + "\n" +
@" ]," + "\n" +
@" ""match_rate"": 90" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);{
"data": [
{
"companies_request_index": integer,
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": string,
"certified_entity_trading_name": string,
"country": string,
"certified_entity_addresses": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"country": string
}
],
"certificates": [
{
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": string,
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": [
{
"standard_name": string,
"scheme_name": string,
"is_accredited_mla": boolean
}
],
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"updated_at": integer
}
]
}
]
}{
"data": [
{
"companies_request_index": integer,
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": "Confidential",
"certified_entity_trading_name": "Confidential",
"country": string,
"certified_entity_addresses": [
{
"street": "Confidential",
"city": "Confidential",
"state": "Confidential",
"post_code": "Confidential",
"full_address": "Confidential",
"country": string
}
],
"certificates": [
{
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": string,
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": [
{
"standard_name": string,
"scheme_name": string,
"is_accredited_mla": boolean
}
],
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"updated_at": integer
}
]
}
]
}{
"data": []
}{
"type": "string",
"title": "Unauthorized access.",
"status": 401,
"detail": "Authentication failed due to invalid credentials or missing token.",
"instance": "/bulk-companies",
"code": "unauthorized"
}{
"type": "string",
"title": "Forbidden access.",
"status": 403,
"detail": "You do not have access to this resource.",
"instance": "/bulk-companies",
"code": "forbidden"
}{
"type": "string",
"title": "Insufficient credit.",
"status": 403,
"detail": "You are trying to access data that exceeds your available credits. To increase your available credits, please contact us at [email protected].",
"instance": "/bulk-companies",
"code": "insufficient_credit"
}{
"type": "string",
"title": "API request limit reached.",
"status": 403,
"detail": "API request limit reached. To increase your API request limit, contact us at [email protected].",
"instance": "/bulk-companies",
"code": "api_request_limit_reached"
}{
"type": "string",
"title": "Resource not found.",
"status": 404,
"detail": "Company not found in IAFCertSearch.",
"instance": "/company",
"code": "not_found"
}{
"company_name": "IAF",
"company_country": "Australia",
"company_identifiers": {
"vat": null,
"tax_id": null,
"business_registration_number": null,
"duns_number": null,
"company_id_number": null
},
"match_rate": 90
}{
"company_name": null,
"company_country": "Australia",
"company_identifiers": {
"vat": "VAT",
"tax_id": "TAX ID",
"business_registration_number": "BUSINESS REGISTRATION NUMBER",
"duns_number": "DUNS NUMBER",
"company_id_number": "COMPANY ID NUMBER"
},
"match_rate": 90
}{
"company_name": "IAF",
"company_country": "Australia",
"company_identifiers": {
"vat": null,
"tax_id": null,
"business_registration_number": null,
"duns_number": "DUNS NUMBER",
"company_id_number": "COMPANY ID NUMBER"
},
"match_rate": 100
}{
"company_name": "QualityTrade",
"company_country": "Australia",
"company_identifiers": { // Have priority over company_name
"vat": "VAT",
"tax_id": "TAX ID",
"business_registration_number": "BUSINESS REGISTRATION NUMBER",
"duns_number": "DUNS NUMBER",
"company_id_number": "COMPANY ID NUMBER"
},
"match_rate": 100
}curl --location --globoff --request POST '{API_URL}/company' \
--header 'x-http-authorization: <API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90
}'require "uri"
require "json"
require "net/http"
url = URI("{API_URL}/company")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["x-http-authorization"] =
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90
})
response = http.request(request)
puts response.read_bodyimport http.client
import json
conn = http.client.HTTPSConnection("{API_URL}")
payload = json.dumps({
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90
})
headers = {
'x-http-authorization': '<API_KEY>',
'Content-Type': 'application/json'
}
conn.request("POST", "/company", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{API_URL}/company',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90
}',
CURLOPT_HTTPHEADER => array(
'x-http-authorization: <API_KEY>',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"company_name\": \"string\",\n \"company_country\": \"string\",\n \"company_identifiers\": {\n \"vat\": \"string\",\n \"tax_id\": \"string\",\n \"business_registration_number\": \"string\",\n \"duns_number\": \"string\",\n \"company_id_number\": \"string\"\n },\n \"match_rate\": 90\n}");
Request request = new Request.Builder()
.url("{API_URL}/company")
.method("POST", body)
.addHeader("x-http-authorization", "<API_KEY>")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();const axios = require('axios');
let data = JSON.stringify({
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '{API_URL}/company',
headers: {
'x-http-authorization': '<API_KEY>',
'Content-Type': 'application/json'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "{API_URL}/company"
method := "POST"
payload := strings.NewReader(`{
"company_name": "string",
"company_country": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("x-http-authorization", "<API_KEY>")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}var options = new RestClientOptions("{API_URL}/company")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Post);
request.AddHeader("x-http-authorization", "<API_KEY>");
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@" ""company_name"": ""string""," + "\n" +
@" ""company_country"": ""string""," + "\n" +
@" ""company_identifiers"": {" + "\n" +
@" ""vat"": ""string""," + "\n" +
@" ""tax_id"": ""string""," + "\n" +
@" ""business_registration_number"": ""string""," + "\n" +
@" ""duns_number"": ""string""," + "\n" +
@" ""company_id_number"": ""string""" + "\n" +
@" }," + "\n" +
@" ""match_rate"": 90" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);{
"data": {
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": string,
"certified_entity_trading_name": string,
"country": string,
"certified_entity_addresses": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"country": string
}
],
"certificates": [
{
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": string,
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": [
{
"standard_name": string,
"scheme_name": string,
"is_accredited_mla": boolean
}
],
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"updated_at": integer
}
]
}
}{
"data": {
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": "Confidential",
"certified_entity_trading_name": "Confidential",
"country": string,
"certified_entity_addresses": [
{
"street": "Confidential",
"city": "Confidential",
"state": "Confidential",
"post_code": "Confidential",
"full_address": "Confidential",
"country": string
}
],
"certificates": [
{
"cert_id": string,
"accreditation_bodies_name": string,
"certification_bodies_name": string,
"certification_number": string,
"certification_status": string,
"certification_scope": string,
"certification_issuance_dates": {
"certification_expiry_date": string
},
"certification_standards_scheme": [
{
"standard_name": string,
"scheme_name": string,
"is_accredited_mla": boolean
}
],
"certification_main_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_additional_sites": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"scope": string,
"country": string
}
],
"certification_sectors": [
{
"sector_name": string,
"sector_code": string
}
],
"updated_at": integer
}
]
}
}{
"type": "string",
"title": "Validation errors.",
"status": 400,
"detail": "The request body has validation errors.",
"instance": "/company",
"code": "validation",
"errors": [
{
"field": "field_name",
"detail": "error_message"
}
]
}{
"type": "string",
"title": "Unauthorized access.",
"status": 401,
"detail": "Authentication failed due to invalid credentials or missing token.",
"instance": "/company",
"code": "unauthorized"
}{
"type": "string",
"title": "Forbidden access.",
"status": 403,
"detail": "You do not have access to this resource.",
"instance": "/company",
"code": "forbidden"
}{
"type": "string",
"title": "Insufficient credit.",
"status": 403,
"detail": "You are trying to access data that exceeds your available credits. To increase your available credits, please contact us at [email protected].",
"instance": "/company",
"code": "insufficient_credit"
}{
"type": "string",
"title": "API request limit reached.",
"status": 403,
"detail": "API request limit reached. To increase your API request limit, contact us at [email protected].",
"instance": "/company",
"code": "api_request_limit_reached"
}Find up to 10 company matches by name and match rate. Result includes IAF IDs.
POST /match-companies
Fields that are marked with an asterisk (*) are mandatory.
The API can match multiple Certified Entities from IAFCertSearch per request.
Company Information Requirements:
At least one of the two fields, company_name or company_identifiers, must be provided.
With Results
Some data are Confidential
No Results
Bad Request - Validation Errors
Unauthorized Access
Forbidden Access
Match Rate Value:
The default rate value is set to 100.
The minimum acceptable rate value is 80, regardless of whether a lower threshold is specified.
Valid rate values range from 80 to 100, in increments of 5.
Any rate value exceeding 100 will automatically be capped at 100.
Match Result Count Value:
The default value is set to 3.
The minimum acceptable value is 1.
The maximum acceptable value is 10.
Any value exceeding 10 will automatically be capped at 10.
Response Value:
The API will return multiple matched Certified Entity records without its Certificates.
If company_identifiers are provided, it will be included in the response.
match_result_count
Number / String
The maximum count of returned matched results.
Example:
10
Content-Type*
String
application/json
x-http-authorization*
String
API Key received from https://www.iafcertsearch.org/api-verification
Example:
x-http-authorization: <<API KEY>>
company_country*
String
Country/Economy of the main entity address for the Certified Entity. Supports full country name, alpha-2 and alpha-3 format (click for more information) Example: Australia | AU | AUS
company_name
String
Certified Entity Name (Company Name) as detailed on the Certificate.
company_identifiers
Object
Additional Company Fields
Format:
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
}
match_rate
Number / String
The percentage or similarity score indicating how closely the details of two companies match during the verification process.
Example:
100 | "100%"
{
"company_name": "IAF",
"company_country": "Australia",
"company_identifiers": {
"vat": null,
"tax_id": null,
"business_registration_number": null,
"duns_number": null,
"company_id_number": null
},
"match_rate": 90,
"match_result_count": 10
}{
"company_name": null,
"company_country": "Australia",
"company_identifiers": {
"vat": "VAT",
"tax_id": "TAX ID",
"business_registration_number": "BUSINESS REGISTRATION NUMBER",
"duns_number": "DUNS NUMBER",
"company_id_number": "COMPANY ID NUMBER"
},
"match_rate": 90,
"match_result_count": 10
}{
"company_name": "IAF",
"company_country": "Australia",
"company_identifiers": {
"vat": null,
"tax_id": null,
"business_registration_number": null,
"duns_number": "DUNS NUMBER",
"company_id_number": "COMPANY ID NUMBER"
},
"match_rate": 100,
"match_result_count": 10
}{
"company_name": "QualityTrade",
"company_country": "Australia",
"company_identifiers": { // Have priority over company_name
"vat": "VAT",
"tax_id": "TAX ID",
"business_registration_number": "BUSINESS REGISTRATION NUMBER",
"duns_number": "DUNS NUMBER",
"company_id_number": "COMPANY ID NUMBER"
},
"match_rate": 100,
"match_result_count": 10
}curl --location --request POST '{API_URL}/match-companies' \
--header 'x-http-authorization: <API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"company_country": "string",
"company_name": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90,
"match_result_count": 10
}'require "uri"
require "json"
require "net/http"
url = URI("{API_URL}/match-companies")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["x-http-authorization"] = "<API_KEY>"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"company_country": "string",
"company_name": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90,
"match_result_count": 10
})
response = http.request(request)
puts response.read_bodyimport http.client
import json
conn = http.client.HTTPConnection("{API_URL}")
payload = json.dumps({
"company_country": "string",
"company_name": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90,
"match_result_count": 10
})
headers = {
'x-http-authorization': '<API_KEY>',
'Content-Type': 'application/json'
}
conn.request("POST", "/match-companies", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{API_URL}/match-companies',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"company_country": "string",
"company_name": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90,
"match_result_count": 10
}',
CURLOPT_HTTPHEADER => array(
'x-http-authorization: <API_KEY>',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"company_country\": \"string\",\n \"company_name\": \"string\",\n \"company_identifiers\": {\n \"vat\": \"string\",\n \"tax_id\": \"string\",\n \"business_registration_number\": \"string\",\n \"duns_number\": \"string\",\n \"company_id_number\": \"string\"\n },\n \"match_rate\": 90,\n \"match_result_count\": 10\n}");
Request request = new Request.Builder()
.url("{API_URL}/match-companies")
.method("POST", body)
.addHeader("x-http-authorization", "<API_KEY>")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();const axios = require('axios');
let data = JSON.stringify({
"company_country": "string",
"company_name": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90,
"match_result_count": 10
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '{API_URL}/match-companies',
headers: {
'x-http-authorization': '<API_KEY>',
'Content-Type': 'application/json'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "{API_URL}/match-companies"
method := "POST"
payload := strings.NewReader(`{
"company_country": "string",
"company_name": "string",
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"match_rate": 90,
"match_result_count": 10
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("x-http-authorization", "<API_KEY>")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
} var options = new RestClientOptions("{API_URL}")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/match-companies", Method.Post);
request.AddHeader("x-http-authorization", "<API_KEY>");
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@" ""company_country"": ""string""," + "\n" +
@" ""company_name"": ""string""," + "\n" +
@" ""company_identifiers"": {" + "\n" +
@" ""vat"": ""string""," + "\n" +
@" ""tax_id"": ""string""," + "\n" +
@" ""business_registration_number"": ""string""," + "\n" +
@" ""duns_number"": ""string""," + "\n" +
@" ""company_id_number"": ""string""" + "\n" +
@" }," + "\n" +
@" ""match_rate"": 90," + "\n" +
@" ""match_result_count"": 10" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);{
"data": [
{
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": string,
"certified_entity_trading_name": string,
"country": string,
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"certified_entity_addresses": [
{
"street": string,
"city": string,
"state": string,
"post_code": string,
"full_address": string,
"country": string
}
],
},
...
]
}{
"data": [
{
"ce_id": string,
"matched_certified_entity_name": string,
"match_status": string,
"match_type": string,
"certified_entity_english_name": "Confidential",
"certified_entity_trading_name": "Confidential",
"country": string,
"company_identifiers": {
"vat": "string",
"tax_id": "string",
"business_registration_number": "string",
"duns_number": "string",
"company_id_number": "string"
},
"certified_entity_addresses": [
{
"street": "Confidential",
"city": "Confidential",
"state": "Confidential",
"post_code": "Confidential",
"full_address": "Confidential",
"country": string
}
],
},
...
]
}{
"data": []
}{
"type": "string",
"title": "Validation errors.",
"status": 400,
"detail": "The request body has validation errors.",
"instance": "/match-companies",
"code": "validation",
"errors": [
{
"field": "field_name",
"detail": "error_message"
}
]
}{
"type": "string",
"title": "Unauthorized access.",
"status": 401,
"detail": "Authentication failed due to invalid credentials or missing token.",
"instance": "/match-companies",
"code": "unauthorized"
}{
"type": "string",
"title": "Forbidden access.",
"status": 403,
"detail": "You do not have access to this resource.",
"instance": "/match-companies",
"code": "forbidden"
}{
"type": "string",
"title": "API request limit reached.",
"status": 403,
"detail": "API request limit reached. To increase your API request limit, contact us at [email protected].",
"instance": "/match-companies",
"code": "api_request_limit_reached"
}