Amazon Connect Service

2026/01/30 - Amazon Connect Service - 2 updated api methods

Changes  This release adds Estimated Wait Time support to the GetContactMetrics API for Amazon Connect.

GetContactMetrics (updated) Link ¶
Changes (request, response)
Request
{'Metrics': {'Name': {'ESTIMATED_WAIT_TIME'}}}
Response
{'MetricResults': {'Name': {'ESTIMATED_WAIT_TIME'}}}

Retrieves contact metric data for a specified contact.

Use cases

Following are common use cases for position in queue and estimated wait time:

  • Customer-Facing Wait Time Announcements - Display or announce the estimated wait time and position in queue to customers before or during their queue experience.

  • Callback Offerings - Offer customers a callback option when the estimated wait time or position in queue exceeds a defined threshold.

  • Queue Routing Decisions - Route incoming contacts to less congested queues by comparing estimated wait time and position in queue across multiple queues.

  • Self-Service Deflection - Redirect customers to self-service options like chatbots or FAQs when estimated wait time is high or position in queue is unfavorable.

Important things to know

  • Metrics are only available while the contact is actively in queue.

  • For more information, see the Position in queue metric in the Amazon Connect Administrator Guide.

Endpoints: See Amazon Connect endpoints and quotas.

See also: AWS API Documentation

Request Syntax

client.get_contact_metrics(
    InstanceId='string',
    ContactId='string',
    Metrics=[
        {
            'Name': 'ESTIMATED_WAIT_TIME'|'POSITION_IN_QUEUE'
        },
    ]
)
type InstanceId:

string

param InstanceId:

[REQUIRED]

The identifier of the Amazon Connect instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance.

type ContactId:

string

param ContactId:

[REQUIRED]

The identifier of the contact in this instance of Amazon Connect.

type Metrics:

list

param Metrics:

[REQUIRED]

