API Documentation
API HUB — REST API সার্ভিস। নিচে প্রতিটি API-র আলাদা documentation, request example এবং response format দেখানো হয়েছে।
সব API এক নজরে
Authentication
সব API request-এ একটি valid API key লাগবে। Key পেতে Register করুন।
X-API-Key: vbn_your_api_key_here
?api_key=vbn_your_api_key_here
https://my-api.top/api/v1
Land Tax Dakhila Finder
Find Land Tax Dakhila PDFs from a portal URL. Returns PDF download links when dakhila records are found.
| Name | Type | Required | Description |
|---|---|---|---|
input |
string | ✓ Required | The portal URL to search for dakhila |
api_key |
string | ✓ Yes* | Your API key (*or pass via X-API-Key header) |
curl --location 'https://my-api.top/api/v1/find_dakhila?input=YOUR_VALUE' \
--header 'X-API-Key: vbn_your_api_key_here'
GET /api/v1/find_dakhila?input=YOUR_VALUE HTTP/1.1
Host: my-api.top
X-API-Key: vbn_your_api_key_here
import requests
response = requests.get(
'https://my-api.top/api/v1/find_dakhila',
headers={'X-API-Key': 'vbn_your_api_key_here'},
params={
"input": "YOUR_VALUE"
}
)
data = response.json()
print(data)
const response = await fetch(
'https://my-api.top/api/v1/find_dakhila?input=YOUR_VALUE',
{ headers: { 'X-API-Key': 'vbn_your_api_key_here' } }
);
const data = await response.json();
console.log(data);
{
"success": true,
"pdf_urls": ["https://example.com/file1.pdf","https://example.com/file2.pdf"],
"charged": 150,
"remaining_balance": 850.00
}
{
"success": false,
"charged": 0,
"remaining_balance": 1000.00,
"message": "Record not found"
}
Land Tax Payment Link
Generate land tax payment link from citizen portal URL. Returns payment gateway URL and holding details including demand amount.
| Name | Type | Required | Description |
|---|---|---|---|
url |
string | ✓ Required | The citizen portal URL for payment link generation |
advance_year |
integer | Optional | Advance year for payment (default: 0) |
api_key |
string | ✓ Yes* | Your API key (*or pass via X-API-Key header) |
curl --location 'https://my-api.top/api/v1/payment_link_gen?url=YOUR_VALUE&advance_year=YOUR_VALUE' \
--header 'X-API-Key: vbn_your_api_key_here'
GET /api/v1/payment_link_gen?url=YOUR_VALUE&advance_year=YOUR_VALUE HTTP/1.1
Host: my-api.top
X-API-Key: vbn_your_api_key_here
import requests
response = requests.get(
'https://my-api.top/api/v1/payment_link_gen',
headers={'X-API-Key': 'vbn_your_api_key_here'},
params={
"url": "YOUR_VALUE",
"advance_year": "YOUR_VALUE"
}
)
data = response.json()
print(data)
const response = await fetch(
'https://my-api.top/api/v1/payment_link_gen?url=YOUR_VALUE&advance_year=YOUR_VALUE',
{ headers: { 'X-API-Key': 'vbn_your_api_key_here' } }
);
const data = await response.json();
console.log(data);
{
"success": true,
"url": "https://example.com/result/abc123",
"charged": 150,
"remaining_balance": 850.00
}
{
"success": false,
"charged": 0,
"remaining_balance": 1000.00,
"message": "Record not found"
}
BDRIS Search
Search Bangladesh Birth/Death Registration records. Search is free, buy individual records to see full details.
| Name | Type | Required | Description |
|---|---|---|---|
personNameEn |
string | Optional | Person name in English |
personNameBn |
string | Optional | Person name in Bangla |
gender |
string | Optional | Gender: Male or Female |
birthYearFrom |
integer | Optional | Birth year start |
birthYearTo |
integer | Optional | Birth year end |
limit |
integer | Optional | Maximum results to return |
skip |
integer | Optional | Number of results to skip |
ubrn |
string | Optional | Unique Birth Registration Number |
match |
string | Optional | Match mode: exact or fuzzy |
api_key |
string | ✓ Yes* | Your API key (*or pass via X-API-Key header) |
curl --location 'https://my-api.top/api/v1/bdris_search?personNameEn=YOUR_VALUE&personNameBn=YOUR_VALUE&gender=YOUR_VALUE&birthYearFrom=YOUR_VALUE&birthYearTo=YOUR_VALUE&limit=YOUR_VALUE&skip=YOUR_VALUE&ubrn=YOUR_VALUE&match=YOUR_VALUE' \
--header 'X-API-Key: vbn_your_api_key_here'
GET /api/v1/bdris_search?personNameEn=YOUR_VALUE&personNameBn=YOUR_VALUE&gender=YOUR_VALUE&birthYearFrom=YOUR_VALUE&birthYearTo=YOUR_VALUE&limit=YOUR_VALUE&skip=YOUR_VALUE&ubrn=YOUR_VALUE&match=YOUR_VALUE HTTP/1.1
Host: my-api.top
X-API-Key: vbn_your_api_key_here
import requests
response = requests.get(
'https://my-api.top/api/v1/bdris_search',
headers={'X-API-Key': 'vbn_your_api_key_here'},
params={
"personNameEn": "YOUR_VALUE",
"personNameBn": "YOUR_VALUE",
"gender": "YOUR_VALUE",
"birthYearFrom": "YOUR_VALUE",
"birthYearTo": "YOUR_VALUE",
"limit": "YOUR_VALUE",
"skip": "YOUR_VALUE",
"ubrn": "YOUR_VALUE",
"match": "YOUR_VALUE"
}
)
data = response.json()
print(data)
const response = await fetch(
'https://my-api.top/api/v1/bdris_search?personNameEn=YOUR_VALUE&personNameBn=YOUR_VALUE&gender=YOUR_VALUE&birthYearFrom=YOUR_VALUE&birthYearTo=YOUR_VALUE&limit=YOUR_VALUE&skip=YOUR_VALUE&ubrn=YOUR_VALUE&match=YOUR_VALUE',
{ headers: { 'X-API-Key': 'vbn_your_api_key_here' } }
);
const data = await response.json();
console.log(data);
{
"success": true,
"results": ["...results..."],
"charged": 120,
"remaining_balance": 850.00
}
{
"success": false,
"charged": 0,
"remaining_balance": 1000.00,
"message": "Record not found"
}
Birth Certificate Verification
জন্ম নিবন্ধন সনদ যাচাই। UBRN এবং জন্ম তারিখ দিয়ে সম্পূর্ণ তথ্য পান। / Verify Bangladesh Birth Registration Certificate using UBRN and date of birth.
| Name | Type | Required | Description | Location |
|---|---|---|---|---|
ubrn |
string | ✓ Required | Birth Registration Number (জন্ম নিবন্ধন নম্বর) — 17 digits | JSON Body |
dob |
string | ✓ Required | Date of Birth in YYYY-MM-DD format (e.g. 2004-04-04) | JSON Body |
api_key |
string | ✓ Yes* | Your API key (*or pass via X-API-Key header) |
Header / Query |
curl --location 'https://my-api.top/api/v1/birth' \
--header 'X-API-Key: vbn_your_api_key_here' \
--header 'Content-Type: application/json' \
--data '{
"ubrn": "YOUR_VALUE",
"dob": "YOUR_VALUE"
}'
POST /api/v1/birth HTTP/1.1
Host: my-api.top
X-API-Key: vbn_your_api_key_here
Content-Type: application/json
{
"ubrn": "YOUR_VALUE",
"dob": "YOUR_VALUE"
}
import requests
response = requests.post(
'https://my-api.top/api/v1/birth',
headers={'X-API-Key': 'vbn_your_api_key_here'},
json={
"ubrn": 'YOUR_VALUE',
"dob": 'YOUR_VALUE'
}
)
data = response.json()
print(data)
const response = await fetch(
'https://my-api.top/api/v1/birth',
{
method: 'POST',
headers: {
'X-API-Key': 'vbn_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({"ubrn":"YOUR_VALUE","dob":"YOUR_VALUE"})
}
);
const data = await response.json();
console.log(data);
{
"success": true,
"data": {
"field1": "value",
"field2": "value",
"...": "..."
},
"charged": 2,
"remaining_balance": 850.00
}
{
"success": false,
"charged": 0,
"remaining_balance": 1000.00,
"message": "Record not found"
}
Land Password Reset
ভূমি সেবা পোর্টালে মোবাইল এবং নতুন পাসওয়ার্ড দিয়ে পাসওয়ার্ড রিসেট করুন। / Reset land portal password using mobile number and new password.
| Name | Type | Required | Description |
|---|---|---|---|
mobile |
string | ✓ Required | Mobile Number (e.g. 1724825564) |
password |
string | Optional | New Password (Optional, auto-generated if empty) |
api_key |
string | ✓ Yes* | Your API key (*or pass via X-API-Key header) |
curl --location 'https://my-api.top/api/v1/land-password-reset?mobile=YOUR_VALUE&password=YOUR_VALUE' \
--header 'X-API-Key: vbn_your_api_key_here'
GET /api/v1/land-password-reset?mobile=YOUR_VALUE&password=YOUR_VALUE HTTP/1.1
Host: my-api.top
X-API-Key: vbn_your_api_key_here
import requests
response = requests.get(
'https://my-api.top/api/v1/land-password-reset',
headers={'X-API-Key': 'vbn_your_api_key_here'},
params={
"mobile": "YOUR_VALUE",
"password": "YOUR_VALUE"
}
)
data = response.json()
print(data)
const response = await fetch(
'https://my-api.top/api/v1/land-password-reset?mobile=YOUR_VALUE&password=YOUR_VALUE',
{ headers: { 'X-API-Key': 'vbn_your_api_key_here' } }
);
const data = await response.json();
console.log(data);
{
"success": true,
"success": ["...results..."],
"charged": 200,
"remaining_balance": 850.00
}
{
"success": false,
"charged": 0,
"remaining_balance": 1000.00,
"message": "Record not found"
}
NID Auto Sign Copy
NID অটো সাইন কপি। NID নম্বর, মোবাইল নম্বর, BRN, বা ফর্ম নম্বর দিয়ে তথ্য যাচাই করুন। / NID Auto Sign Copy — Verify information using NID Number, Mobile Number, BRN, or Form Number.
| Name | Type | Required | Description |
|---|---|---|---|
search |
string | ✓ Required | NID Number, Mobile Number, BRN, or Form Number to search |
api_key |
string | ✓ Yes* | Your API key (*or pass via X-API-Key header) |
curl --location 'https://my-api.top/api/v1/nid-sign-copy?search=YOUR_VALUE' \
--header 'X-API-Key: vbn_your_api_key_here'
GET /api/v1/nid-sign-copy?search=YOUR_VALUE HTTP/1.1
Host: my-api.top
X-API-Key: vbn_your_api_key_here
import requests
response = requests.get(
'https://my-api.top/api/v1/nid-sign-copy',
headers={'X-API-Key': 'vbn_your_api_key_here'},
params={
"search": "YOUR_VALUE"
}
)
data = response.json()
print(data)
const response = await fetch(
'https://my-api.top/api/v1/nid-sign-copy?search=YOUR_VALUE',
{ headers: { 'X-API-Key': 'vbn_your_api_key_here' } }
);
const data = await response.json();
console.log(data);
{
"success": true,
"success": ["...results..."],
"charged": 50,
"remaining_balance": 850.00
}
{
"success": false,
"charged": 0,
"remaining_balance": 1000.00,
"message": "Record not found"
}
NID USER PASS
NID Verification via NID Secure Gateway. Requires a Photo File, and either a QR File or Cipher.
| Name | Type | Required | Description |
|---|---|---|---|
photo_file |
file | ✓ Required | Uploaded Photo File image (Required) |
qr_file |
file | Optional | Uploaded QR File image (Optional if cipher_b64 is provided) |
cipher_b64 |
string | Optional | Base64 encoded cipher string (Optional if qr_file is provided) |
api_key |
string | ✓ Yes* | Your API key (*or pass via X-API-Key header) |
curl --location 'https://my-api.top/api/v1/nid-secure-gateway' \
--header 'X-API-Key: vbn_your_api_key_here' \
--form 'photo_file=@"/path/to/file"' \
--form 'qr_file=@"/path/to/file"' \
--form 'cipher_b64="YOUR_VALUE"'
POST /api/v1/nid-secure-gateway HTTP/1.1
Host: my-api.top
X-API-Key: vbn_your_api_key_here
Content-Type: multipart/form-data; boundary=---Boundary
---Boundary
Content-Disposition: form-data; name="nid"
YOUR_VALUE
---Boundary
Content-Disposition: form-data; name="dob"
YOUR_VALUE
---Boundary
Content-Disposition: form-data; name="qr_file"; filename="photo.png"
Content-Type: image/png
[Binary File Data]
---Boundary--
import requests
files = {
'photo_file': ('/path/to/file', open('/path/to/file', 'rb'), 'image/png'),
'qr_file': ('/path/to/file', open('/path/to/file', 'rb'), 'image/png'),
}
data = {
'cipher_b64': 'YOUR_VALUE'
}
response = requests.post(
'https://my-api.top/api/v1/nid-secure-gateway',
headers={'X-API-Key': 'vbn_your_api_key_here'},
data=data,
files=files
)
data = response.json()
print(data)
const formData = new FormData();
formData.append('photo_file', fileInput.files[0]); // assuming fileInput is an HTML input element
formData.append('qr_file', fileInput.files[0]); // assuming fileInput is an HTML input element
formData.append('cipher_b64', 'YOUR_VALUE');
const response = await fetch(
'https://my-api.top/api/v1/nid-secure-gateway',
{
method: 'POST',
headers: { 'X-API-Key': 'vbn_your_api_key_here' },
body: formData
}
);
const data = await response.json();
console.log(data);
{
"success": true,
"success": ["...results..."],
"charged": 30,
"remaining_balance": 850.00
}
{
"success": false,
"charged": 0,
"remaining_balance": 1000.00,
"message": "Record not found"
}
NID Sign Copy API V2
Captcha থেকে Email Auto অথবা manual Mobile OTP পর্যন্ত সম্পূর্ণ Sign Copy workflow। Chromium লাগে না; server-side direct API ব্যবহার হয়।
status=completed result delivery-র সময় একবার কাটে। Captcha, method, mobile ও OTP request free। নিজের/অনুমোদিত NID workflow-তেই ব্যবহার করুন।
| Step | Method | Endpoint | Input | Charge |
|---|---|---|---|---|
| 1. Captcha | GET | /captcha | Header only | Free |
| 2. Start claim | POST | /claim | file, captcha_id, captcha | Free |
| 3. Choose OTP | POST | /method | job_id, method: email/mobile | Free |
| 4A. Mobile | POST | /mobile | job_id, mobile | Free |
| 4B. OTP | POST | /otp | job_id, otp | Free |
| 5. Result | GET | /status?job_id=... | job_id | ৳50.00 on completed |
curl 'https://my-api.top/api/v1/nid-sign-copy-v2/captcha' \
-H 'X-API-Key: vbn_your_api_key_here'
curl 'https://my-api.top/api/v1/nid-sign-copy-v2/claim' \
-H 'X-API-Key: vbn_your_api_key_here' \
-F 'file=@/path/to/sign-copy.pdf;type=application/pdf' \
-F 'captcha_id=CAPTCHA_ID_FROM_STEP_1' \
-F 'captcha=CAPTCHA_TEXT'
curl 'https://my-api.top/api/v1/nid-sign-copy-v2/method' \
-H 'X-API-Key: vbn_your_api_key_here' \
-H 'Content-Type: application/json' \
--data '{"job_id":"JOB_ID","method":"email"}'
# Select mobile
curl 'https://my-api.top/api/v1/nid-sign-copy-v2/method' \
-H 'X-API-Key: vbn_your_api_key_here' \
-H 'Content-Type: application/json' \
--data '{"job_id":"JOB_ID","method":"mobile"}'
# Send OTP
curl 'https://my-api.top/api/v1/nid-sign-copy-v2/mobile' \
-H 'X-API-Key: vbn_your_api_key_here' \
-H 'Content-Type: application/json' \
--data '{"job_id":"JOB_ID","mobile":"01XXXXXXXXX"}'
# Verify OTP
curl 'https://my-api.top/api/v1/nid-sign-copy-v2/otp' \
-H 'X-API-Key: vbn_your_api_key_here' \
-H 'Content-Type: application/json' \
--data '{"job_id":"JOB_ID","otp":"123456"}'
curl 'https://my-api.top/api/v1/nid-sign-copy-v2/status?job_id=JOB_ID' \
-H 'X-API-Key: vbn_your_api_key_here'
import time
import requests
BASE = "https://my-api.top/api/v1/nid-sign-copy-v2"
HEADERS = {"X-API-Key": "vbn_your_api_key_here"}
captcha = requests.get(f"{BASE}/captcha", headers=HEADERS).json()
print(captcha["captcha_image"]) # data:image/...;base64,...
captcha_text = input("Captcha: ")
with open("sign-copy.pdf", "rb") as pdf:
claim = requests.post(
f"{BASE}/claim",
headers=HEADERS,
data={"captcha_id": captcha["captcha_id"], "captcha": captcha_text},
files={"file": ("sign-copy.pdf", pdf, "application/pdf")},
).json()
job_id = claim["job_id"]
requests.post(
f"{BASE}/method",
headers={**HEADERS, "Content-Type": "application/json"},
json={"job_id": job_id, "method": "email"},
).raise_for_status()
while True:
response = requests.get(
f"{BASE}/status", headers=HEADERS, params={"job_id": job_id}
)
status = response.json()
if status.get("status") in ("completed", "failed", "not_found"):
print(status)
break
time.sleep(3)
{
"success": true,
"captcha_id": "opaque_48_character_id",
"captcha_image": "data:image/jpeg;base64,...",
"expires_in": 300
}{
"success": true,
"job_id": "opaque_48_character_id",
"status": "awaiting_contact_method",
"cost_on_success": 50,
"expires_in": 1500
}{
"success": true,
"job_id": "...",
"status": "completed",
"result": {
"success": true,
"data": {
"nationalId": "...",
"username": "...",
"password": "..."
}
},
"charged": 50,
"already_charged": false,
"remaining_balance": 850.00
}
| API key | সব request-এ একই X-API-Key ব্যবহার করুন। Query string key এই workflow-তে গ্রহণ করা হয় না। |
| Captcha | ৫ মিনিট valid এবং একবারই ব্যবহারযোগ্য। Invalid captcha হলে নতুন captcha নিন। |
| Job | ২৫ মিনিট valid; যে API key job তৈরি করেছে শুধু সেই key job access করতে পারে। |
| Storage | Uploaded PDF, mobile number, OTP এবং completed result API Hub database-এ সংরক্ষণ করা হয় না। |
| Billing | শুধু completed result delivery-তে charge। একই completed job আবার status করলে দ্বিতীয়বার charge হবে না। |
Balance Check
আপনার current balance, API key stats, এবং প্রতিটি API-র rate দেখুন।
curl --location 'https://my-api.top/api/v1/balance' \
--header 'X-API-Key: vbn_your_api_key_here'
{
"balance": 500.00,
"total_requests": 150,
"successful_requests": 120,
"key_active": true,
"api_rates": [
{"api": "Land Tax Dakhila Finder", "slug": "find_dakhila", "rate": 150},
{"api": "Land Tax Payment Link", "slug": "payment_link_gen", "rate": 150},
{"api": "BDRIS Search", "slug": "bdris_search", "rate": 120},
{"api": "Birth Certificate Verification", "slug": "birth", "rate": 2},
{"api": "Land Password Reset", "slug": "land-password-reset", "rate": 200},
{"api": "NID Auto Sign Copy", "slug": "nid-sign-copy", "rate": 50},
{"api": "NID USER PASS", "slug": "nid-secure-gateway", "rate": 30},
{"api": "NID Sign Copy API V2", "slug": "nid-sign-copy-v2", "rate": 50}
]
}
Error Codes
| HTTP Code | Meaning | Description |
|---|---|---|
400 | Bad Request | Required parameter missing |
401 | Unauthorized | API key missing or invalid |
402 | Payment Required | Balance insufficient — recharge করুন |
403 | Forbidden | API key বা account disabled |
404 | Not Found | API endpoint পাওয়া যায়নি |
502 | Bad Gateway | Upstream service error — পরে আবার try করুন |
{
"error": "Insufficient balance.",
"balance": 50.00,
"cost_per_call": 150.00,
"recharge_url": "https://my-api.top/recharge"
}