Butlr Developer Docs
  • Welcome
  • What is Butlr
  • Spatial Metrics
  • Getting Started
    • Authentication
    • Making your first query
    • Mint Client Credentials
  • Changelog
  • Asset Management
    • GraphQL API Overview
      • Sites
      • Buildings
      • Floors
      • Rooms
      • Zones
      • Hives
      • Sensors
      • Asset Tags
    • GraphQL API Introsepction
  • Historical Occupancy
    • Reporting API Overview
      • Floor Occupancy
      • Room Occupancy
      • Zone Occupancy
      • Query Occupancy by Tag
      • Traffic
      • Presence Time
      • Statistic Overview
    • FAQs
  • Real-time occupancy
    • Webhooks Overview
      • Area Detections
      • Entryway Traffic
      • Floor Occupancy
      • Room Occupancy
      • Zone Occupancy
      • Motion Detection
      • No Motion Detection
    • Manage Webhooks
      • Create Webhooks
      • Update Webhooks
      • Delete Webhooks
      • List Webhooks
  • LINKS
    • Butlr Postman Collection
    • Butlr Website
    • Status
    • Support
    • Log In
Powered by GitBook
On this page
  • Heatic™ Sensor
  • Butlr Developer Tools
  • GraphQL API
  • Reporting API
  • Webhook

What is Butlr

PreviousWelcomeNextSpatial Metrics

Last updated 5 months ago

Butlr is a privacy-first people-sensing platform that combines advanced hardware and software to deliver anonymous occupancy data, helping organizations understand how people interact within a space. At its core is the , which uses thermal technology to capture occupancy data while ensuring privacy. This data can be seamlessly integrated into various applications through Butlr's , enabling organizations across industries like workplace, healthcare, and retail to optimize space utilization, improve operational efficiency, and create tailored solutions.

Heatic™ Sensor

The Butlr Heatic™ sensor is a first-of-its-kind wireless device that uses thermal sensing technology to detect occupancy and human presence indoors. Unlike cameras, the Heatic™ sensor is built with a privacy-first approach, detecting body temperature and determining presence without capturing any visual images. By gathering surface temperature data and leveraging advanced machine learning models, it accurately infers human activity without ever collecting Personal Identifiable Information (PII).

The sensors form a mesh network with constant data relays to the Hive. The Hive is the central node, sending thermal data to the cloud through Wi-Fi, cellular, or Ethernet. Once in the cloud, our algorithms process the raw data into occupancy detections. These detections are accessible through Butlr's APIs for integration into your systems, or you can monitor and analyze them directly through the Butlr web application.


Butlr Developer Tools

Butlr's public APIs are the same ones we use internally to develop our applications. We currently offer a GraphQL API for querying asset data and a REST API for reporting time-series occupancy data. These APIs provide powerful tools for accessing and integrating detailed spatial and occupancy data into your own systems, ensuring consistency and reliability across all applications built on the Butlr platform.

GraphQL API

query SampleQuerySensors {
  sensors {
      data {
          client_id
          floor_id
          room_id
          hive_id
          hive_serial
          sensor_id
          name
          mac_address
          mode
          model
          sensitivity
          center
          height
          orientation
          field_of_view
      }
  }
}
query SampleQueryHives {
  hives {
      data {
          client_id
          floor_id
          room_id
          hive_id
          serial_number
          name
      }
  }
}
query SampleQueryZones {
  zones {
      data {
          client_id
          floor_id
          room_id
          zone_id
          coordinates
          name
      }
  }
}
query SampleQueryRooms {
  rooms {
      data {
          client_id
          floor_id
          room_id
          coordinates
          name
      }
  }
}
query SampleQueryFloors {
  floors {
      data {
          client_id
          building_id
          floor_id
          name
      }
  }
}
query SampleQueryBuildings {
  buildings {
      data {
          id
          name
      }
  }
}
query SampleQuerySites {
  sites {
      data {
          id
          name
          timezone
      }
  }
}

Reporting API

