Cumulocity MQTT and SmartREST API

Constrained-device MQTT broker fronting the Cumulocity REST API with a CSV-based SmartREST 2.0 payload format that saves up to 80% of mobile traffic versus JSON. Supports static templates for common operations (s/us topic family) and tenant-defined custom templates. 16 KiB max payload, MQTT 3.1.1 and 5.0 supported, TLS on port 8883.

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/cumulocity-mqtt-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 email required.

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

AsyncAPI Specification

cumulocity-mqtt-asyncapi.yml Raw ↑
asyncapi: 2.6.0
info:
  title: Cumulocity MQTT and SmartREST API
  version: 10.20.0
  description: |
    Constrained-device MQTT broker fronting the Cumulocity REST API with a CSV-based SmartREST 2.0 payload
    format that saves up to 80% of mobile traffic versus JSON. Supports static templates for common
    operations (s/us topic family) and tenant-defined custom templates.
  contact:
    name: Cumulocity
    url: https://cumulocity.com
servers:
  production-tls:
    url: '{tenant}.cumulocity.com:8883'
    protocol: mqtts
    description: TLS-secured MQTT 3.1.1/5.0 endpoint (recommended). 16 KiB max payload.
    variables:
      tenant:
        default: example
    security:
    - basicAuth: []
  production-plain:
    url: '{tenant}.cumulocity.com:1883'
    protocol: mqtt
    description: Plain MQTT endpoint (not recommended for production).
    variables:
      tenant:
        default: example
    security:
    - basicAuth: []
defaultContentType: text/plain
channels:
  s/us:
    description: SmartREST 2.0 static templates - device-to-cloud upstream messages (measurements, events, alarms,
      device identity, child device registration, software/firmware/configuration reporting).
    publish:
      operationId: publishSmartRestStatic
      summary: Publish a SmartREST 2.0 static-template message.
      message:
        $ref: '#/components/messages/SmartRestMessage'
  s/ds:
    description: SmartREST 2.0 static templates - cloud-to-device downstream messages (operations such as restart,
      firmware update, software update, configuration, shell command).
    subscribe:
      operationId: subscribeSmartRestStatic
      summary: Subscribe to operations delivered as SmartREST 2.0 static-template messages.
      message:
        $ref: '#/components/messages/SmartRestMessage'
  s/uc/{templateXId}:
    description: SmartREST 2.0 custom templates - device-to-cloud upstream messages using a tenant-defined template
      identified by X-ID.
    parameters:
      templateXId:
        schema: {type: string}
        description: Custom template X-ID.
    publish:
      operationId: publishSmartRestCustom
      summary: Publish a SmartREST 2.0 custom-template message.
      message:
        $ref: '#/components/messages/SmartRestMessage'
  s/dc/{templateXId}:
    description: SmartREST 2.0 custom templates - cloud-to-device downstream messages.
    parameters:
      templateXId:
        schema: {type: string}
    subscribe:
      operationId: subscribeSmartRestCustom
      summary: Subscribe to custom-template operations.
      message:
        $ref: '#/components/messages/SmartRestMessage'
  s/e:
    description: Error channel — devices subscribe to receive parse errors and operation rejection notifications.
    subscribe:
      operationId: subscribeErrors
      summary: Subscribe to error notifications.
      message:
        $ref: '#/components/messages/ErrorMessage'
components:
  messages:
    SmartRestMessage:
      name: smartRestMessage
      title: SmartREST 2.0 Message
      contentType: text/plain
      summary: A SmartREST 2.0 line — comma-separated values prefixed with a numeric template ID.
      payload:
        type: string
        examples:
        - '100,my-device-001,c8y_MQTTDevice'
        - '200,c8y_Temperature,T,21.5,C'
        - '301,c8y_Alarm,Door open,CRITICAL'
    ErrorMessage:
      name: errorMessage
      title: SmartREST Error
      contentType: text/plain
      payload:
        type: string
        examples:
        - '40,200,Invalid message format'
  securitySchemes:
    basicAuth:
      type: userPassword
      description: |
        Username in the form `{tenant}/{username}` with the user's password. The MQTT ClientId
        becomes the external ID under which the device is auto-registered.