# Get messages {generate_api_description(/messages:get)} ## Usage examples {start_tabs} {tab|python} {generate_code_example(python)|/messages:get|example} {tab|js} More examples and documentation can be found [here](https://github.com/zulip/zulip-js). ```js const zulip = require('zulip-js'); // Pass the path to your zuliprc file here. const config = { zuliprc: 'zuliprc', }; zulip(config).then((client) => { const readParams = { stream, type: 'stream', anchor: res.id, num_before: 1, num_after: 1, }; // Fetch messages anchored around id (1 before, 1 after) return client.messages.retrieve(readParams); }).then(console.log); ``` {tab|curl} {generate_code_example(curl, exclude=["client_gravatar", "apply_markdown", "use_first_unread_anchor"])|/messages:get|example} {end_tabs} ## Arguments {generate_api_arguments_table|zulip.yaml|/messages:get} ## Response #### Return values When a request is successful, this endpoint returns a dictionary containing the following (in addition to the `msg` and `result` keys present in all Zulip API responses). * `anchor`: the same `anchor` specified in the request. * `found_newest`: whether the `messages` list includes the latest message in the narrow. * `found_oldest`: whether the `messages` list includes the oldest message in the narrow. * `found_anchor`: whether it was possible to fetch the requested anchor, or the closest in the narrow has been used. * `messages`: an array of `message` objects, each containing the following fields: * `avatar_url`: The URL of the user's avatar. * `client`: A Zulip "client" string, describing what Zulip client sent the message. * `content`: The content/body of the message. * `content_type`: The HTTP `content_type` for the message content. This will be `text/html` or `text/x-markdown`, depending on whether `apply_markdown` was set. * `display_recipient`: Data on the recipient of the message; either the name of a stream or a dictionary containing data on the users who received the message. * `flags`: The user's [message flags][message-flags] for the message. * `id`: The unique message ID. Messages should always be displayed sorted by ID. * `is_me_message`: Whether the message is a [/me status message][status-messages] * `reactions`: Data on any reactions to the message. * `emoji_code`: An encoded version of the emoji's unicode codepoint. * `emoji_name`: Name of the emoji. * `reaction_type`: If the reaction uses a [custom emoji](/help/add-custom-emoji), `reaction_type` will be set to `realm_emoji`. * `user_id`: The ID of the user who added the reaction. **Changes**: New in Zulip 2.2 (feature level 2). The `user` object is deprecated and will be removed in the future. * `user`: Dictionary with data on the user who added the reaction, including the user ID as the `id` field. **Note**: In the [events API](/api/get-events-from-queue), this `user` dictionary confusing had the user ID in a field called `user_id` instead. We recommend ignoring fields other than the user ID. **Deprecated** and to be removed in a future release once core clients have migrated to use the `user_id` field. * `recipient_id`: A unique ID for the set of users receiving the message (either a stream or group of users). Useful primarily for hashing. * `sender_email`: The email address of the message's sender. * `sender_full_name`: The full name of the message's sender. * `sender_id`: The user ID of the message's sender. * `sender_realm_str`: A string identifier for the realm the sender is in. * `sender_short_name`: Reserved for future use. * `stream_id`: Only present for stream messages; the ID of the stream. * `subject`: The `topic` of the message (only present for stream messages). The name is a legacy holdover from when topics were called "subjects". * `topic_links`: Data on any links to be included in the `topic` line (these are generated by [custom linkification filters][linkification-filters] that match content in the message's topic.) **Changes**: New in Zulip 2.2 (feature level 1). Previously, this field was called `subject_links`; clients are recommended to rename `subject_links` to `topic_links` if present for compatibility with older Zulip servers. * `submessages`: Data used for certain experimental Zulip integrations. * `timestamp`: The UNIX timestamp for when the message was sent, in UTC seconds. * `type`: The type of the message: `stream` or `private`. #### Example response A typical successful JSON response may look like: {generate_code_example|/messages:get|fixture(200)} [status-messages]: /help/format-your-message-using-markdown#status-messages [linkification-filters]: /help/add-a-custom-linkification-filter [message-flags]: /api/update-message-flags#available-flags