Publishes a message to a specified device by using a custom topic.


  • The Pub operation cannot be used to send commands of setting properties or calling services. If you need to set properties, use the SetDeviceProperty or SetDevicesProperty operation. If you need to call services, use the InvokeThingService or InvokeThingsService operation.
  • Each Alibaba Cloud account can run a maximum of 1,600 queries per second (QPS).
    Note RAM users of an Alibaba Cloud account share the quota of the account.


Alibaba Cloud provides OpenAPI Explorer to simplify API usage. OpenAPI Explorer automatically calculates the signature value. For your convenience, we recommend that you call this operation in OpenAPI Explorer. OpenAPI Explorer dynamically generates the sample code of the operation for different SDKs.

Request parameters

Parameter Type Required Example Description
Action String Yes Pub

The operation that you want to perform. Set the value to Pub.

MessageContent String Yes aGVsbG8gd29ybGQ%3D

The body of the message to be published.

To generate a message body, you must convert the raw message into binary data and perform Base64 encoding.

ProductKey String Yes a1Q5XoY****

The ProductKey of the device that receives the message.

TopicFullName String Yes /a1Q5XoY****/device1/user/get

The custom topic that is used to publish the message.

  • Topic format: /${productKey}/${deviceName}/user/${TopicShortName}.
  • You must specify the Subscribe permission, or Publish and Subscribe permissions for the topic.
Notice Make sure that the device subscribes to the topic before you call the Pub operation. Otherwise, the device cannot receive the message.

You can view the custom topics of a product on the Topic Categories tab of the Product Details page, or by calling the QueryProductTopic operation. You can view the topics to which the device subscribes on the Topic List tab of the Device Details page.

IotInstanceId String No iot-cn-0pp1n8t****

The ID of the instance. You can view the instance ID on the Overview page in the IoT Platform console.

  • If your instance has an ID, you must configure this parameter. If you do not set this parameter, the call fails.
  • If your instance has no Overview page or ID, you do not need to set this parameter.

For more information, see Overview.

Qos Integer No 0

The quality of service (QoS) level of the message. Valid values:

  • 0: The message is published at most once.
  • 1: The message is published at least once. If a PUBACK response is not returned after you publish a QoS 1 message, the message is pushed to the device again when the device reconnects with IoT Platform.

Default value: 0.

For more information about message communication, see Limits.

ResponseTopic String No /a1Q5XoY****/device1/user/update

The response topic in the request/response communication mode when you use MQTT 5.0. For more information, see MQTT 5.0.

CorrelationData String No aGVsbG8****

The related data in the request/response communication mode when you use MQTT 5.0. You can specify this parameter as needed.

A message recipient can process the request based on the data.

Note You must convert the related data into binary data and perform Base64 encoding to generate a value of the string type.
UserProp.N.Key String No key1

The custom property key that is specified when you use MQTT 5.0 for communication.

This parameter must be used in pair with the UserProp.N.Value parameter.

UserProp.N.Value String No value1

The custom property value that is specified when you use MQTT 5.0 for communication.

This parameter must be used in pair with the UserProp.N.Key parameter.

In addition to the preceding operation-specific request parameters, you must specify common request parameters when you call this operation. For more information, see Common request parameters.

Response parameters

Parameter Type Example Description
Code String iot.system.SystemException

The error code returned if the call fails. For more information, see Error codes.

ErrorMessage String A system exception occurred.

The error message returned if the call fails.

MessageId String 889455942124347329

The ID of the message. The message ID is generated by IoT Platform when the message is sent.

RequestId String BB71E443-4447-4024-A000-EDE09922891E

The ID of the request.

Success Boolean true

Indicates whether the call was successful.

  • true: The call was successful.
  • false: The call failed.


Sample requests
&<Common request parameters>

Sample success responses

XML format


JSON format


Error codes

For a list of error codes, visit the API Error Center.