Documentation Index Fetch the complete documentation index at: https://www.cometchat.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Retrieve call history for your application. Call logs provide detailed information about past calls including duration, participants, recordings, and status.
Fetch Call Logs
Use CallLogsRequest to fetch call logs with pagination support. The builder pattern allows you to filter results by various criteria.
let callLogRequest = CallLogsRequest. CallLogsRequestBuilder ()
. setLimit ( 30 )
. build ()
callLogRequest. fetchNext ( onSuccess : { callLogs in
for callLog in callLogs {
print ( "Session: \( callLog. sessionID ?? "" ) " )
print ( "Duration: \( callLog. totalDuration ?? "" ) " )
print ( "Status: \( callLog. status ?? "" ) " )
}
}, onError : { error in
print ( "Error: \( error ? . errorDescription ?? "" ) " )
})
CallLogsRequest *callLogRequest = [[[CallLogsRequest CallLogsRequestBuilder]
setLimit:30]
build];
[callLogRequest fetchNextOnSuccess:^(NSArray<CallLog *> * callLogs) {
for (CallLog *callLog in callLogs) {
NSLog(@"Session: %@", callLog.sessionID);
NSLog(@"Duration: %@", callLog.totalDuration);
NSLog(@"Status: %@", callLog.status);
}
} onError:^(CometChatCallException * error) {
NSLog(@"Error: %@", error.errorDescription);
}];
CallLogsRequestBuilder
Configure the request using the builder methods:
Method Type Description setLimit(Int)Int Number of call logs to fetch per request (default: 30, max: 100) setSessionType(String)String Filter by call type: video or audio setCallStatus(String)String Filter by call status setHasRecording(Bool)Bool Filter calls that have recordings setCallCategory(String)String Filter by category: call or meet setCallDirection(String)String Filter by direction: incoming or outgoing setUid(String)String Filter calls with a specific user setGuid(String)String Filter calls with a specific group
Filter Examples
// Fetch only video calls
let videoCallsRequest = CallLogsRequest. CallLogsRequestBuilder ()
. setSessionType ( "video" )
. setLimit ( 20 )
. build ()
// Fetch calls with recordings
let recordedCallsRequest = CallLogsRequest. CallLogsRequestBuilder ()
. setHasRecording ( true )
. build ()
// Fetch missed incoming calls
let missedCallsRequest = CallLogsRequest. CallLogsRequestBuilder ()
. setCallStatus ( "missed" )
. setCallDirection ( "incoming" )
. build ()
// Fetch calls with a specific user
let userCallsRequest = CallLogsRequest. CallLogsRequestBuilder ()
. setUid ( "user_id" )
. build ()
// Fetch only video calls
CallLogsRequest *videoCallsRequest = [[[[CallLogsRequest CallLogsRequestBuilder]
setSessionType:@"video"]
setLimit:20]
build];
// Fetch calls with recordings
CallLogsRequest *recordedCallsRequest = [[[CallLogsRequest CallLogsRequestBuilder]
setHasRecording:YES]
build];
// Fetch missed incoming calls
CallLogsRequest *missedCallsRequest = [[[[CallLogsRequest CallLogsRequestBuilder]
setCallStatus:@"missed"]
setCallDirection:@"incoming"]
build];
// Fetch calls with a specific user
CallLogsRequest *userCallsRequest = [[[CallLogsRequest CallLogsRequestBuilder]
setUid:@"user_id"]
build];
Use fetchNext() and fetchPrevious() for pagination:
// Fetch next page
callLogRequest. fetchNext ( onSuccess : { callLogs in
// Handle next page
}, onError : { error in
print ( "Error: \( error ? . errorDescription ?? "" ) " )
})
// Fetch previous page
callLogRequest. fetchPrevious ( onSuccess : { callLogs in
// Handle previous page
}, onError : { error in
print ( "Error: \( error ? . errorDescription ?? "" ) " )
})
// Fetch next page
[callLogRequest fetchNextOnSuccess:^(NSArray<CallLog *> * callLogs) {
// Handle next page
} onError:^(CometChatCallException * error) {
NSLog(@"Error: %@", error.errorDescription);
}];
// Fetch previous page
[callLogRequest fetchPreviousOnSuccess:^(NSArray<CallLog *> * callLogs) {
// Handle previous page
} onError:^(CometChatCallException * error) {
NSLog(@"Error: %@", error.errorDescription);
}];
CallLog Object
Each CallLog object contains detailed information about a call:
Property Type Description sessionIDString Unique identifier for the call session initiatorCallEntity User who initiated the call receiverCallEntity User or group that received the call receiverTypeString user or grouptypeString Call type: video or audio statusString Final status of the call callCategoryString Category: call or meet initiatedAtInt Timestamp when call was initiated endedAtInt Timestamp when call ended totalDurationString Human-readable duration (e.g., “5:30”) totalDurationInMinutesDouble Duration in minutes totalAudioMinutesDouble Audio duration in minutes totalVideoMinutesDouble Video duration in minutes totalParticipantsInt Number of participants hasRecordingBool Whether the call was recorded recordings[Recording] List of recording objects
Access Recordings
If a call has recordings, access them through the recordings property:
callLogRequest. fetchNext ( onSuccess : { callLogs in
for callLog in callLogs {
if callLog.hasRecording {
for recording in callLog.recordings ?? [] {
print ( "Recording ID: \( recording. rid ?? "" ) " )
print ( "Recording URL: \( recording. recordingURL ?? "" ) " )
print ( "Duration: \( recording. duration ) seconds" )
}
}
}
}, onError : { error in
print ( "Error: \( error ? . errorDescription ?? "" ) " )
})
[callLogRequest fetchNextOnSuccess:^(NSArray<CallLog *> * callLogs) {
for (CallLog *callLog in callLogs) {
if (callLog.hasRecording) {
for (Recording *recording in callLog.recordings) {
NSLog(@"Recording ID: %@", recording.rid);
NSLog(@"Recording URL: %@", recording.recordingURL);
NSLog(@"Duration: %f seconds", recording.duration);
}
}
}
} onError:^(CometChatCallException * error) {
NSLog(@"Error: %@", error.errorDescription);
}];
Status Description ongoingCall is currently in progress busyReceiver was busy rejectedCall was rejected cancelledCall was cancelled by initiator endedCall ended normally missedCall was missed initiatedCall was initiated but not answered unansweredCall was not answered
Category Description callDirect call between users meetMeeting/conference call
Direction Description incomingCall received by the user outgoingCall initiated by the user