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.
  • பின்தளமானது கோப்பு நீட்டிப்பை மட்டுமல்ல, உண்மையான கோப்பு உள்ளடக்கத்தை சரிபார்க்கிறது.

பதிவேற்ற அளவு அமலாக்கம்

  • ஒரு படத்திற்கு 20MB வரம்பு மற்றும் 20MB மொத்த கோப்பு உள்ளடக்க வரம்புடன், தொகுப்பு பதிவேற்றங்கள் இயல்பாக 8 படங்கள் வரை ஏற்கப்படும்.
  • அதன் வரம்பை மீறும் ஒரு கோப்பு அல்லது தொகுதி படத்தை சரிபார்த்தல் அல்லது பணி உருவாக்கத்திற்கு முன் 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 விசைகளுக்குச் செல்லவும்.