import { PeriskopeApi } from '@periskope/periskope-client';
const client = new PeriskopeApi({
authToken: 'YOUR_API_KEY',
phone: '919876543210', // the phone to act with (x-phone)
});
async function main() {
const response = await client.scheduledMessages.listScheduledMessages();
console.log(response);
}
main();curl -X GET 'https://api.periskope.app/v1/message/scheduled' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'x-phone: 919876543210'{
"from": 1,
"to": 20,
"count": 20,
"scheduled_messages": [
{
"scheduled_id": "00000000-0000-0000-0000-000000000000",
"org_id": "00000000-0000-0000-0000-000000000000",
"org_phone": "911111111111@c.us",
"chat_id": "120363000000000000@g.us",
"message_payload": {
"message": "Weekly reminder: submit your report",
"media": {}
},
"scheduled_at": "2026-02-01T09:00:00.000Z",
"is_repeat": true,
"repeat_config": {
"repeat_interval": "week",
"repeat_value": 1,
"repeat_days": [
"monday",
"friday"
],
"repeat_ends": "2026-12-31T00:00:00Z"
},
"status": "scheduled",
"skip_next": false,
"paused_at": null,
"updated_at": null,
"performed_by": "api",
"created_at": "2026-01-15T09:30:00.000Z"
}
]
}{
"code": "UNAUTHORIZED_ERROR",
"message": "Invalid bearer auth token",
"status": 401
}{
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"status": 422,
"fields": {
"body.chat_id": {
"message": "chat_id is required"
}
}
}{
"code": "RATE_LIMIT_ERROR",
"message": "You can only make 100 requests per second",
"status": 429
}{
"code": "UNKNOWN_ERROR",
"message": "Internal server error",
"status": 500
}List Scheduled Messages
Returns the scheduled messages of the workspace, by next run time. Filter by chat, creator, status and repetition, search the message text, and restrict to a scheduled_at window.
import { PeriskopeApi } from '@periskope/periskope-client';
const client = new PeriskopeApi({
authToken: 'YOUR_API_KEY',
phone: '919876543210', // the phone to act with (x-phone)
});
async function main() {
const response = await client.scheduledMessages.listScheduledMessages();
console.log(response);
}
main();curl -X GET 'https://api.periskope.app/v1/message/scheduled' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'x-phone: 919876543210'{
"from": 1,
"to": 20,
"count": 20,
"scheduled_messages": [
{
"scheduled_id": "00000000-0000-0000-0000-000000000000",
"org_id": "00000000-0000-0000-0000-000000000000",
"org_phone": "911111111111@c.us",
"chat_id": "120363000000000000@g.us",
"message_payload": {
"message": "Weekly reminder: submit your report",
"media": {}
},
"scheduled_at": "2026-02-01T09:00:00.000Z",
"is_repeat": true,
"repeat_config": {
"repeat_interval": "week",
"repeat_value": 1,
"repeat_days": [
"monday",
"friday"
],
"repeat_ends": "2026-12-31T00:00:00Z"
},
"status": "scheduled",
"skip_next": false,
"paused_at": null,
"updated_at": null,
"performed_by": "api",
"created_at": "2026-01-15T09:30:00.000Z"
}
]
}{
"code": "UNAUTHORIZED_ERROR",
"message": "Invalid bearer auth token",
"status": 401
}{
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"status": 422,
"fields": {
"body.chat_id": {
"message": "chat_id is required"
}
}
}{
"code": "RATE_LIMIT_ERROR",
"message": "You can only make 100 requests per second",
"status": 429
}{
"code": "UNKNOWN_ERROR",
"message": "Internal server error",
"status": 500
}Authorizations
Your Periskope API token, sent as Authorization: Bearer <token>. Generate one from the Periskope dashboard under Settings → API & Webhooks. API access requires an active Pro or Enterprise plan.
Headers
Optional. Scope results to a single phone: country code + number without symbols or spaces (e.g. 911111111111), or a phone_id (phone-xxxxxxxxxxxx). Omit to return data across all phones the API token can access.
"919876543210"
Query Parameters
Number of records to skip before the first returned record. Use together with limit to paginate: page N is offset = N * limit. Defaults to 0.
x >= 00
Maximum number of records to return in one page. Defaults to 1000.
x >= 11000
Only messages whose next run is at or after this time (ISO 8601).
"2026-01-01T00:00:00Z"
Only messages whose next run is at or before this time (ISO 8601).
"2026-01-31T23:59:00Z"
Case-insensitive substring search on the message text of the scheduled content.
"reminder"
One or more chat_ids, comma-separated.
"120363000000000000@g.us"
One or more creators, comma-separated — member emails or "api".
"user@example.com"
One or more statuses, comma-separated: 'scheduled', 'paused', 'completed'.
"scheduled,paused"
Return only repeating (true) or only one-time (false) messages.
true, false "true"
Field to sort by: 'scheduled_at' (default) or 'created_at'.
scheduled_at, created_at "scheduled_at"
Sort direction: 'asc' or 'desc' (default).
asc, desc "desc"
Response
Paginated list of scheduled messages
1-based index of the first record in this page (offset + 1).
1
1-based index of the last record in this page.
20
Number of records in this page — the length of the scheduled_messages array, not the total across all pages.
20
The scheduled_messages in this page.
Show child attributes
Show child attributes
Was this page helpful?