پاڻي جو ميٽر 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 ڪيز ڏانهن وڃو هڪ ڀيرو نتيجو فارميٽ توهان جي سسٽم سان ٺهڪي اچي ٿو.