GET
/
api
/
public
/
analytics
/
agents
/
response-time
Get team member response time by agent
curl --request GET \
  --url https://api.vambe.me/api/public/analytics/agents/response-time \
  --header 'x-api-key: <x-api-key>'
[
  {
    "user_id": "<string>",
    "avg_response_seconds": 123
  }
]

Overview

Get average response time statistics for each team member. This endpoint calculates how quickly team members respond to customer messages, helping you identify top performers and areas for improvement. Response times are calculated from the message_response_time table, which tracks the time between customer messages and team member responses.

Use Cases

  • Performance Dashboard: Display team member performance metrics
  • Team Leaderboard: Rank team members by response speed
  • KPI Tracking: Monitor response time KPIs
  • Performance Reviews: Get data for team member evaluations
  • Workload Analysis: Identify team members who might be overwhelmed
  • Training Needs: Identify team members who need support

Authentication

This endpoint requires authentication using an API key. Include your API key in the request header:
x-api-key: your_api_key_here

Query Parameters

ParameterTypeRequiredDescription
pagenumberYesPage number (starts at 1)

Response Structure

Returns an object with agent response time data and pagination:
FieldTypeDescription
dataarrayArray of agent response time objects
totalnumberTotal number of agents with response time data

Team Member Response Time Object

FieldTypeDescription
user_idstring (UUID)Team member’s unique identifier
first_namestringTeam member’s first name
last_namestringTeam member’s last name
avg_response_secondsnumberAverage response time in seconds

Example Request

curl --request GET \
  'https://api.vambe.ai/api/public/analytics/agents/response-time?page=1' \
  --header 'x-api-key: your_api_key_here'

Example Response

{
  "data": [
    {
      "user_id": "228d7a0d-9072-4ca8-939b-959b75cc606a",
      "first_name": "Maria",
      "last_name": "Rodriguez",
      "avg_response_seconds": 180
    },
    {
      "user_id": "338e8b1e-8183-5db9-a4ab-a6ab86dd717b",
      "first_name": "Carlos",
      "last_name": "Silva",
      "avg_response_seconds": 245
    },
    {
      "user_id": "448f9c2f-9294-6eca-b5bc-b7bc97ee828c",
      "first_name": "Ana",
      "last_name": "Martinez",
      "avg_response_seconds": 320
    }
  ],
  "total": 15
}

Common Use Cases

1. Display Team Member Leaderboard

const displayTeamMemberLeaderboard = async () => {
  const response = await fetch(
    'https://api.vambe.ai/api/public/analytics/agents/response-time?page=1',
    {
      headers: {
        'x-api-key': 'your_api_key_here',
      },
    },
  );

  const { data } = await response.json();

  // Sort by fastest response time
  const sortedMembers = data.sort(
    (a, b) => a.avg_response_seconds - b.avg_response_seconds,
  );

  console.log('πŸ† Team Member Response Time Leaderboard πŸ†\n');

  sortedMembers.forEach((member, index) => {
    const minutes = Math.floor(member.avg_response_seconds / 60);
    const seconds = member.avg_response_seconds % 60;
    const medal =
      index === 0 ? 'πŸ₯‡' : index === 1 ? 'πŸ₯ˆ' : index === 2 ? 'πŸ₯‰' : '  ';

    console.log(
      `${medal} ${index + 1}. ${member.first_name} ${member.last_name} - ${minutes}m ${seconds}s`,
    );
  });

  return sortedMembers;
};

2. Identify Slow Responders

const findSlowResponders = async (thresholdMinutes = 10) => {
  const response = await fetch(
    'https://api.vambe.ai/api/public/analytics/agents/response-time?page=1',
    {
      headers: {
        'x-api-key': 'your_api_key_here',
      },
    },
  );

  const { data } = await response.json();

  const slowResponders = data.filter(
    (member) => member.avg_response_seconds > thresholdMinutes * 60,
  );

  console.log(
    `Found ${slowResponders.length} team members with avg response time > ${thresholdMinutes} minutes`,
  );

  return slowResponders;
};

3. Calculate Team Average

const getTeamAverageResponseTime = async () => {
  let allMembers = [];
  let page = 1;
  let hasMore = true;

  // Fetch all pages
  while (hasMore) {
    const response = await fetch(
      `https://api.vambe.ai/api/public/analytics/agents/response-time?page=${page}`,
      {
        headers: {
          'x-api-key': 'your_api_key_here',
        },
      },
    );

    const result = await response.json();
    allMembers = allMembers.concat(result.data);

    hasMore = result.data.length > 0 && allMembers.length < result.total;
    page++;
  }

  const teamAverage =
    allMembers.reduce((sum, member) => sum + member.avg_response_seconds, 0) /
    allMembers.length;

  const minutes = Math.floor(teamAverage / 60);
  const seconds = Math.round(teamAverage % 60);

  console.log(`Team average response time: ${minutes}m ${seconds}s`);

  return {
    totalMembers: allMembers.length,
    averageSeconds: teamAverage,
    formattedTime: `${minutes}m ${seconds}s`,
  };
};

Response Time Calculation

Response times are calculated using the message_response_time table:
  • Inbound Message: Customer sends a message
  • Response Time: Time until team member replies
  • Aggregation: Average calculated across all team member responses
  • Only Human Team Members: Excludes AI assistant responses

Pagination

  • Each page returns a limited number of team members
  • Use the total field to determine how many team members have data
  • Keep fetching pages while data.length > 0 to get all team members

Error Responses

Status CodeDescription
400Bad Request - Invalid page parameter
401Unauthorized - Invalid or missing API key
500Internal Server Error - Something went wrong

Notes

  • Sorted by Slowest: Results ordered by avg_response_seconds DESC (slowest first)
  • Excludes AI: Only includes human team member responses
  • Requires Activity: Team members with no responses won’t appear
  • Time Unit: Response times in seconds

Headers

x-api-key
string
required

API key

Query Parameters

page
number
required

Page number

Example:

"1"

Response

200 - application/json

Returns average response time by agent

user_id
string

Agent ID

avg_response_seconds
number

Average response time in seconds