Skip to main content

👤 Face Recognition

👤 ā¸Ŗā¸°ā¸šā¸šā¸ˆā¸”ā¸ˆā¸ŗāšƒā¸šā¸Ģā¸™āš‰ā¸˛

Version Status

Welcome to Face Recognition API, an AI product developed by iApp Technology Co., Ltd. Our API is designed to recognize faces in images with high accuracy and speed. The API supports both single and multiple face recognition with flexible scoring options.

Try Demo

Visit our API Portal to test the Face Recognition API with your own images.

Getting Started​

  1. Prerequisites

    • An API key from iApp Technology
    • Image files containing faces
    • Supported formats: JPEG, JPG, PNG
    • Maximum file size: 2MB
  2. Quick Start

    • Fast processing time
    • High accuracy face recognition
    • Support for multiple file formats
    • Flexible scoring options
  3. Key Features

    • Single and multiple face recognition
    • Face bounding box coordinates
    • Recognition confidence scores
    • Face image extraction
    • Company-specific scoring options
  4. Security & Compliance

    • GDPR and PDPA compliant
    • No data retention after processing
How to get API Key?

Please visit API Portal to view your existing API key or request a new one.

Example​

Face Recognition Request:​

Image Preview

Face Detection Example

  curl  --location 'https://api.iapp.co.th/face_recog_single' \
--header 'apikey: {YOUR API KEY}' \
--form 'file=@"{YOUR UPLOADED FILE}"' \
--form 'company="{YOUR COMPANY NAME}"'

Face Recognition Response:​

{
"bbox": {
"xmax": 255.44717407226562,
"xmin": 154.39295959472656,
"ymax": 282.8843688964844,
"ymin": 155.49319458007812
},
"company": "{YOUR COMPANY NAME}",
"detection_score": 0.9998624324798584,
"message": "successfully performed",
"name": "unknown",
"process_time": 0.4776473045349121,
"recognition_score": 0.0
}

Features & Capabilities​

Core Features​

  • Single and multiple face recognition in images
  • Face detection with bounding box coordinates
  • Face feature extraction and matching
  • Customizable detection and recognition score thresholds
  • Face database management (add/remove faces)
  • Export/import of face features

Supported Fields​

  • Face bounding box coordinates (xmin, xmax, ymin, ymax)
  • Detection confidence score
  • Recognition confidence score
  • Person name identification
  • Processing time

API Reference​

Face Recognition Endpoints​

  1. Single Face Recognition (/face_recog_single)

    • Recognizes the most prominent face in an image
    • Returns face position and identity
  2. Multiple Face Recognition (/face_recog_multi)

    • Recognizes all faces in an image
    • Returns array of face position and identities
  3. Single Face Recognition (/face_recog_facecrop)

    • Recognizes the name of the person in the picture by using only face image
    • Returns face position and identity

Code Examples​

Python​

    import requests

def recognize_face(image_path, api_key, company):
url = "https://api.iapp.co.th/face_recog_single"

payload = {'company': {YOUR COMPANY NAME}}
files = [
('file', ({YOUR UPLOADED FILE}, open({YOUR UPLOADED FILE}, 'rb'), 'image/jpeg'))
]
headers = {
'apikey': {YOUR API KEY}
}

response = requests.post(url, headers=headers, data=payload, files=files)
return response.json()

JavaScript​

const myHeaders = new Headers();
myHeaders.append("apikey", "{YOUR API KEY}");

const formdata = new FormData();
formdata.append("file", fileInput.files[0], "{YOUR UPLOADED FILE}");
formdata.append("company", "{YOUR COMPANY NAME}");

const requestOptions = {
method: "POST",
headers: myHeaders,
body: formdata,
redirect: "follow"
};

fetch("https://api.iapp.co.th/face_recog_single", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));

PHP​

    <?php
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/face_recog_single',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array(
'file' => new CURLFILE('{YOUR UPLOADED FILE}'),
'company' => '{YOUR COMPANY NAME}'
),
CURLOPT_HTTPHEADER => array(
'apikey: {YOUR API KEY}'
),
));

$response = curl_exec($curl);
curl_close($curl);
echo $response;

Swift​

