Developer documentation
Ek key, 19 endpoints. Har response JSON hai, har call success hone par hi charge hoti hai.
Overview
Sab endpoints ek hi pattern follow karte hain: api_key plus
service ke parameters bhejiye, JSON wapas milega.
🌐 Protocol
HTTPS over REST. Plain HTTP requests reject ho jati hain.
🔑 Authentication
Har request me api_key query parameter. Header X-API-KEY bhi chalta hai.
📦 Response
Har response me status field hai — 200 matlab success.
💰 Billing
Charge sirf successful hit par. Fail hone par wallet se kuch nahi katta.
Authentication
Aapki key dashboard me Developers → API Key ke neeche milegi. Wahin se rotate bhi kar sakte hain aur 5 IP tak whitelist bhi.
https://printportalapi.in/api/balance?api_key=YOUR_API_KEY
Key ko frontend JavaScript, public repo ya screenshot me kabhi mat rakhiye. Sirf server-side code me use kijiye. Leak ho jaye to dashboard se turant nayi key bana lijiye — purani usi second band ho jati hai.
Sign in kar lijiye — phir is page ke saare examples me aapki asli key apne aap bhar jayegi.
Balance Check
Wallet balance aur username return karta hai.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$url = "$apidomain/api/balance?api_key=$api_key";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/balance?api_key=YOUR_API_KEY"
import requests
r = requests.get("https://printportalapi.in/api/balance", params={
"api_key": "YOUR_API_KEY",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
});
const res = await fetch(`https://printportalapi.in/api/balance?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"data": { ... },
"application_no": "BALANCE_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "BALANCE_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
PAN Details
PAN number se naam, DOB aur gender.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| panno | String | Required | 10 character PAN number |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$panno = "CFAPR3702R";
$url = "$apidomain/api/pan_details?api_key=$api_key&panno=$panno";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/pan_details?api_key=YOUR_API_KEY&panno=CFAPR3702R"
import requests
r = requests.get("https://printportalapi.in/api/pan_details", params={
"api_key": "YOUR_API_KEY",
"panno": "CFAPR3702R",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
panno: "CFAPR3702R",
});
const res = await fetch(`https://printportalapi.in/api/pan_details?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"panno": "CFAPR3702R",
"data": { ... },
"application_no": "PAN_DETA_8C66CB645E251493",
"amount": "4.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "PAN_DETA_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
Aadhaar to PAN
Aadhaar se linked PAN number.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| aadhaar_no | String | Required | 12 digit Aadhaar number |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$aadhaar_no = "335400206902";
$url = "$apidomain/api/aadhaar_to_pan?api_key=$api_key&aadhaar_no=$aadhaar_no";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/aadhaar_to_pan?api_key=YOUR_API_KEY&aadhaar_no=335400206902"
import requests
r = requests.get("https://printportalapi.in/api/aadhaar_to_pan", params={
"api_key": "YOUR_API_KEY",
"aadhaar_no": "335400206902",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
aadhaar_no: "335400206902",
});
const res = await fetch(`https://printportalapi.in/api/aadhaar_to_pan?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"aadhaar_no": "335400206902",
"data": { ... },
"application_no": "AADHAAR__8C66CB645E251493",
"amount": "8.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "AADHAAR__8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
Mobile to PAN
Naam aur mobile number se PAN.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| name | String | Required | Customer name |
| mobile | String | Required | 10 digit mobile number |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$name = "Mohan Kumar";
$mobile = "9876543210";
$url = "$apidomain/api/mobile_to_pan?api_key=$api_key&name=$name&mobile=$mobile";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/mobile_to_pan?api_key=YOUR_API_KEY&name=Mohan+Kumar&mobile=9876543210"
import requests
r = requests.get("https://printportalapi.in/api/mobile_to_pan", params={
"api_key": "YOUR_API_KEY",
"name": "Mohan Kumar",
"mobile": "9876543210",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
name: "Mohan Kumar",
mobile: "9876543210",
});
const res = await fetch(`https://printportalapi.in/api/mobile_to_pan?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"name": "Mohan Kumar",
"mobile": "9876543210",
"data": { ... },
"application_no": "MOBILE_T_8C66CB645E251493",
"amount": "13.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "MOBILE_T_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
PAN to Aadhaar
PAN se Aadhaar number, naam, DOB.
Ye endpoint abhi maintenance pe hai — 503 return karega.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| pan | String | Required | 10 character PAN number |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$pan = "DPVPP9203R";
$url = "$apidomain/api/pan_to_aadhaar?api_key=$api_key&pan=$pan";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/pan_to_aadhaar?api_key=YOUR_API_KEY&pan=DPVPP9203R"
import requests
r = requests.get("https://printportalapi.in/api/pan_to_aadhaar", params={
"api_key": "YOUR_API_KEY",
"pan": "DPVPP9203R",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
pan: "DPVPP9203R",
});
const res = await fetch(`https://printportalapi.in/api/pan_to_aadhaar?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"pan": "DPVPP9203R",
"data": { ... },
"application_no": "PAN_TO_A_8C66CB645E251493",
"amount": "7.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "PAN_TO_A_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
RC Print (PDF)
Vehicle number se RC card PDF (base64).
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| rcno | String | Required | Vehicle registration number |
| cardtype | String | Optional | 1 = Old background, 2 = New background |
| chiptype | String | Optional | 1 = Chip, 2 = Non-chip |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$rcno = "BR03L8594";
$url = "$apidomain/api/rc?api_key=$api_key&rcno=$rcno";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
// pdf field ek base64 data URI hai
$b64 = preg_replace('#^data:application/pdf;base64,#', '', $data['pdf']);
file_put_contents("output.pdf", base64_decode($b64));
echo "Saved output.pdf — balance left: " . $data['balance_left'];
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/rc?api_key=YOUR_API_KEY&rcno=BR03L8594"
import requests
r = requests.get("https://printportalapi.in/api/rc", params={
"api_key": "YOUR_API_KEY",
"rcno": "BR03L8594",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
rcno: "BR03L8594",
});
const res = await fetch(`https://printportalapi.in/api/rc?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"rcno": "BR03L8594",
"pdf": "data:application/pdf;base64,JVBERi0xLjQKJb662...",
"application_no": "RC_8C66CB645E251493",
"amount": "8.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "RC_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
pdf field ek base64 data URI hai. Prefix hata ke
base64_decode() kijiye aur .pdf me save kar lijiye.
RC Details
RC ka full data + registered address.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| rcno | String | Required | Vehicle registration number |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$rcno = "BR03L8594";
$url = "$apidomain/api/rc_details?api_key=$api_key&rcno=$rcno";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/rc_details?api_key=YOUR_API_KEY&rcno=BR03L8594"
import requests
r = requests.get("https://printportalapi.in/api/rc_details", params={
"api_key": "YOUR_API_KEY",
"rcno": "BR03L8594",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
rcno: "BR03L8594",
});
const res = await fetch(`https://printportalapi.in/api/rc_details?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"rcno": "BR03L8594",
"data": { ... },
"application_no": "RC_DETAI_8C66CB645E251493",
"amount": "12.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "RC_DETAI_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
Vehicle Challan
Vehicle number se saare e-challan.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| vehicle_number | String | Required | Vehicle registration number |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$vehicle_number = "HR03AM4335";
$url = "$apidomain/api/vehicle_challan?api_key=$api_key&vehicle_number=$vehicle_number";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/vehicle_challan?api_key=YOUR_API_KEY&vehicle_number=HR03AM4335"
import requests
r = requests.get("https://printportalapi.in/api/vehicle_challan", params={
"api_key": "YOUR_API_KEY",
"vehicle_number": "HR03AM4335",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
vehicle_number: "HR03AM4335",
});
const res = await fetch(`https://printportalapi.in/api/vehicle_challan?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"vehicle_number": "HR03AM4335",
"data": { ... },
"application_no": "VEHICLE__8C66CB645E251493",
"amount": "13.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "VEHICLE__8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
DL Print (PDF)
DL number + DOB se licence PDF.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| dlno | String | Required | Driving licence number |
| dob | String | Required | Date of birth, DD-MM-YYYY |
| cardtype | String | Optional | 1 = White, 2 = Light blue |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$dlno = "DL0420110123456";
$dob = "15-08-1990";
$url = "$apidomain/api/dl?api_key=$api_key&dlno=$dlno&dob=$dob";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
// pdf field ek base64 data URI hai
$b64 = preg_replace('#^data:application/pdf;base64,#', '', $data['pdf']);
file_put_contents("output.pdf", base64_decode($b64));
echo "Saved output.pdf — balance left: " . $data['balance_left'];
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/dl?api_key=YOUR_API_KEY&dlno=DL0420110123456&dob=15-08-1990"
import requests
r = requests.get("https://printportalapi.in/api/dl", params={
"api_key": "YOUR_API_KEY",
"dlno": "DL0420110123456",
"dob": "15-08-1990",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
dlno: "DL0420110123456",
dob: "15-08-1990",
});
const res = await fetch(`https://printportalapi.in/api/dl?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"dlno": "DL0420110123456",
"dob": "15-08-1990",
"pdf": "data:application/pdf;base64,JVBERi0xLjQKJb662...",
"application_no": "DL_8C66CB645E251493",
"amount": "5.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "DL_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
pdf field ek base64 data URI hai. Prefix hata ke
base64_decode() kijiye aur .pdf me save kar lijiye.
LL Exam Submit
Learner licence exam request submit.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| appno | String | Required | Application number |
| password | String | Required | Application password |
| dob | String | Required | Date of birth, DD-MM-YYYY |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$appno = "APP123456";
$password = "yourpassword";
$dob = "15-08-1990";
$url = "$apidomain/api/ll_exam?api_key=$api_key&appno=$appno&password=$password&dob=$dob";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/ll_exam?api_key=YOUR_API_KEY&appno=APP123456&password=yourpassword&dob=15-08-1990"
import requests
r = requests.get("https://printportalapi.in/api/ll_exam", params={
"api_key": "YOUR_API_KEY",
"appno": "APP123456",
"password": "yourpassword",
"dob": "15-08-1990",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
appno: "APP123456",
password: "yourpassword",
dob: "15-08-1990",
});
const res = await fetch(`https://printportalapi.in/api/ll_exam?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"appno": "APP123456",
"password": "yourpassword",
"dob": "15-08-1990",
"data": { ... },
"application_no": "LL_EXAM_8C66CB645E251493",
"amount": "95.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "LL_EXAM_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
LL Exam Status
LL exam order ka status. Free hai.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| order_id | String | Required | Order ID from LL Exam response |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$order_id = "LLEXAM_1327E8C1D5245CD2";
$url = "$apidomain/api/ll_exam_status?api_key=$api_key&order_id=$order_id";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/ll_exam_status?api_key=YOUR_API_KEY&order_id=LLEXAM_1327E8C1D5245CD2"
import requests
r = requests.get("https://printportalapi.in/api/ll_exam_status", params={
"api_key": "YOUR_API_KEY",
"order_id": "LLEXAM_1327E8C1D5245CD2",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
order_id: "LLEXAM_1327E8C1D5245CD2",
});
const res = await fetch(`https://printportalapi.in/api/ll_exam_status?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"order_id": "LLEXAM_1327E8C1D5245CD2",
"data": { ... },
"application_no": "LL_EXAM__8C66CB645E251493",
"amount": "0.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "LL_EXAM__8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
Ration Print (PDF)
Ration card number se PDF link.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| rationno | String | Required | Ration card number |
| card_type | String | Optional | 1 = Photo design, 2 = Simple design |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$rationno = "123456789012";
$url = "$apidomain/api/ration?api_key=$api_key&rationno=$rationno";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
echo "PDF: " . $data['pdf_url'];
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/ration?api_key=YOUR_API_KEY&rationno=123456789012"
import requests
r = requests.get("https://printportalapi.in/api/ration", params={
"api_key": "YOUR_API_KEY",
"rationno": "123456789012",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
rationno: "123456789012",
});
const res = await fetch(`https://printportalapi.in/api/ration?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"rationno": "123456789012",
"pdf_url": "https://printportalapi.in/files/xxxxx.pdf",
"application_no": "RATION_8C66CB645E251493",
"amount": "8.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "RATION_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
Ye endpoint base64 ke bajaye hosted pdf_url deta hai.
Link 24 ghante valid rehta hai — apne server pe copy kar lijiye.
UP Ration to Aadhaar
UP ration card se poora parivaar + Aadhaar.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| ration_no | String | Required | 12 digit UP ration card number |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$ration_no = "215740456718";
$url = "$apidomain/api/upration_to_aadhaar?api_key=$api_key&ration_no=$ration_no";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/upration_to_aadhaar?api_key=YOUR_API_KEY&ration_no=215740456718"
import requests
r = requests.get("https://printportalapi.in/api/upration_to_aadhaar", params={
"api_key": "YOUR_API_KEY",
"ration_no": "215740456718",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
ration_no: "215740456718",
});
const res = await fetch(`https://printportalapi.in/api/upration_to_aadhaar?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"ration_no": "215740456718",
"data": { ... },
"application_no": "UPRATION_8C66CB645E251493",
"amount": "13.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "UPRATION_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
Agristack Farmer PDF
Aadhaar + state se farmer card PDF.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| aadhaar | String | Required | 12 digit Aadhaar number |
| state | String | Required | State code, e.g. BR, UP, DL, MH |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$aadhaar = "335400206902";
$state = "BR";
$url = "$apidomain/api/farmer?api_key=$api_key&aadhaar=$aadhaar&state=$state";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
// pdf field ek base64 data URI hai
$b64 = preg_replace('#^data:application/pdf;base64,#', '', $data['pdf']);
file_put_contents("output.pdf", base64_decode($b64));
echo "Saved output.pdf — balance left: " . $data['balance_left'];
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/farmer?api_key=YOUR_API_KEY&aadhaar=335400206902&state=BR"
import requests
r = requests.get("https://printportalapi.in/api/farmer", params={
"api_key": "YOUR_API_KEY",
"aadhaar": "335400206902",
"state": "BR",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
aadhaar: "335400206902",
state: "BR",
});
const res = await fetch(`https://printportalapi.in/api/farmer?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"aadhaar": "335400206902",
"state": "BR",
"pdf": "data:application/pdf;base64,JVBERi0xLjQKJb662...",
"application_no": "FARMER_8C66CB645E251493",
"amount": "3.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "FARMER_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
pdf field ek base64 data URI hai. Prefix hata ke
base64_decode() kijiye aur .pdf me save kar lijiye.
NPCI Status
Aadhaar ka NPCI mapping aur bank.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| aadhaar | String | Required | 12 digit Aadhaar number |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$aadhaar = "335400206902";
$url = "$apidomain/api/npci_status?api_key=$api_key&aadhaar=$aadhaar";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/npci_status?api_key=YOUR_API_KEY&aadhaar=335400206902"
import requests
r = requests.get("https://printportalapi.in/api/npci_status", params={
"api_key": "YOUR_API_KEY",
"aadhaar": "335400206902",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
aadhaar: "335400206902",
});
const res = await fetch(`https://printportalapi.in/api/npci_status?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"aadhaar": "335400206902",
"data": { ... },
"application_no": "NPCI_STA_8C66CB645E251493",
"amount": "8.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "NPCI_STA_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
IFSC Details
IFSC code se bank branch details.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| ifsc | String | Required | 11 character IFSC code |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$ifsc = "PUNB0MBGB06";
$url = "$apidomain/api/ifsc_details?api_key=$api_key&ifsc=$ifsc";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/ifsc_details?api_key=YOUR_API_KEY&ifsc=PUNB0MBGB06"
import requests
r = requests.get("https://printportalapi.in/api/ifsc_details", params={
"api_key": "YOUR_API_KEY",
"ifsc": "PUNB0MBGB06",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
ifsc: "PUNB0MBGB06",
});
const res = await fetch(`https://printportalapi.in/api/ifsc_details?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"ifsc": "PUNB0MBGB06",
"data": { ... },
"application_no": "IFSC_DET_8C66CB645E251493",
"amount": "2.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "IFSC_DET_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
PAN to GST
PAN se saare linked GSTIN.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| pan | String | Required | 10 character PAN number |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$pan = "DPVPP9203R";
$url = "$apidomain/api/pan_to_gst?api_key=$api_key&pan=$pan";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/pan_to_gst?api_key=YOUR_API_KEY&pan=DPVPP9203R"
import requests
r = requests.get("https://printportalapi.in/api/pan_to_gst", params={
"api_key": "YOUR_API_KEY",
"pan": "DPVPP9203R",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
pan: "DPVPP9203R",
});
const res = await fetch(`https://printportalapi.in/api/pan_to_gst?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"pan": "DPVPP9203R",
"data": { ... },
"application_no": "PAN_TO_G_8C66CB645E251493",
"amount": "2.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "PAN_TO_G_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
GST Details
GSTIN se firm ka registration data.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| gst | String | Required | 15 character GSTIN |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$gst = "20DPVPP9203R1Z1";
$url = "$apidomain/api/gst_details?api_key=$api_key&gst=$gst";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/gst_details?api_key=YOUR_API_KEY&gst=20DPVPP9203R1Z1"
import requests
r = requests.get("https://printportalapi.in/api/gst_details", params={
"api_key": "YOUR_API_KEY",
"gst": "20DPVPP9203R1Z1",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
gst: "20DPVPP9203R1Z1",
});
const res = await fetch(`https://printportalapi.in/api/gst_details?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"gst": "20DPVPP9203R1Z1",
"data": { ... },
"application_no": "GST_DETA_8C66CB645E251493",
"amount": "2.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "GST_DETA_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
Voter Mobile Link
EPIC number se mobile link request.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | String | Required | Your API key from the dashboard. |
| epic | String | Required | Voter EPIC number |
| mobile | String | Required | 10 digit mobile number |
<?php
$apidomain = "https://printportalapi.in";
$api_key = "YOUR_API_KEY";
$epic = "TMM0137133";
$mobile = "9876543210";
$url = "$apidomain/api/voter_link_instent?api_key=$api_key&epic=$epic&mobile=$mobile";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (($data['status'] ?? '') === '200') {
print_r($data);
} else {
echo "Failed: " . $data['message'];
}curl "https://printportalapi.in/api/voter_link_instent?api_key=YOUR_API_KEY&epic=TMM0137133&mobile=9876543210"
import requests
r = requests.get("https://printportalapi.in/api/voter_link_instent", params={
"api_key": "YOUR_API_KEY",
"epic": "TMM0137133",
"mobile": "9876543210",
}, timeout=60)
data = r.json()
print(data)// Server-side only — key ko browser me mat bhejiye
const params = new URLSearchParams({
api_key: "YOUR_API_KEY",
epic: "TMM0137133",
mobile: "9876543210",
});
const res = await fetch(`https://printportalapi.in/api/voter_link_instent?${params}`);
const data = await res.json();
console.log(data);{
"status": "200",
"message": "Success",
"epic": "TMM0137133",
"mobile": "9876543210",
"data": { ... },
"application_no": "VOTER_LI_8C66CB645E251493",
"amount": "7.00",
"balance_left": "4820.00"
}
{
"status": "404",
"message": "Record not found",
"application_no": "VOTER_LI_8C66CB645E251493",
"amount": "0.00",
"balance_left": "4825.00"
}
Wallet & billing
Prepaid model hai. Balance se har successful hit ka rate kat jata hai.
Charge on success only
API fail hui, timeout hua, ya record nahi mila — wallet se ₹ 0 katta hai.
Live balance
Har response me balance_left aata hai, alag call ki zarurat nahi.
Instant top up
Dashboard → Add balance se UPI payment. Credit turant ho jata hai.
Full ledger
Har credit, debit aur refund Statement page pe reference ID ke saath.
curl "https://printportalapi.in/api/balance?api_key=YOUR_API_KEY"
{ "status": "200", "Balance": "4820.00", "username": "yourname" }
Rate limits
Per API key, rolling one-minute window.
| Scope | Limit | On exceed |
|---|---|---|
| All endpoints | 120 requests / minute | 429 with retry_after |
| IP whitelist | Maximum 5 addresses | 403 if request IP is not listed |
{ "status": "429", "message": "Too many requests.", "retry_after": 24 }
Zyada throughput chahiye? Support ko bataiye — key-wise limit badha dete hain.
Error codes
Har response me status field hota hai. 200 ke alawa sab error hai.
| Code | Meaning | What to do |
|---|---|---|
| 200 | Success | Response me data hai, charge lag chuka hai. |
| 400 | Bad request | Parameter missing ya format galat — message padhiye. |
| 401 | Unauthorized | Key galat, missing ya disabled hai. |
| 402 | Insufficient balance | Wallet top up kijiye. |
| 403 | Forbidden | Request IP whitelist me nahi, ya service off hai. |
| 404 | Not found | Record nahi mila — charge nahi laga. |
| 429 | Too many requests | retry_after second ruk kar retry kijiye. |
| 503 | Maintenance | Endpoint temporarily band hai, thodi der baad try kijiye. |