---
title: "List scheduled messages"
method: GET
path: "/scheduled-messages"
tags: ["Messages"]
---

# List scheduled messages

`GET /scheduled-messages`

## Request

- Base URL: `https://api.ando.so/v1`
- URL: `https://api.ando.so/v1/scheduled-messages`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Lists the messages the calling API key scheduled that are still waiting to send, soonest first. Requires messages:write. Messages scheduled by other keys or in the app are never listed; sent and canceled messages drop out.

## Query parameters

- `cursor` string: Opaque cursor returned by data.page_info.next_cursor. Omit for the first page.
- `limit` integer: Maximum scheduled messages to return. Defaults to 50.

## Response `200`

Waiting scheduled messages.

- ScheduledMessageListResponse: The calling API key's scheduled messages that are still waiting, soonest first.
  - `data` object, required: Scheduled message list.
    - `items` ScheduledMessageResult[], required: Scheduled messages.
      - `conversation_id` string, required: Conversation the message will be sent to.
      - `created_at` string, date-time, required: When the message was scheduled.
      - `file_ids` string[], required: Attached file identifiers.
      - `id` string, required: Scheduled message identifier.
      - `markdown_content` string, required: Message body.
      - `replied_to_message_id` string, nullable, required: Immediate parent message inside the thread, if any.
      - `send_at` string, date-time, required: When the message will be sent.
      - `status` 'scheduled', required
      - `thread_root_id` string, nullable, required: Thread root message identifier for a scheduled thread reply.
    - `page_info` object, required: Pagination metadata.
      - `has_next_page` boolean, required: Whether more scheduled messages exist past this page.
      - `next_cursor` string, nullable, required: Cursor for the next page; null on the last page.

## 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.

## Changes

- **2026-10-18** `aaceae49c08d`: 12 info
  - added the optional property `request_id` to the response with the `400` status
  - added the optional property `request_id` to the response with the `401` status
  - added the optional property `request_id` to the response with the `403` status
  - added the optional property `request_id` to the response with the `404` status
  - …8 more
- **2026-10-13** `a1b7544d3bf4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ando/apis/ando-public-api/changes/scheduled-messages/get.md)

---

[API](https://skmtc.dev/ando/apis/ando-public-api.md) - [All operations](https://skmtc.dev/ando/apis/ando-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ando/apis/ando-public-api/revisions/d852746d81c2?raw)
