# Susitikimo transkriptas

> Grąžina patvirtintą transkriptą.

Šaltinis: https://diko.app/api-docs/zinynas/get-meeting-transcript

Susitikimai · `GET /meetings/{meeting_id}/transcript`

- **Bazinis URL:** https://api.diko.app/api/v1
- **Reikalingas leidimas:** `meetings:read`
- **Ribų politika:** `read`, `account`, `export (format=text|srt|vtt)`
- **Autentifikacija:** `Authorization: Bearer dk_live_...`

`format=json` (numatytasis) puslapiuoja segmentus ir sąrašo apvalkale pateikia `revision`; žymeklis pririštas prie versijos, todėl pasikeitus grąžinama 409 `transcript_changed`. `text`, `srt` ir `vtt` grąžina visą transkriptą failo pavidalu ir naudoja griežtesnę `export` politiką. Kol transkripto dar nėra, grąžinama 409 `resource_not_ready`. Teksto eilutės atrodo taip: `[HH:MM:SS] Vardas: tekstas`.

## Parametrai

| Pavadinimas | Vieta | Tipas | Privalomas | Numatytoji reikšmė | Apribojimai | Aprašas |
|---|---|---|---|---|---|---|
| `meeting_id` | path | `string` | taip | – | 26–26 simbolių; pattern: ^mtg_[0-9A-Za-z]{22}$ | Viešas susitikimo ID (priešdėlis `mtg_`). |
| `format` | query | `string` | ne | `json` | – | Atsakymo formatas: puslapiuojamas JSON, grynas tekstas, SubRip arba WebVTT. Galimos reikšmės: `json`, `text`, `srt`, `vtt`. |
| `limit` | query | `integer` | ne | `200` | 1–1000; format: int32 | Puslapio dydis nuo 1 iki 1000. Numatytasis 200. Remkitės `has_more`, o ne puslapio dydžiu. |
| `cursor` | query | `string` | ne | – | ≤ 1024 simbolių | Neskaidrus žymeklis iš ankstesnio puslapio `next_cursor`. Žymekliai pririšti prie naudotojo, maršruto, rūšiavimo ir filtrų. |

## Atsakymas

### 200

Transkripto segmentai arba visas transkriptas tekstu, SubRip ar WebVTT formatu.

- `RateLimit`: Labiausiai ribojanti taikyta politika: `"pavadinimas";r=<liko užklausų>;t=<sekundės>`. `t` – sekundės iki kitos leidžiamos užklausos (0, kai talpa pilna). Nesiunčiama, kai užklausai ribotuvas netaikytas.
- `RateLimit-Policy`: Užklausai taikytos ribų politikos, po vieną elementą `"pavadinimas";q=<pradinė talpa>;w=<sekundės>` kiekvienai, pavyzdžiui, `"read";q=10;w=2, "account";q=20;w=2`: `q` – pradinė talpa, `w` – sekundės, per kurias tuščia talpa vėl prisipildo. Siunčiama su kiekvienu autentifikuotu atsakymu; nesiunčiama, kai užklausai ribotuvas netaikytas, pavyzdžiui, kai ji atmesta dar nepatikrinus rakto.
- `Request-Id`: Šios užklausos ID (priešdėlis `req_`), toks pat kaip `request_id` klaidos atsakyme. Siunčiamas ir kaip `X-Request-ID`. Kreipdamiesi pagalbos nurodykite jį.
- `X-Client-Request-Id`: Jūsų siųsta užklausos antraštė `X-Client-Request-Id`, grąžinta atgal. Grąžinama tik tada, kai jūsų reikšmė turi 1–128 simbolius iš A-Z a-z 0-9 . _ : -.
- `X-RateLimit-Limit`: Labiausiai ribojančios politikos pradinė talpa (`q` antraštėje `RateLimit-Policy`). Nesiunčiama, kai užklausai ribotuvas netaikytas.
- `X-RateLimit-Remaining`: Labiausiai ribojančioje politikoje likusios užklausos (`r` antraštėje `RateLimit`). Nesiunčiama, kai užklausai ribotuvas netaikytas.
- `X-RateLimit-Reset`: Sekundės iki kitos leidžiamos užklausos labiausiai ribojančioje politikoje (`t` antraštėje `RateLimit`; 0, kai talpa pilna). Tai sekundžių skaičius, o ne laiko žyma. Nesiunčiama, kai užklausai ribotuvas netaikytas.

