> ## 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 a workspace member

> Confirm that one PowerDialer member ID is currently a workspace member that this key may use as `ownerId`, and read their identity fields for record keeping. Requires a valid scoped bearer key; no additional resource scope is needed.

The response is the same `Member` shape as the list endpoint. A member outside the key's owner restrictions, a member who has left the workspace, and an ID from another workspace all return the same `404 not_found`, so this endpoint cannot be used to probe other workspaces' directories.

Use this before retrying a write that failed with `403 invalid_owner`, or when reconciling stored owner mappings. Reads can be retried after transient errors without an idempotency key.



## OpenAPI

````yaml /api/openapi.json get /users/{id}
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: Workspace members
  - name: Contacts
  - name: Calling lists
  - name: Imports
  - name: Calls
  - name: Synchronization
  - name: Analytics
  - name: Webhooks
  - name: Webhook deliveries
  - name: Incoming webhook payloads
paths:
  /users/{id}:
    get:
      tags:
        - Workspace members
      summary: Get a workspace member
      description: >-
        Confirm that one PowerDialer member ID is currently a workspace member
        that this key may use as `ownerId`, and read their identity fields for
        record keeping. Requires a valid scoped bearer key; no additional
        resource scope is needed.


        The response is the same `Member` shape as the list endpoint. A member
        outside the key's owner restrictions, a member who has left the
        workspace, and an ID from another workspace all return the same `404
        not_found`, so this endpoint cannot be used to probe other workspaces'
        directories.


        Use this before retrying a write that failed with `403 invalid_owner`,
        or when reconciling stored owner mappings. Reads can be retried after
        transient errors without an idempotency key.
      operationId: getWorkspaceMember
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 100
          description: >-
            PowerDialer member ID, as returned in the list endpoint or stored as
            ownerId.
          example: user_example
      responses:
        '200':
          description: The current workspace member with that ID.
          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/Member'
              example:
                id: user_example
                name: Alex Rivera
                firstName: Alex
                lastName: Rivera
                identifier: alex@example.com
                email: alex@example.com
                role: org:member
                status: active
                joinedAt: '2026-09-01T09:00:00.000Z'
                updatedAt: '2026-09-01T09:00:00.000Z'
        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/users/user_example' \
              --header "Authorization: Bearer $POWERDIALER_API_KEY"
components:
  schemas:
    Member:
      type: object
      properties:
        id:
          type: string
          description: >-
            PowerDialer member ID. This is the exact value accepted as ownerId
            for contacts, lists, imports and call filters.
        name:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Display name assembled from the member's first and last name, or
            null when neither is set.
        firstName:
          anyOf:
            - type: string
            - type: 'null'
          description: First name from the workspace directory, or null.
        lastName:
          anyOf:
            - type: string
            - type: 'null'
          description: Last name from the workspace directory, or null.
        identifier:
          type: string
          description: >-
            Primary sign-in identifier from the workspace directory, usually the
            member's email address.
        email:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The identifier when it is an email address; null when the member
            signs in another way.
        role:
          type: string
          description: >-
            Workspace role, for example org:admin or org:member. Roles do not
            change what this key may read or write.
        status:
          type: string
          enum:
            - active
          description: >-
            Always active: only current members are returned. Removed members
            disappear from the list and resolve to 404.
        joinedAt:
          type: string
          format: date-time
          description: When the member joined this workspace, in UTC.
        updatedAt:
          type: string
          format: date-time
          description: When the membership was last changed, in UTC.
      required:
        - id
        - name
        - firstName
        - lastName
        - identifier
        - email
        - role
        - status
        - joinedAt
        - updatedAt
      examples:
        - id: user_example
          name: Alex Rivera
          firstName: Alex
          lastName: Rivera
          identifier: alex@example.com
          email: alex@example.com
          role: org:member
          status: active
          joinedAt: '2026-09-01T09:00:00.000Z'
          updatedAt: '2026-09-01T09:00:00.000Z'
    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.