---
title: "List short URLs"
method: GET
path: "/short-url"
tags: ["Short URLs"]
---

# List short URLs

`GET /short-url`

## Request

- Base URL: `https://api.qrcodly.de/api/v1`
- URL: `https://api.qrcodly.de/api/v1/short-url`
- Auth: HTTP bearer

Returns a paginated list of the authenticated user's short URLs. Supports filtering by destination URL, short code, and tags. Set standalone=true to only return short URLs that are not linked to a QR code.

## Query parameters

- `page` integer, required
- `limit` integer, required
- `where` object
  - `destinationUrl` object
    - `eq` string
    - `neq` string
    - `like` string
  - `shortCode` object
    - `eq` string
    - `neq` string
    - `like` string
- `standalone` boolean
- `tagIds` string[]
- `status` 'all' | 'active' | 'disabled' | 'blocked'

## Response `200`

Short URL With Custom Domain Paginated Response

- object: Short URL With Custom Domain Paginated Response
  - `page` number, required: Current page number (1-based)
  - `limit` number, required: Maximum number of items per page
  - `total` number, required: Total number of items matching the query across all pages
  - `data` object[], required: Array of items for the current page
    - `id` string, uuid, required: Unique identifier (UUID v4)
    - `createdAt` string, date-time, required: Timestamp when the resource was created (ISO 8601)
    - `updatedAt` string, date-time, nullable, required: Timestamp when the resource was last updated (ISO 8601), or null if never updated
    - `shortCode` string, required: Unique 5-character short code (e.g. "Ab3xZ")
    - `name` string, nullable, required: User-defined name for the short URL (max 50 characters)
    - `destinationUrl` string, uri, nullable, required: The target URL that the short URL redirects to
    - `qrCodeId` string, uuid, nullable, required: ID of the linked QR code, or null for standalone short URLs
    - `isActive` boolean, required: Whether the short URL is currently active and redirecting
    - `createdBy` string, required: User ID of the short URL owner
    - `deletedAt` string, date-time, nullable, required: Soft-delete timestamp, or null if the short URL is active
    - `safetyStatus` 'unchecked' | 'clean' | 'blocked', required: Result of the destination safety screening. "blocked" means we disabled the link and the owner cannot re-enable it
    - `safetyBlockedAt` string, date-time, nullable, required: When the link was blocked for safety reasons, or null
    - `safetyThreatTypes` string, nullable, required: Comma-separated Google Web Risk threat types behind the block, or null
    - `customDomain` object, nullable, required: Custom domain details, or null if using the default domain
      - `id` string, uuid, required: Unique identifier (UUID v4)
      - `createdAt` string, date-time, required: Timestamp when the resource was created (ISO 8601)
      - `updatedAt` string, date-time, nullable, required: Timestamp when the resource was last updated (ISO 8601), or null if never updated
      - `domain` string, required
      - `isDefault` boolean, required
      - `isEnabled` boolean, required
      - `createdBy` string, required
      - `verificationPhase` 'dns_verification' | 'cloudflare_ssl', required
      - `ownershipTxtVerified` boolean, required
      - `cnameVerified` boolean, required
      - `cloudflareHostnameId` string, nullable
      - `sslStatus` 'initializing' | 'pending_validation' | 'pending_issuance' | 'pending_deployment' | 'active' | 'pending_expiration' | 'expired' | 'deleted' | 'validation_timed_out', required
      - `ownershipStatus` 'pending' | 'verified', required
      - `sslValidationRecord` object, nullable
        - `name` string, required
        - `value` string, required
      - `ownershipValidationRecord` object, nullable
        - `name` string, required
        - `value` string, required
      - `validationErrors` string[], nullable
    - `tags` object[], required: Tags assigned to this short URL
      - `id` string, uuid, required: Unique identifier (UUID v4)
      - `createdAt` string, date-time, required: Timestamp when the resource was created (ISO 8601)
      - `updatedAt` string, date-time, nullable, required: Timestamp when the resource was last updated (ISO 8601), or null if never updated
      - `name` string, required: Tag display name (max 32 characters)
      - `color` string, required: Tag color as hex code (e.g. "#FF5733")
      - `createdBy` string, required: User ID of the tag owner
      - `qrCodeCount` number: Number of QR codes assigned to this tag

## Other responses

- `400`: Bad Request — invalid input or validation failure
- `401`: Unauthorized — missing or invalid Bearer token.
- `429`: Too Many Requests — rate limit exceeded. Retry after the rate limit window resets.

---

[API](https://skmtc.dev/qrcodly/apis/qrcodly-api.md) · [All operations](https://skmtc.dev/qrcodly/apis/qrcodly-api/llms.txt) · [OpenAPI document](https://skmtc.dev/qrcodly/apis/qrcodly-api/revisions/b7e95eb68866?raw)
