Endpoints
User Activity
GET
https://api.talentlynk.ai/v1/partners/reports/user-activity
Returns data as a JSON array. By default, it returns data for the current day (UTC).
Call Logs
GET
https://api.talentlynk.ai/v1/partners/reports/call-logs
Returns data as a JSON array. By default, it returns data for the current day (UTC).
Call Transcript
GET
https://api.talentlynk.ai/v1/partners/transcripts/:callId
The callId is obtained by fetching the Call Logs
Authentication
You can pass your appId and apiKey either:
As query parameters, or
Preferably via HTTP headers, for cleaner and more secure requests.
Example using headers
curl -X GET "https://api.talentlynk.ai/v1/partners/reports/user-activity" \
-H "x-app-id: YOUR_APP_ID" \
-H "x-api-key: YOUR_API_KEY"
Example using query parameters
curl -X GET "https://api.talentlynk.ai/v1/partners/reports/user-activity?appId=YOUR_APP_ID&apiKey=YOUR_API_KEY"
Fetching User Activity
This endpoint returns an array of activity records, one per user, summarising their TalentLynk usage for the given time period.
Example request
curl -X GET "https://api.talentlynk.ai/v1/partners/reports/user-activity?startDate=2025-10-01T00:00:00Z&endDate=2025-10-07T23:59:59Z" \
-H "x-app-id: YOUR_APP_ID" \
-H "x-api-key: YOUR_API_KEY"
Example response
[
{
"id": "user_123",
"name": "Jane Smith",
"email": "[email protected]",
"inboundCalls": 34,
"inboundSeconds": 4580,
"outboundCalls": 41,
"outboundSeconds": 6030,
"missedCalls": 2,
"noAnswerCalls": 1,
"callSummaries": 75,
"callSummariesSynced": 74,
"inboundSMS": 3,
"outboundSMS": 4,
"spentSMSCredits": 0.8,
"inboundWhatsapp": 5,
"outboundWhatsapp": 5,
"inboundEmails": 17,
"outboundEmails": 14,
"transcriptionSeconds": 1260
}
]
Returned data matches the interface:
export interface UserActivity {
id: string;
name: string;
email: string;
inboundCalls: number;
inboundSeconds: number;
outboundCalls: number;
outboundSeconds: number;
missedCalls: number;
noAnswerCalls: number;
callSummaries: number;
callSummariesSynced: number;
inboundSMS: number;
outboundSMS: number;
spentSMSCredits: number;
inboundWhatsapp: number;
outboundWhatsapp: number;
inboundEmails: number;
outboundEmails: number;
transcriptionSeconds: number;
}
Fetching Call Logs
This endpoint returns detailed call data, one record per call made or received by users in your organisation.
Example request
curl -X GET "https://api.talentlynk.ai/v1/partners/reports/call-logs?startDate=2025-10-10T00:00:00Z&endDate=2025-10-16T23:59:59Z" \
-H "x-app-id: YOUR_APP_ID" \
-H "x-api-key: YOUR_API_KEY"
⚠️ Maximum 7 days of call logs can be retrieved in a single request.
Example response
[
{
"id": "call_abc123",
"direction": "outbound",
"status": "answered",
"fromName": "Jane Smith",
"fromNumber": "+441234567890",
"toName": "John Doe",
"toNumber": "+447890123456",
"startDate": "2025-10-15T09:21:34Z",
"endDate": "2025-10-15T09:22:48Z",
"talkDuration": 74,
"totalDuration": 90,
"callRecordingUrl": "https://recordings.talentlynk.ai/call_abc123.mp3",
"userEmail": "[email protected]",
"contactType": "candidate",
"syncedToCrm": true,
"crmLabel": "BD Call",
"crmId": "12345",
"summary": "Follow-up call completed successfully.",
"hasTranscript": true
}
]
Returned data matches the interface:
export interface PartnerCallLog {
id: string;
direction: "inbound" | "outbound";
status: "answered" | "unanswered" | "missed" | "voicemail" | "ongoing";
fromName: string | null;
fromNumber: string;
toName: string | null;
toNumber: string;
startDate: string;
endDate: string | null;
talkDuration: number;
totalDuration: number;
callRecordingUrl: string;
userEmail: string;
contactType: ContactType;
syncedToCrm: boolean;
crmLabel: string | null;
crmId: string | null;
summary: string | null;
}
Fetching a Call Transcript
You can retrieve the transcript of a specific call using its message ID. The message ID can be found in the call log data returned by the /call-logs endpoint.
Example request
curl -H "X-API-Key: your-api-key" \
-H "X-App-ID: your-app-id" \
"https://api.talentlynk.ai/v1/partners/transcripts/507f1f77bcf86cd799439011"
Example response
{
"data": {
"status": "completed",
"utterances": [
{
"speaker": "A",
"text": "Hi, thanks for taking my call today.",
"start": 0,
"end": 2500,
"confidence": 0.95
},
{
"speaker": "B",
"text": "No problem, happy to chat.",
"start": 2600,
"end": 4200,
"confidence": 0.93
}
],
"conversation": "A: Hi, thanks for taking my call today.\nB: No problem, happy to chat.",
"duration": 45.5,
"confidence": 0.94,
"languageCode": "en",
"error": null,
"createdAt": "2025-03-20T10:30:00.000Z"
}
}Response Fields
Field | Type | Description |
| string | The transcription status: |
| array | Individual speaker turns with speaker label, text, start/end timestamps (in milliseconds), and confidence score |
| string | The full transcript formatted as a readable conversation (e.g. |
| number | Duration of the call audio in seconds |
| number | Overall transcription confidence score between 0 and 1 |
| string | Detected language code (e.g. |
| string | null | Error message if the transcription failed, otherwise |
| string | ISO 8601 timestamp of when the call took place |
Note: If the transcript is still being processed, the status will be processing and the utterances and conversation fields will not be available yet. Poll the endpoint again after a short delay.
Filtering by Date Range
For User Activity and Call Logs, you can limit results using the query parameters:
Parameter | Type | Example | Description |
| string (ISO 8601) |
| Start of range (UTC) |
| string (ISO 8601) |
| End of range (UTC) |
You can also use simpler ISO formats like 2025-10-16 or 2025-10-16T09:00, which will be automatically parsed and normalised.
Dates are interpreted as UTC internally.
Example: fetch activity for a single day
curl -X GET "https://api.talentlynk.ai/v1/partners/reports/user-activity?startDate=2025-10-16&endDate=2025-10-16" \
-H "x-app-id: YOUR_APP_ID" \
-H "x-api-key: YOUR_API_KEY"
Best Practices
Frequency: Since both User Activity and Call Logs endpoints default to “today’s data”, it’s best to call them once at the end of each day for reporting or syncing.
Date limits:
Up to 31 days for user activity.
Up to 7 days for call logs.
Storage: Save the responses locally or in your CRM/reporting database.
Time zone: Always send and interpret dates in UTC for consistency across regions.