let parameters = [
[
"key": "file",
"src": "{YOUR UPLOADED FILE}",
"type": "file"
],
[
"key": "company",
"value": "{YOUR COMPANY NAME}",
"type": "text"
]] as [[String: Any]]

let boundary = "Boundary-\(UUID().uuidString)"
var body = Data()
var error: Error? = nil
for param in parameters {
if param["disabled"] != nil { continue }
let paramName = param["key"]!
body += Data("--\(boundary)\r\n".utf8)
body += Data("Content-Disposition:form-data; name=\"\(paramName)\"".utf8)
if param["contentType"] != nil {
body += Data("\r\nContent-Type: \(param["contentType"] as! String)".utf8)
}
let paramType = param["type"] as! String
if paramType == "text" {
let paramValue = param["value"] as! String
body += Data("\r\n\r\n\(paramValue)\r\n".utf8)
} else {
let paramSrc = param["src"] as! String
let fileURL = URL(fileURLWithPath: paramSrc)
if let fileContent = try? Data(contentsOf: fileURL) {
body += Data("; filename=\"\(paramSrc)\"\r\n".utf8)
body += Data("Content-Type: \"content-type header\"\r\n".utf8)
body += Data("\r\n".utf8)
body += fileContent
body += Data("\r\n".utf8)
}
}
}
body += Data("--\(boundary)--\r\n".utf8);
let postData = body


var request = URLRequest(url: URL(string: "https://api.iapp.co.th/face_recog_single")!,timeoutInterval: Double.infinity)
request.addValue("{YOUR API KEY}", forHTTPHeaderField: "apikey")
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}

task.resume()

Kotlin​

val client = OkHttpClient()
val mediaType = "text/plain".toMediaType()
val body = MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","{YOUR UPLOADED FILE}",
File("{YOUR UPLOADED FILE}").asRequestBody("application/octet-stream".toMediaType()))
.addFormDataPart("company","{YOUR COMPANY NAME}")
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/face_recog_single")
.post(body)
.addHeader("apikey", "{YOUR API KEY}")
.build()
val response = client.newCall(request).execute()

Java​

OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","{YOUR UPLOADED FILE}",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("{YOUR UPLOADED FILE}")))
.addFormDataPart("company","{YOUR COMPANY NAME}")
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/face_recog_single")
.method("POST", body)
.addHeader("apikey", "{YOUR API KEY}")
.build();
Response response = client.newCall(request).execute();

Dart​

var headers = {
'apikey': '{YOUR API KEY}'
};
var request = http.MultipartRequest('POST', Uri.parse('https://api.iapp.co.th/face_recog_single'));
request.fields.addAll({
'company': '{YOUR COMPANY NAME}'
});
request.files.add(await http.MultipartFile.fromPath('file', '{YOUR UPLOADED FILE}'));
request.headers.addAll(headers);

http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}

Limitations and Best Practices​

Limitations​

  • Maximum image size: 2MB
  • Minimum image dimensions: 600x400 pixels
  • Minimum face size: 112x112 pixels
  • Supported formats: JPG, JPEG, PNG
  • Queue length restrictions apply

Best Practices​

  • Use well-lit, clear face images
  • Ensure faces are not obscured
  • Submit appropriate image sizes
  • Handle API errors appropriately
  • Set optimal detection/recognition thresholds

Accuracy & Performance​

Overall Accuracy​

  • High accuracy for frontal faces
  • Performance varies with image quality
  • Recognition accuracy depends on registered face quality

Processing Speed​

  • Typical response time: 0.3-1.0 seconds
  • May vary with server load
  • Queue system manages high traffic

Factors Affecting Accuracy​

  • Image quality and lighting
  • Face angle and expression
  • Face size in image
  • Number of registered faces
  • Detection/recognition threshold settings

History​

The Face Recognition System has evolved to provide robust face detection and recognition capabilities while maintaining high performance and accuracy standards.

Pricing​

AI API Service NameEndpointIC Per RequestOn-Premise
Face Recognitioniapp_face_recog_v2_multiple_face0.5 IC/RequestContact
iapp_face_recog_v2_only_face0.3 IC/Request
iapp_face_recog_v2_single_face0.3 IC/Request