> ## Documentation Index
> Fetch the complete documentation index at: https://docs.powerdialer.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get call performance

> Compare calling-list or rep performance over calendar days. Requires `analytics:read`. Supply inclusive `startDate` and `endDate`, up to 366 days, with an IANA `timezone` (default UTC). Optional `listId` and `ownerId` filters remain within the key's permissions. Group by list, owner or a single total.

The response reports the resolved UTC range, call counts, connect/conversation counts, talk time and rates. Rates divide by calls, not unique contacts. `conversationThresholdSeconds` defaults to 120. List attribution follows original call sessions; an unassigned group may have a null key. `verifiedConversions` is null because booking, payment and sales outcomes must come from their authoritative system.

`400 invalid_request` requires valid dates, timezone or threshold. `403 invalid_owner` means the rep filter is not permitted; `404 not_found` can identify an inaccessible list filter. This read can be retried without an idempotency key.

See [analytics definitions](/guides/analytics).



## OpenAPI

````yaml /api/openapi.json get /analytics/summary
openapi: 3.1.0
info:
  title: PowerDialer API v2
  version: 2.0.0
  description: >-
    Connect your CRM, sales workspace or reporting tools to PowerDialer using
    scoped API keys. Manage contacts and calling lists, read call evidence and
    analytics, and receive signed events. All example records and IDs are
    synthetic; replace them with values from your workspace. Shared-key v1 is
    retired. API availability was verified on 2026-10-08; see /availability for
    historical data coverage. Legacy outbound webhooks use a separate contract.
servers:
  - url: https://api.migration.powerdialer.ai/api/public/v2
    description: Production API v2; availability verified on 2026-10-08.
security:
  - ApiKey: []
tags:
  - name: Authentication
  - name: Contacts
  - name: Calling lists
  - name: Imports
  - name: Calls
  - name: Synchronization
  - name: Analytics
  - name: Webhooks
  - name: Webhook deliveries
  - name: Incoming webhook payloads
paths:
  /analytics/summary:
    get:
      tags:
        - Analytics
      summary: Get call performance
      description: >-
        Compare calling-list or rep performance over calendar days. Requires
        `analytics:read`. Supply inclusive `startDate` and `endDate`, up to 366
        days, with an IANA `timezone` (default UTC). Optional `listId` and
        `ownerId` filters remain within the key's permissions. Group by list,
        owner or a single total.


        The response reports the resolved UTC range, call counts,
        connect/conversation counts, talk time and rates. Rates divide by calls,
        not unique contacts. `conversationThresholdSeconds` defaults to 120.
        List attribution follows original call sessions; an unassigned group may
        have a null key. `verifiedConversions` is null because booking, payment
        and sales outcomes must come from their authoritative system.


        `400 invalid_request` requires valid dates, timezone or threshold. `403
        invalid_owner` means the rep filter is not permitted; `404 not_found`
        can identify an inaccessible list filter. This read can be retried
        without an idempotency key.


        See [analytics definitions](/guides/analytics).
      operationId: getAnalyticsSummary
      parameters:
        - name: startDate
          in: query
          required: true
          schema:
            type: string
            format: date
          description: >-
            First included calendar day in the selected timezone, formatted
            YYYY-MM-DD. Together with endDate, the range may include at most 366
            days.
          example: '2026-10-01'
        - name: endDate
          in: query
          required: true
          schema:
            type: string
            format: date
          description: >-
            Last included calendar day in the selected timezone. It may equal
            startDate; the response reports the following midnight as the
            exclusive UTC end.
          example: '2026-10-07'
        - name: timezone
          in: query
          required: false
          schema:
            type: string
            default: UTC
            maxLength: 100
          description: >-
            IANA timezone used to turn calendar dates into actual instants,
            including daylight-saving changes. Defaults to UTC. Must be a
            supported IANA identifier of at most 100 characters.
          example: America/New_York
        - name: listId
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 2147483647
          description: >-
            Optional visible calling-list ID. Filters by each call’s original
            session attribution, not the contact’s current list membership. Use
            a positive integer no greater than 2,147,483,647.
          example: 456
        - name: ownerId
          in: query
          required: false
          schema:
            type: string
          description: >-
            Optional PowerDialer user ID for a current workspace member
            permitted by this key. Omit to include all owners allowed by the
            credential.
          example: user_example
        - name: groupBy
          in: query
          required: false
          schema:
            type: string
            enum:
              - list
              - owner
              - none
            default: list
          description: >-
            Return one row per original calling list (list), per rep (owner), or
            one combined row (none). Defaults to list. Calls without list
            attribution can form a null group.
          example: list
        - name: conversationThresholdSeconds
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 3600
            default: 120
          description: >-
            Minimum talk-time threshold used for conversation counts, from 1 to
            3600 seconds. Defaults to 120; calls meeting the threshold still
            follow the documented connection/voicemail rules.
          example: 120
      responses:
        '200':
          description: >-
            Scoped metrics grouped as requested, with explicit UTC boundaries
            and no inferred business conversions.
          headers:
            X-Request-Id:
              schema:
                type: string
                format: uuid
            RateLimit-Limit:
              schema:
                type: integer
            RateLimit-Remaining:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
              example:
                range:
                  from: '2026-10-01T04:00:00.000Z'
                  to: '2026-10-08T04:00:00.000Z'
                  timezone: America/New_York
                groupBy: list
                conversationThresholdSeconds: 120
                data:
                  - group: '456'
                    calls: 100
                    connected: 30
                    conversations: 12
                    talkTimeSeconds: 4200
                    connectRate: 0.3
                    conversationRate: 0.12
                    verifiedConversions: null
                conversionAvailability: >-
                  Verified business outcomes must be joined from the system of
                  record.
        default:
          description: >-
            Error. 400 invalid request; 401 invalid credential; 403 insufficient
            access; 404 not found; 409 state/idempotency conflict; 413 size
            limit; 422 verification failure; 429 rate limit (Retry-After
            seconds); 503 temporary service failure.
          headers:
            Retry-After:
              schema:
                type: integer
            X-Request-Id:
              schema:
                type: string
                format: uuid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: invalid_api_key
                  message: API key is invalid, expired or revoked
                  requestId: 00000000-0000-4000-8000-000000000004
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >-
            # Replace example resource IDs and ownerId with values from your
            workspace.

            : "${POWERDIALER_API_KEY:?Set POWERDIALER_API_KEY to your scoped API
            key}"

            curl --request GET \
              --url 'https://api.migration.powerdialer.ai/api/public/v2/analytics/summary?startDate=2026-10-01&endDate=2026-10-07&timezone=America%2FNew_York' \
              --header "Authorization: Bearer $POWERDIALER_API_KEY"