{
    "window": {
        "every": "1h",
        "function": "max",
        "timezone": "America/New_York"  //replace with your timezone
    },
    "filter": {
        "start": "2024-01-01T04:00:00Z",//start of the day in timezone
        "stop": "2024-01-02T04:00:00Z",//current time
        "measurements": ["floor_occupancy"],
        "spaces": {
            "eq": ["space_XXXX"] //floor(s) you are interested in
        }
    }
}
{
    "window": {
        "every": "1h",
        "function": "max",
        "timezone": "America/New_York"  //replace with your timezone
    },
    "filter": {
        "start": "2024-01-01T04:00:00Z",//start of the day in timezone
        "stop": "2024-01-02T04:00:00Z",//current time
        "measurements": ["room_occupancy"],
        "rooms": {
            "eq": ["room_XXXX"] //rooms(s) you are interested in
        }
    }
}
{
    "window": {
        "every": "1h",
        "function": "max",
        "timezone": "America/New_York"  //replace with your timezone
    },
    "filter": {
        "start": "2024-01-01T04:00:00Z",//start of the day in timezone
        "stop": "2024-01-02T04:00:00Z",//current time
        "measurements": ["traffic_floor_occupancy"],
        "spaces": {
            "eq": ["space_XXXX"] //floor(s) you are interested in
        }
    }
}
{
    "window": {
        "every": "1h",
        "function": "max",
        "timezone": "America/New_York"  //replace with your timezone
    },
    "filter": {
        "start": "2024-01-01T04:00:00Z",//start of the day in timezone
        "stop": "2024-01-02T04:00:00Z",//current time
        "measurements": ["traffic_room_occupancy"],
        "rooms": {
            "eq": ["room_XXXX"] //room(s) you are interested in
        }
    }
}

Webhook

