> ## 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 custom disposition

> Manage the shared custom dispositions in the API key’s workspace. Existing personal definitions remain available in the app and are not exposed or migrated by this endpoint. Requires `dispositions:read`.

Names are unique within the workspace. Invalid or built-in names and empty/unknown mappings return 400 invalid_request; duplicate names return 409 disposition_name_conflict. Guessed IDs outside the workspace return 404 not_found. Shared renames and deletes preserve historical call labels; mapping changes affect future saves only. These operations configure definitions and do not apply a disposition to a call or execute CRM, DNC or automation actions.

See [custom disposition compatibility](/guides/custom-dispositions).



## OpenAPI

````yaml /api/openapi.json get /custom-dispositions/{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: Custom dispositions
  - name: Synchronization
  - name: Analytics
  - name: Webhooks
  - name: Webhook deliveries
  - name: Incoming webhook payloads
paths:
  /custom-dispositions/{id}:
    get:
      tags:
        - Custom dispositions
      summary: Get a custom disposition
      description: >-
        Manage the shared custom dispositions in the API key’s workspace.
        Existing personal definitions remain available in the app and are not
        exposed or migrated by this endpoint. Requires `dispositions:read`.


        Names are unique within the workspace. Invalid or built-in names and
        empty/unknown mappings return 400 invalid_request; duplicate names
        return 409 disposition_name_conflict. Guessed IDs outside the workspace
        return 404 not_found. Shared renames and deletes preserve historical
        call labels; mapping changes affect future saves only. These operations
        configure definitions and do not apply a disposition to a call or
        execute CRM, DNC or automation actions.


        See [custom disposition compatibility](/guides/custom-dispositions).
      operationId: get_custom_disposition
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
            maximum: 2147483647
          description: >-
            Numeric custom-disposition ID returned by POST /custom-dispositions
            or GET /custom-dispositions.
          example: 123
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDisposition'
              example:
                id: 123
                workspaceId: org_example
                name: Follow up requested
                mappedDispositions:
                  - Positive
                createdAt: '2026-10-12T12:00:00.000Z'
                updatedAt: '2026-10-12T12: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; 415 body not sent as application/json; 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/custom-dispositions/123' \
              --header "Authorization: Bearer $POWERDIALER_API_KEY"
components:
  schemas:
    CustomDisposition:
      type: object
      properties:
        id:
          type: integer
          minimum: 1
          description: Stable custom disposition definition ID.
        workspaceId:
          type: string
          description: Workspace that owns this shared definition.
        name:
          type: string
          minLength: 1
          maxLength: 100
          description: Trimmed, case-sensitive label. Built-in names are reserved.
        mappedDispositions:
          type: array
          minItems: 1
          maxItems: 19
          items:
            type: string
            enum:
              - NotDisposed
              - LeftVoicemail
              - Busy
              - Gatekeeper
              - NoAnswer
              - BadNumber
              - NotInService
              - Positive
              - Neutral
              - Negative
              - AnsweringMachine
              - WrongNumber
              - NotInterested
              - DoNotCall
              - NotAvailable
              - Sold
              - MeetingBooked
              - NoShow
              - PresentedNoSale
          description: >-
            Ordered built-in mappings. The first mapping drives CRM, DNC and
            automation. Duplicates are removed in order.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - id
        - workspaceId
        - name
        - mappedDispositions
        - createdAt
        - updatedAt
      additionalProperties: false
      examples:
        - id: 123
          workspaceId: org_example
          name: Follow up requested
          mappedDispositions:
            - Positive
          createdAt: '2026-10-12T12:00:00.000Z'
          updatedAt: '2026-10-12T12: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
                    description: >-
                      Where the request failed, prefixed by location: `body`,
                      `body.<field>`, `query.<name>` or `path.<name>`. A
                      root-level problem reports its location alone, for example
                      `body` when no JSON object was sent, so a missing body is
                      never confused with a missing field or header.
                  message:
                    type: string
                required:
                  - path
                  - message
              description: >-
                Validation errors, when available. Each `path` names the part of
                the request that failed.
          required:
            - code
            - message
            - requestId
      required:
        - error
      examples:
        - error:
            code: insufficient_scope
            message: Requires contacts:read
            requestId: 00000000-0000-4000-8000-000000000004
        - error:
            code: invalid_request
            message: 'Request validation failed: body.url: Invalid url'
            requestId: 00000000-0000-4000-8000-000000000004
            details:
              - path: body.url
                message: Invalid url
  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.