আমাদের APIs-এর মাধ্যমে আপনার ওয়েবসাইটে লটারির ফলাফল যুক্ত করুন
ডিয়ার লটারি সংবাদ থেকে যাচাইকৃত লটারি ফলাফল অ্যাক্সেস করুন এবং আপনার নিজস্ব প্ল্যাটফর্মে নির্বিঘ্নে যুক্ত করুন। সাধারণ কী-বিহীন PDF এম্বেডের জন্য আমাদের পাবলিক API বেছে নিন, অথবা সম্পূর্ণ স্ট্রাকচার্ড JSON ডেটা, ডাটাবেস সংরক্ষণ এবং পূর্ণ ডিজাইনের স্বাধীনতার জন্য আমাদের প্রাইভেট API বেছে নিন।
আপনার প্ল্যাটফর্মের জন্য সঠিক API বেছে নিন
আমরা বিভিন্ন প্রযুক্তিগত প্রয়োজনীয়তা এবং ইন্টিগ্রেশনের গভীরতা অনুযায়ী দুটি পৃথক API সিস্টেম সরবরাহ করি।
পাবলিক PDF ও মেটাডেটা API
ওয়েবমাস্টার, ব্লগার এবং আঞ্চলিক সংবাদ পোর্টালগুলির জন্য আদর্শ যারা প্রমাণীকরণ কী (API Key) বা ডোমেন অনুমোদন ছাড়াই দ্রুত ইন্টিগ্রেশন চান।
- ✓ কোনো API কী প্রয়োজন নেই: যেকোনো সার্ভার বা ব্রাউজার থেকে তাৎক্ষণিক পাবলিক অ্যাক্সেস।
- ✓ A4 PDF এম্বেড কোড: সরাসরি ফলাফল পত্র প্রদর্শনের জন্য রেসপন্সিভ iframe কোড।
- ✓ সরাসরি ডাউনলোড লিঙ্ক: ড্র আর্কাইভের জন্য অফিসিয়াল যাচাইকৃত PDF ডাউনলোড URL।
- ✓ কোনো মেয়াদ শেষ নেই: ন্যায্য ব্যবহারের সীমা (৬০ অনুরোধ/মিনিট) সাপেক্ষে আজীবন কী-বিহীন অ্যাক্সেস।
- ℹ নোট: শুধুমাত্র অফিসিয়াল PDF লিঙ্ক ও মেটাডেটা প্রদান করে। স্ট্রাকচার্ড বিজয়ী নম্বর এতে অন্তর্ভুক্ত নয়।
ডোমেন-ভিত্তিক স্ট্রাকচার্ড রেজাল্টস API
ওয়েবসাইট মালিক, অ্যাপ ডেভেলপার এবং সিন্ডিকেটের জন্য তৈরি যাদের মেশিন-রিডেবল বিজয়ী নম্বর, পুরস্কারের বিবরণ এবং ডাটাবেস স্টোরেজ প্রয়োজন।
- ✓ সম্পূর্ণ স্ট্রাকচার্ড ডেটা: সমস্ত স্তরের (১ম, ২য়, ৩য়, ৪র্থ, ৫ম ও সান্ত্বনা) জন্য পূর্ণ বিজয়ী নম্বর অ্যারে।
- ✓ নিজস্ব ডাটাবেস স্টোরেজ: আপনার নিজস্ব MySQL, PostgreSQL বা Mongo ডাটাবেসে সম্পূর্ণ ড্র রেকর্ড সংরক্ষণ করুন।
- ✓ কাস্টম ফ্রন্টএন্ড স্বাধীনতা: কাস্টম HTML টেবিল, নেটিভ মোবাইল অ্যাপ, অথবা টেলিগ্রাম/হোয়াটসঅ্যাপ বট তৈরি করুন।
-
✓
ইনক্রিমেন্টাল সিঙ্ক্রোনাইজেশন: উচ্চ দক্ষতার পোলিংয়ের জন্য
updated_sinceদ্বারা ফিল্টার করুন। - ✓ ডোমেন ও রাজ্য সুরক্ষা: রেসপন্সে সাবস্ক্রিপশন মেটাডেটা সহ পার্টনার ডোমেন/সাবডোমেনের বিপরীতে অনুমোদিত।
পাবলিক PDF ও মেটাডেটা API ডেভেলপার গাইড
পাবলিক API হলো একটি কী-বিহীন REST সার্ভিস যা ওয়েবসাইটে তাৎক্ষণিক ইন্টিগ্রেশনের জন্য ডিজাইন করা হয়েছে। এটি আপনাকে সক্রিয় রাজ্যগুলির তথ্য পেতে, প্রকাশিত লটারি ড্র সময়সূচী দেখতে, রেসপন্সিভ A4 PDF iframe এম্বেড কোড সংগ্রহ করতে এবং আপনার ভিজিটরদের অফিসিয়াল PDF ডাউনলোড লিঙ্ক প্রদান করতে সক্ষম করে।
https://dearlotterysambad.live/api/v1/public
পাবলিক এন্ডপয়েন্টস রেফারেন্স
/api/v1/public/states
বর্তমানে পাবলিক ফলাফল খোঁজার জন্য অনুমোদিত রাজ্য লটারিগুলির তালিকা প্রদান করে।
{
"success": true,
"api_type": "public_pdf",
"data": [
{
"id": 1,
"name": "Sikkim",
"slug": "sikkim-lottery-result",
"code": "SK"
},
{
"id": 2,
"name": "Nagaland",
"slug": "nagaland-lottery-result",
"code": "NL"
}
]
}
/api/v1/public/results
iframe এম্বেড কোড এবং যাচাইকৃত PDF ডাউনলোড লিঙ্ক সহ প্রকাশিত লটারি ড্রয়ের পেজিনেটেড তালিকা সংগ্রহ করুন।
| প্যারামিটার | টাইপ | প্রয়োজনীয়তা | বিবরণ ও উদাহরণ |
|---|---|---|---|
| state | string | ঐচ্ছিক | রাজ্যের স্ল্যাগ (sikkim-lottery-result), কোড (SK), বা ID। |
| date | string | ঐচ্ছিক | YYYY-MM-DD ফরম্যাটে সুনির্দিষ্ট ড্রয়ের তারিখ (যেমন 2026-11-03)। |
| from_date | string | ঐচ্ছিক | তারিখের সীমার শুরু (YYYY-MM-DD)। |
| to_date | string | ঐচ্ছিক | তারিখের সীমার শেষ (YYYY-MM-DD)। |
| time | string | ঐচ্ছিক | ড্রয়ের সময় ফিল্টার (13:00, 18:00, 20:00)। |
| per_page | integer | ঐচ্ছিক | প্রতি পেজে ফলাফল (১ থেকে ৫০, ডিফল্ট: ১০)। |
{
"success": true,
"api_type": "public_pdf",
"note": "Provides official PDF embed and download links only. Structured winning numbers and prize breakdowns are restricted.",
"data": [
{
"result_id": 1420,
"state_name": "Sikkim",
"state_code": "SK",
"lottery_name": "Dear Everest Morning",
"draw_date": "2026-11-03",
"draw_time": "13:00:00",
"draw_time_label": "01:00 PM",
"draw_number": "48",
"pdf_embed_url": "https://dearlotterysambad.live/results/embed-pdf/1420",
"pdf_download_url": "https://dearlotterysambad.live/results/download/1420",
"embed_iframe_code": "<iframe src=\"https://dearlotterysambad.live/results/embed-pdf/1420\" width=\"100%\" height=\"850\" frameborder=\"0\" title=\"Dear Lottery Sambad A4 Result\"></iframe>",
"published_at": "2026-11-03T07:35:00.000000Z"
}
],
"pagination": {
"current_page": 1,
"per_page": 10,
"total": 1,
"total_pages": 1,
"has_more": false
}
}
/api/v1/public/results/{id}
একটি নির্দিষ্ট প্রকাশিত লটারি ফলাফল ID-এর জন্য এম্বেড কোড এবং সরাসরি ডাউনলোড লিঙ্ক সংগ্রহ করুন।
পাবলিক API ইন্টিগ্রেশন কোড উদাহরণ
<!-- 1. Embed Verified A4 Result Preview Directly -->
<div class="lottery-pdf-container" style="max-width: 900px; margin: 0 auto;">
<h3>Today's Dear Lottery Official Result Sheet</h3>
<iframe
src="https://dearlotterysambad.live/results/embed-pdf/1420"
width="100%"
height="850"
frameborder="0"
title="Dear Lottery Sambad A4 Result"
style="border: 1px solid #e2e8f0; border-radius: 12px;">
</iframe>
<!-- 2. Direct Official PDF Download Button -->
<p style="margin-top: 12px;">
<a href="https://dearlotterysambad.live/results/download/1420"
target="_blank"
rel="noopener noreferrer"
style="background: #059669; color: #fff; padding: 10px 20px; border-radius: 8px; text-decoration: none; font-weight: bold;">
Download Official A4 Result PDF
</a>
</p>
</div>
async function loadLatestPublicResult(stateSlug = 'sikkim-lottery-result') {
const container = document.getElementById('lottery-results-target');
container.innerHTML = '<p class="loading">Loading latest verified result...</p>';
try {
const url = `https://dearlotterysambad.live/api/v1/public/results?state=${encodeURIComponent(stateSlug)}&per_page=1`;
const response = await fetch(url, {
headers: { 'Accept': 'application/json' }
});
if (!response.ok) {
throw new Error(`API Error: HTTP ${response.status}`);
}
const data = await response.json();
if (data.success && data.data.length > 0) {
const latest = data.data[0];
container.innerHTML = `
<div class="result-card">
<h4>${latest.lottery_name} (${latest.draw_time_label})</h4>
<p>Draw Date: ${latest.draw_date}</p>
<div class="embed-wrapper">
${latest.embed_iframe_code}
</div>
<a href="${latest.pdf_download_url}" class="download-btn" target="_blank">
Download Official Sheet
</a>
</div>
`;
} else {
container.innerHTML = '<p>No published results available for the requested state.</p>';
}
} catch (err) {
console.error('Failed to load lottery result:', err);
container.innerHTML = '<p class="error">Unable to load lottery result sheet. Please try again later.</p>';
}
}
// Call on page ready
document.addEventListener('DOMContentLoaded', () => loadLatestPublicResult('sikkim-lottery-result'));
<?php
$state = 'nagaland-lottery-result';
$apiUrl = 'https://dearlotterysambad.live/api/v1/public/results?state=' . urlencode($state) . '&per_page=1';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'User-Agent: MyWebsiteBot/1.0'
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200 && $response) {
$result = json_decode($response, true);
if (!empty($result['data'][0])) {
$draw = $result['data'][0];
echo "Latest Result: " . htmlspecialchars($draw['lottery_name']) . "\n";
echo "Download URL: " . htmlspecialchars($draw['pdf_download_url']) . "\n";
}
} else {
echo "API request failed with HTTP " . $httpCode;
}
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
public function fetchPublicLotterySheet(string $state = 'sikkim-lottery-result'): ?array
{
try {
$response = Http::timeout(8)
->acceptJson()
->get('https://dearlotterysambad.live/api/v1/public/results', [
'state' => $state,
'per_page' => 1,
]);
if ($response->successful() && $response->json('success')) {
return $response->json('data.0');
}
Log::warning('Public Lottery API returned non-success response', [
'status' => $response->status(),
'body' => $response->body()
]);
} catch (\Throwable $e) {
Log::error('Public Lottery API request failed: ' . $e->getMessage());
}
return null;
}
প্রাইভেট লটারি ফলাফল API – আপনার ওয়েবসাইটের ওপর সম্পূর্ণ নিয়ন্ত্রণ
প্রাইভেট API তৈরি করা হয়েছে ওয়েবসাইট মালিক, অ্যাপ ডেভেলপার এবং লটারি সিন্ডিকেটের জন্য যারা নিজেদের স্বাধীন লটারি ফলাফল প্ল্যাটফর্ম তৈরি করতে চান। প্রতিটি বিজয়ী নম্বর, র্যাঙ্ক স্তর, টিকিট সিরিজ, বিজয়ীর নাম এবং ড্র সনাক্তকারী সহ মেশিন-রিডেবল স্ট্রাকচার্ড JSON সংগ্রহ করুন।
পার্টনার ওয়েবসাইটগুলির জন্য ১০টি মূল সুবিধা
আপনার নিজস্ব ফলাফল লেআউট, কাস্টম CSS, মোবাইল থিম এবং ইন্টারেক্টিভ টিকিট চেকার ডিজাইন করুন। আপনাকে iframe উইজেট বা তৃতীয় পক্ষের ব্র্যান্ডিং প্রদর্শন করতে বাধ্য করা হয় না।
আগত স্ট্রাকচার্ড ড্র ডেটা আপনার নিজস্ব MySQL, PostgreSQL বা Mongo ডাটাবেসে সংরক্ষণ করুন। একবার সংরক্ষিত হলে, আপনার নিজস্ব সার্ভারে ঐতিহাসিক রেকর্ডের স্থায়ী অ্যাক্সেস থাকবে।
ম্যানুয়াল টাইপিং বা PDF OCR ট্রান্সক্রিপশন ছাড়াই স্বয়ংক্রিয় সার্ভার ক্রন জবের মাধ্যমে সদ্য প্রকাশিত ফলাফল সংগ্রহ করুন। সিঙ্ক্রোনাইজেশন সময়সূচী আপনার বাস্তবায়নের ওপর নির্ভর করে।
আপনার বাজারের জন্য উপযুক্ত অনুমতি ক্রয় করুন: একক রাজ্যের অ্যাক্সেস (যেমন শুধুমাত্র সিকিম বা নাগাল্যান্ড) অথবা সম্পূর্ণ মাল্টি-স্টেট বান্ডেল।
প্রতিটি API কী স্বাধীনভাবে একটি অনুমোদিত রুট ডোমেন বা সাবডোমেনের (যেমন partner.com বা lottery.partner.org) সাথে যুক্ত থাকে, যা নিরাপদ পরিবেশের নিশ্চয়তা দেয়।
সম্পূর্ণ মেশিন-রিডেবল পুরস্কারের স্তর: ১ম পুরস্কার, সান্ত্বনা, ২য়, ৩য়, ৪র্থ, ৫ম, টিকিট সিরিজ, বিজয়ীদের নাম, প্রথম পুরস্কার বিক্রেতার তথ্য এবং যাচাইকৃত সময়।
যেকোনো স্ট্যাক (PHP, Node, Python, Go)-এ ওয়েবসাইট তৈরি করুন অথবা নেটিভ iOS/Android মোবাইল অ্যাপ, SMS অ্যালার্ট ও নোটিফিকেশন চ্যানেল পরিচালনা করুন।
সাবস্ক্রিপশন দিনের সুনির্দিষ্ট মেয়াদের জন্য (যেমন ৩০, ৯০, ১৮০, ৩৬৫ দিন) কনফিগার করা হয়। কোনো অপ্রত্যাশিত পুনরাবৃত্তিমূলক চার্জ বা বাধ্যতামূলক চুক্তি নেই।
প্রতিটি সফল API রেসপন্সে একটি api_subscription অবজেক্ট থাকে যা অবশিষ্ট দিন এবং মেয়াদ শেষ হওয়ার তারিখ নির্দেশ করে, যা আপনার অ্যাডমিন প্যানেল থেকে সক্রিয় নজরদারি নিশ্চিত করে।
সক্রিয় সাবস্ক্রিপশন নবায়ন করার সময়, বর্তমান মেয়াদ উত্তীর্ণের তারিখ থেকে নতুন মেয়াদ বৃদ্ধি করা হয়। আপনার API কী অপরিবর্তিত থাকে, ফলে আপনার লাইভ সাইটে কোড পরিবর্তনের ঝামেলা হয় না।
প্রাইভেট API প্রমাণীকরণ ও প্রযুক্তিগত রেফারেন্স
প্রাইভেট API-এর সমস্ত অনুরোধের জন্য বৈধ প্রমাণীকরণ হেডার প্রয়োজন এবং আপনার নিবন্ধিত ডোমেনের বিপরীতে যাচাই করা হয়।
আপনার প্রাইভেট API কী (dls_dom_...) সম্পূর্ণ স্ট্রাকচার্ড ডেটা অ্যাক্সেসের সুযোগ দেয়। কখনোই আপনার প্রাইভেট API কী ব্রাউজার-সাইড JavaScript, HTML সোর্স কোড, মোবাইল ক্লায়েন্ট বাইনারি বা পাবলিক GitHub রিপোজিটরিতে উন্মুক্ত করবেন না। সর্বদা আপনার ব্যাকএন্ড সার্ভার বা সার্ভারলেস ফাংশন থেকে প্রাইভেট API কল করুন এবং আপনার কী একটি এনভায়রনমেন্ট ভেরিয়েবলে (LOTTERY_API_KEY) সংরক্ষণ করুন।
প্রয়োজনীয় রিকোয়েস্ট হেডার
| হেডার | ফরম্যাট ও মান | প্রয়োজনীয়তা |
|---|---|---|
| X-API-KEY | dls_dom_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
প্রয়োজনীয় |
| Accept | application/json |
সুপারিশকৃত |
* নোট: বিকল্প হিসেবে, প্রমাণীকরণ গেটওয়ে দ্বারা Authorization: Bearer dls_dom_... সমর্থিত।
প্রাইভেট এন্ডপয়েন্টস রেফারেন্স
/api/v1/states
আপনার API কী-এর জন্য অনুমোদিত নির্দিষ্ট লটারি রাজ্য এবং আপনার বর্তমান সাবস্ক্রিপশন মেয়াদের মেটাডেটা প্রদান করে।
{
"success": true,
"domain": "partner.com",
"api_subscription": {
"status": "active",
"activated_at": "2026-11-03T06:34:28.000000Z",
"expires_at": "2027-11-03T06:34:28.000000Z",
"validity_days": 365,
"remaining_days": 365
},
"data": [
{
"id": 1,
"name": "Sikkim",
"slug": "sikkim-lottery-result",
"code": "SK"
},
{
"id": 2,
"name": "Nagaland",
"slug": "nagaland-lottery-result",
"code": "NL"
}
]
}
/api/v1/results
পুরস্কার র্যাঙ্কিং, বিজয়ী নম্বর অ্যারে এবং সংশোধনের সময় সহ সম্পূর্ণ স্ট্রাকচার্ড ড্র রেকর্ড সংগ্রহ করুন। updated_since-এর মাধ্যমে ইনক্রিমেন্টাল সিঙ্ক সমর্থন করে।
| প্যারামিটার | টাইপ | বিবরণ ও উদ্দেশ্য |
|---|---|---|
| state | string | অনুমোদিত রাজ্যের স্ল্যাগ (sikkim-lottery-result), কোড (SK), বা ID দ্বারা ফিল্টার করুন। |
| date | string | সুনির্দিষ্ট ড্রয়ের তারিখ (<code class="text-xs font-mono">YYYY-MM-DD</code>)। |
| updated_since | ISO 8601 | ইনক্রিমেন্টাল সিঙ্ক: টাইমস্ট্যাম্পের পরে যুক্ত বা সংশোধিত ফলাফল প্রদান করে (যেমন 2026-11-03T12:00:00Z)। ক্রন জবের জন্য অত্যন্ত সুপারিশকৃত। |
| time | string | ড্রয়ের সময় ফিল্টার (13:00, 18:00, 20:00)। |
| per_page | integer | প্রতি পেজে ফলাফল (১ থেকে ৫০, ডিফল্ট: ১০)। |
{
"success": true,
"domain": "partner.com",
"api_subscription": {
"status": "active",
"activated_at": "2026-11-03T06:34:28.000000Z",
"expires_at": "2027-11-03T06:34:28.000000Z",
"validity_days": 365,
"remaining_days": 365
},
"data": [
{
"result_id": 1420,
"identity_key": "SK-2026-11-03-13:00:00-dear-everest-morning",
"state": {
"id": 1,
"name": "Sikkim",
"slug": "sikkim-lottery-result",
"code": "SK"
},
"lottery_name": "Dear Everest Morning",
"draw_date": "2026-11-03",
"draw_time": "13:00:00",
"draw_time_label": "01:00 PM",
"draw_number": "48",
"first_prize_sold_by": "Stockist: Lucky Agency, Siliguri",
"status": "published",
"original_pdf_url": "https://dearlotterysambad.live/results/download/1420",
"pdf_embed_url": "https://dearlotterysambad.live/results/embed-pdf/1420",
"prizes": [
{
"rank": "1",
"prize_name": "1st Prize",
"prize_amount": "₹1 Crore",
"winner_name": "Rahul Verma",
"series": "97K",
"winning_numbers": ["97K 95045"]
},
{
"rank": "2",
"prize_name": "Consolation Prize",
"prize_amount": "₹1,000",
"winner_name": null,
"series": null,
"winning_numbers": ["95045"]
},
{
"rank": "3",
"prize_name": "2nd Prize",
"prize_amount": "₹9,000",
"winner_name": null,
"series": null,
"winning_numbers": ["01234", "12345", "23456", "34567", "45678", "56789", "67890", "78901", "89012", "90123"]
},
{
"rank": "4",
"prize_name": "3rd Prize",
"prize_amount": "₹450",
"winner_name": null,
"series": null,
"winning_numbers": ["1122", "2233", "3344", "4455", "5566", "6677", "7788", "8899", "9900", "0011"]
},
{
"rank": "5",
"prize_name": "4th Prize",
"prize_amount": "₹250",
"winner_name": null,
"series": null,
"winning_numbers": ["1425", "3627", "4859", "6071", "7283", "8495", "9607", "0819", "2031", "3243"]
},
{
"rank": "6",
"prize_name": "5th Prize",
"prize_amount": "₹120",
"winner_name": null,
"series": null,
"winning_numbers": ["0145", "0278", "0389", "0491", "0512", "0623", "0734", "0845", "0956", "1067", "1178", "1289", "1390", "1401", "1512", "1623", "1734", "1845", "1956", "2067"]
}
],
"verified_at": "2026-11-03T07:35:00.000000Z",
"last_updated_at": "2026-11-03T07:35:00.000000Z"
}
],
"pagination": {
"current_page": 1,
"per_page": 10,
"total": 1,
"total_pages": 1,
"has_more": false
}
}
সাবস্ক্রিপশন মেটাডেটা (api_subscription) ফিল্ডসমূহ
"active"
সক্রিয় (active), মেয়াদোত্তীর্ণ (expired), বা নিষ্ক্রিয় (deactivated)।
ISO 8601
প্রাথমিক সক্রিয়করণের সময়।
ISO 8601
সাবস্ক্রিপশন মেয়াদের শেষ সময়।
365
কনফিগার করা মোট সাবস্ক্রিপশন দিন।
365
মেয়াদ শেষ হতে অবশিষ্ট পূর্ণ দিন।
মেয়াদ শেষ হওয়া পরিচালনা (API_EXPIRED)
যখন আপনার সাবস্ক্রিপশন তার expires_at টাইমস্ট্যাম্প অতিক্রম করে, তখন প্রমাণীকরণ মিডলওয়্যার অবিলম্বে অনুরোধ স্থগিত করে এবং একটি HTTP 403 Forbidden স্ট্যাটাস প্রদান করে:
{
"success": false,
"error": {
"code": "API_EXPIRED",
"message": "Your API subscription has expired. Please contact the administrator for renewal."
},
"data": {
"status": "expired",
"expired_at": "2026-10-29T06:34:09.000000Z"
}
}
ডেভেলপার পরামর্শ: আপনার ব্যাকএন্ড ক্যাচ ব্লকে error.code === 'API_EXPIRED' পরীক্ষা করুন। আপনি অন্যান্য ফিচার ব্যাহত না করে নবায়নের জন্য আপনার সাইট অ্যাডমিনিস্ট্রেটরকে স্বয়ংক্রিয়ভাবে একটি বিজ্ঞপ্তি পাঠাতে পারেন।
সম্পূর্ণ এরর কোড রেফারেন্স
| HTTP স্ট্যাটাস | এরর কোড / কারণ | বিবরণ ও প্রস্তাবিত পদক্ষেপ |
|---|---|---|
| 401 Unauthorized | API কী অনুপস্থিত | হেডার X-API-KEY অনুপস্থিত বা খালি ছিল। হেডারে কী প্রদান করুন। |
| 401 Unauthorized | অবৈধ API কী | API কী কোনো নিবন্ধিত পার্টনার রেকর্ডের সাথে মিলছে না। ক্রেডেনশিয়াল যাচাই করুন। |
| 403 Forbidden | API_KEY_DEACTIVATED | API কী অ্যাডমিন দ্বারা ম্যানুয়ালি ব্লক/নিষ্ক্রিয় করা হয়েছে। সাপোর্টে যোগাযোগ করুন। |
| 403 Forbidden | API_EXPIRED | সাবস্ক্রিপশনের মেয়াদ শেষ হয়েছে। নবায়নের মাধ্যমে মেয়াদ বৃদ্ধি করুন। |
| 403 Forbidden | রাজ্য অনুমোদিত নয় | আপনার কী অনুরোধ করা রাজ্যের জন্য অনুমোদিত নয়। রাজ্য যুক্ত করতে অ্যাডমিনের সাথে যোগাযোগ করুন। |
| 404 Not Found | খুঁজে পাওয়া যায়নি (Not Found) | অনুরোধ করা ফলাফল রেকর্ড বা রাজ্য বিদ্যমান নেই। |
| 429 Rate Limit | অতিরিক্ত অনুরোধ | প্রতি মিনিটে ১২০টির বেশি অনুরোধ হয়েছে। লোকাল ক্যাশিং (Redis/Memcached) বাস্তবায়ন করুন। |
প্রাইভেট API ইন্টিগ্রেশন কোড উদাহরণ
<?php
// Load API key securely from environment variable
$apiKey = getenv('LOTTERY_API_KEY') ?: 'dls_dom_YOUR_ACTUAL_SECRET_KEY';
$state = 'sikkim-lottery-result';
$endpoint = 'https://dearlotterysambad.live/api/v1/results?' . http_build_query([
'state' => $state,
'per_page' => 1
]);
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $endpoint,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => [
'X-API-KEY: ' . $apiKey,
'Accept: application/json',
'User-Agent: PartnerPortalSync/1.0'
]
]);
$raw = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode($raw, true);
if ($httpCode === 200 && !empty($payload['success'])) {
$sub = $payload['api_subscription'];
echo "Subscription Active! Days Remaining: " . $sub['remaining_days'] . "\n";
foreach ($payload['data'] as $result) {
echo "Draw: {$result['lottery_name']} ({$result['draw_time_label']})\n";
echo "Identity Key: {$result['identity_key']}\n";
// Print 1st Prize
foreach ($result['prizes'] as $prize) {
if ($prize['rank'] === '1') {
echo "1st Prize ({$prize['prize_amount']}): " . implode(', ', $prize['winning_numbers']) . "\n";
}
}
}
} elseif ($httpCode === 403 && isset($payload['error']['code']) && $payload['error']['code'] === 'API_EXPIRED') {
echo "CRITICAL: API Subscription Expired on: " . $payload['data']['expired_at'] . "\n";
} else {
echo "API Request Failed with HTTP {$httpCode}: " . ($payload['error'] ?? 'Unknown Error') . "\n";
}
namespace App\Services;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
class DearLotteryApiService
{
protected string $baseUrl = 'https://dearlotterysambad.live/api/v1';
protected string $apiKey;
public function __construct()
{
$this->apiKey = config('services.dear_lottery.key');
}
/**
* Ingest latest structured results with incremental updated_since filter.
*/
public function syncResults(?string $updatedSince = null, string $state = 'sikkim-lottery-result'): ?array
{
$params = ['state' => $state, 'per_page' => 20];
if ($updatedSince) {
$params['updated_since'] = $updatedSince;
}
$response = Http::withHeaders([
'X-API-KEY' => $this->apiKey,
'Accept' => 'application/json',
])->timeout(12)->get("{$this->baseUrl}/results", $params);
if ($response->successful()) {
$data = $response->json();
// Log remaining subscription days for monitoring
$daysLeft = $data['api_subscription']['remaining_days'] ?? null;
if ($daysLeft !== null && $daysLeft <= 7) {
Log::warning("Dear Lottery API subscription expiring soon: {$daysLeft} days remaining.");
}
return $data['data'] ?? [];
}
if ($response->status() === 403 && $response->json('error.code') === 'API_EXPIRED') {
Log::alert('Dear Lottery API subscription has expired! Please renew immediately.');
}
return null;
}
}
import fetch from 'node-fetch';
const API_KEY = process.env.LOTTERY_API_KEY || 'dls_dom_YOUR_SECRET_KEY';
const API_URL = 'https://dearlotterysambad.live/api/v1/results?state=sikkim-lottery-result&per_page=1';
async function fetchStructuredResults() {
try {
const response = await fetch(API_URL, {
method: 'GET',
headers: {
'X-API-KEY': API_KEY,
'Accept': 'application/json'
}
});
const data = await response.json();
if (response.ok && data.success) {
console.log(`[OK] Domain: ${data.domain} | Days Left: ${data.api_subscription.remaining_days}`);
for (const result of data.data) {
console.log(`Draw: ${result.lottery_name} [${result.identity_key}]`);
for (const prize of result.prizes) {
console.log(` Tier ${prize.rank} (${prize.prize_name}): ${prize.winning_numbers.join(', ')}`);
}
}
} else if (response.status === 403 && data.error?.code === 'API_EXPIRED') {
console.error(`[EXPIRED] Subscription ended on ${data.data?.expired_at}`);
} else {
console.error(`[ERROR] HTTP ${response.status}:`, data.error);
}
} catch (err) {
console.error('Network failure connecting to Lottery API:', err);
}
}
fetchStructuredResults();
-- Suggested MySQL Schema for Partner Database Ingestion
CREATE TABLE partner_lottery_draws (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
identity_key VARCHAR(191) NOT NULL UNIQUE, -- e.g. "SK-2026-11-03-13:00:00-dear-everest-morning"
state_code VARCHAR(10) NOT NULL,
state_name VARCHAR(100) NOT NULL,
lottery_name VARCHAR(191) NOT NULL,
draw_date DATE NOT NULL,
draw_time TIME NOT NULL,
draw_number VARCHAR(50),
first_prize_sold_by VARCHAR(191),
pdf_embed_url TEXT,
original_pdf_url TEXT,
verified_at DATETIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_draw_date (draw_date),
INDEX idx_state_code (state_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE partner_lottery_prizes (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
draw_id BIGINT UNSIGNED NOT NULL,
rank_order INT NOT NULL,
prize_name VARCHAR(100) NOT NULL,
prize_amount VARCHAR(100) NOT NULL,
winner_name VARCHAR(191),
winning_numbers JSON NOT NULL, -- Stored as JSON array: ["97K 95045"]
FOREIGN KEY (draw_id) REFERENCES partner_lottery_draws(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Ingestion Logic: Use identity_key to perform an idempotent UPDATE or INSERT (Upsert)
-- This ensures running your sync job repeatedly never creates duplicate rows!
প্রাইভেট API সাবস্ক্রিপশন প্ল্যান
আপনার ওয়েবসাইটের ট্রাফিক এবং কভারেজের প্রয়োজনীয়তা অনুযায়ী স্বচ্ছ ও সাশ্রয়ী API লাইসেন্সিং।
* মূল্য অনুমোদিত রাজ্যের সংখ্যা (একক রাজ্য বনাম মাল্টি-স্টেট বান্ডেল), প্রত্যাশিত অনুরোধের পরিমাণ এবং মেয়াদের ওপর নির্ভর করে। কাস্টমাইজড কোটেশনের জন্য আমাদের ডেস্কের সাথে যোগাযোগ করুন।
একক রাজ্য (যেমন সিকিম বা নাগাল্যান্ড) অথবা কেরালা ও মিজোরাম সহ সম্পূর্ণ প্যাকেজ অনুমোদন করুন।
পছন্দসই মেয়াদ বেছে নিন: ৩০ দিন, ৯০ দিন, ১৮০ দিন, অথবা ৩৬৫ দিন (১ বছর)। মেয়াদ রক্ষা করে সহজেই বৃদ্ধি করুন।
সংযোগ এবং স্কিমা ম্যাপিং যাচাই করার জন্য আমাদের ইঞ্জিনিয়ারিং টিমের কাছ থেকে সরাসরি সহায়তা।
আপনি কি ডিয়ার লটারি সংবাদ API দিয়ে শুরু করতে প্রস্তুত?
আমাদের যোগাযোগ ডেস্কের মাধ্যমে আপনার ডোমেন এবং ইন্টিগ্রেশনের প্রয়োজনীয়তা জমা দিন। আমরা আপনার অনুমোদিত API ক্রেডেনশিয়াল তৈরি করব।
প্রায়শই জিজ্ঞাসিত ডেভেলপার প্রশ্নাবলী
আমাদের লটারি API সিস্টেম সম্পর্কিত সাধারণ স্থাপত্য এবং অপারেশনাল প্রশ্নাবলী।
API রিকোয়েস্ট রেট লিমিট কত?
পাবলিক PDF API প্রতি IP ঠিকানায় প্রতি মিনিটে ৬০টি পর্যন্ত অনুরোধের অনুমতি দেয়। প্রাইভেট স্ট্রাকচার্ড API প্রতি API কী-তে প্রতি মিনিটে ১২০টি পর্যন্ত অনুরোধের অনুমতি দেয়। আমরা স্থানীয়ভাবে ৬০ থেকে ১২০ সেকেন্ডের জন্য রেসপন্স ক্যাশ করার পরামর্শ দিই।
আমি কি রুট ডোমেনের পরিবর্তে সাবডোমেন নিবন্ধন করতে পারি?
হ্যাঁ। আমাদের ডোমেন নরমালাইজেশন ইঞ্জিন স্বাধীনভাবে রুট ডোমেন (যেমন example.com) এবং ডেডিকেটেড সাবডোমেন (যেমন lottery.example.com) উভয়কেই সমর্থন করে।
API-এর মাধ্যমে ড্রয়ের ফলাফল কত দ্রুত পাওয়া যায়?
আমাদের এডিটোরিয়াল ডেস্ক দ্বারা যাচাইয়ের সাথে সাথেই ফলাফল পাওয়া যায় (সাধারণত অফিসিয়াল রাজ্য ড্রয়ের কয়েক মিনিটের মধ্যে: প্রতিদিন দুপুর ১:০০টা, সন্ধ্যা ৬:০০টা এবং রাত ৮:০০টা)।
আমার প্রাইভেট API কী-এর মেয়াদ শেষ হলে কী হবে?
কলগুলিতে code: "API_EXPIRED" সহ একটি HTTP 403 রেসপন্স আসবে। আমাদের অ্যাডমিন ডেস্কের মাধ্যমে নবায়ন করলে আপনার বিদ্যমান কী পরিবর্তন না করেই তাৎক্ষণিকভাবে অ্যাক্সেস পুনরুদ্ধার করা হয়।