{
  "id": "event_2oUBiSXgx48RtbZKXHm5ekpAzFe",
  "type": "DETECTIONS",
  "timestamp": 1727735832000,
  "version": "v1.0.0",
  "metadata": {
    "org_id": "org_2oUBiRES2AmpczNM5yLu7pChz8o",
    "site_id": "site_2oUBkdxF0lLJZxyWVix09ZTsMNV",
    "building_id": "building_2oUBkaFkcYwDzo7HLXpPh8bP4cD",
    "floor_id": "space_2oUBnI7YL51GNemTvKIxEgSZ8gx",
    "room_id": "room_2oUDDps5iKHHo6RwlMgGVihmTlq", // (optional)
    "hive_id": "hive_2oULLOWeATbeC4Ebfe849hNlFWk",
    "sensor_id": "2oULMisdkRfEp6mBag2gLpJ0d7Z",
    "org_name": "Murphy Group",
    "site_name": "Los Angeles",
    "building_name": "Bergnaum Building",
    "floor_name": "1st Floor",
    "room_name": "Cherry Falls", // (optional)
    "hive_serial": "21312f639defabc0",
    "mac_address": "00-17-0d-00-00-cc-bb-aa",
    "sensor_mode": "presence",
    "sensor_model": "Heatic 2+",
    "hive_model": "2.0",
    "hive_version": "2.4.4"
  },
  "data": {
    "local": [ [0.5625, 0.125], [0.75, 0.5625] ], // 2 detections
    "world": [ [85.694195, 27.829299], [87.439295, 28.577199]] // 2 detections
  }
}
{
  "id": "event_2oUBiSXgx48RtbZKXHm5ekpAzFe",
  "type": "TRAFFIC",
  "timestamp": 1727735832000,
  "version": "v1.0.0",
  "metadata": {
    "org_id": "org_2oUBiRES2AmpczNM5yLu7pChz8o",
    "site_id": "site_2oUBkdxF0lLJZxyWVix09ZTsMNV",
    "building_id": "building_2oUBkaFkcYwDzo7HLXpPh8bP4cD",
    "floor_id": "space_2oUBnI7YL51GNemTvKIxEgSZ8gx",
    "room_id": "room_2oUDDps5iKHHo6RwlMgGVihmTlq", // (optional)
    "hive_id": "hive_2oULLOWeATbeC4Ebfe849hNlFWk",
    "sensor_id": "2oULMisdkRfEp6mBag2gLpJ0d7Z",
    "org_name": "Murphy Group",
    "site_name": "Los Angeles",
    "building_name": "Bergnaum Building",
    "floor_name": "1st Floor",
    "room_name": "Cherry Falls", // (optional)
    "hive_serial": "21312f639defabc0",
    "mac_address": "00-17-0d-00-00-cc-bb-aa",
    "sensor_mode": "traffic",
    "sensor_model": "Heatic 2+",
    "hive_model": "2.0",
    "hive_version": "2.4.4"
  },
  "data": {
    "in": 0,
    "out": 1
  }
}
{
  "id": "event_2oUBiSXgx48RtbZKXHm5ekpAzFe",
  "type": "FLOOR_OCCUPANCY",
  "timestamp": 1727735832000,
  "version": "v1.0.0",
  "metadata": {
    "org_id": "org_2oUBiRES2AmpczNM5yLu7pChz8o",
    "site_id": "site_2oUBkdxF0lLJZxyWVix09ZTsMNV",
    "building_id": "building_2oUBkaFkcYwDzo7HLXpPh8bP4cD",
    "floor_id": "space_2oUBnI7YL51GNemTvKIxEgSZ8gx",
    "org_name": "Murphy Group",
    "site_name": "Los Angeles",
    "building_name": "Bergnaum Building",
    "floor_name": "1st Floor"
  },
  "data": 25
}
{
  "id": "event_2oUBiSXgx48RtbZKXHm5ekpAzFe",
  "type": "ROOM_OCCUPANCY",
  "timestamp": 1727735832000,
  "version": "v1.0.0",
  "metadata": {
    "org_id": "org_2oUBiRES2AmpczNM5yLu7pChz8o",
    "site_id": "site_2oUBkdxF0lLJZxyWVix09ZTsMNV",
    "building_id": "building_2oUBkaFkcYwDzo7HLXpPh8bP4cD",
    "floor_id": "space_2oUBnI7YL51GNemTvKIxEgSZ8gx",
    "room_id": "room_2oUDDps5iKHHo6RwlMgGVihmTlq",
    "org_name": "Murphy Group",
    "site_name": "Los Angeles",
    "building_name": "Bergnaum Building",
    "floor_name": "1st Floor",
    "room_name": "Cherry Falls"
  },
  "data": 4
}
{
  "id": "event_2oUBiSXgx48RtbZKXHm5ekpAzFe",
  "type": "ZONE_OCCUPANCY",
  "timestamp": 1727735832000,
  "version": "v1.0.0",
  "metadata": {
    "org_id": "org_2oUBiRES2AmpczNM5yLu7pChz8o",
    "site_id": "site_2oUBkdxF0lLJZxyWVix09ZTsMNV",
    "building_id": "building_2oUBkaFkcYwDzo7HLXpPh8bP4cD",
    "floor_id": "space_2oUBnI7YL51GNemTvKIxEgSZ8gx",
    "room_id": "room_2oUDDps5iKHHo6RwlMgGVihmTlq", // (optional)
    "zone_id": "zone_2oUJLGKGlqPjwnUCwXNXpX3HB28",
    "org_name": "Murphy Group",
    "site_name": "Los Angeles",
    "building_name": "Bergnaum Building",
    "floor_name": "1st Floor",
    "room_name": "Cherry Falls", // (optional)
    "zone_name": "Desk 01"
  },
  "data": 4
}

The Butlr is designed for asset data management, enabling querying and mutating specific details about assets such as buildings, floors, rooms, sensors, and hives. It’s beneficial for developers who need customized queries and mutations to build tailored applications or integrate data into existing systems. The API provides fine-grained control over the data you request, making it ideal for scenarios where you need specific information and the ability to manipulate data efficiently.

The is a REST API focused on delivering time-series occupancy data, making it suitable for analyzing trends in space utilization. This API is best used for standardized reporting, where aggregated data is needed to manage and optimize physical spaces. Use this API to track occupancy patterns over time or analyze historical trends, enabling data-driven decisions that enhance space management strategies.

The are event-triggered mechanisms that enable real-time data delivery to external systems. When specific events occur—such as changes in occupancy or sensor activity—webhooks automatically send relevant data to pre-configured endpoints. This allows seamless integration and instant updates, ensuring your systems stay synchronized without manual polling.

GraphQL API
Butlr Reporting API
Butlr Webhooks
Heatic™ sensor
APIs
Cloud Network Architecture