Summary
In the first tutorial, “Submit Your First Message,” you have learned how to submit a message to a topic. In this tutorial, you will learn how to query the Hedera Mirror Node API to retrieve and filter messages.Prerequisites
We recommend that you complete the “Submit Your First Message” tutorial here to get a basic understanding of the Hedera Consensus Service. This example does not build upon the previous examples.Table of Contents
1. Create a topic and submit three messages
For this tutorial, create a new topic and submit three messages to this topic on testnet. You will use the retrieved topic ID to query for messages via the Hedera Mirror Node API. Copy and execute the following code. Make sure to write down yourtopic ID. The topic ID will be in 0.0.topicId format (ex: 0.0.1234).
2. Query the Hedera Mirror Node API
Now all three messages have been submitted to your topic ID on testnet, let’s query the mirror node. Let’s use the testnet endpoint for the Hedera Mirror Node API to query for all messages for your topic ID. Make sure to replace the topic ID with the topic ID you’ve written down and execute the request in your browser or tool of choice.✅ API result
✅ API result
3. Retrieve a specific message by sequence number
In this section, you’ll learn how to query messages by a sequence number. Each message you submit to a topic receives a sequence number starting from 1. If you take a look at the REST API docs forTopics, you’ll find the first query /api/v1/topics/{topicId}/messages. If you expand this section, you’ll find all query parameters.

✅ API result
✅ API result
Only message two is returned by the Hedera Mirror Node.
4. Advanced filtering methods for HCS messages
This section explores advanced filtering methods using query modifiers. The OpenAPI specification for the Hedera Mirror Node REST API shows all details for query parameters (e.g.timestampQueryParam).
Possible query modifiers are:
- Greater than (gt) / greater than or equal (gte)
- Lower than (lt) / lower than or equal (lte)
- Equal to (eq)
- Not equal to (ne)
sequencenumber and timestamp (consensus timestamp).
In this step, let’s query all messages with a sequence number greater than or equal to 2. To do so, let’s use the gte query parameter modifier and assign it the value 2, like this: sequencenumber=gte:2.
✅ API result
✅ API result
Only message two is returned by the Hedera Mirror Node.
Have a question? Ask it on StackOverflow