CHIRP Wireless Devices API
The Devices API from CHIRP Wireless — 4 operation(s) for devices.
The Devices API from CHIRP Wireless — 4 operation(s) for devices.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/chirpwireless-io:chirpwireless-io-devices-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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: 3.2.0
info:
title: Chirpwireless Io Devices API
version: 1.0.0
description: 'Operations tagged Devices across 2 of this provider''s published API definitions: chirpwireless-io-openapi.yaml, chirpwireless-io-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.chirpwireless.io
description: Chirp API
security:
- ApiKeyAuth: []
OrgId: []
tags:
- name: Devices
paths:
/api/v2/devices:
get:
operationId: listDigitalDevices
summary: List digital devices
description: 'Retrieve all digital devices for the organization.
**Required scope:** `devices:read`'
tags:
- Devices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
devices:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
organizationId:
type: string
lastSeen:
type: string
physicalDevice:
type: object
properties:
id:
type: string
clientDeviceId:
type: string
connectionId:
type: string
sensors:
type: array
items:
type: object
properties:
id:
type: string
sensorTemplateId:
type: string
createdAt:
type: string
updatedAt:
type: string
total:
type: integer
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
parameters:
- name: organizationId
in: query
required: true
description: Organization ID
schema:
type: string
- name: limit
in: query
required: false
description: Number of items per page
schema:
type: integer
- name: offset
in: query
required: false
description: Number of items to skip
schema:
type: integer
- name: search
in: query
required: false
description: Search by device name
schema:
type: string
post:
operationId: createDigitalDevice
summary: Create digital device
description: 'Provision a new digital device with optional sensor attachment.
**Required scope:** `devices:write`'
tags:
- Devices
responses:
'200':
description: Created
content:
application/json:
schema:
type: object
properties:
id:
type: string
name:
type: string
organizationId:
type: string
physicalDevice:
type: object
properties:
id:
type: string
clientDeviceId:
type: string
connectionId:
type: string
configuration:
type: object
createdAt:
type: string
updatedAt:
type: string
sensors:
type: array
items:
type: object
properties:
id:
type: string
sensorTemplateId:
type: string
createdAt:
type: string
updatedAt:
type: string
images:
type: array
items:
type: object
properties:
id:
type: string
filename:
type: string
contentType:
type: string
url:
type: string
isCover:
type: boolean
position:
type: integer
sizeBytes:
type: integer
createdAt:
type: string
createdAt:
type: string
updatedAt:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
parameters:
- name: organizationId
in: query
required: true
description: Organization ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Device name
physicalDevice:
type: object
description: Physical device configuration (required for physical devices)
properties:
clientDeviceId:
type: string
description: Client device ID (e.g. DevEUI for LoRaWAN)
connectionId:
type: string
description: Connection ID to bind this device to
configuration:
type: object
description: Connection-specific configuration (e.g. LoRaWAN keys)
additionalProperties: true
required:
- clientDeviceId
- connectionId
images:
type: array
description: Media attachments for the device
items:
type: object
properties:
mediaId:
type: string
example: 550e8400-e29b-41d4-a716-446655440000
isCover:
type: boolean
example: false
position:
type: integer
example: 0
required:
- mediaId
required:
- name
servers:
- url: https://api.chirpwireless.io
description: Chirp API
/api/v2/devices/{id}:
get:
operationId: getDigitalDevice
summary: Get digital device
description: 'Retrieve a single device by ID.
**Required scope:** `devices:read`'
tags:
- Devices
responses:
'200':
description: Successful response
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
parameters:
- name: id
in: path
required: true
description: Device ID
schema:
type: string
- name: organizationId
in: query
required: true
description: Organization ID
schema:
type: string
patch:
operationId: updateDigitalDevice
summary: Update digital device
description: 'Update device properties (name, connection, config).
**Required scope:** `devices:write`'
tags:
- Devices
responses:
'200':
description: Successful response
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
parameters:
- name: id
in: path
required: true
description: Device ID
schema:
type: string
- name: organizationId
in: query
required: true
description: Organization ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
physicalDevice:
type: object
properties:
clientDeviceId:
type: string
connectionId:
type: string
configuration:
type: object
additionalProperties: true
delete:
operationId: deleteDigitalDevice
summary: Delete digital device
description: 'Delete a device by ID.
**Required scope:** `devices:write`'
tags:
- Devices
responses:
'200':
description: Successful response
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
parameters:
- name: id
in: path
required: true
description: Device ID
schema:
type: string
- name: organizationId
in: query
required: true
description: Organization ID
schema:
type: string
servers:
- url: https://api.chirpwireless.io
description: Chirp API
/api/v2/devices/{id}/connector-keys:
get:
operationId: getConnectorKeys
summary: Get connector keys
description: 'Retrieve connector keys for a device.
**Required scope:** `devices:read`'
tags:
- Devices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
connectorKeys:
type: array
items:
type: object
properties:
name:
type: string
timestamp:
type: integer
value:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
parameters:
- name: id
in: path
required: true
description: Device ID
schema:
type: string
- name: connectionId
in: query
required: true
description: Connection ID
schema:
type: string
- name: clientDeviceId
in: query
required: true
description: Client Device ID
schema:
type: string
- name: organizationId
in: query
required: true
description: Organization ID
schema:
type: string
servers:
- url: https://api.chirpwireless.io
description: Chirp API
/api/v2/device-profile-template:
get:
operationId: getDeviceProfileTemplate
summary: Get device profile template
description: 'Look up a LoRaWAN device profile by brand, model, and band.
**Required scope:** `devices:read`'
tags:
- Devices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
codec:
type: string
description:
type: string
deviceStatusReqInterval:
type: integer
flushQueueOnActivate:
type: boolean
id:
type: string
macVersion:
type: string
name:
type: string
payloadCodecRuntime:
type: string
regParamsRevision:
type: string
region:
type: string
supportsClassB:
type: boolean
supportsClassC:
type: boolean
supportsOtaa:
type: boolean
uplinkInterval:
type: integer
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
parameters:
- name: organizationId
in: query
required: true
description: Organization ID
schema:
type: string
- name: brand
in: query
required: true
description: Device brand (e.g., dragino)
schema:
type: string
- name: model
in: query
required: true
description: Device model (e.g., lht65)
schema:
type: string
- name: band
in: query
required: true
description: Frequency band (e.g., EU868)
schema:
type: string
servers:
- url: https://api.chirpwireless.io
description: Chirp API
components:
schemas:
Error:
type: object
required:
- error
- message
properties:
error:
type: string
message:
type: string
responses:
Unauthorized:
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: unauthenticated
message: missing X-API-Key header
Forbidden:
description: Insufficient permissions (missing required scope)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: permission_denied
message: 'API key lacks required scope: devices:write'
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: 'API key for authentication (format: `chirp_<key>`)'
OrgId:
type: apiKey
in: header
name: X-Organization-Id
description: Organization UUID that the API key belongs to
x-refined-from:
- chirpwireless-io-openapi.yaml
- chirpwireless-io-openapi.yml
x-tagGroups:
- name: REST API
tags:
- Users
- Devices
- Sensors
- Commands
- Telemetry
- Connections
- Connectors
- Dashboards
- Orgs
- Subscriptions
- Api-Keys
- Rules
- name: On-Prem / Advanced (gRPC)
tags:
- User Profile (gRPC)
- Digital Device (gRPC)
- Sensor Template (gRPC)
- Connector (gRPC)
- Connection (gRPC)
- Dashboard (gRPC)
- Widget (gRPC)
- Actuator Command (gRPC)
- Sensor Query (gRPC)
- Organizations (gRPC)
- Access Control (gRPC)