import { PeriskopeApi } from '@periskope/periskope-client';
const client = new PeriskopeApi({
authToken: 'YOUR_API_KEY',
});
async function main() {
const response = await client.tasks.listTasks();
console.log(response);
}
main();curl -X GET 'https://api.periskope.app/v1/tasks' \
-H 'Authorization: Bearer YOUR_API_KEY'{
"from": 1,
"to": 20,
"count": 20,
"tasks": [
{
"task_id": "task-aaaaaaaaaaaa",
"title": "Call back the customer about the renewal quote",
"type": "message",
"status": "open",
"priority": 2,
"assignee": "user@example.com",
"created_by": "api",
"last_updated_by": "api",
"created_at": "2026-01-15T09:30:00.000Z",
"last_updated_at": "2026-01-15T09:30:00.000Z",
"due_date": "2026-01-20T17:00:00.000Z",
"remind_at": "2026-01-20T09:00:00.000Z",
"notes": "Customer prefers a call after 3pm IST",
"chat_id": "120363000000000000@g.us",
"association": {
"type": "message",
"chat_id": "120363000000000000@g.us",
"message_id": "false_120363000000000000@g.us_AAAAAAAAAAAAAAAAAAAA",
"ticket_id": "ACM-042"
},
"completed_metadata": {
"completed_at": "2026-01-21T10:15:00.000Z",
"completed_by": "user@example.com"
}
}
]
}{
"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
}Get All Tasks
Returns the tasks of the workspace, newest first, across every task kind.
import { PeriskopeApi } from '@periskope/periskope-client';
const client = new PeriskopeApi({
authToken: 'YOUR_API_KEY',
});
async function main() {
const response = await client.tasks.listTasks();
console.log(response);
}
main();curl -X GET 'https://api.periskope.app/v1/tasks' \
-H 'Authorization: Bearer YOUR_API_KEY'{
"from": 1,
"to": 20,
"count": 20,
"tasks": [
{
"task_id": "task-aaaaaaaaaaaa",
"title": "Call back the customer about the renewal quote",
"type": "message",
"status": "open",
"priority": 2,
"assignee": "user@example.com",
"created_by": "api",
"last_updated_by": "api",
"created_at": "2026-01-15T09:30:00.000Z",
"last_updated_at": "2026-01-15T09:30:00.000Z",
"due_date": "2026-01-20T17:00:00.000Z",
"remind_at": "2026-01-20T09:00:00.000Z",
"notes": "Customer prefers a call after 3pm IST",
"chat_id": "120363000000000000@g.us",
"association": {
"type": "message",
"chat_id": "120363000000000000@g.us",
"message_id": "false_120363000000000000@g.us_AAAAAAAAAAAAAAAAAAAA",
"ticket_id": "ACM-042"
},
"completed_metadata": {
"completed_at": "2026-01-21T10:15:00.000Z",
"completed_by": "user@example.com"
}
}
]
}{
"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.
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, up to 2000. Defaults to 1000.
1 <= x <= 20001000
One or more task kinds, comma-separated: 'todo', 'chat', 'message', 'ticket'.
"todo,chat"
One or more statuses, comma-separated: 'open', 'inprogress', 'closed'.
"open,inprogress"
One or more priorities, comma-separated: 1 (low), 2 (medium), 3 (high).
"2,3"
One or more assignee member emails, comma-separated.
"user@example.com"
One or more creator member emails (or "api"), comma-separated.
"user@example.com"
Only tasks created at or after this time (ISO 8601).
"2026-01-01T00:00:00Z"
Only tasks created at or before this time (ISO 8601).
"2026-01-31T23:59:00Z"
Only tasks due at or after this time (ISO 8601).
"2026-01-01T00:00:00Z"
Only tasks due at or before this time (ISO 8601).
"2026-01-31T23:59:00Z"
Field to sort by: 'created_at' (default) or 'due_date'.
created_at, due_date "due_date"
Sort direction: 'asc' or 'desc' (default).
asc, desc "desc"
Case-insensitive substring search on the task title.
"hello"
Response
Paginated list of tasks
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 tasks array, not the total across all pages.
20
The tasks in this page.
Show child attributes
Show child attributes
Was this page helpful?