Skip to content
DikoAPI
API keys

Get a library transcript

Open as Markdown

Returns one library transcript with its summary and chapters.

GET/library/transcripts/{transcript_id}
Required scope
library:read
Authentication
Authorization: Bearer
Rate-limit policy
readaccount

Parameters

Parameters
NameInTypeRequiredDefaultConstraintsDescription
transcript_idpathstringrequired–6–64 characters · pattern: ^trn_[A-Za-z0-9_-]+$Public library transcript ID (trn_ prefix).

Response

200

The library transcript.

  • RateLimit The most restrictive policy that applied: "name";r=<requests left>;t=<seconds>, where t is the number of seconds until one more request is allowed (0 when the quota is full). Absent when no rate limiter ran for the request.
  • RateLimit-Policy The rate-limit policies that applied to the request, one "name";q=<burst>;w=<seconds> item per policy, for example "read";q=10;w=2, "account";q=20;w=2: q is the burst quota and w the seconds in which an empty quota refills. Sent on every authenticated response; absent when no rate limiter ran for the request, for example when it was rejected before the key was checked.
  • Request-Id ID of this request (req_ prefix), the same as request_id in an error body. It is also sent as X-Request-ID. Quote it when you contact support.
  • X-Client-Request-Id Your own X-Client-Request-Id request header, echoed back. It is sent only when the value you sent has 1-128 characters from A-Z a-z 0-9 . _ : -.
  • X-RateLimit-Limit Burst quota of the most restrictive policy (q in RateLimit-Policy). Absent when no rate limiter ran.
  • X-RateLimit-Remaining Requests left in the most restrictive policy (r in RateLimit). Absent when no rate limiter ran.
  • X-RateLimit-Reset Seconds until one more request is allowed in the most restrictive policy (t in RateLimit; 0 when the quota is full). It is a number of seconds, not a timestamp. Absent when no rate limiter ran.

Content type: application/json

  • idstringrequired

    Public ID (trn_ prefix).

    6–64 characters · pattern: ^trn_[A-Za-z0-9_-]+$

  • objectstringrequired

    Always library_transcript.

  • titlestringrequired

    Title.

  • source_typestringrequired

    Where the transcript comes from.

    Allowed values: youtubeupload

  • youtube_video_idstring | nullrequired

    YouTube video ID. Null for uploads.

  • urlstring | nullrequired

    Source URL. Null for uploads.

    format: uri

  • channelstring | nullrequired

    Channel name, if known.

  • languagestring | nullrequired

    Language code, for example lt.

  • duration_msinteger | nullrequired

    Duration in milliseconds.

    0–9007199254740991 · format: int64

  • transcription_methodstring | nullrequired

    How the text was produced: from captions or by speech recognition. Providers are not named.

    Allowed values: captionsspeech_recognition

  • summaryobjectrequired

    Summary state and text.

    2 fields
    • statusstringrequired

      Summary status.

      Allowed values: pendingreadyfailedunavailable

    • textstring | nullrequired

      Summary text. Null in list items and until the summary is ready.

  • chaptersarray<object>

    Chapters. Only in the single-transcript response.

    2 fields
    • titlestringrequired

      Chapter title.

    • start_msintegerrequired

      Chapter start in milliseconds.

      0–9007199254740991 · format: int64

  • categoriesarray<string>required

    Categories assigned in Diko.

  • added_atstringrequired

    When the transcript was added to your library.

    ≤ 24 characters · format: date-time

  • archivedbooleanrequired

    Whether the item is archived.

  • segment_countintegerrequired

    Number of transcript segments.

    0–2147483647 · format: int32

  • revisionstringrequired

    Opaque token that changes whenever any segment changes.

  • web_urlstringrequired

    Link in the Diko app.

    format: uri

Examples

Request

cURL
curl "https://api.diko.app/api/v1/library/transcripts/trn_ZFF3NHc5V2dYY1E" \
  -H "Authorization: Bearer $DIKO_API_KEY"

Example response · 200 · application/json

JSON
{
  "id": "trn_ZFF3NHc5V2dYY1E",
  "object": "library_transcript",
  "title": "Kaip veikia transkribavimas",
  "source_type": "youtube",
  "youtube_video_id": "dQw4w9WgXcQ",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "channel": "Diko",
  "language": "lt",
  "duration_ms": 212000,
  "transcription_method": "captions",
  "summary": {
    "status": "ready",
    "text": "Trumpas pristatymas, kaip vaizdo įrašas paverčiamas tekstu."
  },
  "chapters": [
    {
      "title": "Įžanga",
      "start_ms": 0
    }
  ],
  "categories": [
    "Technologijos"
  ],
  "added_at": "2026-10-11T09:30:00.000Z",
  "archived": false,
  "segment_count": 120,
  "revision": "r_6f6f4bb9762915b561878fd1e1fa7f56",
  "web_url": "https://studio.diko.app/library/dQw4w9WgXcQ"
}

Errors

This endpoint can return these errors. Every code is described in the error catalog.

HTTPCodeMeaningRetry?
401missing_api_keyThe request has no `Authorization` header.no
401invalid_api_keyThe header is unusable (a scheme other than `Bearer`, an empty key or more than one `Authorization` header) or the key is unknown or malformed (wrong structure or checksum). The response is identical in all these cases.no
401api_key_expiredThe key has expired.no
401api_key_revokedThe key was revoked: manually, after a rotation grace period ended, because of a leak or because the account was disabled.no
401api_key_disabledThe key is temporarily disabled.no
402subscription_requiredThe account has no active paid access.no
403ip_not_allowedThe key has an IP allowlist and the request IP is not on it, or it cannot be determined reliably.no
403account_disabledThe account is disabled.no
403email_not_verifiedThe account e-mail address is not verified.no
403api_access_suspendedA Diko administrator suspended API access for this account.no
403plan_requiredThe plan does not include the API. `error.details.required_plans` lists `verslas`.no
403insufficient_scopeThe key lacks the scope this endpoint needs. `error.details` contains `required_scopes` and `granted_scopes`.no
404not_foundThe resource does not exist, does not belong to your account or its ID is encoded incorrectly.no
429rate_limit_exceededA rate-limit policy was exceeded. `error.details.policy` names it.yes, after Retry-After
500internal_errorAn internal server error.conditionally
503service_unavailableThe service is temporarily busy, for example because of database load.yes, after Retry-After

Search for a topic, an endpoint or an error code.

Search across all documentation pagesesc close