Live & active

Developer documentation

Ek key, 19 endpoints. Har response JSON hai, har call success hone par hi charge hoti hai.

19Endpoints
RESTAPI type
120/minRate limit
BASE URL https://printportalapi.in/api/
Getting started

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.

Getting started

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.

Account

Balance Check

Wallet balance aur username return karta hai.

GET /api/balance Free
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "data": { ... },
  "application_no": "BALANCE_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "BALANCE_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
PAN

PAN Details

PAN number se naam, DOB aur gender.

GET /api/pan_details ₹ 4.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "panno": "CFAPR3702R",
  "data": { ... },
  "application_no": "PAN_DETA_8C66CB645E251493",
  "amount": "4.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "PAN_DETA_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
PAN

Aadhaar to PAN

Aadhaar se linked PAN number.

GET /api/aadhaar_to_pan ₹ 8.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "aadhaar_no": "335400206902",
  "data": { ... },
  "application_no": "AADHAAR__8C66CB645E251493",
  "amount": "8.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "AADHAAR__8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
PAN

Mobile to PAN

Naam aur mobile number se PAN.

GET /api/mobile_to_pan ₹ 13.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "name": "Mohan Kumar",
  "mobile": "9876543210",
  "data": { ... },
  "application_no": "MOBILE_T_8C66CB645E251493",
  "amount": "13.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "MOBILE_T_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
PAN

PAN to Aadhaar

PAN se Aadhaar number, naam, DOB.

GET /api/pan_to_aadhaar ₹ 7.00 / hit

Ye endpoint abhi maintenance pe hai — 503 return karega.

ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "pan": "DPVPP9203R",
  "data": { ... },
  "application_no": "PAN_TO_A_8C66CB645E251493",
  "amount": "7.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "PAN_TO_A_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
Vehicle

RC Print (PDF)

Vehicle number se RC card PDF (base64).

GET /api/rc ₹ 8.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "rcno": "BR03L8594",
  "pdf": "data:application/pdf;base64,JVBERi0xLjQKJb662...",
  "application_no": "RC_8C66CB645E251493",
  "amount": "8.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "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.

Vehicle

RC Details

RC ka full data + registered address.

GET /api/rc_details ₹ 12.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "rcno": "BR03L8594",
  "data": { ... },
  "application_no": "RC_DETAI_8C66CB645E251493",
  "amount": "12.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "RC_DETAI_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
Vehicle

Vehicle Challan

Vehicle number se saare e-challan.

GET /api/vehicle_challan ₹ 13.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "vehicle_number": "HR03AM4335",
  "data": { ... },
  "application_no": "VEHICLE__8C66CB645E251493",
  "amount": "13.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "VEHICLE__8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
Vehicle

DL Print (PDF)

DL number + DOB se licence PDF.

GET /api/dl ₹ 5.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "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"
}
404 Not found — wallet se kuch nahi kata
{
  "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.

Vehicle

LL Exam Submit

Learner licence exam request submit.

GET /api/ll_exam ₹ 95.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "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"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "LL_EXAM_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
Vehicle

LL Exam Status

LL exam order ka status. Free hai.

GET /api/ll_exam_status Free
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "order_id": "LLEXAM_1327E8C1D5245CD2",
  "data": { ... },
  "application_no": "LL_EXAM__8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "LL_EXAM__8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
Ration

Ration Print (PDF)

Ration card number se PDF link.

GET /api/ration ₹ 8.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "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"
}
404 Not found — wallet se kuch nahi kata
{
  "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.

Ration

UP Ration to Aadhaar

UP ration card se poora parivaar + Aadhaar.

GET /api/upration_to_aadhaar ₹ 13.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "ration_no": "215740456718",
  "data": { ... },
  "application_no": "UPRATION_8C66CB645E251493",
  "amount": "13.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "UPRATION_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
Farmer

Agristack Farmer PDF

Aadhaar + state se farmer card PDF.

GET /api/farmer ₹ 3.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "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"
}
404 Not found — wallet se kuch nahi kata
{
  "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.

Banking

NPCI Status

Aadhaar ka NPCI mapping aur bank.

GET /api/npci_status ₹ 8.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "aadhaar": "335400206902",
  "data": { ... },
  "application_no": "NPCI_STA_8C66CB645E251493",
  "amount": "8.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "NPCI_STA_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
Banking

IFSC Details

IFSC code se bank branch details.

GET /api/ifsc_details ₹ 2.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "ifsc": "PUNB0MBGB06",
  "data": { ... },
  "application_no": "IFSC_DET_8C66CB645E251493",
  "amount": "2.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "IFSC_DET_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
GST

PAN to GST

PAN se saare linked GSTIN.

GET /api/pan_to_gst ₹ 2.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "pan": "DPVPP9203R",
  "data": { ... },
  "application_no": "PAN_TO_G_8C66CB645E251493",
  "amount": "2.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "PAN_TO_G_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
GST

GST Details

GSTIN se firm ka registration data.

GET /api/gst_details ₹ 2.00 / hit
ParameterTypeRequiredDescription
api_keyStringRequired 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);
200 Success
{
  "status": "200",
  "message": "Success",
  "gst": "20DPVPP9203R1Z1",
  "data": { ... },
  "application_no": "GST_DETA_8C66CB645E251493",
  "amount": "2.00",
  "balance_left": "4820.00"
}
404 Not found — wallet se kuch nahi kata
{
  "status": "404",
  "message": "Record not found",
  "application_no": "GST_DETA_8C66CB645E251493",
  "amount": "0.00",
  "balance_left": "4825.00"
}
Reference

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

Rate limits

Per API key, rolling one-minute window.

ScopeLimitOn exceed
All endpoints120 requests / minute 429 with retry_after
IP whitelistMaximum 5 addresses 403 if request IP is not listed
429 Too many requests
{ "status": "429", "message": "Too many requests.", "retry_after": 24 }

Zyada throughput chahiye? Support ko bataiye — key-wise limit badha dete hain.

Reference

Error codes

Har response me status field hota hai. 200 ke alawa sab error hai.

CodeMeaningWhat to do
200SuccessResponse me data hai, charge lag chuka hai.
400Bad requestParameter missing ya format galat — message padhiye.
401UnauthorizedKey galat, missing ya disabled hai.
402Insufficient balanceWallet top up kijiye.
403ForbiddenRequest IP whitelist me nahi, ya service off hai.
404Not foundRecord nahi mila — charge nahi laga.
429Too many requestsretry_after second ruk kar retry kijiye.
503MaintenanceEndpoint temporarily band hai, thodi der baad try kijiye.
© 2026 PrintPortal API · Documentation v1.0 · Back to dashboard