---
title: "Search messages"
method: GET
path: "/search/messages"
tags: ["Search"]
---

# Search messages

`GET /search/messages`

Searches messages in conversations accessible to the authenticated API key.

## Query parameters

- `q` string, required — Search query text.
- `author` string — Comma-separated author workspace member identifiers.
- `conversation` string — Comma-separated conversation identifiers.
- `thread` string — Thread root message identifier.
- `after` string — Cursor or ISO timestamp after which results should be returned.
- `before` string — Cursor or ISO timestamp before which results should be returned.
- `cursor` string — Opaque cursor returned by data.page_info.next_cursor. Reuse it unchanged with the same query and filters.
- `mode` 'full-text' — Search mode.

## Response `200`

Message search results.

- SearchMessagesResponse — Search messages response. Results are returned in data.items; top-level items is a compatibility alias.
  - `data` object, required — Standard paginated public response data.
    - `items` PublicApiSearchMessageResult[], required — Message results.
      - `authorWorkspaceMembershipId` string, required — Canonical author workspace membership identifier. Matches legacy author_id during the compatibility window.
      - `author_id` string, required — Author workspace member identifier. Deprecated: read authorWorkspaceMembershipId instead.
      - `author_name` string, nullable, required — Author workspace member display name.
      - `content` string, nullable, required — Message markdown content.
      - `conversation_id` string, required — Conversation identifier.
      - `conversation_name` string, nullable, required — Conversation name.
      - `created_at` string, date-time, required — Message creation timestamp.
      - `id` string, required — Message identifier.
      - `image_urls` string[], required — Image URLs extracted from the message.
      - `replies_count` integer, required — Number of thread replies.
    - `page_info` PublicApiPageInfo, required — Target public API pagination metadata with snake_case field names.
      - `end_cursor` string, nullable — Cursor for the last item.
      - `has_next_page` boolean, required — Whether another page exists after this page.
      - `has_previous_page` boolean — Whether another page exists before this page.
      - `next_cursor` string, nullable — Cursor for the next page.
      - `previous_cursor` string, nullable — Cursor for the previous page.
      - `start_cursor` string, nullable — Cursor for the first item.
  - `items` PublicApiSearchMessageResult[], required — Compatibility alias for data.items. New clients should read data.items.
    - `authorWorkspaceMembershipId` string, required — Canonical author workspace membership identifier. Matches legacy author_id during the compatibility window.
    - `author_id` string, required — Author workspace member identifier. Deprecated: read authorWorkspaceMembershipId instead.
    - `author_name` string, nullable, required — Author workspace member display name.
    - `content` string, nullable, required — Message markdown content.
    - `conversation_id` string, required — Conversation identifier.
    - `conversation_name` string, nullable, required — Conversation name.
    - `created_at` string, date-time, required — Message creation timestamp.
    - `id` string, required — Message identifier.
    - `image_urls` string[], required — Image URLs extracted from the message.
    - `replies_count` integer, required — Number of thread replies.

## Other responses

- `400` — Bad request.
- `401` — Missing or invalid API key.
- `403` — Forbidden.
- `404` — Not found.
- `409` — Conflict.
- `429` — Rate limit or quota exceeded.
- `500` — Internal server error.

---

[API](https://skmtc.net/ando/apis/ando-public-api.md) · [All operations](https://skmtc.net/ando/apis/ando-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ando/ando-public-api/revisions/0a94056fba48/schema)
