KISI Controllers API

The Controllers API from KISI — 5 operation(s) for controllers.

Operations 6

GET /controllers Fetch controllers #
POST /controllers/{token}/assign Assign a controller by token #
POST /controllers/{id}/deassign Deassign a controller #
POST /controllers/{id}/reboot Reboot a controller #
GET /controllers/{id} Fetch controller #
PATCH /controllers/{id} Update controller #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/kisi-controllers-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

kisi-controllers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  title: Kisi Controllers API
  description: '## Introduction


    Welcome to the Kisi API documentation.'
  contact:
    name: Kisi Support
    email: support@getkisi.com
servers:
- url: https://api.kisi.io
  description: Kisi Production
tags:
- name: Controllers
paths:
  /controllers:
    get:
      operationId: fetchControllers
      summary: Fetch controllers
      tags:
      - Controllers
      security:
      - Kisi-Login: []
      - OAuth2: []
      parameters:
      - name: ids
        in: query
        schema:
          type: string
        description: Filter by object IDs
      - name: query
        in: query
        schema:
          type: string
        description: 'Filter by a freetext string. Properties searched: `name`, `device_id`, `token`

          '
      - name: place_id
        in: query
        schema:
          type: integer
        description: Filter by place ID
      - name: lock_id
        in: query
        schema:
          type: integer
        description: Filter by lock ID
      - name: limit
        in: query
        schema:
          type: integer
          default: 10
          maximum: 250
        description: The number of objects to return
      - name: offset
        in: query
        schema:
          type: integer
          default: 0
          maximum: 20000
        description: The number of objects to offset
      - name: status
        in: query
        schema:
          type: string
          enum:
          - online
          - offline
        description: Filter by status
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - name
          - -name
        description: 'Sort the results. Prepend `-` to sort in reverse order.


          `name` - sort by group name, alphabetically

          '
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  title: Controller
                  properties:
                    id:
                      type: integer
                      description: The ID of the controller
                    resource_type:
                      type: string
                      description: The resource type of the controller
                      const: Controller
                    name:
                      type: string
                      description: The name of the controller
                    description:
                      type:
                      - string
                      - 'null'
                      description: The description of the controller
                    created_at:
                      type: string
                      format: date-time
                      description: When the controller was created
                    updated_at:
                      type: string
                      format: date-time
                      description: When the controller was updated
                    broadcast_ip_address:
                      type:
                      - string
                      - 'null'
                      description: The broadcast IP address of the controller
                    configured:
                      type: boolean
                      description: Whether the controller is configured
                    device_id:
                      type: string
                      pattern: ^[a-fA-F0-9]{16}$
                      minLength: 16
                      maxLength: 16
                      description: 'The device ID of the controller

                        '
                    ethernet_mac:
                      type: string
                      description: The ethernet MAC address of the controller
                    gateway_ip_address:
                      type:
                      - string
                      - 'null'
                      description: The gateway IP address of the controller
                    ip_address:
                      type:
                      - string
                      - 'null'
                      description: The IP address of the controller
                    model:
                      type: string
                      enum:
                      - router-8.0
                      - controller-pro-1.1
                      - controller-pro-2.0
                      description: The model of the controller
                    network_interface:
                      type:
                      - string
                      - 'null'
                      enum:
                      - ethernet
                      - wifi
                      - null
                      description: The network interface of the controller
                    network:
                      type:
                      - string
                      - 'null'
                      description: The network of the controller
                    online:
                      type: boolean
                      description: Whether the controller is online
                    revision:
                      type: string
                      description: The revision of the controller
                    token:
                      type: string
                      description: The token of the controller
                    wifi_mac:
                      type: string
                      description: The wifi MAC address of the controller
                    zone_controller:
                      type: boolean
                      description: Whether the controller is a zone_controller
                    place_id:
                      type: integer
                      description: The place ID of the controller
                    place:
                      type: object
                      title: Place
                      description: The place of the controller
                      properties:
                        id:
                          type: integer
                          description: The ID of the place
                        resource_type:
                          type: string
                          description: The resource type of the place
                          const: Place
                        name:
                          type: string
                          description: The name of the place
                      required:
                      - id
                      - resource_type
                      - name
                      additionalProperties: false
                  required:
                  - id
                  - resource_type
                  - name
                  - description
                  - created_at
                  - updated_at
                  - broadcast_ip_address
                  - configured
                  - device_id
                  - ethernet_mac
                  - gateway_ip_address
                  - ip_address
                  - model
                  - network_interface
                  - network
                  - online
                  - revision
                  - token
                  - wifi_mac
                  - zone_controller
                  - place_id
                  - place
                  additionalProperties: false
          headers:
            X-Collection-Range:
              description: 'Pagination information for offset based pagination. `start-end` represents the range

                of items requested. `total` represents the total count of items. If there is a total

                of 15 items and an offset of 10 and limit of 10 is used, the resulting header is:

                `10-19/15`.

                '
              schema:
                type: string
                pattern: ^(?<start>\d+)-(?<end>\d+)/(?<total>\d+)$
              example: 0-9/200
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /controllers/{token}/assign:
    post:
      operationId: assignController
      summary: Assign a controller by token
      tags:
      - Controllers
      security:
      - Kisi-Login: []
      - OAuth2: []
      parameters:
      - name: token
        in: path
        schema:
          type: string
        description: The token of the controller.
        required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              title: Controller
              properties:
                controller:
                  type: object
                  properties:
                    name:
                      type: string
                      description: The name of the controller
                    place_id:
                      type: integer
                      description: The place ID of the controller
                  required:
                  - name
                  - place_id
              required:
              - controller
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
  /controllers/{id}/deassign:
    post:
      operationId: deassignController
      summary: Deassign a controller
      tags:
      - Controllers
      security:
      - Kisi-Login: []
      - OAuth2: []
      parameters:
      - name: id
        in: path
        schema:
          type: integer
        required: true
        description: The ID of the object
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
  /controllers/{id}/reboot:
    post:
      operationId: rebootController
      summary: Reboot a controller
      tags:
      - Controllers
      security:
      - Kisi-Login: []
      - OAuth2: []
      parameters:
      - name: id
        in: path
        schema:
          type: integer
        required: true
        description: The ID of the object
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /controllers/{id}:
    get:
      operationId: fetchController
      summary: Fetch controller
      tags:
      - Controllers
      security:
      - Kisi-Login: []
      - OAuth2: []
      parameters:
      - name: id
        in: path
        schema:
          type: integer
        required: true
        description: The ID of the object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                title: Controller
                properties:
                  id:
                    type: integer
                    description: The ID of the controller
                  resource_type:
                    type: string
                    description: The resource type of the controller
                    const: Controller
                  name:
                    type: string
                    description: The name of the controller
                  description:
                    type:
                    - string
                    - 'null'
                    description: The description of the controller
                  created_at:
                    type: string
                    format: date-time
                    description: When the controller was created
                  updated_at:
                    type: string
                    format: date-time
                    description: When the controller was updated
                  broadcast_ip_address:
                    type:
                    - string
                    - 'null'
                    description: The broadcast IP address of the controller
                  configured:
                    type: boolean
                    description: Whether the controller is configured
                  device_id:
                    type: string
                    pattern: ^[a-fA-F0-9]{16}$
                    minLength: 16
                    maxLength: 16
                    description: 'The device ID of the controller

                      '
                  ethernet_mac:
                    type: string
                    description: The ethernet MAC address of the controller
                  gateway_ip_address:
                    type:
                    - string
                    - 'null'
                    description: The gateway IP address of the controller
                  ip_address:
                    type:
                    - string
                    - 'null'
                    description: The IP address of the controller
                  model:
                    type: string
                    enum:
                    - router-8.0
                    - controller-pro-1.1
                    - controller-pro-2.0
                    description: The model of the controller
                  network_interface:
                    type:
                    - string
                    - 'null'
                    enum:
                    - ethernet
                    - wifi
                    - null
                    description: The network interface of the controller
                  network:
                    type:
                    - string
                    - 'null'
                    description: The network of the controller
                  online:
                    type: boolean
                    description: Whether the controller is online
                  revision:
                    type: string
                    description: The revision of the controller
                  token:
                    type: string
                    description: The token of the controller
                  wifi_mac:
                    type: string
                    description: The wifi MAC address of the controller
                  zone_controller:
                    type: boolean
                    description: Whether the controller is a zone_controller
                  place_id:
                    type: integer
                    description: The place ID of the controller
                  place:
                    type: object
                    title: Place
                    description: The place of the controller
                    properties:
                      id:
                        type: integer
                        description: The ID of the place
                      resource_type:
                        type: string
                        description: The resource type of the place
                        const: Place
                      name:
                        type: string
                        description: The name of the place
                    required:
                    - id
                    - resource_type
                    - name
                    additionalProperties: false
                required:
                - id
                - resource_type
                - name
                - description
                - created_at
                - updated_at
                - broadcast_ip_address
                - configured
                - device_id
                - ethernet_mac
                - gateway_ip_address
                - ip_address
                - model
                - network_interface
                - network
                - online
                - revision
                - token
                - wifi_mac
                - zone_controller
                - place_id
                - place
                additionalProperties: false
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: updateController
      summary: Update controller
      tags:
      - Controllers
      security:
      - Kisi-Login: []
      - OAuth2: []
      parameters:
      - name: id
        in: path
        schema:
          type: integer
        required: true
        description: The ID of the object
      requestBody:
        content:
          application/json:
            schema:
              type: object
              title: Controller
              properties:
                controller:
                  type: object
                  properties:
                    name:
                      type: string
                      description: The name of the controller
                    description:
                      type:
                      - string
                      - 'null'
                      description: The description of the controller
                    zone_controller:
                      type: boolean
                      description: Whether the controller is a zone_controller
                  required: []
              required:
              - controller
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      description: Schema describing errors.
      type: object
      properties:
        error:
          type: string
          description: The error message.
          example: Wrong email address or password.
        code:
          type: string
          description: An identifier of the error.
          example: afc516
      required:
      - error
      - code
    Errors:
      description: Schema describing validation errors.
      type: object
      properties:
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          example:
            email:
            - can't be blank or invalid
            password:
            - can't be blank
      required:
      - errors
  securitySchemes:
    Webhook-Signature:
      type: apiKey
      in: header
      name: X-Signature
      description: 'Authorize using a signature of the request body. The signature is a HMAC-SHA256 hash of the request body using a secret key. <br><br>E.g. `X-Signature: 123`'
    Kisi-Login:
      type: apiKey
      in: header
      name: Authorization
      description: 'Authorize using a login. Prefix the value with `KISI-LOGIN`<br><br>Example: `Authorization: KISI-LOGIN 123`'
    Kisi-Access-Key:
      type: apiKey
      in: header
      name: Authorization
      description: 'Authorize using an access key. Prefix the value with `KISI-ACCESS-KEY`<br><br>Example: `Authorization: KISI-ACCESS-KEY 123`'
    Kisi-Group-Link:
      type: apiKey
      in: header
      name: Authorization
      description: 'Authorize using a group link. Prefix the value with `KISI-GROUP-LINK`<br><br>Example: `Authorization: KISI-GROUP-LINK 123`'
    Kisi-Service:
      type: apiKey
      in: header
      name: Authorization
      description: 'Authorize using a service. Prefix the value with `KISI-SERVICE`<br><br>Example: `Authorization: KISI-SERVICE 123`'
    OAuth2Basic:
      type: http
      scheme: basic
      description: Username is the client id. Password is the client secret.
    OAuth2:
      type: oauth2
      description: 'OAuth access tokens are sent as bearer tokens. Example: `Authorization: Bearer youraccesstoken`'
      flows:
        authorizationCode:
          authorizationUrl: https://api.kisi.io/oauth/authorize
          tokenUrl: https://api.kisi.io/oauth/token
          scopes: {}