A list of contact level metrics to retrieve.Supported metrics include POSITION_IN_QUEUE (the contact's current position in the queue) and ESTIMATED_WAIT_TIME (the predicted time in seconds until the contact is connected to an agent)

  • (dict) --

    Contains the details of a metric to be retrieved for a contact. Use this object to specify which contact level metrics you want to include in your GetContactMetrics request.

    • Name (string) -- [REQUIRED]

      The name of the metric to retrieve. Supported values are POSITION_IN_QUEUE (returns the contact's current position in the queue) and ESTIMATED_WAIT_TIME (returns the predicted wait time in seconds).

rtype:

dict

returns:

Response Syntax

{
    'MetricResults': [
        {
            'Name': 'ESTIMATED_WAIT_TIME'|'POSITION_IN_QUEUE',
            'Value': {
                'Number': 123.0
            }
        },
    ],
    'Id': 'string',
    'Arn': 'string'
}

Response Structure

  • (dict) --

    • MetricResults (list) --

      A list of metric results containing the calculated values for each requested metric. Each result includes the metric name and its corresponding value. For example, POSITION_IN_QUEUE returns a numeric value representing the contact's position in queue, and ESTIMATED_WAIT_TIME returns the predicted wait time in seconds.

      • (dict) --

        Contains the result of a requested metric for the contact. This object is returned as part of the GetContactMetrics response and includes both the metric name and its calculated value.

        • Name (string) --

          The name of the metric that was retrieved. This corresponds to the metric name specified in the request, such as POSITION_IN_QUEUE or ESTIMATED_WAIT_TIME.

        • Value (dict) --

          The calculated value for the requested metric. This object contains the numeric result based on the contact's current state in the queue.

          • Number (float) --

            The numeric value of the metric result. For POSITION_IN_QUEUE, this represents the contact's current position in the queue (e.g., 3.00 means third in line). For ESTIMATED_WAIT_TIME, this represents the predicted wait time in seconds (e.g., 120.00 means approximately 2 minutes).

    • Id (string) --

      The unique identifier of the contact for which metrics were retrieved. This matches the ContactId provided in the request.

    • Arn (string) --

      The ARN of the contact for which metrics were retrieved.

GetCurrentMetricData (updated) Link ¶
Changes (request, response)
Request
{'CurrentMetrics': {'Name': {'ESTIMATED_WAIT_TIME'}},
 'SortCriteria': {'SortByMetric': {'ESTIMATED_WAIT_TIME'}}}
Response
{'MetricResults': {'Collections': {'Metric': {'Name': {'ESTIMATED_WAIT_TIME'}}}}}

Gets the real-time metric data from the specified Amazon Connect instance.

For a description of each metric, see Metrics definitions in the Amazon Connect Administrator Guide.

See also: AWS API Documentation

Request Syntax

client.get_current_metric_data(
    InstanceId='string',
    Filters={
        'Queues': [
            'string',
        ],
        'Channels': [
            'VOICE'|'CHAT'|'TASK'|'EMAIL',
        ],
        'RoutingProfiles': [
            'string',
        ],
        'RoutingStepExpressions': [
            'string',
        ],
        'AgentStatuses': [
            'string',
        ],
        'Subtypes': [
            'string',
        ],
        'ValidationTestTypes': [
            'string',
        ]
    },
    Groupings=[
        'QUEUE'|'CHANNEL'|'ROUTING_PROFILE'|'ROUTING_STEP_EXPRESSION'|'AGENT_STATUS'|'SUBTYPE'|'VALIDATION_TEST_TYPE',
    ],
    CurrentMetrics=[
        {
            'Name': 'AGENTS_ONLINE'|'AGENTS_AVAILABLE'|'AGENTS_ON_CALL'|'AGENTS_NON_PRODUCTIVE'|'AGENTS_AFTER_CONTACT_WORK'|'AGENTS_ERROR'|'AGENTS_STAFFED'|'CONTACTS_IN_QUEUE'|'OLDEST_CONTACT_AGE'|'CONTACTS_SCHEDULED'|'AGENTS_ON_CONTACT'|'SLOTS_ACTIVE'|'SLOTS_AVAILABLE'|'ESTIMATED_WAIT_TIME',
            'MetricId': 'string',
            'Unit': 'SECONDS'|'COUNT'|'PERCENT'
        },
    ],
    NextToken='string',
    MaxResults=123,
    SortCriteria=[
        {
            'SortByMetric': 'AGENTS_ONLINE'|'AGENTS_AVAILABLE'|'AGENTS_ON_CALL'|'AGENTS_NON_PRODUCTIVE'|'AGENTS_AFTER_CONTACT_WORK'|'AGENTS_ERROR'|'AGENTS_STAFFED'|'CONTACTS_IN_QUEUE'|'OLDEST_CONTACT_AGE'|'CONTACTS_SCHEDULED'|'AGENTS_ON_CONTACT'|'SLOTS_ACTIVE'|'SLOTS_AVAILABLE'|'ESTIMATED_WAIT_TIME',
            'SortOrder': 'ASCENDING'|'DESCENDING'
        },
    ]
)
type InstanceId:

string

param InstanceId:

[REQUIRED]

The identifier of the Amazon Connect instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance.

type Filters:

dict

param Filters:

[REQUIRED]

The filters to apply to returned metrics. You can filter up to the following limits:

  • Queues: 100

  • Routing profiles: 100

  • Channels: 3 (VOICE, CHAT, and TASK channels are supported.)

  • RoutingStepExpressions: 50

  • AgentStatuses: 50

  • Subtypes: 10

  • ValidationTestTypes: 10

Metric data is retrieved only for the resources associated with the queues or routing profiles, and by any channels included in the filter. (You cannot filter by both queue AND routing profile.) You can include both resource IDs and resource ARNs in the same request.

When using AgentStatuses as filter make sure Queues is added as primary filter.

When using Subtypes as filter make sure Queues is added as primary filter.

When using ValidationTestTypes as filter make sure Queues is added as primary filter.

When using the RoutingStepExpression filter, you need to pass exactly one QueueId. The filter is also case sensitive so when using the RoutingStepExpression filter, grouping by ROUTING_STEP_EXPRESSION is required.

Currently tagging is only supported on the resources that are passed in the filter.

  • Queues (list) --

    The queues to use to filter the metrics. You should specify at least one queue, and can specify up to 100 queues per request. The GetCurrentMetricsData API in particular requires a queue when you include a Filter in your request.

    • (string) --

  • Channels (list) --

    The channel to use to filter the metrics.

    • (string) --

  • RoutingProfiles (list) --

    A list of up to 100 routing profile IDs or ARNs.

    • (string) --

  • RoutingStepExpressions (list) --

    A list of expressions as a filter, in which an expression is an object of a step in a routing criteria.

    • (string) --

  • AgentStatuses (list) --

    A list of up to 50 agent status IDs or ARNs.

    • (string) --

  • Subtypes (list) --

    A list of up to 10 subtypes can be provided.

    • (string) --

  • ValidationTestTypes (list) --

    A list of up to 10 validationTestTypes can be provided.

    • (string) --

type Groupings:

list

param Groupings:

Defines the level of aggregation for metrics data by a dimension(s). Its similar to sorting items into buckets based on a common characteristic, then counting or calculating something for each bucket. For example, when grouped by QUEUE, the metrics returned apply to each queue rather than aggregated for all queues.

The grouping list is an ordered list, with the first item in the list defined as the primary grouping. If no grouping is included in the request, the aggregation happens at the instance-level.

  • If you group by CHANNEL, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported.

  • If you group by AGENT_STATUS, you must include the QUEUE as the primary grouping and use queue filter. When you group by AGENT_STATUS, the only metric available is the AGENTS_ONLINE metric.

  • If you group by SUBTYPE or VALIDATION_TEST_TYPE as secondary grouping then you must include QUEUE as primary grouping and use Queue as filter

  • If you group by ROUTING_PROFILE, you must include either a queue or routing profile filter. In addition, a routing profile filter is required for metrics CONTACTS_SCHEDULED, CONTACTS_IN_QUEUE, and OLDEST_CONTACT_AGE.

  • When using the RoutingStepExpression filter, group by ROUTING_STEP_EXPRESSION is required.

  • (string) --

type CurrentMetrics:

list

param CurrentMetrics:

[REQUIRED]

The metrics to retrieve. Specify the name or metricId, and unit for each metric. The following metrics are available. For a description of all the metrics, see Metrics definitions in the Amazon Connect Administrator Guide.

Unit: COUNT

Name in real-time metrics report: ACW

AGENTS_AVAILABLE

Unit: COUNT

Name in real-time metrics report: Available

AGENTS_ERROR

Unit: COUNT

Name in real-time metrics report: Error

AGENTS_NON_PRODUCTIVE

Unit: COUNT

Name in real-time metrics report: NPT (Non-Productive Time)

AGENTS_ON_CALL

Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ON_CONTACT

Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ONLINE

Unit: COUNT

Name in real-time metrics report: Online

AGENTS_STAFFED

Unit: COUNT

Name in real-time metrics report: Staffed

CONTACTS_IN_QUEUE

Unit: COUNT

Name in real-time metrics report: In queue

CONTACTS_SCHEDULED

Unit: COUNT

Name in real-time metrics report: Scheduled

ESTIMATED_WAIT_TIME

Unit: SECONDS

This metric supports filter and grouping combination only used for core routing purpose. Valid filter and grouping use cases:

  • Filter by a list of [Queues] and a list of [Channels], group by [“QUEUE”, “CHANNEL”]

  • Filter by a singleton list of [Queue], a singleton list of [Channel], a list of [RoutingStepExpression], group by [“ROUTING_STEP_EXPRESSION”].

    OLDEST_CONTACT_AGE

Unit: SECONDS

When you use groupings, Unit says SECONDS and the Value is returned in SECONDS.

When you do not use groupings, Unit says SECONDS but the Value is returned in MILLISECONDS. For example, if you get a response like this:

``{ "Metric": { "Name": "OLDEST_CONTACT_AGE", "Unit": "SECONDS" }, "Value": 24113.0 ``}

The actual OLDEST_CONTACT_AGE is 24 seconds.

When the filter RoutingStepExpression is used, this metric is still calculated from enqueue time. For example, if a contact that has been queued under <Expression 1> for 10 seconds has expired and <Expression 2> becomes active, then OLDEST_CONTACT_AGE for this queue will be counted starting from 10, not 0.

Name in real-time metrics report: Oldest

SLOTS_ACTIVE

Unit: COUNT

Name in real-time metrics report: Active

SLOTS_AVAILABLE

Unit: COUNT

Name in real-time metrics report: Availability

  • (dict) --

    Contains information about a real-time metric. For a description of each metric, see Metrics definitions in the Amazon Connect Administrator Guide.

    • Name (string) --

      The name of the metric.

    • MetricId (string) --

      Out of the box current metrics or custom metrics can be referenced via this field. This field is a valid AWS Connect Arn or a UUID.

    • Unit (string) --

      The unit for the metric.

type NextToken:

string

param NextToken:

The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.

The token expires after 5 minutes from the time it is created. Subsequent requests that use the token must use the same request parameters as the request that generated the token.

type MaxResults:

integer

param MaxResults:

The maximum number of results to return per page.

type SortCriteria:

list

param SortCriteria:

The way to sort the resulting response based on metrics. You can enter one sort criteria. By default resources are sorted based on AGENTS_ONLINE, DESCENDING. The metric collection is sorted based on the input metrics.

Note the following:

  • Sorting on SLOTS_ACTIVE and SLOTS_AVAILABLE is not supported.

  • (dict) --

    The way to sort the resulting response based on metrics. By default resources are sorted based on AGENTS_ONLINE, DESCENDING. The metric collection is sorted based on the input metrics.

    • SortByMetric (string) --

      The current metric names.

    • SortOrder (string) --

      The way to sort.

rtype:

dict

returns:

Response Syntax

{
    'NextToken': 'string',
    'MetricResults': [
        {
            'Dimensions': {
                'Queue': {
                    'Id': 'string',
                    'Arn': 'string'
                },
                'Channel': 'VOICE'|'CHAT'|'TASK'|'EMAIL',
                'RoutingProfile': {
                    'Id': 'string',
                    'Arn': 'string'
                },
                'RoutingStepExpression': 'string',
                'AgentStatus': {
                    'Arn': 'string',
                    'Id': 'string'
                },
                'Subtype': 'string',
                'ValidationTestType': 'string'
            },
            'Collections': [
                {
                    'Metric': {
                        'Name': 'AGENTS_ONLINE'|'AGENTS_AVAILABLE'|'AGENTS_ON_CALL'|'AGENTS_NON_PRODUCTIVE'|'AGENTS_AFTER_CONTACT_WORK'|'AGENTS_ERROR'|'AGENTS_STAFFED'|'CONTACTS_IN_QUEUE'|'OLDEST_CONTACT_AGE'|'CONTACTS_SCHEDULED'|'AGENTS_ON_CONTACT'|'SLOTS_ACTIVE'|'SLOTS_AVAILABLE'|'ESTIMATED_WAIT_TIME',
                        'MetricId': 'string',
                        'Unit': 'SECONDS'|'COUNT'|'PERCENT'
                    },
                    'Value': 123.0
                },
            ]
        },
    ],
    'DataSnapshotTime': datetime(2015, 1, 1),
    'ApproximateTotalCount': 123
}

Response Structure

  • (dict) --

    • NextToken (string) --

      If there are additional results, this is the token for the next set of results.

      The token expires after 5 minutes from the time it is created. Subsequent requests that use the token must use the same request parameters as the request that generated the token.

    • MetricResults (list) --

      Information about the real-time metrics.

      • (dict) --

        Contains information about a set of real-time metrics.

        • Dimensions (dict) --

          The dimensions for the metrics.

          • Queue (dict) --

            Information about the queue for which metrics are returned.

            • Id (string) --

              The identifier of the queue.

            • Arn (string) --

              The Amazon Resource Name (ARN) of the queue.

          • Channel (string) --

            The channel used for grouping and filters.

          • RoutingProfile (dict) --

            Information about the routing profile assigned to the user.

            • Id (string) --

              The identifier of the routing profile.

            • Arn (string) --

              The Amazon Resource Name (ARN) of the routing profile.

          • RoutingStepExpression (string) --

            The expression of a step in a routing criteria.

          • AgentStatus (dict) --

            Information about the agent status assigned to the user.

            • Arn (string) --

              The Amazon Resource Name (ARN) of the agent status.

            • Id (string) --

              The identifier of the agent status.

          • Subtype (string) --

            The subtype of the channel used for the contact.

          • ValidationTestType (string) --

            The testing and simulation type

        • Collections (list) --

          The set of metrics.

          • (dict) --

            Contains the data for a real-time metric.

            • Metric (dict) --

              Information about the metric.

              • Name (string) --

                The name of the metric.

              • MetricId (string) --

                Out of the box current metrics or custom metrics can be referenced via this field. This field is a valid AWS Connect Arn or a UUID.

              • Unit (string) --

                The unit for the metric.

            • Value (float) --

              The value of the metric.

    • DataSnapshotTime (datetime) --

      The time at which the metrics were retrieved and cached for pagination.

    • ApproximateTotalCount (integer) --

      The total count of the result, regardless of the current page size.