WaterMeter AI

د اوبو میټر 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

اوسنی کوټا او پاتې کارونه ولولئ.

د غوښتنې مثال
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

د دندې سپارلو او کیش شوو پایلو ته د بېرته تګ لپاره د عامه خدمت حالت ولولئ.

د غوښتنې مثال
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

یوه انځور اپلوډ کړه او یوه دنده جوړه کړه.

د غوښتنې مثال
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}

یوه دنده حالت او وروستۍ لوستنه.

د غوښتنې مثال
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 کیلی کارونکی ملکیت دی.

د غوښتنې مثال
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

په یوه غوښتنه کې څو انځورونه اپلوډ کړئ.

د غوښتنې مثال
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}

د بیچ پرمختګ او د هر فایل دندې حالتونه ولولئ.

د غوښتنې مثال
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 کیلی ته لاړ شئ.