> ## Documentation Index
> Fetch the complete documentation index at: https://speakeasy-20cf8bdf.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Retrieve a list of events

> Retrieve a paginated list of events for the authenticated workspace.

<Note>
  Events endpoints require a [Business plan](https://d.to/business) subscription
  or higher.
</Note>


## OpenAPI

````yaml get /events
openapi: 3.0.3
info:
  title: Dub API
  description: >-
    Dub is the modern link attribution platform for short links, conversion
    tracking, and affiliate programs.
  version: 0.0.1
  contact:
    name: Dub Support
    email: support@dub.co
    url: https://dub.co/api
  license:
    name: AGPL-3.0 license
    url: https://github.com/dubinc/dub/blob/main/LICENSE.md
servers:
  - url: https://api.dub.co
    description: Production API
security: []
paths:
  /events:
    get:
      tags:
        - Events
      summary: Retrieve a list of events
      description: Retrieve a paginated list of events for the authenticated workspace.
      operationId: listEvents
      parameters:
        - in: query
          name: event
          description: The type of event to retrieve analytics for. Defaults to 'clicks'.
          schema:
            type: string
            enum:
              - clicks
              - leads
              - sales
            default: clicks
            description: The type of event to retrieve analytics for. Defaults to 'clicks'.
        - in: query
          name: domain
          description: The domain to filter analytics for.
          schema:
            type: string
            description: The domain to filter analytics for.
        - in: query
          name: key
          description: >-
            The slug of the short link to retrieve analytics for. Must be used
            along with the corresponding `domain` of the short link to fetch
            analytics for a specific short link.
          schema:
            type: string
            description: >-
              The slug of the short link to retrieve analytics for. Must be used
              along with the corresponding `domain` of the short link to fetch
              analytics for a specific short link.
        - in: query
          name: linkId
          description: The unique ID of the short link on Dub to retrieve analytics for.
          schema:
            type: string
            description: The unique ID of the short link on Dub to retrieve analytics for.
        - in: query
          name: externalId
          description: >-
            The ID of the link in the your database. Must be prefixed with
            'ext_' when passed as a query parameter.
          schema:
            type: string
            description: >-
              The ID of the link in the your database. Must be prefixed with
              'ext_' when passed as a query parameter.
        - in: query
          name: tenantId
          description: The ID of the tenant that created the link inside your system.
          schema:
            type: string
            description: The ID of the tenant that created the link inside your system.
        - in: query
          name: programId
          description: The ID of the program to retrieve analytics for.
          schema:
            type: string
            description: The ID of the program to retrieve analytics for.
        - in: query
          name: partnerId
          description: The ID of the partner to retrieve analytics for.
          schema:
            type: string
            description: The ID of the partner to retrieve analytics for.
        - in: query
          name: customerId
          description: The ID of the customer to retrieve analytics for.
          schema:
            type: string
            description: The ID of the customer to retrieve analytics for.
        - in: query
          name: interval
          description: >-
            The interval to retrieve analytics for. If undefined, defaults to
            24h.
          schema:
            type: string
            enum:
              - 24h
              - 7d
              - 30d
              - 90d
              - 1y
              - mtd
              - qtd
              - ytd
              - all
            description: >-
              The interval to retrieve analytics for. If undefined, defaults to
              24h.
        - in: query
          name: start
          description: >-
            The start date and time when to retrieve analytics from. If set,
            takes precedence over `interval`.
          schema:
            type: string
            description: >-
              The start date and time when to retrieve analytics from. If set,
              takes precedence over `interval`.
        - in: query
          name: end
          description: >-
            The end date and time when to retrieve analytics from. If not
            provided, defaults to the current date. If set along with `start`,
            takes precedence over `interval`.
          schema:
            type: string
            description: >-
              The end date and time when to retrieve analytics from. If not
              provided, defaults to the current date. If set along with `start`,
              takes precedence over `interval`.
        - in: query
          name: timezone
          description: >-
            The IANA time zone code for aligning timeseries granularity (e.g.
            America/New_York). Defaults to UTC.
          schema:
            type: string
            description: >-
              The IANA time zone code for aligning timeseries granularity (e.g.
              America/New_York). Defaults to UTC.
            example: America/New_York
            default: UTC
        - in: query
          name: country
          description: >-
            The country to retrieve analytics for. Must be passed as a 2-letter
            ISO 3166-1 country code. See https://d.to/geo for more information.
          schema:
            $ref: '#/components/schemas/countryCode'
        - in: query
          name: city
          description: The city to retrieve analytics for.
          schema:
            type: string
            description: The city to retrieve analytics for.
            example: New York
        - in: query
          name: region
          description: The ISO 3166-2 region code to retrieve analytics for.
          schema:
            $ref: '#/components/schemas/regionCode'
        - in: query
          name: continent
          description: The continent to retrieve analytics for.
          schema:
            $ref: '#/components/schemas/continentCode'
        - in: query
          name: device
          description: The device to retrieve analytics for.
          schema:
            type: string
            description: The device to retrieve analytics for.
            example: Desktop
        - in: query
          name: browser
          description: The browser to retrieve analytics for.
          schema:
            type: string
            description: The browser to retrieve analytics for.
            example: Chrome
        - in: query
          name: os
          description: The OS to retrieve analytics for.
          schema:
            type: string
            description: The OS to retrieve analytics for.
            example: Windows
        - in: query
          name: trigger
          description: >-
            The trigger to retrieve analytics for. If undefined, returns all
            trigger types.
          schema:
            type: string
            enum:
              - qr
              - link
              - pageview
              - deeplink
            description: >-
              The trigger to retrieve analytics for. If undefined, returns all
              trigger types.
        - in: query
          name: referer
          description: The referer to retrieve analytics for.
          schema:
            type: string
            description: The referer to retrieve analytics for.
            example: google.com
        - in: query
          name: refererUrl
          description: The full referer URL to retrieve analytics for.
          schema:
            type: string
            description: The full referer URL to retrieve analytics for.
            example: https://dub.co/blog
        - in: query
          name: url
          description: The URL to retrieve analytics for.
          schema:
            type: string
            description: The URL to retrieve analytics for.
        - in: query
          name: tagIds
          description: The tag IDs to retrieve analytics for.
          schema:
            anyOf:
              - type: string
              - type: array
                items:
                  type: string
            description: The tag IDs to retrieve analytics for.
        - in: query
          name: folderId
          description: >-
            The folder ID to retrieve analytics for. If not provided, return
            analytics for unsorted links.
          schema:
            type: string
            description: >-
              The folder ID to retrieve analytics for. If not provided, return
              analytics for unsorted links.
        - in: query
          name: groupId
          description: The group ID to retrieve analytics for.
          schema:
            type: string
            description: The group ID to retrieve analytics for.
        - in: query
          name: root
          description: >-
            Filter for root domains. If true, filter for domains only. If false,
            filter for links only. If undefined, return both.
          schema:
            type: boolean
            description: >-
              Filter for root domains. If true, filter for domains only. If
              false, filter for links only. If undefined, return both.
        - in: query
          name: saleType
          description: >-
            Filter sales by type: 'new' for first-time purchases, 'recurring'
            for repeat purchases. If undefined, returns both.
          schema:
            type: string
            enum:
              - new
              - recurring
            description: >-
              Filter sales by type: 'new' for first-time purchases, 'recurring'
              for repeat purchases. If undefined, returns both.
        - in: query
          name: query
          description: >-
            Search the events by a custom metadata value. Only available for
            lead and sale events.
          schema:
            type: string
            maxLength: 10000
            description: >-
              Search the events by a custom metadata value. Only available for
              lead and sale events.
            example: metadata['key']:'value'
        - in: query
          name: tagId
          description: >-
            Deprecated: Use `tagIds` instead. The tag ID to retrieve analytics
            for.
          schema:
            type: string
            description: >-
              Deprecated: Use `tagIds` instead. The tag ID to retrieve analytics
              for.
            deprecated: true
        - in: query
          name: qr
          description: >-
            Deprecated: Use the `trigger` field instead. Filter for QR code
            scans. If true, filter for QR codes only. If false, filter for links
            only. If undefined, return both.
          schema:
            type: boolean
            description: >-
              Deprecated: Use the `trigger` field instead. Filter for QR code
              scans. If true, filter for QR codes only. If false, filter for
              links only. If undefined, return both.
            deprecated: true
        - in: query
          name: utm_source
          description: The UTM source of the short link.
          schema:
            type: string
            nullable: true
            maxLength: 190
            description: The UTM source of the short link.
        - in: query
          name: utm_medium
          description: The UTM medium of the short link.
          schema:
            type: string
            nullable: true
            maxLength: 190
            description: The UTM medium of the short link.
        - in: query
          name: utm_campaign
          description: The UTM campaign of the short link.
          schema:
            type: string
            nullable: true
            maxLength: 190
            description: The UTM campaign of the short link.
        - in: query
          name: utm_term
          description: The UTM term of the short link.
          schema:
            type: string
            nullable: true
            maxLength: 190
            description: The UTM term of the short link.
        - in: query
          name: utm_content
          description: The UTM content of the short link.
          schema:
            type: string
            nullable: true
            maxLength: 190
            description: The UTM content of the short link.
        - in: query
          name: ref
          description: The ref of the short link.
          schema:
            type: string
            nullable: true
            maxLength: 190
            description: The ref of the short link.
        - in: query
          name: page
          schema:
            type: number
            default: 1
        - in: query
          name: limit
          schema:
            type: number
            maximum: 1000
            default: 100
        - in: query
          name: sortOrder
          description: The sort order. The default is `desc`.
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
            description: The sort order. The default is `desc`.
        - in: query
          name: sortBy
          description: The field to sort the events by. The default is `timestamp`.
          schema:
            type: string
            enum:
              - timestamp
            default: timestamp
            description: The field to sort the events by. The default is `timestamp`.
        - in: query
          name: order
          description: DEPRECATED. Use `sortOrder` instead.
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
            description: DEPRECATED. Use `sortOrder` instead.
            deprecated: true
      responses:
        '200':
          description: A list of events
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                    - $ref: '#/components/schemas/ClickEvent'
                    - $ref: '#/components/schemas/LeadEvent'
                    - $ref: '#/components/schemas/SaleEvent'
                  discriminator:
                    propertyName: event
                    mapping:
                      click: '#/components/schemas/ClickEvent'
                      lead: '#/components/schemas/LeadEvent'
                      sale: '#/components/schemas/SaleEvent'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          $ref: '#/components/responses/409'
        '410':
          $ref: '#/components/responses/410'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - token: []
      x-codeSamples:
        - lang: python
          label: listEvents
          source: |-
            from dub import Dub


            with Dub(
                token="DUB_API_KEY",
            ) as d_client:

                res = d_client.events.list(request={
                    "timezone": "America/New_York",
                    "city": "New York",
                    "device": "Desktop",
                    "browser": "Chrome",
                    "os": "Windows",
                    "referer": "google.com",
                    "referer_url": "https://dub.co/blog",
                    "query": "metadata['key']:'value'",
                })

                # Handle response
                print(res)
        - lang: php
          label: listEvents
          source: |-
            declare(strict_types=1);

            require 'vendor/autoload.php';

            use Dub;
            use Dub\Models\Operations;

            $sdk = Dub\Dub::builder()
                ->setSecurity(
                    'DUB_API_KEY'
                )
                ->build();

            $request = new Operations\ListEventsRequest(
                timezone: 'America/New_York',
                city: 'New York',
                device: 'Desktop',
                browser: 'Chrome',
                os: 'Windows',
                referer: 'google.com',
                refererUrl: 'https://dub.co/blog',
                query: 'metadata[\'key\']:\'value\'',
            );

            $response = $sdk->events->list(
                request: $request
            );

            if ($response->responseBodies !== null) {
                // handle response
            }
        - lang: go
          label: listEvents
          source: "package main\n\nimport(\n\t\"context\"\n\tdubgo \"github.com/dubinc/dub-go\"\n\t\"github.com/dubinc/dub-go/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n    ctx := context.Background()\n\n    s := dubgo.New(\n        dubgo.WithSecurity(\"DUB_API_KEY\"),\n    )\n\n    res, err := s.Events.List(ctx, operations.ListEventsRequest{\n        Timezone: dubgo.Pointer(\"America/New_York\"),\n        City: dubgo.Pointer(\"New York\"),\n        Device: dubgo.Pointer(\"Desktop\"),\n        Browser: dubgo.Pointer(\"Chrome\"),\n        Os: dubgo.Pointer(\"Windows\"),\n        Referer: dubgo.Pointer(\"google.com\"),\n        RefererURL: dubgo.Pointer(\"https://dub.co/blog\"),\n        Query: dubgo.Pointer(\"metadata['key']:'value'\"),\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res != nil {\n        // handle response\n    }\n}"
        - lang: ruby
          label: listEvents
          source: |-
            require 'dub'

            Models = ::OpenApiSDK::Models
            s = ::OpenApiSDK::Dub.new(
                  security: Models::Shared::Security.new(
                    token: 'DUB_API_KEY',
                  ),
                )

            req = Models::Operations::ListEventsRequest.new(
              timezone: 'America/New_York',
              city: 'New York',
              device: 'Desktop',
              browser: 'Chrome',
              os: 'Windows',
              referer: 'google.com',
              referer_url: 'https://dub.co/blog',
              query: 'metadata[\'key\']:\'value\'',
            )

            res = s.events.list(request: req)

            unless res.nil?
              # handle response
            end
        - lang: typescript
          label: listEvents
          source: |-
            import { Dub } from "dub";

            const dub = new Dub({
              token: "DUB_API_KEY",
            });

            async function run() {
              const result = await dub.events.list();

              console.log(result);
            }

            run();
components:
  schemas:
    countryCode:
      type: string
      description: >-
        The country to retrieve analytics for. Must be passed as a 2-letter ISO
        3166-1 country code. See https://d.to/geo for more information.
    regionCode:
      type: string
      description: The ISO 3166-2 region code to retrieve analytics for.
    continentCode:
      type: string
      enum:
        - AF
        - AN
        - AS
        - EU
        - NA
        - OC
        - SA
      description: The continent to retrieve analytics for.
    ClickEvent:
      type: object
      properties:
        event:
          type: string
          enum:
            - click
        timestamp:
          type: string
        click:
          type: object
          properties:
            id:
              type: string
            timestamp:
              type: string
            url:
              type: string
            country:
              type: string
            city:
              type: string
            region:
              type: string
            continent:
              type: string
            device:
              type: string
            browser:
              type: string
            os:
              type: string
            trigger:
              type: string
              nullable: true
            referer:
              type: string
            refererUrl:
              type: string
            qr:
              type: boolean
            ip:
              type: string
          required:
            - id
            - timestamp
            - url
            - country
            - city
            - region
            - continent
            - device
            - browser
            - os
            - referer
            - refererUrl
            - qr
            - ip
        link:
          type: object
          properties:
            id:
              type: string
              description: The unique ID of the short link.
            domain:
              type: string
              description: >-
                The domain of the short link. If not provided, the primary
                domain for the workspace will be used (or `dub.sh` if the
                workspace has no domains).
            key:
              type: string
              description: >-
                The short link slug. If not provided, a random 7-character slug
                will be generated.
            url:
              type: string
            trackConversion:
              type: boolean
            externalId:
              type: string
              nullable: true
              description: >-
                The ID of the link in your database. If set, it can be used to
                identify the link in future API requests (must be prefixed with
                'ext_' when passed as a query parameter). This key is unique
                across your workspace.
            tenantId:
              type: string
              nullable: true
              description: >-
                The ID of the tenant that created the link inside your system.
                If set, it can be used to fetch all links for a tenant.
            programId:
              type: string
              nullable: true
              description: The ID of the program the short link is associated with.
            partnerId:
              type: string
              nullable: true
              description: The ID of the partner the short link is associated with.
            archived:
              type: boolean
            expiresAt:
              type: string
            expiredUrl:
              type: string
              nullable: true
            disabledAt:
              type: string
            password:
              type: string
              nullable: true
              description: >-
                The password required to access the destination URL of the short
                link.
            proxy:
              type: boolean
            title:
              type: string
              nullable: true
              description: >-
                The title of the short link. Will be used for Custom Link
                Previews if `proxy` is true.
            description:
              type: string
              nullable: true
              description: >-
                The description of the short link. Will be used for Custom Link
                Previews if `proxy` is true.
            image:
              type: string
              nullable: true
              description: >-
                The image of the short link. Will be used for Custom Link
                Previews if `proxy` is true.
            video:
              type: string
              nullable: true
              description: >-
                The custom link preview video (og:video). Will be used for
                Custom Link Previews if `proxy` is true. Learn more:
                https://d.to/og
            rewrite:
              type: boolean
            doIndex:
              type: boolean
            ios:
              type: string
              nullable: true
              description: >-
                The iOS destination URL for the short link for iOS device
                targeting.
            android:
              type: string
              nullable: true
              description: >-
                The Android destination URL for the short link for Android
                device targeting.
            geo:
              type: object
              nullable: true
              additionalProperties:
                type: string
                format: uri
              description: >-
                Geo targeting information for the short link in JSON format
                `{[COUNTRY]: https://example.com }`. See https://d.to/geo for
                more information.
            publicStats:
              type: boolean
            tags:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/LinkTagSchema'
              description: The tags assigned to the short link.
            folderId:
              type: string
              nullable: true
              description: The unique ID of the folder assigned to the short link.
            webhookIds:
              type: array
              items:
                type: string
              description: The IDs of the webhooks that the short link is associated with.
            comments:
              type: string
              nullable: true
              description: The comments for the short link.
            shortLink:
              type: string
              format: uri
              description: >-
                The full URL of the short link, including the https protocol
                (e.g. `https://dub.sh/try`).
            qrCode:
              type: string
              format: uri
              description: >-
                The full URL of the QR code for the short link (e.g.
                `https://api.dub.co/qr?url=https://dub.sh/try`).
            utm_source:
              type: string
              nullable: true
              description: The UTM source of the short link.
            utm_medium:
              type: string
              nullable: true
              description: The UTM medium of the short link.
            utm_campaign:
              type: string
              nullable: true
              description: The UTM campaign of the short link.
            utm_term:
              type: string
              nullable: true
              description: The UTM term of the short link.
            utm_content:
              type: string
              nullable: true
              description: The UTM content of the short link.
            testVariants:
              type: array
              nullable: true
              items:
                type: object
                properties:
                  url:
                    type: string
                  percentage:
                    type: number
                    minimum: 10
                    maximum: 90
                required:
                  - url
                  - percentage
              minItems: 2
              maxItems: 4
              description: >-
                An array of A/B test URLs and the percentage of traffic to send
                to each URL.
              example:
                - url: https://example.com/variant-1
                  percentage: 50
                - url: https://example.com/variant-2
                  percentage: 50
            testStartedAt:
              type: string
            testCompletedAt:
              type: string
            userId:
              type: string
              nullable: true
            workspaceId:
              type: string
              description: The workspace ID of the short link.
            clicks:
              type: number
              default: 0
              description: The number of clicks on the short link.
            leads:
              type: number
              default: 0
              description: The number of leads the short link has generated.
            conversions:
              type: number
              default: 0
              description: The number of leads that converted to paying customers.
            sales:
              type: number
              default: 0
              description: >-
                The total number of sales (includes recurring sales) generated
                by the short link.
            saleAmount:
              type: number
              default: 0
              description: >-
                The total dollar value of sales (in cents) generated by the
                short link.
            lastClicked:
              type: string
            createdAt:
              type: string
            updatedAt:
              type: string
            tagId:
              type: string
              nullable: true
              description: >-
                Deprecated: Use `tags` instead. The unique ID of the tag
                assigned to the short link.
              deprecated: true
            projectId:
              type: string
              description: >-
                Deprecated: Use `workspaceId` instead. The project ID of the
                short link.
              deprecated: true
          required:
            - id
            - domain
            - key
            - url
            - trackConversion
            - externalId
            - tenantId
            - programId
            - partnerId
            - archived
            - expiresAt
            - expiredUrl
            - disabledAt
            - password
            - proxy
            - title
            - description
            - image
            - video
            - rewrite
            - doIndex
            - ios
            - android
            - geo
            - publicStats
            - tags
            - folderId
            - webhookIds
            - comments
            - shortLink
            - qrCode
            - utm_source
            - utm_medium
            - utm_campaign
            - utm_term
            - utm_content
            - testStartedAt
            - testCompletedAt
            - userId
            - workspaceId
            - clicks
            - leads
            - conversions
            - sales
            - saleAmount
            - lastClicked
            - createdAt
            - updatedAt
            - tagId
            - projectId
          title: Link
        click_id:
          type: string
          description: 'Deprecated: Use `click.id` instead.'
          deprecated: true
        link_id:
          type: string
          description: 'Deprecated: Use `link.id` instead.'
          deprecated: true
        domain:
          type: string
          description: 'Deprecated: Use `link.domain` instead.'
          deprecated: true
        key:
          type: string
          description: 'Deprecated: Use `link.key` instead.'
          deprecated: true
        url:
          type: string
          description: 'Deprecated: Use `click.url` instead.'
          deprecated: true
        continent:
          type: string
          description: 'Deprecated: Use `click.continent` instead.'
          deprecated: true
        country:
          type: string
          description: 'Deprecated: Use `click.country` instead.'
          deprecated: true
        city:
          type: string
          description: 'Deprecated: Use `click.city` instead.'
          deprecated: true
        device:
          type: string
          description: 'Deprecated: Use `click.device` instead.'
          deprecated: true
        browser:
          type: string
          description: 'Deprecated: Use `click.browser` instead.'
          deprecated: true
        os:
          type: string
          description: 'Deprecated: Use `click.os` instead.'
          deprecated: true
        qr:
          type: number
          description: 'Deprecated: Use `click.qr` instead.'
          deprecated: true
        ip:
          type: string
          description: 'Deprecated: Use `click.ip` instead.'
          deprecated: true
      required:
        - event
        - timestamp
        - click
        - link
        - click_id
        - link_id
        - domain
        - key
        - url
        - continent
        - country
        - city
        - device
        - browser
        - os
        - qr
        - ip
      title: ClickEvent
    LeadEvent:
      type: object
      properties:
        event:
          type: string
          enum:
            - lead
        timestamp:
          type: string
        eventId:
          type: string
        eventName:
          type: string
        metadata:
          nullable: true
        click:
          type: object
          properties:
            id:
              type: string
            timestamp:
              type: string
            url:
              type: string
            country:
              type: string
            city:
              type: string
            region:
              type: string
            continent:
              type: string
            device:
              type: string
            browser:
              type: string
            os:
              type: string
            trigger:
              type: string
              nullable: true
            referer:
              type: string
            refererUrl:
              type: string
            qr:
              type: boolean
            ip:
              type: string
          required:
            - id
            - timestamp
            - url
            - country
            - city
            - region
            - continent
            - device
            - browser
            - os
            - referer
            - refererUrl
            - qr
            - ip
        link:
          type: object
          properties:
            id:
              type: string
              description: The unique ID of the short link.
            domain:
              type: string
              description: >-
                The domain of the short link. If not provided, the primary
                domain for the workspace will be used (or `dub.sh` if the
                workspace has no domains).
            key:
              type: string
              description: >-
                The short link slug. If not provided, a random 7-character slug
                will be generated.
            url:
              type: string
            trackConversion:
              type: boolean
            externalId:
              type: string
              nullable: true
              description: >-
                The ID of the link in your database. If set, it can be used to
                identify the link in future API requests (must be prefixed with
                'ext_' when passed as a query parameter). This key is unique
                across your workspace.
            tenantId:
              type: string
              nullable: true
              description: >-
                The ID of the tenant that created the link inside your system.
                If set, it can be used to fetch all links for a tenant.
            programId:
              type: string
              nullable: true
              description: The ID of the program the short link is associated with.
            partnerId:
              type: string
              nullable: true
              description: The ID of the partner the short link is associated with.
            archived:
              type: boolean
            expiresAt:
              type: string
            expiredUrl:
              type: string
              nullable: true
            disabledAt:
              type: string
            password:
              type: string
              nullable: true
              description: >-
                The password required to access the destination URL of the short
                link.
            proxy:
              type: boolean
            title:
              type: string
              nullable: true
              description: >-
                The title of the short link. Will be used for Custom Link
                Previews if `proxy` is true.
            description:
              type: string
              nullable: true
              description: >-
                The description of the short link. Will be used for Custom Link
                Previews if `proxy` is true.
            image:
              type: string
              nullable: true
              description: >-
                The image of the short link. Will be used for Custom Link
                Previews if `proxy` is true.
            video:
              type: string
              nullable: true
              description: >-
                The custom link preview video (og:video). Will be used for
                Custom Link Previews if `proxy` is true. Learn more:
                https://d.to/og
            rewrite:
              type: boolean
            doIndex:
              type: boolean
            ios:
              type: string
              nullable: true
              description: >-
                The iOS destination URL for the short link for iOS device
                targeting.
            android:
              type: string
              nullable: true
              description: >-
                The Android destination URL for the short link for Android
                device targeting.
            geo:
              type: object
              nullable: true
              additionalProperties:
                type: string
                format: uri
              description: >-
                Geo targeting information for the short link in JSON format
                `{[COUNTRY]: https://example.com }`. See https://d.to/geo for
                more information.
            publicStats:
              type: boolean
            tags:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/LinkTagSchema'
              description: The tags assigned to the short link.
            folderId:
              type: string
              nullable: true
              description: The unique ID of the folder assigned to the short link.
            webhookIds:
              type: array
              items:
                type: string
              description: The IDs of the webhooks that the short link is associated with.
            comments:
              type: string
              nullable: true
              description: The comments for the short link.
            shortLink:
              type: string
              format: uri
              description: >-
                The full URL of the short link, including the https protocol
                (e.g. `https://dub.sh/try`).
            qrCode:
              type: string
              format: uri
              description: >-
                The full URL of the QR code for the short link (e.g.
                `https://api.dub.co/qr?url=https://dub.sh/try`).
            utm_source:
              type: string
              nullable: true
              description: The UTM source of the short link.
            utm_medium:
              type: string
              nullable: true
              description: The UTM medium of the short link.
            utm_campaign:
              type: string
              nullable: true
              description: The UTM campaign of the short link.
            utm_term:
              type: string
              nullable: true
              description: The UTM term of the short link.
            utm_content:
              type: string
              nullable: true
              description: The UTM content of the short link.
            testVariants:
              type: array
              nullable: true
              items:
                type: object
                properties:
                  url:
                    type: string
                  percentage:
                    type: number
                    minimum: 10
                    maximum: 90
                required:
                  - url
                  - percentage
              minItems: 2
              maxItems: 4
              description: >-
                An array of A/B test URLs and the percentage of traffic to send
                to each URL.
              example:
                - url: https://example.com/variant-1
                  percentage: 50
                - url: https://example.com/variant-2
                  percentage: 50
            testStartedAt:
              type: string
            testCompletedAt:
              type: string
            userId:
              type: string
              nullable: true
            workspaceId:
              type: string
              description: The workspace ID of the short link.
            clicks:
              type: number
              default: 0
              description: The number of clicks on the short link.
            leads:
              type: number
              default: 0
              description: The number of leads the short link has generated.
            conversions:
              type: number
              default: 0
              description: The number of leads that converted to paying customers.
            sales:
              type: number
              default: 0
              description: >-
                The total number of sales (includes recurring sales) generated
                by the short link.
            saleAmount:
              type: number
              default: 0
              description: >-
                The total dollar value of sales (in cents) generated by the
                short link.
            lastClicked:
              type: string
            createdAt:
              type: string
            updatedAt:
              type: string
            tagId:
              type: string
              nullable: true
              description: >-
                Deprecated: Use `tags` instead. The unique ID of the tag
                assigned to the short link.
              deprecated: true
            projectId:
              type: string
              description: >-
                Deprecated: Use `workspaceId` instead. The project ID of the
                short link.
              deprecated: true
          required:
            - id
            - domain
            - key
            - url
            - trackConversion
            - externalId
            - tenantId
            - programId
            - partnerId
            - archived
            - expiresAt
            - expiredUrl
            - disabledAt
            - password
            - proxy
            - title
            - description
            - image
            - video
            - rewrite
            - doIndex
            - ios
            - android
            - geo
            - publicStats
            - tags
            - folderId
            - webhookIds
            - comments
            - shortLink
            - qrCode
            - utm_source
            - utm_medium
            - utm_campaign
            - utm_term
            - utm_content
            - testStartedAt
            - testCompletedAt
            - userId
            - workspaceId
            - clicks
            - leads
            - conversions
            - sales
            - saleAmount
            - lastClicked
            - createdAt
            - updatedAt
            - tagId
            - projectId
          title: Link
        customer:
          type: object
          properties:
            id:
              type: string
              description: >-
                The unique ID of the customer. You may use either the customer's
                `id` on Dub (obtained via `/customers` endpoint) or their
                `externalId` (unique ID within your system, prefixed with
                `ext_`, e.g. `ext_123`).
            externalId:
              type: string
              description: Unique identifier for the customer in the client's app.
            name:
              type: string
              description: Name of the customer.
            email:
              type: string
              nullable: true
              description: Email of the customer.
            avatar:
              type: string
              nullable: true
              description: Avatar URL of the customer.
            country:
              type: string
              nullable: true
              description: Country of the customer.
            sales:
              type: number
              nullable: true
              description: Total number of sales for the customer.
            saleAmount:
              type: number
              nullable: true
              description: Total amount of sales for the customer.
            createdAt:
              type: string
              description: The date the customer was created.
          required:
            - id
            - externalId
            - name
            - createdAt
        click_id:
          type: string
          description: 'Deprecated: Use `click.id` instead.'
          deprecated: true
        link_id:
          type: string
          description: 'Deprecated: Use `link.id` instead.'
          deprecated: true
        domain:
          type: string
          description: 'Deprecated: Use `link.domain` instead.'
          deprecated: true
        key:
          type: string
          description: 'Deprecated: Use `link.key` instead.'
          deprecated: true
        url:
          type: string
          description: 'Deprecated: Use `click.url` instead.'
          deprecated: true
        continent:
          type: string
          description: 'Deprecated: Use `click.continent` instead.'
          deprecated: true
        country:
          type: string
          description: 'Deprecated: Use `click.country` instead.'
          deprecated: true
        city:
          type: string
          description: 'Deprecated: Use `click.city` instead.'
          deprecated: true
        device:
          type: string
          description: 'Deprecated: Use `click.device` instead.'
          deprecated: true
        browser:
          type: string
          description: 'Deprecated: Use `click.browser` instead.'
          deprecated: true
        os:
          type: string
          description: 'Deprecated: Use `click.os` instead.'
          deprecated: true
        qr:
          type: number
          description: 'Deprecated: Use `click.qr` instead.'
          deprecated: true
        ip:
          type: string
          description: 'Deprecated: Use `click.ip` instead.'
          deprecated: true
      required:
        - event
        - timestamp
        - eventId
        - eventName
        - click
        - link
        - customer
        - click_id
        - link_id
        - domain
        - key
        - url
        - continent
        - country
        - city
        - device
        - browser
        - os
        - qr
        - ip
      title: LeadEvent
    SaleEvent:
      type: object
      properties:
        event:
          type: string
          enum:
            - sale
        timestamp:
          type: string
        eventId:
          type: string
        eventName:
          type: string
        sale:
          type: object
          properties:
            amount:
              type: integer
              minimum: 0
              description: >-
                The amount of the sale in cents (for all two-decimal
                currencies). If the sale is in a zero-decimal currency, pass the
                full integer value (e.g. `1437` JPY). Learn more:
                https://d.to/currency
            invoiceId:
              type: string
              nullable: true
              default: null
              description: >-
                The invoice ID of the sale. Can be used as a idempotency key –
                only one sale event can be recorded for a given invoice ID.
            paymentProcessor:
              type: string
              enum:
                - stripe
                - shopify
                - polar
                - paddle
                - revenuecat
                - custom
              default: custom
              description: The payment processor via which the sale was made.
          required:
            - amount
            - invoiceId
            - paymentProcessor
        metadata:
          nullable: true
        link:
          type: object
          properties:
            id:
              type: string
              description: The unique ID of the short link.
            domain:
              type: string
              description: >-
                The domain of the short link. If not provided, the primary
                domain for the workspace will be used (or `dub.sh` if the
                workspace has no domains).
            key:
              type: string
              description: >-
                The short link slug. If not provided, a random 7-character slug
                will be generated.
            url:
              type: string
            trackConversion:
              type: boolean
            externalId:
              type: string
              nullable: true
              description: >-
                The ID of the link in your database. If set, it can be used to
                identify the link in future API requests (must be prefixed with
                'ext_' when passed as a query parameter). This key is unique
                across your workspace.
            tenantId:
              type: string
              nullable: true
              description: >-
                The ID of the tenant that created the link inside your system.
                If set, it can be used to fetch all links for a tenant.
            programId:
              type: string
              nullable: true
              description: The ID of the program the short link is associated with.
            partnerId:
              type: string
              nullable: true
              description: The ID of the partner the short link is associated with.
            archived:
              type: boolean
            expiresAt:
              type: string
            expiredUrl:
              type: string
              nullable: true
            disabledAt:
              type: string
            password:
              type: string
              nullable: true
              description: >-
                The password required to access the destination URL of the short
                link.
            proxy:
              type: boolean
            title:
              type: string
              nullable: true
              description: >-
                The title of the short link. Will be used for Custom Link
                Previews if `proxy` is true.
            description:
              type: string
              nullable: true
              description: >-
                The description of the short link. Will be used for Custom Link
                Previews if `proxy` is true.
            image:
              type: string
              nullable: true
              description: >-
                The image of the short link. Will be used for Custom Link
                Previews if `proxy` is true.
            video:
              type: string
              nullable: true
              description: >-
                The custom link preview video (og:video). Will be used for
                Custom Link Previews if `proxy` is true. Learn more:
                https://d.to/og
            rewrite:
              type: boolean
            doIndex:
              type: boolean
            ios:
              type: string
              nullable: true
              description: >-
                The iOS destination URL for the short link for iOS device
                targeting.
            android:
              type: string
              nullable: true
              description: >-
                The Android destination URL for the short link for Android
                device targeting.
            geo:
              type: object
              nullable: true
              additionalProperties:
                type: string
                format: uri
              description: >-
                Geo targeting information for the short link in JSON format
                `{[COUNTRY]: https://example.com }`. See https://d.to/geo for
                more information.
            publicStats:
              type: boolean
            tags:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/LinkTagSchema'
              description: The tags assigned to the short link.
            folderId:
              type: string
              nullable: true
              description: The unique ID of the folder assigned to the short link.
            webhookIds:
              type: array
              items:
                type: string
              description: The IDs of the webhooks that the short link is associated with.
            comments:
              type: string
              nullable: true
              description: The comments for the short link.
            shortLink:
              type: string
              format: uri
              description: >-
                The full URL of the short link, including the https protocol
                (e.g. `https://dub.sh/try`).
            qrCode:
              type: string
              format: uri
              description: >-
                The full URL of the QR code for the short link (e.g.
                `https://api.dub.co/qr?url=https://dub.sh/try`).
            utm_source:
              type: string
              nullable: true
              description: The UTM source of the short link.
            utm_medium:
              type: string
              nullable: true
              description: The UTM medium of the short link.
            utm_campaign:
              type: string
              nullable: true
              description: The UTM campaign of the short link.
            utm_term:
              type: string
              nullable: true
              description: The UTM term of the short link.
            utm_content:
              type: string
              nullable: true
              description: The UTM content of the short link.
            testVariants:
              type: array
              nullable: true
              items:
                type: object
                properties:
                  url:
                    type: string
                  percentage:
                    type: number
                    minimum: 10
                    maximum: 90
                required:
                  - url
                  - percentage
              minItems: 2
              maxItems: 4
              description: >-
                An array of A/B test URLs and the percentage of traffic to send
                to each URL.
              example:
                - url: https://example.com/variant-1
                  percentage: 50
                - url: https://example.com/variant-2
                  percentage: 50
            testStartedAt:
              type: string
            testCompletedAt:
              type: string
            userId:
              type: string
              nullable: true
            workspaceId:
              type: string
              description: The workspace ID of the short link.
            clicks:
              type: number
              default: 0
              description: The number of clicks on the short link.
            leads:
              type: number
              default: 0
              description: The number of leads the short link has generated.
            conversions:
              type: number
              default: 0
              description: The number of leads that converted to paying customers.
            sales:
              type: number
              default: 0
              description: >-
                The total number of sales (includes recurring sales) generated
                by the short link.
            saleAmount:
              type: number
              default: 0
              description: >-
                The total dollar value of sales (in cents) generated by the
                short link.
            lastClicked:
              type: string
            createdAt:
              type: string
            updatedAt:
              type: string
            tagId:
              type: string
              nullable: true
              description: >-
                Deprecated: Use `tags` instead. The unique ID of the tag
                assigned to the short link.
              deprecated: true
            projectId:
              type: string
              description: >-
                Deprecated: Use `workspaceId` instead. The project ID of the
                short link.
              deprecated: true
          required:
            - id
            - domain
            - key
            - url
            - trackConversion
            - externalId
            - tenantId
            - programId
            - partnerId
            - archived
            - expiresAt
            - expiredUrl
            - disabledAt
            - password
            - proxy
            - title
            - description
            - image
            - video
            - rewrite
            - doIndex
            - ios
            - android
            - geo
            - publicStats
            - tags
            - folderId
            - webhookIds
            - comments
            - shortLink
            - qrCode
            - utm_source
            - utm_medium
            - utm_campaign
            - utm_term
            - utm_content
            - testStartedAt
            - testCompletedAt
            - userId
            - workspaceId
            - clicks
            - leads
            - conversions
            - sales
            - saleAmount
            - lastClicked
            - createdAt
            - updatedAt
            - tagId
            - projectId
          title: Link
        click:
          type: object
          properties:
            id:
              type: string
            timestamp:
              type: string
            url:
              type: string
            country:
              type: string
            city:
              type: string
            region:
              type: string
            continent:
              type: string
            device:
              type: string
            browser:
              type: string
            os:
              type: string
            trigger:
              type: string
              nullable: true
            referer:
              type: string
            refererUrl:
              type: string
            qr:
              type: boolean
            ip:
              type: string
          required:
            - id
            - timestamp
            - url
            - country
            - city
            - region
            - continent
            - device
            - browser
            - os
            - referer
            - refererUrl
            - qr
            - ip
        customer:
          type: object
          properties:
            id:
              type: string
              description: >-
                The unique ID of the customer. You may use either the customer's
                `id` on Dub (obtained via `/customers` endpoint) or their
                `externalId` (unique ID within your system, prefixed with
                `ext_`, e.g. `ext_123`).
            externalId:
              type: string
              description: Unique identifier for the customer in the client's app.
            name:
              type: string
              description: Name of the customer.
            email:
              type: string
              nullable: true
              description: Email of the customer.
            avatar:
              type: string
              nullable: true
              description: Avatar URL of the customer.
            country:
              type: string
              nullable: true
              description: Country of the customer.
            sales:
              type: number
              nullable: true
              description: Total number of sales for the customer.
            saleAmount:
              type: number
              nullable: true
              description: Total amount of sales for the customer.
            createdAt:
              type: string
              description: The date the customer was created.
          required:
            - id
            - externalId
            - name
            - createdAt
        saleAmount:
          type: number
          description: 'Deprecated: Use `sale.amount` instead.'
          deprecated: true
        invoice_id:
          type: string
          description: 'Deprecated: Use `sale.invoiceId` instead.'
          deprecated: true
        payment_processor:
          type: string
          description: 'Deprecated: Use `sale.paymentProcessor` instead.'
          deprecated: true
        click_id:
          type: string
          description: 'Deprecated: Use `click.id` instead.'
          deprecated: true
        link_id:
          type: string
          description: 'Deprecated: Use `link.id` instead.'
          deprecated: true
        domain:
          type: string
          description: 'Deprecated: Use `link.domain` instead.'
          deprecated: true
        key:
          type: string
          description: 'Deprecated: Use `link.key` instead.'
          deprecated: true
        url:
          type: string
          description: 'Deprecated: Use `click.url` instead.'
          deprecated: true
        continent:
          type: string
          description: 'Deprecated: Use `click.continent` instead.'
          deprecated: true
        country:
          type: string
          description: 'Deprecated: Use `click.country` instead.'
          deprecated: true
        city:
          type: string
          description: 'Deprecated: Use `click.city` instead.'
          deprecated: true
        device:
          type: string
          description: 'Deprecated: Use `click.device` instead.'
          deprecated: true
        browser:
          type: string
          description: 'Deprecated: Use `click.browser` instead.'
          deprecated: true
        os:
          type: string
          description: 'Deprecated: Use `click.os` instead.'
          deprecated: true
        qr:
          type: number
          description: 'Deprecated: Use `click.qr` instead.'
          deprecated: true
        ip:
          type: string
          description: 'Deprecated: Use `click.ip` instead.'
          deprecated: true
      required:
        - event
        - timestamp
        - eventId
        - eventName
        - sale
        - link
        - click
        - customer
        - saleAmount
        - invoice_id
        - payment_processor
        - click_id
        - link_id
        - domain
        - key
        - url
        - continent
        - country
        - city
        - device
        - browser
        - os
        - qr
        - ip
      title: SaleEvent
    LinkTagSchema:
      type: object
      properties:
        id:
          type: string
          description: The unique ID of the tag.
        name:
          type: string
          description: The name of the tag.
        color:
          type: string
          enum:
            - red
            - yellow
            - green
            - blue
            - purple
            - brown
            - pink
          description: The color of the tag.
      required:
        - id
        - name
        - color
      title: LinkTag
  responses:
    '400':
      description: >-
        The server cannot or will not process the request due to something that
        is perceived to be a client error (e.g., malformed request syntax,
        invalid request message framing, or deceptive request routing).
      content:
        application/json:
          schema:
            x-speakeasy-name-override: BadRequest
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - bad_request
                    description: A short code indicating the error code returned.
                    example: bad_request
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: >-
                      A link to our documentation with more details about this
                      error code
                    example: https://dub.co/docs/api-reference/errors#bad-request
                required:
                  - code
                  - message
            required:
              - error
    '401':
      description: >-
        Although the HTTP standard specifies "unauthorized", semantically this
        response means "unauthenticated". That is, the client must authenticate
        itself to get the requested response.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: Unauthorized
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - unauthorized
                    description: A short code indicating the error code returned.
                    example: unauthorized
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: >-
                      A link to our documentation with more details about this
                      error code
                    example: https://dub.co/docs/api-reference/errors#unauthorized
                required:
                  - code
                  - message
            required:
              - error
    '403':
      description: >-
        The client does not have access rights to the content; that is, it is
        unauthorized, so the server is refusing to give the requested resource.
        Unlike 401 Unauthorized, the client's identity is known to the server.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: Forbidden
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - forbidden
                    description: A short code indicating the error code returned.
                    example: forbidden
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: >-
                      A link to our documentation with more details about this
                      error code
                    example: https://dub.co/docs/api-reference/errors#forbidden
                required:
                  - code
                  - message
            required:
              - error
    '404':
      description: The server cannot find the requested resource.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: NotFound
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - not_found
                    description: A short code indicating the error code returned.
                    example: not_found
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: >-
                      A link to our documentation with more details about this
                      error code
                    example: https://dub.co/docs/api-reference/errors#not-found
                required:
                  - code
                  - message
            required:
              - error
    '409':
      description: >-
        This response is sent when a request conflicts with the current state of
        the server.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: Conflict
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - conflict
                    description: A short code indicating the error code returned.
                    example: conflict
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: >-
                      A link to our documentation with more details about this
                      error code
                    example: https://dub.co/docs/api-reference/errors#conflict
                required:
                  - code
                  - message
            required:
              - error
    '410':
      description: >-
        This response is sent when the requested content has been permanently
        deleted from server, with no forwarding address.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: InviteExpired
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - invite_expired
                    description: A short code indicating the error code returned.
                    example: invite_expired
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: >-
                      A link to our documentation with more details about this
                      error code
                    example: https://dub.co/docs/api-reference/errors#invite-expired
                required:
                  - code
                  - message
            required:
              - error
    '422':
      description: >-
        The request was well-formed but was unable to be followed due to
        semantic errors.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: UnprocessableEntity
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - unprocessable_entity
                    description: A short code indicating the error code returned.
                    example: unprocessable_entity
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: >-
                      A link to our documentation with more details about this
                      error code
                    example: >-
                      https://dub.co/docs/api-reference/errors#unprocessable-entity
                required:
                  - code
                  - message
            required:
              - error
    '429':
      description: >-
        The user has sent too many requests in a given amount of time ("rate
        limiting")
      content:
        application/json:
          schema:
            x-speakeasy-name-override: RateLimitExceeded
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - rate_limit_exceeded
                    description: A short code indicating the error code returned.
                    example: rate_limit_exceeded
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: >-
                      A link to our documentation with more details about this
                      error code
                    example: >-
                      https://dub.co/docs/api-reference/errors#rate-limit_exceeded
                required:
                  - code
                  - message
            required:
              - error
    '500':
      description: The server has encountered a situation it does not know how to handle.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: InternalServerError
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - internal_server_error
                    description: A short code indicating the error code returned.
                    example: internal_server_error
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: >-
                      A link to our documentation with more details about this
                      error code
                    example: >-
                      https://dub.co/docs/api-reference/errors#internal-server_error
                required:
                  - code
                  - message
            required:
              - error
  securitySchemes:
    token:
      type: http
      description: Default authentication mechanism
      scheme: bearer
      x-speakeasy-example: DUB_API_KEY

````