components:
  schemas:
    Analytics:
      type: object
      properties:
        range:
          type: object
          properties:
            from:
              type: string
              format: date-time
              description: Inclusive UTC start instant.
            to:
              type: string
              format: date-time
              description: Exclusive UTC end instant.
            timezone:
              type: string
              description: IANA timezone used to interpret startDate and endDate.
          required:
            - from
            - to
            - timezone
          description: >-
            Resolved UTC interval and requested calendar timezone. The interval
            ends exclusively after the last requested calendar day.
        groupBy:
          type: string
          enum:
            - list
            - owner
            - none
          description: 'How rows are grouped: calling list, member, or one overall row.'
        conversationThresholdSeconds:
          type: integer
          description: Configured talk-duration threshold used to classify conversations.
        data:
          type: array
          items:
            type: object
            properties:
              group:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  List ID or member ID depending on groupBy; null for unassigned
                  groups or the overall total.
              calls:
                type: integer
                description: Number of calls in the group.
              connected:
                type: integer
                description: Calls classified as connected by PowerDialer analytics.
              conversations:
                type: integer
                description: >-
                  Connected calls meeting the configured conversation definition
                  and duration threshold.
              talkTimeSeconds:
                type: number
                description: Total talk time in seconds.
              connectRate:
                type: number
                description: >-
                  connected divided by calls, or 0 when calls is 0. Multiply by
                  100 for a percentage.
              conversationRate:
                type: number
                description: >-
                  conversations divided by calls, or 0 when calls is 0. Multiply
                  by 100 for a percentage.
              verifiedConversions:
                type: 'null'
                description: >-
                  Always null. Join verified meetings, payments or sales from
                  your business system.
            required:
              - group
              - calls
              - connected
              - conversations
              - talkTimeSeconds
              - connectRate
              - conversationRate
              - verifiedConversions
          description: >-
            Metrics for each group visible to the API key. Rates are fractions
            between 0 and 1.
        conversionAvailability:
          type: string
          description: >-
            Explanation of why verified business conversions are not supplied by
            this API.
      required:
        - range
        - groupBy
        - conversationThresholdSeconds
        - data
        - conversionAvailability
      examples:
        - range:
            from: '2026-10-01T04:00:00.000Z'
            to: '2026-10-08T04:00:00.000Z'
            timezone: America/New_York
          groupBy: list
          conversationThresholdSeconds: 120
          data:
            - group: '456'
              calls: 100
              connected: 30
              conversations: 12
              talkTimeSeconds: 4200
              connectRate: 0.3
              conversationRate: 0.12
              verifiedConversions: null
          conversionAvailability: Verified business outcomes must be joined from the system of record.
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Stable machine-readable error code.
            message:
              type: string
              description: Human-readable explanation.
            requestId:
              type: string
              format: uuid
              description: Request identifier to include when investigating a failure.
            details:
              type: array
              items:
                type: object
                properties:
                  path:
                    type: string
                  message:
                    type: string
                required:
                  - path
                  - message
              description: Validation errors, when available.
          required:
            - code
            - message
            - requestId
      required:
        - error
      examples:
        - error:
            code: insufficient_scope
            message: Requires contacts:read
            requestId: 00000000-0000-4000-8000-000000000004
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: pd_<live|test>_<credential UUID>.<random secret>
      description: >-
        Issued in Developers. Workspace/owner/scopes come from credential, never
        acting-user headers. API keys cannot manage API credentials.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.