Search device catalog
Find the catalog device_id for a product, or browse the catalog when you have no search term. Use it to map your product catalog to Leap’s programmatically instead of by hand. A query parameter this endpoint does not recognise returns 400 rather than being ignored, so a misspelled filter fails loudly.
Authorizations
Your Leap API key as a Bearer token. Send it in the Authorization header: Authorization: Bearer <api-key>.
Query Parameters
Free-text query over manufacturer, model name and model number. Omit it to browse rather than search.
1Device category, addressed by its stable name (case-insensitive): hvac, ev_charger, solar_storage, water_heater, smart_thermostat, weatherization, vehicle, meter, panel_make_ready, solar_panel. Address a category by name: the category's own id is specific to one Leap environment and is not accepted here. An unknown name is a 400 naming the categories that exist.
Exact (case-insensitive) match on the device's subcategory. The stored vocabulary is uncontrolled today, so treat this as a filter on values you have already seen in subcategory on a response, not as an enum.
Resolves specific catalog devices by id: a comma-separated list of catalog device UUIDs, at most 100 per request. Combines with the other filters by AND, so ids plus category returns only the named devices that also sit in that category.
Intended for resolving already-attached customer devices, where the caller holds device UUIDs and needs the full catalog record for each one. An id that matches no device currently in the catalog is simply absent from the results rather than an error, so match the responses back to the ids you asked for. A malformed UUID, an empty value, or more than 100 ids is a 400.
100^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$Rows per page, 1 to 500. Defaults to limit when only limit is given, else to 20. Cannot be combined with limit.
1 <= x <= 500Opaque cursor from a previous response's next_page_token. Only valid when replayed with the same q, category and subcategory; replaying it against different filters is a 400. Cannot be combined with offset.
Legacy alias for page_size, kept so existing callers keep working. The ceiling was raised from 50 to 500.
1 <= x <= 500Legacy row offset, kept so existing callers keep working. Prefer page_token.
x >= 0Response
Ranked page of matching devices.
Offset for the next page, or null when this is the last page. Kept for callers still paging with limit + offset.
Cursor for the next page, or null when this is the last page. Pass it back as page_token. Present alongside next_offset whichever paging style the request used, so a caller can switch.