Turinio tipas: `application/json`

- `object` (string, privalomas): Visada `list`.
- `data` (array<object>, privalomas): Šio puslapio elementai.
  - `object` (string, privalomas): Visada `transcript_segment`.
  - `index` (integer, privalomas, 0–2147483647, format: int32): Segmento pozicija transkripte, pradedant nuo nulio.
  - `start_ms` (integer, privalomas, 0–9007199254740991, format: int64): Pradžia milisekundėmis nuo įrašo pradžios.
  - `end_ms` (integer, privalomas, 0–9007199254740991, format: int64): Pabaiga milisekundėmis nuo įrašo pradžios.
  - `speaker` (object | null, privalomas): Kas kalbėjo arba `null`, kai nežinoma.
    - `id` (string | null, privalomas, 26–26 simbolių, pattern: ^spk_[0-9A-Za-z]{22}$): Dalyvio ID. `null` bibliotekos transkripcijoms, kurios neturi atpažintų dalyvių.
    - `label` (string | null, privalomas): Automatinė dalyvio žyma.
    - `name` (string | null, privalomas): Dalyvio vardas, jei priskirtas.
  - `text` (string, privalomas): Patvirtintas tekstas. Laukiantis gramatikos pasiūlymas niekada neįtraukiamas.
  - `edited` (boolean, privalomas): Ar tekstas redaguotas po transkripcijos.
  - `has_pending_edit` (boolean, privalomas): Ar Diko laukia gramatikos pasiūlymo patvirtinimo.
- `has_more` (boolean, privalomas): Ar yra daugiau elementų. Puslapiuokite, kol reikšmė yra `true`.
- `next_cursor` (string | null, privalomas, ≤ 1024 simbolių): Kito puslapio žymeklis arba `null`, kai `has_more` yra `false`.
- `revision` (string, privalomas): Transkripto versija. Puslapiavimas prie jos pririštas; pasikeitus grąžinama 409 `transcript_changed`.

```json
{
  "object": "list",
  "data": [
    {
      "object": "transcript_segment",
      "index": 0,
      "start_ms": 1200,
      "end_ms": 5400,
      "speaker": {
        "id": "spk_0deCHcpckGv0OnXkWw7nUx",
        "label": "SPEAKER_00",
        "name": "Jonas"
      },
      "text": "Labas rytas.",
      "edited": false,
      "has_pending_edit": false
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "revision": "r_1bedcb71b3a1fdc6bfeeb92054fc6f92"
}
```

Turinio tipas: `application/x-subrip`

```text
1
00:00:01,200 --> 00:00:05,400
Jonas: Labas rytas.

```

Turinio tipas: `text/plain`

```text
[00:00:01] Jonas: Labas rytas.
[00:00:05] Rūta: Labas, pradėkime.
```

Turinio tipas: `text/vtt`

```text
WEBVTT

00:00:01.200 --> 00:00:05.400
Jonas: Labas rytas.

```

## Pavyzdžiai

**cURL**

```bash
curl "https://api.diko.app/api/v1/meetings/mtg_0aZ1bY2cX3dW4eV5fU6gT7/transcript?format=json&limit=200" \
  -H "Authorization: Bearer $DIKO_API_KEY"
```

**Python**

```python
import os

import requests

response = requests.get(
    "https://api.diko.app/api/v1/meetings/mtg_0aZ1bY2cX3dW4eV5fU6gT7/transcript",
    headers={"Authorization": f"Bearer {os.environ['DIKO_API_KEY']}"},
    params={"format": "json", "limit": 200},
    timeout=30,
)
response.raise_for_status()
print(response.json())
```

**TypeScript**

```typescript
const response = await fetch("https://api.diko.app/api/v1/meetings/mtg_0aZ1bY2cX3dW4eV5fU6gT7/transcript?format=json&limit=200", {
  headers: {
    Authorization: `Bearer ${process.env.DIKO_API_KEY}`,
  },
})
if (!response.ok) throw new Error(`${response.status} ${await response.text()}`)
console.log(await response.json())
```

## Klaidos

Šis endpointas gali grąžinti šias klaidas. Visų kodų aprašai yra klaidų kataloge.

