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

# List Links

> Retrieve a paginated list of recording links with optional filters

Returns a paginated list of recording links in the specified workspace with optional filtering and sorting.

## Errors

This endpoint returns [common authentication errors](/api/error-handling#authentication-errors).

## Related

<CardGroup cols={2}>
  <Card title="Create Link" icon="plus" href="/api/links/create-link">
    Create a new recording link
  </Card>

  <Card title="Get Link" icon="link" href="/api/links/get-link">
    Retrieve details for a specific link
  </Card>

  <Card title="List Recordings" icon="video" href="/api/recordings/list-recordings">
    Filter recordings by link ID
  </Card>

  <Card title="Pagination" icon="list" href="/api/pagination">
    Page-based pagination for list endpoints
  </Card>
</CardGroup>


## OpenAPI

````yaml GET /public/workspace/{workspaceId}/links
openapi: 3.1.1
info:
  title: Userplane Public API
  version: 1.0.0
  description: >-
    Programmatic access to Userplane workspaces, recordings, and links.
    Authenticate with a Bearer token using your API key (uspl_ prefix).
servers:
  - url: https://api.userplane.io/api/v1
    description: Production
security:
  - bearerAuth: []
paths:
  /public/workspace/{workspaceId}/links:
    get:
      tags:
        - Links
      summary: List recording links
      description: Retrieve paginated list of recording links with optional filters
      operationId: links.list
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
            minLength: 1
        - name: page
          in: query
          required: true
          schema:
            default: 1
            type: integer
            exclusiveMinimum: 0
            maximum: 9007199254740991
          allowEmptyValue: true
          allowReserved: true
        - name: per_page
          in: query
          required: true
          schema:
            default: 10
            type: integer
            minimum: 1
            maximum: 20
          allowEmptyValue: true
          allowReserved: true
        - name: created_by
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              minLength: 1
          style: deepObject
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: project_id
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              minLength: 1
          style: deepObject
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: domain_id
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              minLength: 1
          style: deepObject
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: link_provider_type
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - intercom
                - zendesk
                - hubspot
                - freshdesk
                - freshchat
                - jira_service_management
                - helpscout
                - happyfox
                - ada
                - forethought
                - servicenow
                - front
                - zoho_desk
                - crisp
                - pylon
                - plain
                - asana
                - azure_devops
                - clickup
                - github
                - gitlab
                - jira
                - linear
                - notion
                - sentry
                - slack
                - web
                - others
          style: deepObject
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: link_type
          in: query
          required: false
          schema:
            type: string
            enum:
              - file
              - recording
              - session
              - screenshot
          allowEmptyValue: true
          allowReserved: true
        - name: sort_by
          in: query
          required: true
          schema:
            default: created_at
            type: string
            enum:
              - created_at
              - link_title
          allowEmptyValue: true
          allowReserved: true
        - name: sort_direction
          in: query
          required: true
          schema:
            default: desc
            type: string
            enum:
              - asc
              - desc
          allowEmptyValue: true
          allowReserved: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      workspaceId:
                        type: string
                        minLength: 1
                      links:
                        type: array
                        items:
                          type: object
                          properties:
                            linkId:
                              type: string
                              minLength: 1
                            linkTitle:
                              anyOf:
                                - type: string
                                - type: 'null'
                            linkType:
                              type: string
                              enum:
                                - file
                                - recording
                                - session
                                - screenshot
                            linkReusable:
                              type: boolean
                            linkProviderType:
                              type: string
                              enum:
                                - intercom
                                - zendesk
                                - hubspot
                                - freshdesk
                                - freshchat
                                - jira_service_management
                                - helpscout
                                - happyfox
                                - ada
                                - forethought
                                - servicenow
                                - front
                                - zoho_desk
                                - crisp
                                - pylon
                                - plain
                                - asana
                                - azure_devops
                                - clickup
                                - github
                                - gitlab
                                - jira
                                - linear
                                - notion
                                - sentry
                                - slack
                                - web
                                - others
                            linkProviderId:
                              anyOf:
                                - type: string
                                - type: 'null'
                            linkProviderReference:
                              anyOf:
                                - type: string
                                - type: 'null'
                            linkURL:
                              type: string
                            linkMeta:
                              anyOf:
                                - type: object
                                  additionalProperties:
                                    type: string
                                - type: 'null'
                            createdAt: {}
                            project:
                              type: object
                              properties:
                                projectId:
                                  type: string
                                  minLength: 1
                                title:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                              required:
                                - projectId
                                - title
                              additionalProperties: false
                            creator:
                              type: object
                              properties:
                                workspaceMemberId:
                                  type: string
                                  minLength: 1
                                name:
                                  type: string
                              required:
                                - workspaceMemberId
                                - name
                              additionalProperties: false
                            domain:
                              type: object
                              properties:
                                domainId:
                                  type: string
                                  minLength: 1
                                url:
                                  type: string
                                status:
                                  type: string
                                  enum:
                                    - pending
                                    - verified
                                    - revoked
                              required:
                                - domainId
                                - url
                                - status
                              additionalProperties: false
                          required:
                            - linkId
                            - linkTitle
                            - linkType
                            - linkReusable
                            - linkProviderType
                            - linkProviderId
                            - linkProviderReference
                            - linkURL
                            - linkMeta
                            - createdAt
                            - project
                            - creator
                            - domain
                          additionalProperties: false
                      pagination:
                        type: object
                        properties:
                          page:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          perPage:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          total:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                          totalPages:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                          hasMore:
                            type: boolean
                        required:
                          - page
                          - perPage
                          - total
                          - totalPages
                          - hasMore
                        additionalProperties: false
                    required:
                      - workspaceId
                      - links
                      - pagination
                    additionalProperties: false
                required:
                  - message
                  - data
                additionalProperties: false
        '400':
          description: '400'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: BAD_REQUEST
                      status:
                        const: 400
                      message:
                        type: string
                        default: >-
                          Invalid request parameters. Check the request body and
                          query parameters. See
                          https://docs.userplane.io/api/error-handling
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: API_KEY_REQUIRED
                      status:
                        const: 401
                      message:
                        type: string
                        default: >-
                          API key is required. Include it as Authorization:
                          Bearer <your-api-key>. See
                          https://docs.userplane.io/api/authentication
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: API_KEY_INVALID
                      status:
                        const: 401
                      message:
                        type: string
                        default: >-
                          The provided API key is not valid. Verify the key and
                          try again. See
                          https://docs.userplane.io/api/authentication
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: API_KEY_EXPIRED
                      status:
                        const: 401
                      message:
                        type: string
                        default: >-
                          The API key has expired. Rotate or create a new key.
                          See https://docs.userplane.io/api/authentication
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '403':
          description: '403'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: API_KEY_DISABLED
                      status:
                        const: 403
                      message:
                        type: string
                        default: >-
                          The API key is disabled. Enable it or create a new
                          key. See https://docs.userplane.io/api/authentication
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: NOT_A_MEMBER
                      status:
                        const: 403
                      message:
                        type: string
                        default: >-
                          The API key owner is not a member of this workspace.
                          See https://docs.userplane.io/api/error-handling
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: WORKSPACE_NOT_FOUND
                      status:
                        const: 404
                      message:
                        type: string
                        default: Workspace not found
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '410':
          description: '410'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: WORKSPACE_GONE
                      status:
                        const: 410
                      message:
                        type: string
                        default: Workspace has been deleted
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '429':
          description: '429'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: RATE_LIMITED
                      status:
                        const: 429
                      message:
                        type: string
                        default: >-
                          Rate limit exceeded. Wait and retry with exponential
                          backoff. See https://docs.userplane.io/api/rate-limits
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '503':
          description: '503'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: SERVICE_UNAVAILABLE
                      status:
                        const: 503
                      message:
                        type: string
                        default: >-
                          API key verification service is temporarily
                          unavailable. Please try again later. See
                          https://docs.userplane.io/api/error-handling
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key with uspl_ prefix. Create keys at
        dash.userplane.io/_/account?tab=developers

````