{
"code": "RATE_LIMIT_ERROR",
"message": "You can only make 100 requests per second",
"status": 429
}
{
"code": "UNKNOWN_ERROR",
"message": "Internal server error",
"status": 500
}
Call APIs
List Calls
Returns the organization’s call history, newest first, with recording links and AI summaries for calls handled in Periskope. Use Get a call for the transcript.
TypeScript
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.calls.listCalls();
console.log(response);
}
main();
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.
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.
Only return records at or after this time. Accepts ISO 8601 (e.g. 2026-01-01T00:00:00Z) and common date formats (YYYY-MM-DD, YYYY-MM-DD HH:mm, DD/MM/YYYY). Epoch timestamps are not supported. Compared at minute precision.
Only return records at or before this time. Accepts ISO 8601 (e.g. 2026-01-01T00:00:00Z) and common date formats (YYYY-MM-DD, YYYY-MM-DD HH:mm, DD/MM/YYYY). Epoch timestamps are not supported. Compared at minute precision.
Only return calls in these chats. A single chat_id or a comma-separated list. For 1-1 chats, country code + number optionally suffixed with @c.us (the suffix is added automatically when omitted); for groups, the id ending with @g.us.
Only return calls with this result. Accepted values: connected, missed, rejected, unavailable, cancelled, acceptedelsewhere, invalid, upcoming, failed, abandoned, ongoing. Pass one value (missed) or several, comma-separated (missed,rejected).
Only return calls with this transcription status. Accepted values: pending, done, failed. Pass one value (done) or several, comma-separated (pending,failed).
Only return calls these members were on (answered, placed or joined in Periskope). A single email or a comma-separated list, matched case-insensitively. Calls handled on the phone have no members and never match.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Periskope Docs","colors":{"primary":"#15803D","light":"#15803D"},"logo":{"light":"https://mintcdn.com/bharatkumarramesh/Sq5VlnE2OgDOCH8s/logo/periskope-logo-full.svg?fit=max\u0026auto=format\u0026n=Sq5VlnE2OgDOCH8s\u0026q=85\u0026s=cace2e822ea7c0cd2a98b9d946baa593","dark":"https://mintcdn.com/bharatkumarramesh/Sq5VlnE2OgDOCH8s/logo/periskope-logo-full.svg?fit=max\u0026auto=format\u0026n=Sq5VlnE2OgDOCH8s\u0026q=85\u0026s=cace2e822ea7c0cd2a98b9d946baa593"},"favicon":"https://mintcdn.com/bharatkumarramesh/4Au0rGi6EzWXLRIt/logo/periskope-logo.svg?fit=max\u0026auto=format\u0026n=4Au0rGi6EzWXLRIt\u0026q=85\u0026s=275c52e578008a630d9a4c6e150100a0","api":{"playground":{"display":"none"}},"appearance":{"strict":true},"navbar":{"links":[{"href":"https://www.postman.com/periskope/workspace/periskope-platform-api","label":"Postman API collection"},{"href":"https://what.sapp.link/periskope","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://console.periskope.app"}},"footer":{"socials":{"twitter":"https://twitter.com/periskope_app","linkedin":"https://www.linkedin.com/company/periskope-app","youtube":"https://www.youtube.com/@PeriskopeApp"}},"integrations":{"gtm":{"tagId":"GTM-N9SPZLGR"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bharatkumarramesh","hasAudioNarration":false,"actualSubdomain":"bharatkumarramesh","customDomains":["docs.periskope.app"],"gitSource":{"type":"github","owner":"periskope-org","repo":"docs-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ace2b08a71bd07e07006d57","collectionId":"48f31024-df92-485a-8d57-54cf320a1a90","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ace2b08a71bd07e07006d57"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ae453c63ba31227325d7ed4","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"APIs \u0026 Webhooks","count":133},{"language":"default","tag":"Documentation","count":68},{"language":"default","tag":"Webhooks","count":21},{"language":"default","tag":"Message APIs","count":14},{"language":"default","tag":"API","count":13},{"language":"default","tag":"Chat APIs","count":13},{"language":"default","tag":"AI Agent","count":11},{"language":"default","tag":"Manage WhatsApp Groups, 1:1 Chats \u0026 Communities","count":11},{"language":"default","tag":"Group Settings APIs","count":9},{"language":"default","tag":"Objects","count":9}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".image-container{max-width:50%;margin:0 auto}"}],"page":{"pagePath":"api-reference/calls/list-calls","slug":"/api-reference/calls/list-calls","pageMetadata":{"title":"List Calls","openapi":"api-reference/openapi-generated.json GET /v1/calls","description":"Returns the organization's call history, newest first, with recording links and AI summaries for calls handled in Periskope. Use Get a call for the transcript.","href":"/api-reference/calls/list-calls"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Returns the organization’s call history, newest first, with recording links and AI summaries for calls handled in Periskope. Use Get a call for the transcript.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"List Calls","openapi":"api-reference/openapi-generated.json GET /v1/calls","description":"Returns the organization's call history, newest first, with recording links and AI summaries for calls handled in Periskope. Use Get a call for the transcript.","href":"/api-reference/calls/list-calls"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"listCalls","summary":"List calls","description":"Returns the organization's call history, newest first, with recording links and AI summaries for calls handled in Periskope. Use Get a call for the transcript.","tags":["Calls"],"security":["11da1109-68ba-4e3f-827a-dfe8a5b1a27a"],"parameters":["e562a6b2-add9-40f5-b059-956a5508af60","7e8f68c1-c8b6-4fe4-a01e-34cb7615fb82","2819bd88-a384-4687-8e24-1f6473df77c6","d873ae8a-1758-4250-9eda-c53304f8b4c8","686cdaef-26e1-441a-b171-ebe2cb8766fa","f41eee86-1af0-4988-bcd6-c3defbd625c5","0e5b41da-4330-4391-bd69-99be59e75599","d47c292c-2abb-4e55-923b-66f22a0bb9db","281d2b09-7dd0-4ffa-9b04-a9e3309bf32e","70dca3f8-bcbf-4f0e-bdb8-04501c89a3d5","05e6393b-112a-4b88-8cc4-7d2aac4ed316","fc715023-e772-4faa-b474-662170b52f34","fd9bdf01-7529-4763-be46-a890f9d14680","9f22dca6-5557-4581-bf51-9c700f8de68d","8a96df95-03bf-4894-a6ef-129ab88138af","9e9910ae-8b79-4b6e-baa4-2888de14edf3"],"responses":{"200":"39a2ef69-79cc-44a4-9ae7-1449cc006e7b","401":"19f0b2b4-baaf-4d9c-a20c-847f791e865e","422":"869d520e-0ee1-4a27-8c3e-0afd036123ec","429":"c681d3ad-471e-40ba-aa65-fcc15c02bc14","500":"9a8e3b37-0623-4112-9e37-5ed27a899289"},"x-codeSamples":[{"lang":"typescript","label":"TypeScript","source":"import { PeriskopeApi } from '@periskope/periskope-client';\n\nconst client = new PeriskopeApi({\n authToken: 'YOUR_API_KEY',\n phone: '919876543210', // the phone to act with (x-phone)\n});\n\nasync function main() {\n const response = await client.calls.listCalls();\n console.log(response);\n}\n\nmain();"},{"lang":"bash","label":"cURL","source":"curl -X GET 'https://api.periskope.app/v1/calls' \\\n -H 'Authorization: Bearer YOUR_API_KEY' \\\n -H 'x-phone: 919876543210'"}],"method":"get","type":"path","servers":["09897b52-aa53-4c89-80d0-59fbc0f457de"],"path":"/v1/calls","baseUrlOptions":["https://api.periskope.app"],"title":"List calls","codeSamples":[{"label":"TypeScript","lang":"typescript","source":"import { PeriskopeApi } from '@periskope/periskope-client';\n\nconst client = new PeriskopeApi({\n authToken: 'YOUR_API_KEY',\n phone: '919876543210', // the phone to act with (x-phone)\n});\n\nasync function main() {\n const response = await client.calls.listCalls();\n console.log(response);\n}\n\nmain();"},{"label":"cURL","lang":"bash","source":"curl -X GET 'https://api.periskope.app/v1/calls' \\\n -H 'Authorization: Bearer YOUR_API_KEY' \\\n -H 'x-phone: 919876543210'"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"e562a6b2-add9-40f5-b059-956a5508af60":{"schema":{"oneOf":[{"type":"integer","minimum":0,"description":"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.","example":0,"uniqueKey":"oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"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.","example":0,"uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"integer | null"},"required":false,"description":"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.","name":"offset","in":"query"},"7e8f68c1-c8b6-4fe4-a01e-34cb7615fb82":{"schema":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum number of calls to return in one page. Cannot exceed 500. Defaults to 50.","example":50,"isRequired":false,"uniqueKey":"","typeLabel":"integer"},"required":false,"description":"Maximum number of calls to return in one page. Cannot exceed 500. Defaults to 50.","name":"limit","in":"query"},"2819bd88-a384-4687-8e24-1f6473df77c6":{"schema":{"type":"string","description":"Only return records at or after this time. Accepts ISO 8601 (e.g. 2026-01-01T00:00:00Z) and common date formats (YYYY-MM-DD, YYYY-MM-DD HH:mm, DD/MM/YYYY). Epoch timestamps are not supported. Compared at minute precision.","example":"2026-01-01T00:00:00Z","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Only return records at or after this time. Accepts ISO 8601 (e.g. 2026-01-01T00:00:00Z) and common date formats (YYYY-MM-DD, YYYY-MM-DD HH:mm, DD/MM/YYYY). Epoch timestamps are not supported. Compared at minute precision.","name":"start_time","in":"query"},"d873ae8a-1758-4250-9eda-c53304f8b4c8":{"schema":{"type":"string","description":"Only return records at or before this time. Accepts ISO 8601 (e.g. 2026-01-01T00:00:00Z) and common date formats (YYYY-MM-DD, YYYY-MM-DD HH:mm, DD/MM/YYYY). Epoch timestamps are not supported. Compared at minute precision.","example":"2026-01-31T23:59:00Z","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Only return records at or before this time. Accepts ISO 8601 (e.g. 2026-01-01T00:00:00Z) and common date formats (YYYY-MM-DD, YYYY-MM-DD HH:mm, DD/MM/YYYY). Epoch timestamps are not supported. Compared at minute precision.","name":"end_time","in":"query"},"686cdaef-26e1-441a-b171-ebe2cb8766fa":{"schema":{"type":"string","minLength":1,"description":"Case-insensitive text search across the chat name, chat_id, the AI summary and the transcript. Composes with the other filters.","example":"refund","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Case-insensitive text search across the chat name, chat_id, the AI summary and the transcript. Composes with the other filters.","name":"q","in":"query"},"f41eee86-1af0-4988-bcd6-c3defbd625c5":{"schema":{"type":"string","description":"Only return calls in these chats. A single chat_id or a comma-separated list. For 1-1 chats, country code + number optionally suffixed with @c.us (the suffix is added automatically when omitted); for groups, the id ending with @g.us.","example":"919999999999@c.us","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Only return calls in these chats. A single chat_id or a comma-separated list. For 1-1 chats, country code + number optionally suffixed with @c.us (the suffix is added automatically when omitted); for groups, the id ending with @g.us.","name":"chat_id","in":"query"},"0e5b41da-4330-4391-bd69-99be59e75599":{"schema":{"type":"string","enum":["incoming","outgoing"],"description":"Only return 'incoming' or 'outgoing' calls.","example":"incoming","isRequired":false,"uniqueKey":"","typeLabel":"enum\u003cstring>"},"required":false,"description":"Only return 'incoming' or 'outgoing' calls.","name":"direction","in":"query"},"d47c292c-2abb-4e55-923b-66f22a0bb9db":{"schema":{"type":"string","description":"Only return calls with this result. Accepted values: connected, missed, rejected, unavailable, cancelled, acceptedelsewhere, invalid, upcoming, failed, abandoned, ongoing. Pass one value (missed) or several, comma-separated (missed,rejected).","example":"missed","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Only return calls with this result. Accepted values: connected, missed, rejected, unavailable, cancelled, acceptedelsewhere, invalid, upcoming, failed, abandoned, ongoing. Pass one value (missed) or several, comma-separated (missed,rejected).","name":"result","in":"query"},"281d2b09-7dd0-4ffa-9b04-a9e3309bf32e":{"schema":{"type":"string","enum":["periskope","phone"],"description":"'periskope' returns only calls answered or placed by a member in Periskope; 'phone' only calls handled (or missed) on the WhatsApp phone.","example":"periskope","isRequired":false,"uniqueKey":"","typeLabel":"enum\u003cstring>"},"required":false,"description":"'periskope' returns only calls answered or placed by a member in Periskope; 'phone' only calls handled (or missed) on the WhatsApp phone.","name":"handled_via","in":"query"},"70dca3f8-bcbf-4f0e-bdb8-04501c89a3d5":{"schema":{"type":"string","description":"true/1/yes returns only recorded calls, false/0/no only calls without a recording (case-insensitive). Omit to return both.","example":"true","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"true/1/yes returns only recorded calls, false/0/no only calls without a recording (case-insensitive). Omit to return both.","name":"has_recording","in":"query"},"05e6393b-112a-4b88-8cc4-7d2aac4ed316":{"schema":{"type":"string","description":"Only return calls with this transcription status. Accepted values: pending, done, failed. Pass one value (done) or several, comma-separated (pending,failed).","example":"done","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Only return calls with this transcription status. Accepted values: pending, done, failed. Pass one value (done) or several, comma-separated (pending,failed).","name":"transcript_status","in":"query"},"fc715023-e772-4faa-b474-662170b52f34":{"schema":{"type":"string","description":"Only return calls these members were on (answered, placed or joined in Periskope). A single email or a comma-separated list, matched case-insensitively. Calls handled on the phone have no members and never match.","example":"agent@example.com","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Only return calls these members were on (answered, placed or joined in Periskope). A single email or a comma-separated list, matched case-insensitively. Calls handled on the phone have no members and never match.","name":"member_email","in":"query"},"fd9bdf01-7529-4763-be46-a890f9d14680":{"schema":{"oneOf":[{"type":"number","minimum":0,"description":"Only return calls with at least this much talk time, in seconds. Calls with an unknown duration are excluded.","example":60,"uniqueKey":"oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"description":"Only return calls with at least this much talk time, in seconds. Calls with an unknown duration are excluded.","example":60,"uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"number | null"},"required":false,"description":"Only return calls with at least this much talk time, in seconds. Calls with an unknown duration are excluded.","name":"min_duration_seconds","in":"query"},"9f22dca6-5557-4581-bf51-9c700f8de68d":{"schema":{"oneOf":[{"type":"number","minimum":0,"description":"Only return calls with at most this much talk time, in seconds. Calls with an unknown duration are excluded.","example":600,"uniqueKey":"oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"description":"Only return calls with at most this much talk time, in seconds. Calls with an unknown duration are excluded.","example":600,"uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"number | null"},"required":false,"description":"Only return calls with at most this much talk time, in seconds. Calls with an unknown duration are excluded.","name":"max_duration_seconds","in":"query"},"8a96df95-03bf-4894-a6ef-129ab88138af":{"schema":{"type":"string","enum":["asc","desc"],"description":"Order by timestamp: 'desc' (newest first, the default) or 'asc' (oldest first, handy for syncing calls incrementally with start_time).","example":"desc","isRequired":false,"uniqueKey":"","typeLabel":"enum\u003cstring>"},"required":false,"description":"Order by timestamp: 'desc' (newest first, the default) or 'asc' (oldest first, handy for syncing calls incrementally with start_time).","name":"sort_order","in":"query"},"9e9910ae-8b79-4b6e-baa4-2888de14edf3":{"schema":{"type":"string","example":"919876543210","description":"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.","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"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.","name":"x-phone","in":"header"}},"responses":{"39a2ef69-79cc-44a4-9ae7-1449cc006e7b":{"description":"Paginated list of calls, newest first unless sort_order=asc","content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"integer","description":"1-based index of the first record in this page (offset + 1).","example":1,"uniqueKey":"from","typeLabel":"integer"},"to":{"type":"integer","description":"1-based index of the last record in this page.","example":20,"uniqueKey":"to","typeLabel":"integer"},"count":{"type":"integer","description":"Number of records in this page — the length of the `calls` array, not the total across all pages.","example":20,"uniqueKey":"count","typeLabel":"integer"},"start_time":{"type":"string","description":"Echo of the start_time filter, present only when it was sent.","example":"2026-01-01T00:00:00Z","uniqueKey":"start_time","typeLabel":"string"},"end_time":{"type":"string","description":"Echo of the end_time filter, present only when it was sent.","uniqueKey":"end_time","typeLabel":"string"},"calls":{"type":"array","items":{"type":"object","properties":{"call_id":{"type":"string","description":"WhatsApp's id for the call. Pass it to Get a call. Also the unique_id of the call's notification row.","example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","uniqueKey":"calls.items.[INDEX].call_id","typeLabel":"string"},"notification_id":{"type":"string","description":"Id of the call's row in the notifications list (type \"call\") and in chat.notification.created webhook events. Get a call also accepts it in place of call_id.","example":"false_919999999999@c.us_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA_919999999999@c.us","uniqueKey":"calls.items.[INDEX].notification_id","typeLabel":"string"},"org_id":{"type":"string","format":"uuid","description":"Id of the organization the call belongs to.","example":"00000000-0000-0000-0000-000000000000","uniqueKey":"calls.items.[INDEX].org_id","typeLabel":"string\u003cuuid>"},"org_phone":{"type":"string","description":"Org phone (WhatsApp account) that made or received the call, as country code + number suffixed with @c.us.","example":"911111111111@c.us","uniqueKey":"calls.items.[INDEX].org_phone","typeLabel":"string"},"chat_id":{"type":"string","description":"Chat the call belongs to: the other party for a 1-1 call, the group for a group call. A caller WhatsApp could not resolve to a number appears as an id ending in @lid.","example":"919999999999@c.us","uniqueKey":"calls.items.[INDEX].chat_id","typeLabel":"string"},"chat_name":{"type":"string","description":"Name of the chat, or the contact's saved name when the chat has none. Absent for unknown numbers.","example":"John Doe","uniqueKey":"calls.items.[INDEX].chat_name","typeLabel":"string"},"caller":{"type":"string","description":"Who placed the call (\u003ccountrycode>\u003cnumber>@c.us): the org phone for outgoing calls, the customer for incoming ones.","example":"919999999999@c.us","uniqueKey":"calls.items.[INDEX].caller","typeLabel":"string"},"direction":{"type":"string","enum":["incoming","outgoing"],"description":"'incoming' or 'outgoing', from the org phone's point of view.","example":"incoming","uniqueKey":"calls.items.[INDEX].direction","typeLabel":"enum\u003cstring>"},"result":{"type":"string","description":"How the call ended, as reported by WhatsApp. One of: connected, missed, rejected, unavailable, cancelled, acceptedelsewhere, invalid, upcoming, failed, abandoned, ongoing. Absent for very old calls.","example":"connected","uniqueKey":"calls.items.[INDEX].result","typeLabel":"string"},"handled_via":{"type":"string","enum":["periskope","phone"],"description":"'periskope' when the call's audio ran through Periskope (answered or placed by a member in the app); 'phone' otherwise — answered, placed or missed on the WhatsApp phone itself. Only Periskope calls have a recording, transcript and summary.","example":"periskope","uniqueKey":"calls.items.[INDEX].handled_via","typeLabel":"enum\u003cstring>"},"timestamp":{"type":"string","description":"When the call was logged, as an ISO 8601 UTC timestamp — the call start for most calls. Calls are sorted by this field.","example":"2026-01-15T09:30:00.000Z","uniqueKey":"calls.items.[INDEX].timestamp","typeLabel":"string"},"duration_seconds":{"type":"number","description":"Talk time in seconds (0 for unanswered calls), when known — from WhatsApp, or the recording length otherwise.","example":184,"uniqueKey":"calls.items.[INDEX].duration_seconds","typeLabel":"number"},"answered_by":{"type":"string","description":"Email of the member who answered (incoming) or placed (outgoing) the call in Periskope.","example":"agent@example.com","uniqueKey":"calls.items.[INDEX].answered_by","typeLabel":"string"},"transcript":{"type":"object","properties":{"status":{"type":"string","description":"Transcription progress: 'pending' (queued or running), 'done' or 'failed'. Transcription starts once the recording is saved and usually finishes within a few minutes of the call ending.","example":"done","uniqueKey":"calls.items.[INDEX].transcript.status","typeLabel":"string"}},"description":"Transcription status. Absent when the call was not recorded. Get a call returns the transcript itself.","uniqueKey":"calls.items.[INDEX].transcript","typeLabel":"object"},"summary":{"type":"object","properties":{"text":{"type":"string","description":"Two to three sentence summary of the conversation.","example":"The customer asked about a delayed order. The agent confirmed it ships tomorrow and shared the tracking link.","uniqueKey":"calls.items.[INDEX].summary.text","typeLabel":"string"}},"description":"AI summary of the call, generated after transcription. Absent until then, or when summarizing failed.","uniqueKey":"calls.items.[INDEX].summary","typeLabel":"object"},"recording":{"type":"object","properties":{"url":{"type":"string","description":"Downloadable link to the call recording, a stereo WAV file. When the organization's media privacy is on, the link carries an access token, opens without other credentials and stops working 1 hour after the response (url_expires_at); fetch the call again for a fresh link. When media privacy is off, it is a plain link that opens without credentials and does not expire.","example":"https://api.periskope.app/app/media/periskope-call-attachments/00000000-0000-0000-0000-000000000000/phone-aaaaaaaaaaaaaaaa/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.wav?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","uniqueKey":"calls.items.[INDEX].recording.url","typeLabel":"string"},"url_expires_at":{"type":"string","description":"When url (and every agent_tracks url) stops working, as an ISO 8601 UTC timestamp: 1 hour after the response. Present only when the organization's media privacy is on; without it the links do not expire.","example":"2026-01-15T10:30:00.000Z","uniqueKey":"calls.items.[INDEX].recording.url_expires_at","typeLabel":"string"},"duration_seconds":{"type":"integer","description":"Length of the recording in seconds.","example":184,"uniqueKey":"calls.items.[INDEX].recording.duration_seconds","typeLabel":"integer"}},"description":"The call recording with a downloadable link. Absent when the call was not recorded (handled on the phone, unanswered, or too short).","uniqueKey":"calls.items.[INDEX].recording","typeLabel":"object"}},"description":"A call as listed by List calls. Get a call returns the full Call: timing details, participants, per-member recordings and the transcript.","uniqueKey":"calls.items.[INDEX]","typeLabel":"object"},"description":"The calls in this page.","uniqueKey":"calls","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"default":{"title":"default","value":{"from":1,"to":20,"count":20,"start_time":"2026-01-01T00:00:00Z","end_time":null,"calls":[{"call_id":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","notification_id":"false_919999999999@c.us_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA_919999999999@c.us","org_id":"00000000-0000-0000-0000-000000000000","org_phone":"911111111111@c.us","chat_id":"919999999999@c.us","chat_name":"John Doe","caller":"919999999999@c.us","direction":"incoming","result":"connected","handled_via":"periskope","timestamp":"2026-01-15T09:30:00.000Z","duration_seconds":184,"answered_by":"agent@example.com","transcript":{"status":"done"},"summary":{"text":"The customer asked about a delayed order. The agent confirmed it ships tomorrow and shared the tracking link."},"recording":{"url":"https://api.periskope.app/app/media/periskope-call-attachments/00000000-0000-0000-0000-000000000000/phone-aaaaaaaaaaaaaaaa/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.wav?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","url_expires_at":"2026-01-15T10:30:00.000Z","duration_seconds":184}}]}}},"exampleType":"examples"}},"exampleType":"examples"},"19f0b2b4-baaf-4d9c-a20c-847f791e865e":{"description":"Invalid, expired or missing API token","content":{"application/json":{"examples":{"error":{"title":"error","value":{"code":"UNAUTHORIZED_ERROR","message":"Invalid bearer auth token","status":401}}},"schema":{"type":"object","properties":{"code":{"type":"string","example":"UNAUTHORIZED_ERROR","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","example":"Invalid bearer auth token","uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","example":401,"uniqueKey":"status","typeLabel":"integer"}},"example":{"code":"UNAUTHORIZED_ERROR","message":"Invalid bearer auth token","status":401},"uniqueKey":"","typeLabel":"object"},"exampleType":"examples"}},"exampleType":"examples"},"869d520e-0ee1-4a27-8c3e-0afd036123ec":{"description":"Request validation failed","content":{"application/json":{"examples":{"error":{"title":"error","value":{"code":"VALIDATION_ERROR","message":"Request validation failed","status":422,"fields":{"body.chat_id":{"message":"chat_id is required"}}}}},"schema":{"type":"object","properties":{"code":{"type":"string","example":"VALIDATION_ERROR","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","example":"Request validation failed","uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","example":422,"uniqueKey":"status","typeLabel":"integer"},"fields":{"type":"object","additionalProperties":{"type":"object","properties":{"message":{"type":"string","uniqueKey":"fields.additionalProperties.message","typeLabel":"string"},"value":{"oneOf":[{}],"uniqueKey":"fields.additionalProperties.value","typeLabel":"any"}},"uniqueKey":"fields.additionalProperties","typeLabel":"object"},"example":{"body.chat_id":{"message":"chat_id is required"}},"uniqueKey":"fields","typeLabel":"object"}},"example":{"code":"VALIDATION_ERROR","message":"Request validation failed","status":422,"fields":{"body.chat_id":{"message":"chat_id is required"}}},"uniqueKey":"","typeLabel":"object"},"exampleType":"examples"}},"exampleType":"examples"},"c681d3ad-471e-40ba-aa65-fcc15c02bc14":{"description":"Rate limit exceeded","content":{"application/json":{"examples":{"error":{"title":"error","value":{"code":"RATE_LIMIT_ERROR","message":"You can only make 100 requests per second","status":429}}},"schema":{"type":"object","properties":{"code":{"type":"string","example":"RATE_LIMIT_ERROR","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","example":"You can only make 100 requests per second","uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","example":429,"uniqueKey":"status","typeLabel":"integer"}},"example":{"code":"RATE_LIMIT_ERROR","message":"You can only make 100 requests per second","status":429},"uniqueKey":"","typeLabel":"object"},"exampleType":"examples"}},"exampleType":"examples"},"9a8e3b37-0623-4112-9e37-5ed27a899289":{"description":"Internal server error","content":{"application/json":{"examples":{"error":{"title":"error","value":{"code":"UNKNOWN_ERROR","message":"Internal server error","status":500}}},"schema":{"type":"object","properties":{"code":{"type":"string","example":"UNKNOWN_ERROR","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","example":"Internal server error","uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","example":500,"uniqueKey":"status","typeLabel":"integer"}},"example":{"code":"UNKNOWN_ERROR","message":"Internal server error","status":500},"uniqueKey":"","typeLabel":"object"},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"11da1109-68ba-4e3f-827a-dfe8a5b1a27a":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Your Periskope API token, sent as `Authorization: Bearer \u003ctoken>`. Generate one from the Periskope dashboard under **Settings → API \u0026 Webhooks**. API access requires an active Pro or Enterprise plan.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"09897b52-aa53-4c89-80d0-59fbc0f457de":{"url":"https://api.periskope.app"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Your Periskope API token, sent as `Authorization: Bearer \u003ctoken>`. Generate one from the Periskope dashboard under **Settings → API \u0026 Webhooks**. API access requires an active Pro or Enterprise plan.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Your Periskope API token, sent as `Authorization: Bearer \u003ctoken>`. Generate one from the Periskope dashboard under **Settings → API \u0026 Webhooks**. API access requires an active Pro or Enterprise plan.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi-generated.json"},"subdomain":"bharatkumarramesh","siteName":"Periskope Docs","title":"List Calls - Periskope Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T08:22:51.918Z","originalFileLocation":"api-reference/calls/list-calls.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Returns the organization\u0026#x27;s call history, newest first, with recording links and AI summaries for calls handled in Periskope. Use Get a call for the transcript.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Periskope Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List Calls - Periskope Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns the organization\u0026#x27;s call history, newest first, with recording links and AI summaries for calls handled in Periskope. Use Get a call for the transcript.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Periskope Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.periskope.app/api-reference/calls/list-calls\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bharatkumarramesh.mintlify.app/_mintlify/api/og/v2?division=Call+APIs\u0026amp;title=List+Calls\u0026amp;description=Returns+the+organization%27s+call+history%2C+newest+first%2C+with+recording+links+and+AI+summaries+for+calls+handled+in+Periskope.+Use+Get+a+call+for+the+transcript.\u0026amp;theme=42ac27e6aa5a1e2c22bc4538\u0026amp;signature=cb1a1c2bd60762ce137777d07ff7fadee081a2c26cc3ed1a281f1d663b77b88f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"List Calls - Periskope Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns the organization\u0026#x27;s call history, newest first, with recording links and AI summaries for calls handled in Periskope. Use Get a call for the transcript.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bharatkumarramesh.mintlify.app/_mintlify/api/og/v2?division=Call+APIs\u0026amp;title=List+Calls\u0026amp;description=Returns+the+organization%27s+call+history%2C+newest+first%2C+with+recording+links+and+AI+summaries+for+calls+handled+in+Periskope.+Use+Get+a+call+for+the+transcript.\u0026amp;theme=42ac27e6aa5a1e2c22bc4538\u0026amp;signature=cb1a1c2bd60762ce137777d07ff7fadee081a2c26cc3ed1a281f1d663b77b88f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Periskope Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#15803D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.periskope.app/api-reference/calls/list-calls\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/calls/list-calls.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.periskope.app/#organization\",\"name\":\"Periskope Docs\",\"url\":\"https://docs.periskope.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/bharatkumarramesh/Sq5VlnE2OgDOCH8s/logo/periskope-logo-full.svg?fit=max\u0026auto=format\u0026n=Sq5VlnE2OgDOCH8s\u0026q=85\u0026s=cace2e822ea7c0cd2a98b9d946baa593\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.periskope.app#website\",\"name\":\"Periskope Docs\",\"url\":\"https://docs.periskope.app\",\"publisher\":{\"@id\":\"https://docs.periskope.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.periskope.app/api-reference/calls/list-calls#webpage\",\"url\":\"https://docs.periskope.app/api-reference/calls/list-calls\",\"name\":\"List Calls\",\"description\":\"Returns the organization's call history, newest first, with recording links and AI summaries for calls handled in Periskope. Use Get a call for the transcript.\",\"dateModified\":\"2026-10-30T08:22:51.918Z\",\"isPartOf\":{\"@id\":\"https://docs.periskope.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.periskope.app/api-reference/calls/list-calls#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.periskope.app/api-reference/calls/list-calls#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Periskope Docs\",\"item\":\"https://docs.periskope.app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"List Calls\",\"item\":\"https://docs.periskope.app/api-reference/calls/list-calls\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.periskope.app/api-reference/calls/list-calls#apireference\",\"headline\":\"List Calls\",\"name\":\"List Calls\",\"description\":\"Returns the organization's call history, newest first, with recording links and AI summaries for calls handled in Periskope. Use Get a call for the transcript.\",\"url\":\"https://docs.periskope.app/api-reference/calls/list-calls\",\"mainEntityOfPage\":{\"@id\":\"https://docs.periskope.app/api-reference/calls/list-calls#webpage\"},\"dateModified\":\"2026-10-30T08:22:51.918Z\",\"publisher\":{\"@id\":\"https://docs.periskope.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.periskope.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Periskope Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Periskope Docs","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/get-started/introduction"}]},{"anchor":"APIs \u0026 Webhooks","icon":"webhook","groups":[{"group":"API","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"Authorization","href":"/api-reference/authorization"},{"title":"SDK","href":"/api-reference/sdk"},{"group":"Objects","pages":[{"title":"The Chat Object","href":"/api-reference/objects/the-chat-object"},{"title":"The Chat Notification Object","href":"/api-reference/objects/the-chat-notification-object"},{"title":"The Call Object","href":"/api-reference/objects/the-call-object"},{"title":"The Reaction Object","href":"/api-reference/objects/the-reaction-object"},{"title":"The Message Object","href":"/api-reference/objects/the-message-object"},{"title":"The Contact Object","href":"/api-reference/objects/the-contact-object"},{"title":"The Ticket Info Object","href":"/api-reference/objects/the-ticket-info-object"},{"title":"The Task Object","href":"/api-reference/objects/the-task-object"},{"title":"The Phone Object","href":"/api-reference/objects/the-phone-object"},{"title":"The Note Object","href":"/api-reference/objects/the-note-object"}]},{"title":"WhatsApp Message Ack Status","href":"/api-reference/delivery-status"}]},{"group":"Chat APIs","icon":"comments","pages":[{"title":"Get Chat By ID","openapi":"api-reference/openapi-generated.json GET /v1/chats/{chat_id}","href":"/api-reference/chat/get-chat-by-id"},{"title":"Get Messages in a Chat","openapi":"api-reference/openapi-generated.json GET /v1/chats/{chat_id}/messages","href":"/api-reference/chat/get-messages-in-chat"},{"title":"Get Private Notes in a Chat","openapi":"api-reference/openapi-generated.json GET /v1/chats/{chat_id}/notes","href":"/api-reference/chat/get-private-notes-in-chat"},{"title":"Get Notifications in a Chat","openapi":"api-reference/openapi-generated.json GET /v1/chats/{chat_id}/notifications","href":"/api-reference/chat/get-notifications-in-chat"},{"title":"List All Chats","openapi":"api-reference/openapi-generated.json GET /v1/chats","href":"/api-reference/chat/list-all-chats"},{"title":"List All Messages","openapi":"api-reference/openapi-generated.json GET /v1/chats/messages","href":"/api-reference/chat/list-all-messages"},{"title":"List All Notifications","openapi":"api-reference/openapi-generated.json GET /v1/chats/notifications","href":"/api-reference/chat/list-all-notifications"},{"title":"Update Chat Labels","openapi":"api-reference/openapi-generated.json PATCH /v1/chats/labels","href":"/api-reference/chat/update-chat-labels"},{"title":"Update Chat","openapi":"api-reference/openapi-generated.json PATCH /v1/chats/{chat_id}","href":"/api-reference/chat/update-chat"},{"title":"Mark chat as read","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/read","href":"/api-reference/chat/mark-read"},{"title":"Update Chat Access","openapi":"api-reference/openapi-generated.json PATCH /v1/chats/access","href":"/api-reference/chat/override-chat-access"},{"title":"Get Chat Audit Logs","openapi":"api-reference/openapi-generated.json GET /v1/chats/{chat_id}/audit-logs","href":"/api-reference/chat/get-chat-audit-logs"},{"title":"Update Chat AI Settings","openapi":"api-reference/openapi-generated.json PATCH /v1/chats/{chat_id}/ai","href":"/api-reference/chat/update-chat-ai-settings"}]},{"group":"Group Settings APIs","pages":[{"title":"Create Group","openapi":"api-reference/openapi-generated.json POST /v1/chats/create","href":"/api-reference/chat/create-group"},{"title":"Generate a new invite link for a chat","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/invite","href":"/api-reference/chat/refresh-invite"},{"title":"Add Participant to Group","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/add","href":"/api-reference/chat/add-participant"},{"title":"Remove Participant from Group","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/remove","href":"/api-reference/chat/remove-participant"},{"title":"Promote Participant to Admin","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/promote","href":"/api-reference/chat/promote-participant-to-admin"},{"title":"Demote Participant to Member","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/demote","href":"/api-reference/chat/demote-participant-to-member"},{"title":"Update Group Settings","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/settings","href":"/api-reference/chat/update-group-settings"},{"title":"Accept Group Invite","openapi":"api-reference/openapi-generated.json POST /v1/chats/accept-invite","href":"/api-reference/chat/accept-group-invite"},{"title":"Leave Group","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/leave","href":"/api-reference/chat/leave-group"}]},{"group":"Message APIs","icon":"comment","pages":[{"title":"Send Message","openapi":"api-reference/openapi-generated.json POST /v1/message/send","href":"/api-reference/message/send-message"},{"title":"Send Sync Message","openapi":"api-reference/openapi-generated.json POST /v1/message/send-sync","href":"/api-reference/message/send-message-sync"},{"title":"Broadcast Message","openapi":"api-reference/openapi-generated.json POST /v1/message/broadcast","href":"/api-reference/message/broadcast-message"},{"title":"Delete a Broadcast","openapi":"api-reference/openapi-generated.json DELETE /v1/message/broadcast/{broadcast_id}","href":"/api-reference/message/delete-broadcast"},{"title":"Delete Message","openapi":"api-reference/openapi-generated.json POST /v1/message/{message_id}/delete","href":"/api-reference/message/delete-message"},{"title":"Edit Message","openapi":"api-reference/openapi-generated.json POST /v1/message/{message_id}/edit","href":"/api-reference/message/edit-message"},{"title":"Forward Message","openapi":"api-reference/openapi-generated.json POST /v1/message/{message_id}/forward","href":"/api-reference/message/forward-message"},{"title":"Get Message","openapi":"api-reference/openapi-generated.json GET /v1/message/{message_id}","href":"/api-reference/message/get-message"},{"title":"React to Message","openapi":"api-reference/openapi-generated.json POST /v1/message/{message_id}/react","href":"/api-reference/message/react-to-message"},{"title":"Pin Message","openapi":"api-reference/openapi-generated.json POST /v1/message/{message_id}/pin","href":"/api-reference/message/pin-message"},{"title":"Get Message Status","openapi":"api-reference/openapi-generated.json GET /v1/message/{unique_id}/status","href":"/api-reference/message/message-status"},{"title":"List All Message Queues","openapi":"api-reference/openapi-generated.json POST /v1/message/queues","href":"/api-reference/message/list-queue-jobs"},{"title":"Get Status of Message Queues","openapi":"api-reference/openapi-generated.json GET /v1/message/queues/health","href":"/api-reference/message/queue-health"},{"title":"Purge Message Queues","openapi":"api-reference/openapi-generated.json POST /v1/message/queues/purge","href":"/api-reference/message/purge-queue-jobs"}]},{"group":"Scheduled Message APIs","pages":[{"title":"List Scheduled Messages","openapi":"api-reference/openapi-generated.json GET /v1/message/scheduled","href":"/api-reference/scheduled-messages/list-scheduled-messages"},{"title":"Schedule a Message","openapi":"api-reference/openapi-generated.json POST /v1/message/scheduled","href":"/api-reference/scheduled-messages/schedule-message"},{"title":"Get Scheduled Message","openapi":"api-reference/openapi-generated.json GET /v1/message/scheduled/{scheduled_id}","href":"/api-reference/scheduled-messages/get-scheduled-message"},{"title":"Update Scheduled Message","openapi":"api-reference/openapi-generated.json PATCH /v1/message/scheduled/{scheduled_id}","href":"/api-reference/scheduled-messages/update-scheduled-message"},{"title":"Delete Scheduled Message","openapi":"api-reference/openapi-generated.json DELETE /v1/message/scheduled/{scheduled_id}","href":"/api-reference/scheduled-messages/delete-scheduled-message"},{"title":"List Scheduled Message Runs","openapi":"api-reference/openapi-generated.json GET /v1/message/scheduled/{scheduled_id}/occurrences","description":"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.","href":"/api-reference/scheduled-messages/list-scheduled-message-occurrences"}]},{"group":"Call APIs","icon":"phone-volume","pages":[{"title":"List Calls","openapi":"api-reference/openapi-generated.json GET /v1/calls","href":"/api-reference/calls/list-calls"},{"title":"Get Call","openapi":"api-reference/openapi-generated.json GET /v1/calls/{call_id}","description":"Returns one call in full, including its transcript. Accepts the call_id or the notification_id.","href":"/api-reference/calls/get-call"}]},{"group":"Media APIs","icon":"photo-film","pages":[{"title":"Migrate Media URL","api":"POST https://api.periskope.app/v1/media/migrate-url","href":"/api-reference/media/migrate-url"},{"title":"Migrate Media URLs (Batch)","api":"POST https://api.periskope.app/v1/media/migrate-url/batch","href":"/api-reference/media/migrate-url-batch"}]},{"group":"Contact APIs","icon":"phone","pages":[{"title":"Get Contact By ID","openapi":"api-reference/openapi-generated.json GET /v1/contacts/{contact_id}","href":"/api-reference/contacts/get-contact-by-id"},{"title":"Get Contacts","openapi":"api-reference/openapi-generated.json GET /v1/contacts","href":"/api-reference/contacts/get-contacts"},{"title":"Update Contact Labels","openapi":"api-reference/openapi-generated.json PATCH /v1/contacts/labels","href":"/api-reference/contacts/update-contact-labels"},{"title":"Update Contact","openapi":"api-reference/openapi-generated.json PATCH /v1/contacts/{contact_id}","href":"/api-reference/contacts/update-contact"},{"title":"Create Contact","openapi":"api-reference/openapi-generated.json POST /v1/contacts/create","href":"/api-reference/contacts/create-contact"},{"title":"Check Contact Exists","openapi":"api-reference/openapi-generated.json POST /v1/contacts/check","href":"/api-reference/contacts/check-contact"}]},{"group":"Ticket APIs","icon":"ticket","pages":[{"title":"Get Ticket By ID","openapi":"api-reference/openapi-generated.json GET /v1/tickets/{ticket_id}","href":"/api-reference/tickets/get-ticket-by-id"},{"title":"Get Tickets","openapi":"api-reference/openapi-generated.json GET /v1/tickets","href":"/api-reference/tickets/get-tickets"},{"title":"Update Ticket","openapi":"api-reference/openapi-generated.json PATCH /v1/tickets/{ticket_id}","href":"/api-reference/tickets/update-ticket"},{"title":"Create Ticket","openapi":"api-reference/openapi-generated.json POST /v1/tickets/create","href":"/api-reference/tickets/create-ticket"},{"title":"Get Ticket Audit Logs","openapi":"api-reference/openapi-generated.json GET /v1/tickets/{ticket_id}/audit-logs","href":"/api-reference/tickets/get-ticket-audit-logs"}]},{"group":"Custom Property APIs","icon":"list-dropdown","pages":[{"title":"Get All Custom Properties","openapi":"api-reference/openapi-generated.json GET /v1/properties","href":"/api-reference/properties/get-all-custom-properties"},{"title":"Get Custom Property","openapi":"api-reference/openapi-generated.json GET /v1/properties/{property_id}","href":"/api-reference/properties/get-custom-property"},{"title":"Create Custom Property","openapi":"api-reference/openapi-generated.json POST /v1/properties/create","href":"/api-reference/properties/create-custom-property"},{"title":"Update Custom Property","openapi":"api-reference/openapi-generated.json POST /v1/properties/{property_id}","href":"/api-reference/properties/update-custom-property"},{"title":"Update Property Options","openapi":"api-reference/openapi-generated.json POST /v1/properties/{property_id}/options","href":"/api-reference/properties/update-property-options"},{"title":"Delete Custom Properties","openapi":"api-reference/openapi-generated.json DELETE /v1/properties","href":"/api-reference/properties/delete-custom-property"}]},{"group":"Task APIs","icon":"list-check","pages":[{"title":"Get Task By ID","openapi":"api-reference/openapi-generated.json GET /v1/tasks/{task_id}","href":"/api-reference/tasks/get-task-by-id"},{"title":"Get All Tasks","openapi":"api-reference/openapi-generated.json GET /v1/tasks","href":"/api-reference/tasks/get-tasks"},{"title":"Create Task","openapi":"api-reference/openapi-generated.json POST /v1/tasks/create","href":"/api-reference/tasks/create-task"},{"title":"Update Task","openapi":"api-reference/openapi-generated.json PATCH /v1/tasks/{task_id}","href":"/api-reference/tasks/update-task"}]},{"group":"Queue APIs","icon":"list","pages":[{"title":"Fetch Queue Jobs","openapi":"api-reference/openapi-generated.json GET /v1/queue/jobs","href":"/api-reference/queues/fetch-queue-jobs"},{"title":"Get Broadcast Status","openapi":"api-reference/openapi-generated.json GET /v1/queue/broadcast","href":"/api-reference/queues/get-broadcast-status"},{"title":"Get Queue Status","openapi":"api-reference/openapi-generated.json GET /v1/queue","href":"/api-reference/queues/get-queue-status"},{"title":"Purge Queue","openapi":"api-reference/openapi-generated.json DELETE /v1/queue/purge","href":"/api-reference/queues/purge-queue"}]},{"group":"Phone APIs","icon":"phone","pages":[{"title":"Get phone","openapi":"api-reference/openapi-generated.json GET /v1/phones","href":"/api-reference/phones/get-phone"},{"title":"Get All Phones","openapi":"api-reference/openapi-generated.json GET /v1/phones/all","href":"/api-reference/phones/get-all-phones"},{"title":"Get QR","openapi":"api-reference/openapi-generated.json GET /v1/phones/qr","href":"/api-reference/phones/get-qr"},{"title":"Reset Phone","openapi":"api-reference/openapi-generated.json POST /v1/phones/reset","href":"/api-reference/phones/reset-phone"},{"title":"Restart Phone","openapi":"api-reference/openapi-generated.json POST /v1/phones/restart","href":"/api-reference/phones/restart-phone"},{"title":"Resync Phone","openapi":"api-reference/openapi-generated.json POST /v1/phones/resync","href":"/api-reference/phones/resync-phone"},{"title":"Update phone","openapi":"api-reference/openapi-generated.json PATCH /v1/phones/update","href":"/api-reference/phones/update-phone"},{"title":"Create Phone","openapi":"api-reference/openapi-generated.json POST /v1/phones/create","href":"/api-reference/phones/create-phone"},{"title":"Delete Phone","openapi":"api-reference/openapi-generated.json DELETE /v1/phones/delete","href":"/api-reference/phones/delete-phone"}]},{"group":"Notes APIs","icon":"comment","pages":[{"title":"Send Private Notes","openapi":"api-reference/openapi-generated.json POST /v1/notes/create","href":"/api-reference/notes/create-private-notes"},{"title":"Get Private Note","openapi":"api-reference/openapi-generated.json GET /v1/notes/{note_id}","href":"/api-reference/notes/get-private-note"},{"title":"List All Private Notes","openapi":"api-reference/openapi-generated.json GET /v1/notes","href":"/api-reference/notes/list-all-private-notes"}]},{"group":"Reaction APIs","icon":"comment","pages":[{"title":"Get Reactions","openapi":"api-reference/openapi-generated.json GET /v1/reactions","href":"/api-reference/reactions/get-reactions"}]},{"group":"Knowledge Base APIs","icon":"brain","pages":[{"title":"Get All Knowledge Base Items","openapi":"api-reference/openapi-generated.json GET /v1/knowledge-base","href":"/api-reference/knowledge-base/get-all-knowledge-base"},{"title":"Get FAQ by ID","openapi":"api-reference/openapi-generated.json GET /v1/knowledge-base/faq/{context_id}","href":"/api-reference/knowledge-base/get-faq-by-id"},{"title":"Create FAQ","openapi":"api-reference/openapi-generated.json POST /v1/knowledge-base/faq/create","href":"/api-reference/knowledge-base/create-faq"},{"title":"Update FAQ","openapi":"api-reference/openapi-generated.json PATCH /v1/knowledge-base/faq/{context_id}","href":"/api-reference/knowledge-base/update-faq"},{"title":"Delete FAQ","openapi":"api-reference/openapi-generated.json DELETE /v1/knowledge-base/faq/{context_id}","href":"/api-reference/knowledge-base/delete-faq"},{"title":"Get Document by ID","openapi":"api-reference/openapi-generated.json GET /v1/knowledge-base/document/{document_id}","href":"/api-reference/knowledge-base/get-document-by-id"},{"title":"Create Document","openapi":"api-reference/openapi-generated.json POST /v1/knowledge-base/document/create","href":"/api-reference/knowledge-base/create-document"},{"title":"Delete Document","openapi":"api-reference/openapi-generated.json DELETE /v1/knowledge-base/document/{document_id}","href":"/api-reference/knowledge-base/delete-document"}]},{"group":"Member APIs","icon":"user-group","pages":[{"title":"Invite Members","openapi":"api-reference/openapi-generated.json POST /v1/members/invite","href":"/api-reference/members/invite-members"},{"title":"Update Member Access","openapi":"api-reference/openapi-generated.json PATCH /v1/members/access","href":"/api-reference/members/update-member-access"},{"title":"Delete Member","openapi":"api-reference/openapi-generated.json DELETE /v1/members/{email_id}","href":"/api-reference/members/delete-member"}]},{"group":"AI APIs","icon":"robot","pages":[{"title":"Trigger AI Reply","openapi":"api-reference/openapi-generated.json POST /v1/ai/reply","href":"/api-reference/ai/trigger-ai-reply"}]},{"group":"Webhook APIs","icon":"webhook","pages":[{"title":"List Webhooks","openapi":"api-reference/openapi-generated.json GET /v1/webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Create Webhook","openapi":"api-reference/openapi-generated.json POST /v1/webhooks","href":"/api-reference/webhooks/create-webhook"},{"title":"Get Webhook by ID","openapi":"api-reference/openapi-generated.json GET /v1/webhooks/{id}","href":"/api-reference/webhooks/get-webhook-by-id"},{"title":"Update Webhook","openapi":"api-reference/openapi-generated.json PATCH /v1/webhooks/{id}","href":"/api-reference/webhooks/update-webhook"},{"title":"Delete Webhook","openapi":"api-reference/openapi-generated.json DELETE /v1/webhooks/{id}","href":"/api-reference/webhooks/delete-webhook"}]},{"group":"Webhooks","pages":[{"title":"Introduction","href":"/api-reference/webhooks/introduction"},{"title":"chat.created","icon":"comments","href":"/api-reference/webhooks/chat.created"},{"title":"chat.notification.created","icon":"comments","href":"/api-reference/webhooks/chat.notification.created"},{"title":"chat.custom-properties.updated","icon":"comments","href":"/api-reference/webhooks/chat.custom-properties.updated"},{"title":"message.created","icon":"comment","href":"/api-reference/webhooks/message.created"},{"title":"message.updated","icon":"comment","href":"/api-reference/webhooks/message.updated"},{"title":"message.deleted","icon":"comment","href":"/api-reference/webhooks/message.deleted"},{"title":"message.ack.updated","icon":"comment","href":"/api-reference/webhooks/message.ack.updated"},{"title":"message.ticket.attached","icon":"comment","href":"/api-reference/webhooks/message.ticket.attached"},{"title":"message.flagged","icon":"comment","href":"/api-reference/webhooks/message.flagged"},{"title":"message.unflagged","icon":"comment","href":"/api-reference/webhooks/message.unflagged"},{"title":"note.created","icon":"comment","href":"/api-reference/webhooks/note.created"},{"title":"reaction.created","icon":"face-smile","href":"/api-reference/webhooks/reaction.created"},{"title":"reaction.updated","icon":"face-smile","href":"/api-reference/webhooks/reaction.updated"},{"title":"ticket.created","icon":"tag","href":"/api-reference/webhooks/ticket.created"},{"title":"ticket.updated","icon":"tag","href":"/api-reference/webhooks/ticket.updated"},{"title":"ticket.deleted","icon":"tag","href":"/api-reference/webhooks/ticket.deleted"},{"title":"org.phone.updated","icon":"phone","href":"/api-reference/webhooks/org.phone.updated"},{"title":"org.phone.connected","icon":"phone","href":"/api-reference/webhooks/org.phone.connected"},{"title":"org.phone.disconnected","icon":"phone","href":"/api-reference/webhooks/org.phone.disconnected"},{"title":"org.phone.qr","icon":"phone","href":"/api-reference/webhooks/org.phone.qr"}]}]},{"anchor":"Free Tools","icon":"toolbox","href":"https://tools.periskope.app"}]},"title":"List Calls - Periskope Docs","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-26-lDe7V.js","utils-CWQmgYtH.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-4-Aw3rSD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C2zjXYA5.js","snippetPresets-DFmpFA7C.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-FJpQavWq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D_GvPF7k.js","shallow-Bs2ZB0NO.js","getApiPlaygroundDisplay-DCcqJJk-.js","CodeSnippet-DzDxawVe.js","CodeSnippets-aUr7fU-7.js","Page-CT9uE8Ip.js","getPastedJson-Y1fKsj_I.js","icon-DI4zTsDr.js","MethodPill-C0nDlmSQ.js","DuplicateIcon-NUXbx2nQ.js","createIcon-BdTHrPAi.js","DynamicMarkdown-CtpgKJwj.js","SectionHeading-B3x35tOt.js","axios-vUo_bRtp.js","Markdown-3OmurJMP.js","clsx-DMKzROTp.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-1ms6tsT-.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Ke9xIMFx.js"]}