| HTTP | Kodas | Reikšmė | Kartoti? |
|---|---|---|---|
| 400 | [`invalid_parameter`](https://diko.app/api-docs/klaidos.md#invalid_parameter) | Kelio, užklausos ar turinio parametro reikšmė netinkama, privalomo lauko trūksta arba laukas nežinomas (nežinomi laukai atmetami). Lauke `error.param` nurodytas parametras. | ne |
| 400 | [`invalid_cursor`](https://diko.app/api-docs/klaidos.md#invalid_cursor) | `cursor` sugadintas arba išduotas kitam naudotojui, maršrutui, rūšiavimui ar filtrams. | ne |
| 401 | [`missing_api_key`](https://diko.app/api-docs/klaidos.md#missing_api_key) | Užklausoje nėra antraštės `Authorization`. | ne |
| 401 | [`invalid_api_key`](https://diko.app/api-docs/klaidos.md#invalid_api_key) | Antraštė netinkama (ne `Bearer` schema, tuščias raktas arba kelios antraštės `Authorization`) arba raktas nežinomas ar blogo formato (neatitinka struktūros ar kontrolinės sumos). Atsakymas visais šiais atvejais vienodas. | ne |
| 401 | [`api_key_expired`](https://diko.app/api-docs/klaidos.md#api_key_expired) | Rakto galiojimas pasibaigė. | ne |
| 401 | [`api_key_revoked`](https://diko.app/api-docs/klaidos.md#api_key_revoked) | Raktas atšauktas: rankiniu būdu, pasibaigus rotacijos persidengimui, dėl nutekėjimo arba išjungus paskyrą. | ne |
| 401 | [`api_key_disabled`](https://diko.app/api-docs/klaidos.md#api_key_disabled) | Raktas laikinai išjungtas. | ne |
| 402 | [`subscription_required`](https://diko.app/api-docs/klaidos.md#subscription_required) | Paskyra neturi aktyvios apmokėtos prieigos. | ne |
| 403 | [`ip_not_allowed`](https://diko.app/api-docs/klaidos.md#ip_not_allowed) | Raktas turi IP apribojimą, o užklausos IP nėra sąraše arba jo nepavyksta nustatyti patikimai. | ne |
| 403 | [`account_disabled`](https://diko.app/api-docs/klaidos.md#account_disabled) | Paskyra išjungta. | ne |
| 403 | [`email_not_verified`](https://diko.app/api-docs/klaidos.md#email_not_verified) | Paskyros el. paštas nepatvirtintas. | ne |
| 403 | [`api_access_suspended`](https://diko.app/api-docs/klaidos.md#api_access_suspended) | Diko administratorius sustabdė šios paskyros API prieigą. | ne |
| 403 | [`plan_required`](https://diko.app/api-docs/klaidos.md#plan_required) | Planas neapima API. `error.details.required_plans` yra `verslas`. | ne |
| 403 | [`insufficient_scope`](https://diko.app/api-docs/klaidos.md#insufficient_scope) | Raktas neturi endpointui reikalingo leidimo. `error.details` turi `required_scopes` ir `granted_scopes`. | ne |
| 404 | [`not_found`](https://diko.app/api-docs/klaidos.md#not_found) | Resurso nėra, jis nepriklauso jūsų paskyrai arba ID užkoduotas neteisingai. | ne |
| 409 | [`resource_not_ready`](https://diko.app/api-docs/klaidos.md#resource_not_ready) | Transkripto dar nėra: susitikimas vis dar apdorojamas. | taip |
| 409 | [`transcript_changed`](https://diko.app/api-docs/klaidos.md#transcript_changed) | Transkriptas pasikeitė puslapiuojant: pasikeitė `revision`. | sąlygiškai |
| 429 | [`rate_limit_exceeded`](https://diko.app/api-docs/klaidos.md#rate_limit_exceeded) | Viršyta ribų politika. `error.details.policy` nurodo, kuri. | taip, po Retry-After |
| 500 | [`internal_error`](https://diko.app/api-docs/klaidos.md#internal_error) | Vidinė serverio klaida. | sąlygiškai |
| 503 | [`service_unavailable`](https://diko.app/api-docs/klaidos.md#service_unavailable) | Paslauga laikinai užimta, pavyzdžiui, dėl duomenų bazės apkrovos. | taip, po Retry-After |
