> ## 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.

# Check your API connection

> Confirm which workspace, environment and permissions your API key uses before importing contacts or reading customer data. Requires a valid scoped bearer key; no additional resource scope is needed.

The response identifies the credential, its personal or workspace kind, owner restrictions, scopes and API version. An empty `allowedUserIds` array on a workspace key means workspace-wide access; a personal key remains limited to its owner. This endpoint does not return the secret or issue new credentials.

A `401 invalid_api_key` means the token is invalid, expired, revoked or belongs to another environment. `401 inactive_membership` means the personal key's owner has left the workspace. Remove acting-user headers if you receive `400 acting_user_not_supported`. This read can be retried after a transient failure without an idempotency key.

Start with [authentication](/authentication).



## OpenAPI

````yaml /api/openapi.json get /me
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:
  /me:
    get:
      tags:
        - Authentication
      summary: Check your API connection
      description: >-
        Confirm which workspace, environment and permissions your API key uses
        before importing contacts or reading customer data. Requires a valid
        scoped bearer key; no additional resource scope is needed.


        The response identifies the credential, its personal or workspace kind,
        owner restrictions, scopes and API version. An empty `allowedUserIds`
        array on a workspace key means workspace-wide access; a personal key
        remains limited to its owner. This endpoint does not return the secret
        or issue new credentials.


        A `401 invalid_api_key` means the token is invalid, expired, revoked or
        belongs to another environment. `401 inactive_membership` means the
        personal key's owner has left the workspace. Remove acting-user headers
        if you receive `400 acting_user_not_supported`. This read can be retried
        after a transient failure without an idempotency key.


        Start with [authentication](/authentication).
      operationId: getMe
      responses:
        '200':
          description: >-
            The authenticated credential, workspace, environment and granted
            scopes. No secret is included.
          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/Me'
              example:
                credentialId: 00000000-0000-4000-8000-000000000001
                workspaceId: org_example
                kind: personal
                ownerId: user_example
                allowedUserIds: []
                scopes:
                  - calls:read
                  - lists:read
                environment: live
                apiVersion: v2
        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/me' \
              --header "Authorization: Bearer $POWERDIALER_API_KEY"
components:
  schemas:
    Me:
      type: object
      properties:
        credentialId:
          type: string
          format: uuid
          description: Identifier of the API key used for this request.
        workspaceId:
          type: string
          description: >-
            Workspace this key can access. Requests cannot select a different
            workspace.
        kind:
          type: string
          enum:
            - personal
            - workspace
          description: >-
            Personal keys follow one member; workspace keys use the configured
            member allowlist.
        ownerId:
          anyOf:
            - type: string
            - type: 'null'
          description: Member ID for a personal key; null for a workspace key.
        allowedUserIds:
          type: array
          items:
            type: string
          description: >-
            Member IDs allowed by a workspace key. An empty array means all
            owners in that workspace; it does not widen a personal key.
        scopes:
          type: array
          items:
            $ref: '#/components/schemas/Scope'
          description: Permissions granted to this key.
        environment:
          type: string
          enum:
            - live
            - test
          description: Environment the key was issued for.
        apiVersion:
          type: string
          enum:
            - v2
          description: Version of the public API.
      required:
        - credentialId
        - workspaceId
        - kind
        - ownerId
        - allowedUserIds
        - scopes
        - environment
        - apiVersion
      examples:
        - credentialId: 00000000-0000-4000-8000-000000000001
          workspaceId: org_example
          kind: personal
          ownerId: user_example
          allowedUserIds: []
          scopes:
            - calls:read
            - lists:read
          environment: live
          apiVersion: v2
    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
    Scope:
      type: string
      enum:
        - contacts:read
        - contacts:write
        - lists:read
        - lists:write
        - calls:read
        - recordings:read
        - transcripts:read
        - analytics:read
        - changes:read
        - webhooks:manage
      examples:
        - calls:read
  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.