---
title: "Read a workspace scoped video discovery"
method: GET
path: "/v1/video-discoveries/{id}"
tags: ["jobs"]
---

# Read a workspace scoped video discovery

`GET /v1/video-discoveries/{id}`

## Request

- Base URL: `https://api.transcriptdock.com`
- URL: `https://api.transcriptdock.com/v1/video-discoveries/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `sb-access-token`

## Path parameters

- `id` string, uuid, required

## Response `200`

Discovery status, video listing, and paging cursor

- VideoDiscovery
  - `id` string, uuid, required
  - `kind` 'youtube_search' | 'youtube_channel_videos' | 'youtube_channel_search' | 'youtube_playlist_videos' | 'tiktok_user_videos', required
  - `status` 'queued' | 'processing' | 'succeeded' | 'failed', required
  - `request` object, required: Canonical discovery request as queued
  - `videos` VideoDiscoveryVideo[], required
    - `platform` 'youtube' | 'tiktok', required
    - `video_id` string, required
    - `url` string, uri, required
    - `title` string, nullable, required
    - `channel_id` string, nullable, required
    - `channel_title` string, nullable, required
    - `duration_s` integer, nullable, required
    - `published_at` string, date-time, nullable, required
    - `published_text` string, nullable, required
    - `view_count` integer, nullable, required
    - `view_count_text` string, nullable, required
    - `thumbnail_url` string, uri, nullable, required
    - `tiktok` TikTokVideoData: Full item data TikTok embeds in the user listing. Never carries signed play or download URLs.
      - `description` string, nullable
      - `created_at` string, date-time, nullable
      - `duration_s` integer, nullable
      - `width` integer, nullable
      - `height` integer, nullable
      - `ratio` string, nullable
      - `cover_url` string, uri, nullable
      - `dynamic_cover_url` string, uri, nullable
      - `origin_cover_url` string, uri, nullable
      - `play_count` integer, nullable
      - `like_count` integer, nullable
      - `comment_count` integer, nullable
      - `share_count` integer, nullable
      - `collect_count` integer, nullable
      - `hashtags` string[]
      - `mentions` string[]
      - `music` TikTokVideoMusic
        - `id` string, nullable
        - `title` string, nullable
        - `author` string, nullable
        - `original` boolean, nullable
        - `duration_s` integer, nullable
      - `author` TikTokVideoAuthor
        - `id` string, nullable
        - `unique_id` string, nullable
        - `nickname` string, nullable
        - `verified` boolean, nullable
        - `avatar_url` string, uri, nullable
      - `is_pinned` boolean, nullable
      - `is_ad` boolean, nullable
      - `is_duet_enabled` boolean, nullable
      - `is_stitch_enabled` boolean, nullable
      - `language` string, nullable
      - `subtitle_languages` string[]
      - `location` string, nullable
      - `video_url_expires` boolean, nullable
      - `private_item` boolean, nullable
      - `details_error` string, nullable
  - `profile` TikTokProfile
    - `id` string, nullable
    - `unique_id` string, nullable
    - `nickname` string, nullable
    - `signature` string, nullable
    - `verified` boolean, nullable
    - `private_account` boolean, nullable
    - `avatar_url` string, uri, nullable
    - `follower_count` integer, nullable
    - `following_count` integer, nullable
    - `heart_count` integer, nullable
    - `video_count` integer, nullable
    - `region` string, nullable
    - `language` string, nullable
    - `created_at` string, date-time, nullable
  - `next_cursor` string, nullable, required
  - `error` ErrorObject, required
    - `code` 'INVALID_REQUEST' | 'INVALID_URL' | 'INVALID_CURSOR' | 'UNSUPPORTED_SOURCE' | 'UNSUPPORTED_MEDIA' | 'CAPABILITY_UNAVAILABLE' | 'UNAUTHENTICATED' | 'FORBIDDEN' | 'EMAIL_UNVERIFIED' | 'NOT_FOUND' | 'INSUFFICIENT_BALANCE' | 'PLAN_REQUIRED' | 'BUDGET_EXCEEDED' | 'IDEMPOTENCY_CONFLICT' | 'JOB_NOT_RETRYABLE' | 'CANCELLATION_NOT_ALLOWED' | 'RATE_LIMITED' | 'SOURCE_NOT_FOUND' | 'SOURCE_PRIVATE' | 'SOURCE_AUTH_REQUIRED' | 'SOURCE_REGION_RESTRICTED' | 'NO_CAPTIONS' | 'LANGUAGE_UNAVAILABLE' | 'LANGUAGE_UNSUPPORTED' | 'NO_SPEECH' | 'NO_AUDIO' | 'TIMESTAMPS_UNAVAILABLE' | 'DURATION_LIMIT_EXCEEDED' | 'FILE_TOO_LARGE' | 'UNSAFE_URL' | 'INVALID_MEDIA' | 'SOURCE_RATE_LIMITED' | 'SOURCE_BLOCKED' | 'SOURCE_TIMEOUT' | 'SOURCE_CHANGED' | 'PROVIDER_UNAVAILABLE' | 'STORAGE_UNAVAILABLE' | 'PROVIDER_REJECTED' | 'INTERNAL_ERROR', required
    - `message` string, required
    - `retryable` boolean, required
    - `retry_after_seconds` integer
    - `details` object
    - `doc_url` string, uri: Where this code is documented.
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `expires_at` string, date-time, nullable, required

---

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