Skip to main content
TypeScript

Authorizations

Authorization
string
header
required

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

x-phone
string

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.

Example:

"919876543210"

Path Parameters

call_id
string
required

The call's call_id, or its notification_id from the notifications list or a chat.notification.created webhook event.

Minimum string length: 1
Example:

"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

Response

The call in full, with its transcript

A WhatsApp call on one of the organization's phones: who called whom, how it ended and, for calls handled in Periskope, its recording, participants, transcript and summary.

call_id
string

WhatsApp's id for the call. Pass it to Get a call. Also the unique_id of the call's notification row.

Example:

"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

notification_id
string

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"

org_id
string<uuid>

Id of the organization the call belongs to.

Example:

"00000000-0000-0000-0000-000000000000"

org_phone
string

Org phone (WhatsApp account) that made or received the call, as country code + number suffixed with @c.us.

Example:

"911111111111@c.us"

chat_id
string

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"

chat_name
string

Name of the chat, or the contact's saved name when the chat has none. Absent for unknown numbers.

Example:

"John Doe"

caller
string

Who placed the call (@c.us): the org phone for outgoing calls, the customer for incoming ones.

Example:

"919999999999@c.us"

direction
enum<string>

'incoming' or 'outgoing', from the org phone's point of view.

Available options:
incoming,
outgoing
Example:

"incoming"

result
string

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"

handled_via
enum<string>

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

Available options:
periskope,
phone
Example:

"periskope"

timestamp
string

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"

duration_seconds
number

Talk time in seconds (0 for unanswered calls), when known — from WhatsApp, or the recording length otherwise.

Example:

184

answered_by
string

Email of the member who answered (incoming) or placed (outgoing) the call in Periskope.

Example:

"agent@example.com"

transcript
object

Transcription status and, once done, the transcript line by line. Absent when the call was not recorded.

summary
object

AI summary of the call, generated after transcription. Absent until then, or when summarizing failed.

answered_by_name
string

Display name of the member in answered_by, when set. Returned by Get a call only.

Example:

"Asha Rao"

started_at
string

When the call started, as an ISO 8601 UTC timestamp — WhatsApp's own start time when reported, else timestamp. Returned by Get a call only.

Example:

"2026-01-15T09:30:00.000Z"

answered_at
string

When the call was answered, as an ISO 8601 UTC timestamp. Absent for unanswered calls and calls WhatsApp did not time. Returned by Get a call only.

Example:

"2026-01-15T09:30:05.000Z"

ended_at
string

When the call ended, as an ISO 8601 UTC timestamp, when known. Returned by Get a call only.

Example:

"2026-01-15T09:33:09.000Z"

end_reason
string

Why the call ended, for calls handled in Periskope: 'local_hangup' (a member hung up), 'remote_end' (the customer hung up), 'disconnect', 'ended', or 'join_failed: '. Absent for calls handled on the phone. Returned by Get a call only.

Example:

"remote_end"

participants
object[]

Periskope members on the call, in the order they joined. Present for recorded calls. Returned by Get a call only.

recording
object

The call recording with downloadable links, its channel layout and per-member tracks. Absent when the call was not recorded (handled on the phone, unanswered, or too short).