import { PeriskopeApi } from '@periskope/periskope-client';
const client = new PeriskopeApi({
authToken: 'YOUR_API_KEY',
});
async function main() {
const response = await client.scheduledMessages.listScheduledMessageOccurrences({
scheduled_id: '00000000-0000-0000-0000-000000000000',
});
console.log(response);
}
main();curl -X GET 'https://api.periskope.app/v1/message/scheduled/00000000-0000-0000-0000-000000000000/occurrences' \
-H 'Authorization: Bearer YOUR_API_KEY'{
"from": 1,
"to": 20,
"count": 20,
"occurrences": [
{
"id": "00000000-0000-0000-0000-000000000000",
"scheduled_id": "00000000-0000-0000-0000-000000000000",
"chat_id": "120363000000000000@g.us",
"sent_message_id": "00000000-0000-0000-0000-000000000000",
"message_id": null,
"is_success": true,
"remarks": null,
"delivered_at": null,
"created_at": "2026-01-15T09:30:00.000Z"
}
]
}{
"code": "UNAUTHORIZED_ERROR",
"message": "Invalid bearer auth token",
"status": 401
}{
"code": "NOT_FOUND_ERROR",
"message": "Scheduled message not found",
"status": 404
}{
"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 Message Runs
Returns the run history of a scheduled message, newest first — each run records whether it sent, failed or was skipped, and the resulting message id.
import { PeriskopeApi } from '@periskope/periskope-client';
const client = new PeriskopeApi({
authToken: 'YOUR_API_KEY',
});
async function main() {
const response = await client.scheduledMessages.listScheduledMessageOccurrences({
scheduled_id: '00000000-0000-0000-0000-000000000000',
});
console.log(response);
}
main();curl -X GET 'https://api.periskope.app/v1/message/scheduled/00000000-0000-0000-0000-000000000000/occurrences' \
-H 'Authorization: Bearer YOUR_API_KEY'{
"from": 1,
"to": 20,
"count": 20,
"occurrences": [
{
"id": "00000000-0000-0000-0000-000000000000",
"scheduled_id": "00000000-0000-0000-0000-000000000000",
"chat_id": "120363000000000000@g.us",
"sent_message_id": "00000000-0000-0000-0000-000000000000",
"message_id": null,
"is_success": true,
"remarks": null,
"delivered_at": null,
"created_at": "2026-01-15T09:30:00.000Z"
}
]
}{
"code": "UNAUTHORIZED_ERROR",
"message": "Invalid bearer auth token",
"status": 401
}{
"code": "NOT_FOUND_ERROR",
"message": "Scheduled message not found",
"status": 404
}{
"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.
Path Parameters
Id of the scheduled message — the scheduled_id returned when it was created
1"00000000-0000-0000-0000-000000000000"
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 runs at or after this time (ISO 8601).
"2026-01-01T00:00:00Z"
Only runs at or before this time (ISO 8601).
"2026-01-31T23:59:00Z"
Filter runs by outcome: 'true' (sent), 'false' (failed or skipped) or 'pending' (not resolved yet).
true, false, pending "false"
Sort by run time: 'asc' or 'desc' (default).
asc, desc "desc"
Response
Paginated list of runs, newest first
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 occurrences array, not the total across all pages.
20
The occurrences in this page.
Show child attributes
Show child attributes
Was this page helpful?