পানীৰ মিটাৰ OCR API
পানীৰ মিটাৰ OCR API. এই পৃষ্ঠাটোৱে তৃতীয় পক্ষৰ একত্ৰীকৰণৰ বাবে ৱেবছাইট বেকএণ্ডৰ দ্বাৰা উন্মুক্ত হোৱা ৰাজহুৱা HTTP API নথিভুক্ত কৰে।
এটা প্ৰকৃত আপল'ডৰ সৈতে আৰম্ভ কৰক
প্ৰথমে পঞ্জীয়ন কৰক, কৰ্মস্থানত আপোনাৰ নিজৰ পানীৰ মিটাৰ ফটো আপলোড কৰক, আৰু তাৰ পিছত আপুনি একত্ৰিত কৰিবলৈ সাজু হ'লে API কী এটা সৃষ্টি কৰক।
অৱলোকন
- সকলো বাহ্যিক একত্ৰীকৰণৰ বাবে ৱেবছাইট বেকএণ্ড ব্যৱহাৰ কৰক।
- তৃতীয় পক্ষৰ প্ৰ'গ্ৰামৰ পৰা waterMeterAi পোনপটীয়াকৈ কল নকৰিব।
- মুক্ত API ৱেব পৰ্টেলৰ দৰে একে ব্যৱহাৰকাৰী, কোটা, কেচ্ছ, কাৰ্য আৰু অডিট নিয়ম ভাগ বতৰা কৰে।
- বেকএণ্ডে মোতায়েন বিন্যাস অনুসৰি বিভিন্ন ডাউনষ্ট্ৰীম AI সেৱা বাছনি কৰিব পাৰে।
- কাৰ্যৰ সঁহাৰিত এতিয়া সাধাৰণ result_summary অবজেক্ট থাকে; ইয়াৰ ফলত বিভিন্ন সেৱাই বিভিন্ন ফলাফলৰ প্ৰকাৰ দেখুৱাব পাৰে।
প্ৰমাণীকৰণ
- ৱেবছাইটত ছাইন ইন কৰক আৰু API কী পৃষ্ঠাত API বুটাম এটা সৃষ্টি কৰক।
- ফুল API বুটামটো সৃষ্টি কৰিলে কেৱল এবাৰ প্ৰদৰ্শিত হয়।
- প্ৰতিটো অনুৰোধত Authorization হেডাৰত কীটো পঠিয়াওক।
Authorization: Bearer wm_xxxxxxxxxxxxxxxxx
API Key Permissions and Limits
- Each API key can have independent scopes, an IPv4/IPv6/CIDR allowlist, a total requests-per-minute limit, and a task submissions-per-minute limit.
- A valid key without the required scope or outside its source IP allowlist returns 403.
- Every valid-key request consumes the total request limit, including requests rejected by scope, IP, or submission policy.
- Batch requests consume one total request unit and one submission unit per uploaded file.
- Rate-limited responses return 429 with Retry-After and both X-RateLimit-* and X-SubmissionLimit-* headers.
- Task creation also has a per-key concurrency limit and returns X-ConcurrencyLimit-* headers; a concurrency rejection uses 429.
- For batch concurrency, only files that pass image validation reserve slots, and success headers report the actual active slots after task binding.
Retry-After: 30 X-RateLimit-Limit: 60 X-RateLimit-Remaining: 59 X-RateLimit-Reset: 1785902400 X-SubmissionLimit-Limit: 10 X-SubmissionLimit-Remaining: 9 X-ConcurrencyLimit-Limit: 3 X-ConcurrencyLimit-Active: 1 X-ConcurrencyLimit-Remaining: 2
আপল'ড নিয়ম
- সৰ্বোচ্চ ফাইলৰ আকাৰ: প্ৰতিখন ছবিত 20MB।
- সমৰ্থিত বিন্যাসসমূহ: JPEG, PNG, WEBP।
- বেকএণ্ডে প্ৰকৃত ফাইল সমল প্ৰমাণিত কৰে, কেৱল ফাইল এক্সটেনশ্যন নহয়।
আপল'ড আকাৰ প্ৰয়োগ
- বেচ্ছ আপল'ডবোৰে ডিফল্ট হিচাপে 8 খনলৈকে প্ৰতিচ্ছবি গ্ৰহণ কৰে, প্ৰতি-প্ৰতিচ্ছবিৰ 20MB সীমা আৰু 20MB মুঠ ফাইল-সমল সীমাৰ সৈতে।
- সীমা অতিক্ৰম কৰা ফাইল বা বেচ্ছ 413 ছবি প্ৰমাণীকৰণ বা কাৰ্য্য সৃষ্টিৰ আগতে ঘূৰি আহে; কোনো আংশিক চাম সৃষ্টি কৰা নহয়।
- Content-Length অনুপস্থিত থাকিলেও বা খণ্ডিত স্থানান্তৰ ব্যৱহাৰ কৰিলেও বেকএণ্ডে প্ৰকৃততে পোৱা বাইটৰ সংখ্যাৰ সীমা বলবৎ কৰে।
কাৰ্য্য অৱস্থাসমূহ
- queued: গ্ৰহণ কৰা হৈছে আৰু AI প্ৰক্ৰিয়াকৰণৰ বাবে অপেক্ষা কৰি আছে।
- running: বৰ্তমান প্ৰক্ৰিয়াধীন, অথবা প্ৰেৰকক হস্তান্তৰ কৰাৰ পিছত চূড়ান্ত ফলাফলৰ অৱস্থা নিয়মিতভাৱে পৰীক্ষা কৰা হৈছে।
- batch_waiting_ai: বেটচৰ প্ৰতিটো আইটেমে AI সেৱা অনলাইন ঘূৰি অহাৰ বাবে অপেক্ষা কৰি আছে।
- batch_running: বেটচটো ইতিমধ্যে প্ৰেৰকক অৰ্পণ কৰা হৈছে আৰু এতিয়াও প্ৰক্ৰিয়া চলি আছে।
- done: সফলতাৰে সম্পূৰ্ণ হৈছে।
- failed: প্ৰক্ৰিয়াকৰণ ব্যৰ্থ হৈছে।
- waiting_ai: AI সেৱা অনলাইন ঘূৰি অহালৈকে শাৰী পাতি থাকিল, তাৰ পিছত ই স্বয়ংক্ৰিয়ভাৱে পুনৰ আৰম্ভ হয়।
ফলাফলৰ উৎস
- fresh: নতুন AI চলনৰ দ্বাৰা সৃষ্টি কৰা হৈছে।
- cached_exact: বৰ্তমান AI সংস্কৰণ কেশ্বৰ সৈতে মিল খায়।
- cached_stale: অফলাইন AI , শেহতীয়া ক্যাশ ফলাফল ঘুৰাই দিয়া হৈছে।
- pending: এতিয়াও চূড়ান্ত ফলাফল নাই।
- failed: কাৰ্য ব্যৰ্থ হৈছে।
- কাৰ্য এতিয়াও সম্পূৰ্ণ নহ'লে, শেহতীয়া পুনৰ চেষ্টা বা অপেক্ষাৰ কাৰণৰ বাবে error_message পৰীক্ষা কৰক।
কোটা আৰু বিলিং
- যদি কোটা বিফলতা এৰাই চলিবলৈ আপোনাৰ একত্ৰীকৰণৰ প্ৰয়োজন হয় তেন্তে ডাঙৰ কামৰ বোজা জমা দিয়াৰ আগতে `GET /api/open/quota` ব্যৱহাৰ কৰক।
- কেৱল `fresh` AI ৰাণে কোটা ব্যৱহাৰ কৰে।
- `cached_exact`, `cached_stale`, `pending`আৰু `failed` ফলাফলে কোটা ব্যৱহাৰ নকৰে।
- বিনামূলীয়া একাউণ্টে প্ৰথমে দৈনিক কোটা ব্যৱহাৰ কৰে। পৰিশোধ কৰা একাউণ্টবোৰে সক্ৰিয় সাময়িক কোটা পেকেজ ব্যৱহাৰ কৰে, তাৰ পিছত বেকএণ্ড নীতি অনুসৰি অস্থায়ী বা স্থিৰ কোটা ব্যৱহাৰ কৰে।
- যেতিয়া কোটা শেষ হয়, কাৰ্য্য দাখিল `429` ঘূৰি আহে আৰু নতুন কাৰ্য্য এটা সৃষ্টি কৰাৰ সলনি ত্ৰুটি বাৰ্তা এটা অন্তৰ্ভুক্ত কৰে।
কেচ্ছ আৰু ফলাফল সতেজতা
- বেকএণ্ডে ইমেজ হেছ আৰু AI সংস্কৰণ অনুসৰি সফল ফলাফল কেশ্ব কৰে; ইয়াত ডাউনষ্ট্ৰীম সেৱাৰ namespace-ও অন্তৰ্ভুক্ত থাকে।
- `cached_exact` অৰ্থ হৈছে যে একেখন ছবিয়ে ইতিমধ্যে বৰ্তমানৰ AI সংস্কৰণৰ বাবে সফল ফলাফল লাভ কৰিছে, সেয়েহে কোনো নতুন AI চলাৰ প্ৰয়োজন নাই।
- `cached_stale` অৰ্থ হ'ল AI সেৱা অফলাইন আৰু বেকএণ্ডে শেহতীয়া উপলব্ধ ঐতিহাসিক ফলাফল ঘূৰাই আনিছে।
- `is_latest_ai_version`ৰ মান false হ'লে, ফলাফলটো ব্যৱহাৰযোগ্য কিন্তু পৰ্যালোচনা কৰিবলগীয়া ঐতিহাসিক তথ্য হিচাপে সংৰক্ষণ কৰক।
- প্ৰতিটো `done` কাম ব্যৱহৃত কোটা ধৰি নল'ব; `result_source`পৰীক্ষা কৰক।
Task completion webhooks
- Send signed task completion events to your HTTPS endpoint with automatic retries.
- This API key is inactive. Existing records remain available, but new, enabled, test, and secret-rotation operations are blocked.
X-WaterMeter-Webhook-Id: whev_new_event X-WaterMeter-Webhook-Replay-Of: whev_original_event replay_of_event_id: whev_original_event blocked endpoint management: HTTP 409 canceled delivery status: canceled
GET/api/open/quota
/api/open/quotaসাম্প্ৰতিক কোটা আৰু বাকী থকা ব্যৱহাৰ পঢ়ক।
অনুৰোধৰ উদাহৰণ
curl -X GET "https://watermeterai.com/api/open/quota" \ -H "Authorization: Bearer wm_xxxxxxxxxxxxxxxxx"
প্ৰতিক্ৰিয়াৰ উদাহৰণ
{
"ok": true,
"email": "[email protected]",
"quota": {
"account_type": "free",
"daily_limit": 20,
"used": 3,
"remaining": 17,
"day_tag": "2026-06-01",
"is_unlimited": false,
"monthly_remaining": 0,
"monthly_bonus_remaining": 0,
"fixed_remaining": 0,
"nearest_expire_at": null,
"quota_summary_text": "Free daily quota: 3/20 used today. Remaining: 17."
}
}GET/api/open/ai-status
/api/open/ai-statusকাৰ্য্য দাখিল আৰু কেচ-ফলাফল ফলবেকৰ বাবে ৰাজহুৱা সেৱাৰ স্থিতি পঢ়ক।
অনুৰোধৰ উদাহৰণ
curl -X GET "https://watermeterai.com/api/open/ai-status" \ -H "Authorization: Bearer wm_xxxxxxxxxxxxxxxxx"
প্ৰতিক্ৰিয়াৰ উদাহৰণ
{
"ok": true,
"is_online": true,
"busy": false,
"active_jobs": 0,
"public_status": "online",
"public_status_label": "online",
"public_status_reason": "ready",
"accepts_new_tasks": true,
"can_return_cached_result": true,
"queue_state": "idle",
"queue_count": 0,
"current_ai_version": "water_v2:wm-ai-v2-2026-06-01",
"last_checked_at": "2026-06-01T06:15:30Z"
}POST/api/open/tasks
/api/open/tasksএখন ছবি আপল'ড কৰক আৰু এটা কাৰ্য্য সৃষ্টি কৰক।
অনুৰোধৰ উদাহৰণ
curl -X POST "https://watermeterai.com/api/open/tasks" \ -H "Authorization: Bearer wm_xxxxxxxxxxxxxxxxx" \ -F "file=@D:\data\meter_001.jpg"
প্ৰতিক্ৰিয়াৰ উদাহৰণ
{
"ok": true,
"task_id": "8e6c4d1f8f8348c0bc53e2e39d2dc111",
"status": "queued",
"result_source": "pending",
"visibility": "private",
"ai_online": true,
"is_latest_ai_version": false,
"final_reading": "-",
"result_summary": {
"resultKind": "unknown",
"primaryLabel": "Result",
"primaryValue": "-",
"secondaryLabel": "Detail",
"secondaryValue": "-",
"summaryText": "No result is available yet."
},
"error_message": "",
"created_at": "2026-06-01T06:16:10Z"
}GET/api/open/tasks/{task_id}
/api/open/tasks/{task_id}এটা কাৰ্য্য স্থিতি আৰু অন্তিম পঠন পঢ়ক।
অনুৰোধৰ উদাহৰণ
curl -X GET "https://watermeterai.com/api/open/tasks/task_a" \ -H "Authorization: Bearer wm_xxxxxxxxxxxxxxxxx"
প্ৰতিক্ৰিয়াৰ উদাহৰণ
{
"ok": true,
"task_id": "8e6c4d1f8f8348c0bc53e2e39d2dc111",
"status": "done",
"result_source": "fresh",
"ai_online": true,
"is_latest_ai_version": true,
"final_reading": "123.45",
"meter_type": "pointer",
"success": "yes",
"result_summary": {
"resultKind": "water_meter",
"primaryLabel": "Final Reading",
"primaryValue": "123.45",
"secondaryLabel": "Meter Type",
"secondaryValue": "pointer",
"summaryText": "Water meter recognition finished."
},
"error_message": "",
"created_at": "2026-06-01T06:16:10Z"
}GET/api/open/tasks
/api/open/tasksসাম্প্ৰতিক API কী ব্যৱহাৰকৰ্তাৰ গৰাকীত্বৰ শেহতীয়া কাৰ্য্যসমূহ পঢ়ক।
অনুৰোধৰ উদাহৰণ
curl -X GET "https://watermeterai.com/api/open/tasks?limit=20" \ -H "Authorization: Bearer wm_xxxxxxxxxxxxxxxxx"
প্ৰতিক্ৰিয়াৰ উদাহৰণ
{
"ok": true,
"items": [
{
"task_id": "8e6c4d1f8f8348c0bc53e2e39d2dc111",
"status": "done",
"result_source": "cached_exact",
"final_reading": "123.45",
"meter_type": "pointer",
"success": "yes",
"result_summary": {},
"ai_online": true,
"is_latest_ai_version": true,
"created_at": "2026-06-01T06:16:10Z",
"error_message": ""
}
]
}POST/api/open/batches
/api/open/batchesএটা অনুৰোধত একাধিক প্ৰতিচ্ছবি আপল'ড কৰক।
অনুৰোধৰ উদাহৰণ
curl -X POST "https://watermeterai.com/api/open/batches" \ -H "Authorization: Bearer wm_xxxxxxxxxxxxxxxxx" \ -F "files=@D:\data\meter_001.jpg" \ -F "files=@D:\data\meter_002.jpg"
প্ৰতিক্ৰিয়াৰ উদাহৰণ
{
"ok": true,
"batch_id": "5a14f4e5f6d34fdabce00e62c0dd0001",
"status": "batch_running",
"total_count": 2,
"done_count": 0,
"failed_count": 0,
"pending_count": 2,
"items": [
{
"index": 0,
"file_name": "meter_001.jpg",
"task_id": "task_a",
"status": "queued",
"result_source": "pending",
"final_reading": "-",
"failure_kind": "",
"error_message": ""
},
{
"index": 1,
"file_name": "meter_002.jpg",
"task_id": "task_b",
"status": "queued",
"result_source": "pending",
"final_reading": "-",
"failure_kind": "",
"error_message": ""
}
]
}GET/api/open/batches/{batch_id}
/api/open/batches/{batch_id}চামৰ প্ৰগতি আৰু প্ৰতি-ফাইল কাৰ্য্য অৱস্থাসমূহ পঢ়ক।
অনুৰোধৰ উদাহৰণ
curl -X GET "https://watermeterai.com/api/open/batches/5a14f4e5f6d34fdabce00e62c0dd0001" \ -H "Authorization: Bearer wm_xxxxxxxxxxxxxxxxx"
প্ৰতিক্ৰিয়াৰ উদাহৰণ
{
"ok": true,
"batch_id": "5a14f4e5f6d34fdabce00e62c0dd0001",
"status": "batch_done",
"total_count": 2,
"done_count": 2,
"failed_count": 0,
"pending_count": 0,
"items": [
{
"index": 0,
"file_name": "meter_001.jpg",
"task_id": "task_a",
"status": "done",
"result_source": "fresh",
"final_reading": "123.45",
"failure_kind": "",
"error_message": ""
},
{
"index": 1,
"file_name": "meter_002.jpg",
"task_id": "task_b",
"status": "done",
"result_source": "cached_exact",
"final_reading": "456.78",
"failure_kind": "",
"error_message": ""
}
]
}পৰামৰ্শ দিয়া প্ৰৱাহ
- ডাঙৰ কামৰ বোজা প্ৰেৰণ কৰাৰ আগতে `GET /api/open/ai-status` পৰীক্ষা কৰিব।
- জমা দিয়াৰ ঠিক পিছতে `task_id` বা `batch_id` আপোনাৰ নিজৰ চিষ্টেমত সংৰক্ষণ কৰিব।
- `queued`, `running`, `waiting_ai`, `batch_waiting_ai` আৰু `batch_running`ক অ-চূড়ান্ত অৱস্থা বুলি গণ্য কৰি অৱস্থা পৰীক্ষা কৰি থাকক।
- বেকএণ্ডলৈ নেটৱৰ্ক পথত অধিক বিলম্ব থাকিলে আৰু মোতায়েন কৰা সেৱাই বেটচ মোড সমৰ্থন কৰিলে বেটচ অনুৰোধ ব্যৱহাৰ কৰক।
- বেচ্চ অনুৰোধবোৰ বৰ্তমানে `webBackend -> dispatchCenter -> waterMeterAi`ৰ মাজেৰে প্ৰবাহিত হয়।
- `batch_waiting_ai` অৰ্থ হৈছে প্ৰতিটো আইটেম এতিয়াও AI সেৱাৰ বাবে অপেক্ষা কৰি আছে, এতিয়াও সক্ৰিয়ভাৱে চলি থকা নাই।
- মোতায়েন কৰা সেৱা `CAD` হ'লে এতিয়াৰ বাবে `POST /api/open/tasks` ব্যৱহাৰ কৰক আৰু বেটচ আপল'ড অনুপলব্ধ বুলি গণ্য কৰক।
ত্ৰুটি টোকাসমূহ
- 400: অবৈধ অনুৰোধ, অথবা মোতায়েন কৰা সেৱাই বেটচ আপল'ড সমৰ্থন নকৰে।
- 401: API কি' সন্ধানহিন, অবৈধ, মেয়াদ উত্তীৰ্ণ অথবা অসামৰ্থবান।
- 403: the user account is not active, the key lacks the required scope, or the source IP is outside the key allowlist.
- 404: কাৰ্য্য অথবা চাম পোৱা নগল, অথবা বৰ্তমান ব্যৱহাৰকাৰীৰ মালিকানাধীন নহয়।
- 413: ফাইল অতি ডাঙৰ।
- 415: অসমৰ্থিত ছবিৰ ধৰণ অথবা অবৈধ ছবিৰ সমল।
- 429: quota exhausted or the API key request, submission, or concurrency limit was exceeded.
এটা 400 চাম আপল'ড অনুপলব্ধ
{
"detail": "batch upload is not supported for business: cax"
}401 API কি' সন্ধানহিন অথবা বৈধ নহয়
{
"ok": false,
"error": "unauthorized",
"message": "Missing or invalid API key."
}413 ফাইল অতি ডাঙৰ
{
"ok": false,
"error": "file_too_large",
"message": "Maximum file size is 20MB."
}429 কোটা শেষ হৈছে
{
"ok": false,
"error": "quota_exhausted",
"message": "Quota exhausted.",
"quota": {
"remaining": 0,
"quota_summary_text": "Free daily quota: 20/20 used today. Remaining: 0."
}
}ৱৰ্কফ্ল' পৰীক্ষা কৰিবলৈ সাজু?
প্ৰথম ফটোৰ বাবে ৱেব কৰ্মস্থান ব্যৱহাৰ কৰক, তাৰ পিছত ফলাফল সজ্জাটো আপোনাৰ চিষ্টেমত খাপ খোৱাৰ পিছত API কীলৈ যাওক।