API Documentation: RTO Vehicle Verification
Introduction
Welcome to the RTO Vehicle Information API, powered by symflow.in. This service provides a robust and reliable way to programmatically retrieve comprehensive vehicle registration details from official RTO data sources across India.
Our API acts as a secure and efficient proxy, abstracting the complexities of direct integration with various government systems. By using our service, your application (e.g., symflow.com) can quickly and accurately fetch vehicle information, ensuring data integrity and enhancing your user experience.
This documentation will guide you through the necessary steps to integrate with our API, covering authentication, endpoint details, request/response formats, and how to get support.
Authentication
All requests to the RTO Vehicle Information API must be authenticated using a Bearer Token. This token is unique to your application and is provided by symflow.in.
You must include your API token in the `Authorization` header of every request. The format should be:
Important: Replace `YOUR_API_TOKEN_HERE` with the actual API token provided to your account by symflow.in. This is an illustrative example; your token will be different and should be kept confidential.
Example Authorization Header:
Authorization: Bearer YOUR_API_TOKEN_HERE
API Endpoint
The primary endpoint for retrieving vehicle information is:
GET https://rto.symflow.in/api/v2/public/checkx/{vehicleNumber}
Replace {vehicleNumber} with the actual Indian vehicle registration number you wish to query (e.g., PB39J4321).
This endpoint expects a GET request.
Request & Response
📌 Request Example using cURL (PHP)
public function api_testing(Request $request) {
$vehicleNumber = '';
$token = 'YOUR_API_TOKEN_HERE';
$url = "https://rto.symflow.in/api/v2/public/checkx/{$vehicleNumber}";
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => [
'Accept: application/json',
'Authorization: Bearer ' . $token,
],
]);
$body = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);
if ($curlError) {
return response()->json([
'status' => 'error',
'message' => 'cURL error contacting /checkx endpoint',
'detail' => $curlError,
], 500);
}
return response($body, $httpCode)
->header('Content-Type', 'application/json');
}
OR
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://rto.symflow.in/api/v2/public/checkx/{$vehicleNumber}',
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(
'Accept: application/json',
'Authorization: Bearer YOUR_API_TOKEN_HERE'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
✅ Expected Success Response
{
"valid": true,
"status": "ACTIVE",
"registered": "---",
"owner": "----",
"masked": null,
"ownerNumber": "---",
"father": "--",
"currentAddress": "--",
"permanentAddress": "--",
"mobile": null,
"category": "--",
"categoryDescription": "---",
"chassisNumber": "--",
"engineNumber": "---",
"makerDescription": "--",
"makerModel": "---",
"makerVariant": null,
"bodyType": "--",
"fuelType": "--",
"colorType": "Grey Black",
"normsType": "---",
"fitnessUpto": "---",
"financed": --,
"lender": "--",
"insuranceProvider": "----",
"insurancePolicyNumber": "-----",
"insuranceUpto": "---",
"manufactured": "--",
"rto": "---",
"cubicCapacity": "--",
"grossWeight": "---",
"wheelBase": "---",
"unladenWeight": "--",
"cylinders": "-",
"seatingCapacity": "-",
"sleepingCapacity": "0",
"standingCapacity": "0",
"pollutionCertificateNumber": null,
"pollutionCertificateUpto": "--",
"permitNumber": null,
"permitIssued": "NA",
"permitFrom": "NA",
"permitUpto": "NA",
"permitType": null,
"taxUpto": "--",
"taxPaidUpto": "--",
"nationalPermitNumber": null,
"nationalPermitIssued": null,
"nationalPermitFrom": null,
"nationalPermitUpto": null,
"blacklistStatus": null,
"nocDetails": null,
"challanDetails": null,
"nationalPermitIssuedBy": "--",
"commercial": false,
"exShowroomPrice": null,
"nonUseStatus": null,
"nonUseFrom": null,
"nonUseTo": null,
"blacklistDetails": null
}
❌ Common Error Responses
401 Unauthorized - Missing or invalid API token
{
"message": "Unauthenticated. Bearer token required."
}
402 Payment Required - Wallet balance too low
{
"message": "Insufficient wallet balance."
}
500 Internal Server Error - Attestr or proxy error
{
"message": "Internal server error."
}
Support
If you encounter any issues during integration or have questions about our API, please do not hesitate to reach out to our support team.
Email: support@symflow.in
Please include your app name (e.g., symflow.com), and provide error messages, request samples, and screenshots when contacting us.
