Rc to Puc Premium API
Rc to Puc Premium
Introduction
The Rc to Puc Premium API returns the Pollution Under Control certificate status of an Indian vehicle against its registration number. For a single registration number you receive three fields: whether a valid PUC certificate is currently in force, the date that certificate expires, and the certificate number itself.
puc_status is derived entirely from the expiry date returned in the same response. It reads Active when puc_expiry falls on or after the current date, and Inactive in every other case. You are required to treat these two fields as a pair rather than reading puc_status in isolation.
An Inactive response carries two distinct meanings and you are required to distinguish them by inspecting puc_expiry. When puc_expiry holds a date, that certificate existed and has lapsed on the date shown. When puc_expiry is an empty string, no PUC certificate details could be established for that vehicle at all — this is not a statement that the vehicle has no certificate, only that none could be confirmed. Treat the empty-expiry case as "unknown", not as "expired".
Dates are returned in DD/MM/YYYY format. The API is a stateless lookup — there is no request id to retain, no idempotency key, and no expiry window on anything returned to you. Each call is independent and repeating the same registration number returns the same result. A response is returned within a maximum of 7 seconds; requests that cannot be completed inside that window return an error rather than continuing to wait.
How to call the API
You are required to pass your API key in the Authorization header and set Content-Type to application/json. The API accepts POST requests only.
A successful lookup returns HTTP 200 with the payload wrapped in a result object.
{
"result": { }
}Any failure returns the payload wrapped in an error object carrying a machine-readable reason and a human-readable message. Branch your handling on reason, not on message, as message text may be refined over time.
{
"error": {
"name": "error",
"message": "No record was found for the given Registration number",
"status": 404,
"reason": "NOT_FOUND",
"type": "Not Found",
"statusCode": 404
}
}API Input Guidelines
- You are required to pass the vehicle registration number in regNo. This field is mandatory.
- The registration number is case-insensitive. up16by2288 and UP16BY2288 are treated identically.
- All whitespace is removed before the number is processed. UP16BY2288, UP 16 BY 2288 and up16by2288 all resolve to the same vehicle.
- Separator characters are not accepted. UP-16-BY-2288 is rejected as invalid.
- Only letters and digits are permitted. Any other character causes the request to be rejected.
- After whitespace is removed, the registration number must be between 6 and 10 characters.
- Standard Indian formats are accepted, including the state-series form (UP16BY2288), the shorter form (KA011234), and Bharat series numbers (22BH1234AB).
- One vehicle per request. The API does not accept arrays or batch input.
- Any additional fields in the request body are ignored.
Sample Curl
Preproduction
curl --location 'https://api-preproduction.signzy.app/api/v3/vehicle/pucc-premium' \
--header 'Content-Type: application/json' \
--header 'Authorization: <Auth Token>' \
--data '{
"regNo": "UP16BY2288"
}'Production
curl --location 'https://api.signzy.app/api/v3/vehicle/pucc-premium' \
--header 'Content-Type: application/json' \
--header 'Authorization: <Auth Token>' \
--data '{
"regNo": "UP16BY2288"
}'Input Parameters
Parameter | Description | Required |
|---|---|---|
Authorization | Your API key, passed as a header. | Yes |
Content-Type | Must be set to application/json. | Yes |
regNo | Vehicle registration number to look up. Case-insensitive; whitespace is ignored. | Yes |
Sample Response
Valid certificate found
{
"result": {
"puc_status": "Active",
"puc_expiry": "29/07/2027",
"certificate_number": "UP01603530017052"
}
}Certificate found but lapsed
{
"result": {
"puc_status": "Inactive",
"puc_expiry": "27/01/2026",
"certificate_number": "UP08500850016154"
}
}No certificate details could be established
{
"result": {
"puc_status": "Inactive",
"puc_expiry": "",
"certificate_number": ""
}
}Response Parameters
PARAMETER NAME | REQUIRED/OPTIONAL | DATA TYPE | DESCRIPTION |
|---|---|---|---|
result | Required | Object | Container for the lookup result. Present on every successful response. |
result.puc_status | Required | String | Current PUC certificate state. One of: Active, Inactive. Returns Active only when puc_expiry falls on or after the current date. |
result.puc_expiry | Required | String | Expiry date of the PUC certificate in DD/MM/YYYY format. Returns an empty string when no certificate details could be established. |
result.certificate_number | Required | String | PUC certificate number as issued. Returns an empty string when no certificate details could be established. |
Status Codes
CODE | REASON | MESSAGE |
|---|---|---|
400 | BAD_REQUEST | Vehicle Number is not valid |
404 | NOT_FOUND | No record was found for the given Registration number |
409 | CONFLICT | Error in getting data from Upstream |
409 | CONFLICT | Something is broken. This is usually a temporary error, Try again later. |
409 | CONFLICT | Upstream is Down |
409 | TIMEOUT | Request exceeded the maximum allowed processing time |
A 404 means the registration number could not be found and is a definitive answer; retrying will not change it. A 409 indicates a temporary condition — the lookup could not be completed at that moment — and the same request may succeed on a later attempt.
Getting help
Please feel free to contact us if you have any questions, require clarification, or have ideas for how to make the documents or any of our services better. You can reach out to us at [email protected].