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

# List shortcuts

> Returns shortcuts visible to the caller, ordered newest-first, paginated by an opaque cursor. Deleted and archived shortcuts are excluded.



## OpenAPI

````yaml /openapi.json get /v1/shortcuts
openapi: 3.1.0
info:
  title: Lora API
  version: 1.0.0
  description: Internal API for managing company short links
servers:
  - url: https://api.uselora.com
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/shortcuts:
    get:
      tags:
        - Shortcuts
      summary: List shortcuts
      description: >-
        Returns shortcuts visible to the caller, ordered newest-first, paginated
        by an opaque cursor. Deleted and archived shortcuts are excluded.
      operationId: listShortcuts
      parameters:
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: >-
            Opaque pagination token returned as `nextCursor` from the previous
            page. Omit on the first request.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
          description: >-
            Page size. Out-of-range values are clamped to [1, 100]; defaults to
            50.
        - name: externalId
          in: query
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 259
          description: >-
            Filter to shortcuts whose `externalId` equals this value. The `ext_`
            prefix is recommended for visual disambiguation from internal IDs,
            but the server accepts both prefixed (`ext_<value>`) and bare
            (`<value>`) forms. Combine with `tenantId` for multi-tenant lookups.
        - name: tenantId
          in: query
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 255
          description: Filter to shortcuts whose `tenantId` equals this value.
      responses:
        '200':
          description: Paginated list of shortcuts.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        slug:
                          type: string
                        url:
                          type: string
                          description: >-
                            Workspace-scoped short link. Open this URL to record
                            a click and redirect to the destination.
                          examples:
                            - https://app.uselora.com/acme/short/handbook
                        destination:
                          type: string
                        title:
                          type:
                            - string
                            - 'null'
                        description:
                          type:
                            - string
                            - 'null'
                        icon:
                          type:
                            - string
                            - 'null'
                        image:
                          type:
                            - string
                            - 'null'
                        video:
                          type:
                            - string
                            - 'null'
                        visibility:
                          type: string
                          enum:
                            - PRIVATE
                            - WORKSPACE
                            - UNLISTED
                            - PUBLIC
                        archived:
                          type: boolean
                        masked:
                          type: boolean
                        passwordProtected:
                          type: boolean
                          description: >-
                            Whether this shortcut requires a password before
                            redirecting. The password hash is never returned.
                        expiresAt:
                          type:
                            - string
                            - 'null'
                        ios:
                          type:
                            - string
                            - 'null'
                        android:
                          type:
                            - string
                            - 'null'
                        placeholders:
                          type: array
                          items:
                            $ref: '#/components/schemas/PlaceholderDescriptor'
                          description: >-
                            Dynamic placeholders parsed from the destination
                            URL. Empty for static destinations. See
                            docs/dynamic-placeholders.md.
                        folderId:
                          type: string
                          pattern: ^[0-9abcdefghjkmnpqrstvwxyz]{8}$
                          description: >-
                            The 8-character ID of the folder this shortcut
                            belongs to.
                          examples:
                            - a1b2c3d4
                        tagIds:
                          default: []
                          description: >-
                            Tag short IDs associated with this shortcut. Empty
                            array when none are applied.
                          examples:
                            - - a1b2c3d4
                          type: array
                          items:
                            type: string
                            pattern: ^[0-9abcdefghjkmnpqrstvwxyz]{8}$
                        externalId:
                          type:
                            - string
                            - 'null'
                        tenantId:
                          type:
                            - string
                            - 'null'
                        workspaceId:
                          type: string
                        userId:
                          type: string
                        createdAt:
                          type: string
                        updatedAt:
                          type: string
                        clickCount:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        isDraft:
                          type: boolean
                        proxy:
                          type: boolean
                        owner:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            image:
                              type:
                                - string
                                - 'null'
                          required:
                            - id
                            - name
                            - image
                          additionalProperties: false
                        isFavorited:
                          type: boolean
                      required:
                        - android
                        - archived
                        - clickCount
                        - createdAt
                        - description
                        - destination
                        - expiresAt
                        - externalId
                        - folderId
                        - icon
                        - id
                        - image
                        - ios
                        - isDraft
                        - masked
                        - proxy
                        - slug
                        - tenantId
                        - title
                        - updatedAt
                        - userId
                        - video
                        - visibility
                        - workspaceId
                        - passwordProtected
                        - url
                        - placeholders
                        - tagIds
                        - owner
                        - isFavorited
                      additionalProperties: false
                      title: ShortcutListItem
                      description: >-
                        A shortcut as it appears in the workspace overview
                        listing
                  nextCursor:
                    description: >-
                      Cursor for the next page, or null if this is the last
                      page.
                    type:
                      - string
                      - 'null'
                    pattern: >-
                      ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z__[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
                required:
                  - items
                  - nextCursor
                additionalProperties: false
                title: ListShortcutsResponse
                description: Paginated list of shortcuts visible to the caller
        '400':
          description: >-
            Query parameters failed validation, or the cursor was malformed
            (`invalid_cursor`).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                  fieldErrors:
                    type: object
                    propertyNames:
                      type: string
                    additionalProperties:
                      type: array
                      items:
                        type: string
                  requestId:
                    type: string
                    description: >-
                      Correlation identifier for support/debugging. Equals the
                      `X-Lora-Request-Id` response header.
                  traceId:
                    description: >-
                      Sentry trace ID when available for this request.
                      32-character lowercase hex string.
                    type: string
                    pattern: ^[0-9a-f]{32}$
                required:
                  - error
                  - requestId
                additionalProperties: false
          headers:
            X-Lora-Request-Id:
              description: >-
                Request correlation identifier. Matches the `requestId` field in
                the JSON error body.
              schema:
                type: string
        '401':
          description: Missing, malformed, unknown, or workspace-unscoped Bearer token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                  requestId:
                    type: string
                    description: >-
                      Correlation identifier for support/debugging. Equals the
                      `X-Lora-Request-Id` response header.
                  traceId:
                    description: >-
                      Sentry trace ID when available for this request.
                      32-character lowercase hex string.
                    type: string
                    pattern: ^[0-9a-f]{32}$
                required:
                  - error
                  - requestId
                additionalProperties: false
          headers:
            X-Lora-Request-Id:
              description: >-
                Request correlation identifier. Matches the `requestId` field in
                the JSON error body.
              schema:
                type: string
        '403':
          description: >-
            The caller is authenticated but not allowed to perform this action.
            Common codes: `insufficient_scope` (the key lacks the required
            scope; body sets `required_scope`) and `no_permission` (the caller
            is no longer a workspace member).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                  requestId:
                    type: string
                    description: >-
                      Correlation identifier for support/debugging. Equals the
                      `X-Lora-Request-Id` response header.
                  traceId:
                    description: >-
                      Sentry trace ID when available for this request.
                      32-character lowercase hex string.
                    type: string
                    pattern: ^[0-9a-f]{32}$
                  required_scope:
                    description: >-
                      Set when `code` is `insufficient_scope`. The exact scope
                      name the route required, e.g. `shortcuts.write`.
                    type: string
                required:
                  - error
                  - requestId
                additionalProperties: false
          headers:
            X-Lora-Request-Id:
              description: >-
                Request correlation identifier. Matches the `requestId` field in
                the JSON error body.
              schema:
                type: string
        '429':
          description: Rate limit exceeded. Wait `Retry-After` seconds before retrying.
          headers:
            Retry-After:
              schema:
                type: integer
                minimum: 1
              description: Seconds until the rate-limit window resets.
            X-Lora-Request-Id:
              description: >-
                Request correlation identifier. Matches the `requestId` field in
                the JSON error body.
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                  requestId:
                    type: string
                    description: >-
                      Correlation identifier for support/debugging. Equals the
                      `X-Lora-Request-Id` response header.
                  traceId:
                    description: >-
                      Sentry trace ID when available for this request.
                      32-character lowercase hex string.
                    type: string
                    pattern: ^[0-9a-f]{32}$
                required:
                  - error
                  - requestId
                additionalProperties: false
        '500':
          description: >-
            An unexpected failure on the server. The body is `{ error:
            <message>, code: "internal_error", requestId: <id> }`, plus
            `traceId` when available. Idempotent operations (GET, DELETE) and
            writes that carry an `Idempotency-Key` header are safe to retry with
            exponential backoff. Other writes may have partially applied;
            surface the error to the caller instead of retrying blindly.
          headers:
            X-Lora-Request-Id:
              description: >-
                Request correlation identifier. Matches the `requestId` field in
                the JSON error body.
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                    const: internal_error
                  requestId:
                    type: string
                    description: >-
                      Correlation identifier for support/debugging. Equals the
                      `X-Lora-Request-Id` response header.
                  traceId:
                    description: >-
                      Sentry trace ID when available for this request.
                      32-character lowercase hex string.
                    type: string
                    pattern: ^[0-9a-f]{32}$
                required:
                  - error
                  - code
                  - requestId
                additionalProperties: false
components:
  schemas:
    PlaceholderDescriptor:
      type: object
      properties:
        name:
          type: string
          description: Placeholder name (between curly braces).
        default:
          description: Default value substituted when no value is captured at click time.
          type:
            - string
            - 'null'
      required:
        - name
        - default
      additionalProperties: false
      title: PlaceholderDescriptor
      description: A dynamic placeholder declared in a shortcut's destination URL.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````