Skip to content

API Reference

WhyLev edited this page Jun 12, 2026 · 1 revision

Bosch Indego Connect API — Complete Endpoint Reference

Reverse‑engineered from Bosch Smart Gardening Android app v4.1.2 (build 14246).


🌐 Overview & Global Configuration

Item Value
Base URL https://api.indego-cloud.iot.bosch-si.com
API Version Prefix /api/v1
Transport HTTPS (TLS) with certificate pinning (**.indego-cloud.iot.bosch-si.com)
Auth Scheme OAuth2 Bearer token (Bosch ID / OpenID Connect)
Auth Header Authorization: Bearer <token>
Content-Type application/json
HTTP Client Timeout 180 seconds (required due to cellular mower wake‑up latency)

Path Parameter Glossary

Placeholder Meaning
{alm} Mower serial number (ALM = Automated Lawn Mower)
{userId} Account user ID
{id} Alert ID, firmware notification ID, etc.
{countryCode} ISO 3166-1 alpha‑2 country code
{resource} Static resource name

🔐 Authentication Flow

All endpoints require a valid Bearer token except those under /api/v1/pub/.

The integration uses an automatic token refresh mechanism (OkHttp Authenticator) that renews the token when a 401 Unauthorized response is received.

Primary login endpoint:
POST /api/v1/authenticate?boschid
→ Body: DeviceDetails (app version, OS, device info)
→ Response: { "alm_sn": "...", "contextId": "...", "userId": "..." }


📑 Complete API Endpoint Matrix

Mower State & Control

Method Path Description
GET /api/v1/alms/{alm}/state Real‑time status (battery, state, position, runtime). Supports long‑polling via ?longpoll=true&timeout=...
PUT /api/v1/alms/{alm}/state Send command: { "state": "mow"|"pause"|"returnToDock" }
GET /api/v1/alms/{alm}/operatingData Detailed battery, garden, and runtime statistics

Lawn Mapping

Method Path Description
GET /api/v1/alms/{alm}/map Fetch SVG map with optional mower overlay (?showMower=true)
POST /api/v1/alms/{alm}/map Trigger a map scan / upload new map
DELETE /api/v1/alms/{alm}/map Delete stored garden map

Alerts & Errors

Method Path Description
GET /api/v1/alerts List alerts (query ?limit=N)
PUT /api/v1/alerts/{id} Mark single alert as read
DELETE /api/v1/alerts/{id} Delete single alert
PUT /api/v1/alerts Mark all alerts as read
DELETE /api/v1/alerts Delete all alerts (body { "ids": [...] } for specific)

SmartMowing (Predictive)

Method Path Description
GET /api/v1/alms/{alm}/predictive Get SmartMowing enabled status
PUT /api/v1/alms/{alm}/predictive Enable/disable ({ "enabled": true/false })
GET /api/v1/alms/{alm}/predictive/setup Get configuration (avoid rain/temperature, grass growth, etc.)
PUT /api/v1/alms/{alm}/predictive/setup Update configuration
GET /api/v1/alms/{alm}/predictive/location Get garden GPS coordinates (for weather)
PUT /api/v1/alms/{alm}/predictive/location Set garden location
GET /api/v1/alms/{alm}/predictive/weather Live weather forecast
GET /api/v1/alms/{alm}/predictive/nextcutting Predicted next mow time
GET /api/v1/alms/{alm}/predictive/lastcutting Last completed mow timestamp
GET /api/v1/alms/{alm}/predictive/schedule Computed smart schedule
PUT /api/v1/alms/{alm}/predictive/reset Reset learning data (query ?frequency=N)

Calendar (Manual Schedule)

Method Path Description
GET /api/v1/alms/{alm}/calendar Get mowing calendar
PUT /api/v1/alms/{alm}/calendar Update calendar

Security & PIN

Method Path Description
GET /api/v1/alms/{alm}/security Get security settings (autolock, PIN enabled)
PUT /api/v1/alms/{alm}/security Update PIN / autolock

Configuration & Firmware

Method Path Description
GET /api/v1/alms/{alm}/config Read config (bump sensitivity, border cut, mowing mode, etc.)
PUT /api/v1/alms/{alm}/config Update config
PUT /api/v1/alms/{alm}/dateAndTime Set mower clock
PUT /api/v1/alms/{alm}/borderCut Trigger border cut
GET /api/v1/alms/{alm}/automaticUpdate Get auto‑update preference
PUT /api/v1/alms/{alm}/automaticUpdate Set auto‑update preference
GET /api/v1/alms/{alm}/updates Check for firmware updates
PUT /api/v1/alms/{alm}/updates Start firmware update

User & Pairing

Method Path Description
GET /api/v1/users/{userId} Get user profile
PUT /api/v1/users/{userId} Modify user profile
POST /api/v1/users Create user account
POST /api/v1/alms/{alm}/pair Pair mower to account
DELETE /api/v1/alms/{alm}/pair Unpair mower
GET /api/v1/alms List all mowers for user

Public Endpoints (no auth)

Method Path Description
GET /api/v1/pub/support/{countryCode} Customer support contact
GET /api/v1/pub/video Tutorial video URL (query country_code, language, mowerType)
GET /api/v1/pub/accessories List of accessories
GET /api/v1/pub/static/{resource} Static assets (images, etc.)

EU Data & Third‑Party

Method Path Description
GET /api/v1/alms/{alm}/eu-data GDPR data export
GET /api/v1/alms/{alm}/eu-data-3p Third‑party consent status
POST /api/v1/alms/{alm}/eu-data-3p Grant consent
DELETE /api/v1/alms/{alm}/eu-data-3p Revoke consent

🛠 Integration Design Rules

  1. Timeout Handling – Always use a read timeout of 180 seconds. Mowers on cellular networks may take up to 2 minutes to respond.
  2. Long‑Polling – The GET /state endpoint supports ?longpoll=true&timeout=30&last=<last_state> for efficient real‑time updates.
  3. Error Patterns – HTTP 500 or 202 responses often contain mower‑specific error suffixes (e.g., _12288). Refer to the Error & Mower State Codes page for composite error parsing.