Only this pageAll pages
Powered by GitBook
1 of 13

Verification Users - API Developer Guide

API Integration

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Responses

Content-Type Header

All responses are returned in JSON format. We specify this by sending the Content-Type header.

Status Codes

Below is a table containing descriptions of the various status codes we currently support against various resources.

Response Code
Description

Pagination

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": ""
    }
}

Authentication

Authorization Header

To authenticate, add an x-http-authorization header to your API request that contains an API Key.

API Keys

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.

Example Header

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-HERE
curl -X "GET" "{API_URL}/sample-endpoint" -H "x-http-authorization: Your.API.Key-HERE" -H "Content-Type: application/json"

Requests

Making a Request

API URL

To access the API URL, log in to your IAF CertSearch account and go to the page.

Getting Started

There are several ways you can get started with the IAFCertSearch Verification Users API.

Prerequisites

Before you can start using the API, you need to do the following:

  • Create/Activate an IAF CertSearch account.

Step-by-Step Signup Process

  • 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.

    Authorization Header

    You must provide an authorization header as described in Authentication.

    HTTP Verbs

    • 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

    Accept Header

    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.

    Arrays of Data

    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.

    Formatting Your Request

    Request Body

    When submitting data to a resource via POST or PUT, you must submit your payload in JSON.

    Pagination

    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.

    Successful Requests

    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

    API settings
    GET {API_URL}/sample-endpoint HTTP/1.1
    Accept: application/json
    GET {API_URL}/sample-endpoint?parameter=data1&parameter=data2 HTTP/1.1
    POST {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.1

    Errors

    Sometimes 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.

    Response Codes

    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

    Failed Requests

    The general format guidelines are displayed when the accompanying status code is returned.

    Verification APIs

    Verification APIs

    Retrieve Company & Certificates
    Bulk Retrieve Companies & Certificates
    Match Companies
    Retrieve Company & Certificates by IAF ID
    Bulk Retrieve Company & Certificates by IAF ID
    Retrieve Certificate by IAF ID
    GET {API_URL}/sample-endpoint HTTP/1.1
    HTTP/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}"
        }
      ]
    }

    Bulk Retrieve Company & Certificates by IAF ID

    Bulk Retrieve Company & Certificates by IAF ID

    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

    Headers

    Name
    Type
    Description

    Request Body

    Name
    Type
    Description

    Example Payload Request

    Requests

    Responses

    Request Successful

    Some data are Confidential

    No Results

    Unauthorized Access

    Forbidden Access

    Insufficient Credit

    Retrieve Certificate by IAF ID

    Retrieve Certificate by IAF ID

    Get certificate details by IAF ID.

    GET /certificate/{cert_id}

    Fields that are marked with an asterisk (*

    ce_ids
    that this endpoint accepts is 1000.
  • Response Value:

    • The API will return a list of matched Certified Entities with its Certificates.

  • API Request Limit Reached

    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"
    }
    ) are mandatory.
    • Certificate Information Requirements:

      • The API requires the cert_id of a Certificate.

    • Response value:

      • The API will return a single matched Certificate record.

    Headers

    Name
    Type
    Description

    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>>

    Parameters

    Key
    Type
    Description

    cert_id*

    String

    The ID of the Certificate. Example: cert_GuFIQmBnjaNG8Xvz7Q3DeBVx

    Requests

    Responses

    Request Successful

    Some data are Confidential

    All data are Confidential

    Unauthorized Access

    Forbidden Access

    Insufficient Credit

    API Request Limit Reached

    Not Found

    Retrieve Company & Certificates by IAF ID

    Retrieve Company & Certificates by IAF ID

    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 .

    Headers

    Name
    Type
    Description

    Parameters

    Key
    Type
    Description

    Requests

    Responses

    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_body
    import 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 - Single IAF ID

    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_body
    import 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"
    }

    Bulk Retrieve Companies & Certificates

    Bulk Retrieve Companies & Certificates

    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

    Headers

    Name
    Type
    Description

    Request Body

    Name
    Type
    Description

    Example Payload Request

    Responses

    Request Successful

    Some data are Confidential

    No Results

    Unauthorized Access

    Forbidden Access

    Insufficient Credit

    Retrieve Company & Certificates

    Retrieve Company & Certificates

    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.

    Headers

    Name
    Type
    Description

    Request Body

    Name
    Type
    Description

    Example Payload Request

    Responses

    Request Successful

    Some data are Confidential

    Bad Request - Validation Errors

    Unauthorized Access

    Forbidden Access

    Insufficient Credit

    100
    .
  • 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%"

    API Request Limit Reached

    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.

  • 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>>

    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_body
    import 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"
    }

    Match Companies

    Match Companies

    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.

    Headers

    Name
    Type
    Description

    Request Body

    Name
    Type
    Description

    Example Payload Request

    Responses

    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

    API Request Limit Reached

    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_body
    import 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"
    }