Send Message

Sends a message to a Service Bus queue or topic.


Method Request URI HTTP Version
POST http{s}://{serviceNamespace}{queuePath|topicPath}/messages|HTTP/1.1

Request Headers

The following table describes required and optional request headers. In addition to the listed properties, the header can contain custom properties. See the example.

Request Header Description
Authorization Specify one of the following token values:
  • Microsoft Entra JSON Web Token (JWT) token.
    Example: Authorization: Bearer <Azure AD JWT token>.
    For information on generating a Microsoft Entra token, see Authenticate from an application.
  • A SAS token.
    Example: Authorization: SharedAccessSignature sr=<NAMESPACE NAME><SHARED ACCESS KEY>&se=<TOKEN EXPIRY INSTANT>&skn=<SHARED KEY NAME>.
    For information on generating a SAS token, see Generate a Shared Access Signature token and Generate SAS token.
Content-Type Set the appropriate content type for the posted entity body (message payload).
BrokerProperties JSON-encoded set of BrokeredMessage properties.
x-ms-retrypolicy (Optional) Set to NoRetry to disable automatic retry on send operations when transient errors occur.

Request Body

The request body is the message payload.

If the message is to be received via a protocol other than HTTP/HTTPS, the message body must be serialized; for example, with an XML System.Runtime.Serialization.DataContractSerializer. For example:

MemoryStream ms = new MemoryStream();  
DataContractSerializer serializer = new DataContractSerializer(typeof(string));  
serializer.WriteObject(ms, "This is a message.");  
byte[] body = ms7.ToArray();  

The preceding code produces the following message body:

<string xmlns="">This is a message.</string>  

You can receive and process the message with the following code:

BrokeredMessage message = queueClient.Receive();  
string body = message.GetBody<string>(new DataContractSerializer(typeof(string)));  


The response includes an HTTP status code and a set of response headers.

Response Codes

Code Description
201 Message successfully sent to queue or topic.
400 Bad request.
401 Authorization failure.
403 Quota exceeded or message too large.
410 Specified queue or topic doesn't exist.
500 Internal error.

For information about status codes, see Status and Error Codes.

Response Headers

Content-type as passed in.

Response Body



The following HTTP request sends a message to a queue or topic. The message has the following properties:

Label: "M1"  
TimeToLive: 10 seconds  
State: Active  
Message body: "This is a message."  

In addition to the BrokeredProperties, the message carries the following custom properties: Priority=High and Customer="12345,ABC".

Authorization: SharedAccessSignature sr=your-namespace&sig=Fg8yUyR4MOmXfHfj55f5hY4jGb8x2Yc%2b3%2fULKZYxKZk%3d&se=1404256819&skn=RootManageSharedAccessKey  
BrokerProperties: {"Label":"M1","State":"Active","TimeToLive":10}  
Priority: High  
Customer: 12345,ABC  
Content-Type: application/atom+xml;type=entry;charset=utf-8  
Content-Length: 18  
Expect: 100-continue  
This is a message.  

Service Bus returns the following response:

HTTP/1.1 201 Created  
Transfer-Encoding: chunked  
Content-Type: application/xml; charset=utf-8  
Server: Microsoft-HTTPAPI/2.0  
Date: Tue, 01 Jul 2014 23:00:22 GMT  

See Also

Service Bus HTTP Client sample