# DUK

> Dažniausi klausimai: tušti sąrašai, ką mato raktas, IP apribojimas, importai ir kita.

Šaltinis: https://diko.app/api-docs/duk

## Kodėl sąrašas tuščias?

Tuščias `data` dažniausiai reiškia, kad filtrai ar leidimai atmeta viską, o ne kad API sugedo. Patikrinkite:

- **Užarchyvuoti elementai paslėpti.** `GET /meetings` ir `GET /library/transcripts` pagal numatymą grąžina tik neužarchyvuotus. Pridėkite `archived=all`.
- **Filtrai.** `status`, `q`, `created_after`, `source_type` ir kiti parametrai siaurina rezultatą. Pabandykite be jų.
- **Kitas naudotojas.** Raktas mato tik savo savininko duomenis. Kvieskite `GET /me` ir patikrinkite paslėptą `user.email` (pavyzdžiui, `j***@example.com`; pilnas adresas raktui niekada negrąžinamas): ar tai paskyra, kurioje yra jūsų susitikimai?
- **Leidimai.** `GET /events` rodo tik tų šeimų įvykius, kuriuos raktas gali skaityti, o jei neskaito nė vienos, grąžina tuščią sąrašą, o ne 403. Patikrinkite rakto `scopes`.
- **`cursor=latest`.** Pirmas `GET /events` su `latest` visada grąžina tuščią puslapį: tai tik atskaitos taškas. Naudokite grąžintą `next_cursor`.
- **Įvykiai iš laikotarpio prieš pirmą raktą.** Diko užfiksuoja įvykius tik tada, kai paskyra turi neatšauktą raktą arba įjungtą webhook endpointą. Anksčiau pasibaigę susitikimai įvykių nesukuria, todėl pirmas paleidimas jų neatkuria. Juos nuskaitykite per `GET /meetings`.
- **Puslapiavimas.** Puslapis gali būti trumpas, bet `has_more` vis tiek `true`. Žr. [Puslapiavimas](https://diko.app/api-docs/puslapiavimas.md).

## Ką mato raktas?

Raktas mato tik **savo savininko** susitikimus ir biblioteką (YouTube vaizdo įrašus ir įkeltus failus). Komandos nedalija duomenų, todėl komandos kolegos susitikimų jūsų raktas nemato. Svetimas ar neegzistuojantis ID grąžina 404 [`not_found`](https://diko.app/api-docs/klaidos.md#not_found), o ne 403. Kuriuos endpointus raktas gali kviesti, nustato [leidimai](https://diko.app/api-docs/leidimai.md).

## Kas nutinka raktams paliekant komandą?

Raktai priklauso asmeniškai jums, todėl jie **nepašalinami**. Bet kiekviena užklausa iš naujo tikrina planą: jei nebeturite „Verslas“ plano, gausite 403 [`plan_required`](https://diko.app/api-docs/klaidos.md#plan_required). Komandos savininkas ar administratorius **buvusio** nario raktų metaduomenų nebemato, nes jis nebe dabartinis narys. Daugiau: [Saugumo gairės](https://diko.app/api-docs/saugumas.md#naryst%C4%97s-ir-plano-poky%C4%8Diai).

## Kodėl `ip_not_allowed`?

Raktas turi IP apribojimą, o jūsų užklausos IP nėra sąraše arba Diko juo netiki (raktas su sąrašu priimamas tik iš patikimai nustatyto IP). Dažniausios priežastys:

- kreipiatės į `https://studio.diko.app/api/v1`. Tame domene Diko kliento IP netiki niekada, todėl raktas su sąrašu ten visada atmetamas. Naudokite `https://api.diko.app/api/v1`;
- jūsų serveris kreipiasi kitu išeinančiu adresu (NAT, debesies platforma, kitas regionas);
- užklausa pateikiama IPv6, o sąraše yra tik IPv4 (ar atvirkščiai);
- adresas pasikeitė po perdiegimo.

Sprendimas: iškvieskite `GET /me` su raktu be IP apribojimo ir pažiūrėkite į `request.ip` bei `request.ip_trusted`. Jei `ip_trusted` yra `false`, patikrinkite bazinį adresą. Jei `true`, atnaujinkite sąrašą programėlėje. Žr. [IP apribojimas](https://diko.app/api-docs/saugumas.md#ip-apribojimas).

## Kodėl gaunu 403 `plan_required` arba 402 `subscription_required`?

API prieinamas tik **„Verslas“** plane (`required_plans` išvardija `verslas`). `subscription_required` reiškia, kad paskyra apskritai neturi apmokėtos prieigos, o `plan_required` – kad planas neapima API. `GET /me` plano netikrina ir parodo `access.allowed` bei `access.reason`, todėl tinka diagnostikai.

## Kodėl importas ilgai lieka `queued`?

Importas palaukia vidinėje apdorojimo eilėje. Jei eilė užimta, importas lieka `queued` ir bus bandomas vėliau. Tai ne klaida. Patikrinkite `queue_position` ir `stage` (`GET /library/imports/{import_id}`). Importas, kuris `queued` būsenoje užsibuvo ilgiau nei 24 val., arba `processing` ilgiau nei 6 val., baigiamas kaip `failed` su `transcription_timeout`. Vietoj nuolatinio tikrinimo naudokite [webhooks](https://diko.app/api-docs/webhooks.md). Visos būsenos, etapai ir nesėkmių kodai aprašyti [greitoje pradžioje](https://diko.app/api-docs/greita-pradzia.md#importo-b%C5%ABsenos-ir-klaidos).

## Ar importas kainuoja kreditų?

Jei transkripcija jau yra jūsų bibliotekoje arba bendroje talpykloje, importas iškart baigiasi su `reused: true` ir **kreditai nenaudojami**. Kitais atvejais prieš pradedant tikrinamas kreditų likutis: jei jų nepakanka, gaunate 402 [`insufficient_credits`](https://diko.app/api-docs/klaidos.md#insufficient_credits). Likutį raktui su leidimu `library:write` rodo `GET /me` (`credits.available`); kitiems raktams `credits` yra `null`. Skaitymo užklausos kreditų nenaudoja. Kreditų įkainiai pateikti [kainų puslapyje](https://diko.app/kainos).

## Ar galiu naudoti raktą naršyklėje?

Ne. API nesiunčia `Access-Control-*` antraščių, o `OPTIONS` grąžina 405. Be to, raktas naršyklės kode yra matomas visiems. Kvieskite API iš savo serverio ir klientui perduokite tik tai, ko reikia.

## Kaip gauti SRT arba VTT?

`GET /meetings/{meeting_id}/transcript?format=srt` (arba `vtt`, `text`). Tą patį galite daryti ir bibliotekos transkripcijoms: [`GET /library/transcripts/{transcript_id}/transcript`](https://diko.app/api-docs/zinynas/get-library-transcript-transcript.md). Šie formatai grąžina visą transkriptą ir naudoja griežtesnę `export` ribą.

## Kodėl gaunu `transcript_changed`?

Transkriptas pasikeitė tarp jūsų puslapių užklausų (pavyzdžiui, kažkas patvirtino gramatikos pataisas). Skaitykite iš naujo be `cursor` arba naudokite `format=text`. Žr. [Puslapiavimas](https://diko.app/api-docs/puslapiavimas.md#transkriptas-ir-revision).

## Kodėl gaunu `resource_not_ready`?

Susitikimo transkripto dar nėra, nes susitikimas vis dar apdorojamas. Palaukite įvykio `meeting.ready` arba patikrinkite `transcript.status` susitikimo objekte.

## Kodėl `route_not_found`, nors kelias teisingas?

Pasvirasis brūkšnys `/` kelio gale laikomas kitu keliu: `/api/v1/me/` grąžina 404. Taip pat patikrinkite, ar bazinis URL yra `https://api.diko.app/api/v1`.

## Ar galiu kurti webhooks per API?

Ne. Webhook endpointus valdote tik Diko programėlėje, skiltyje **Nustatymai → API → Webhooks** (`/settings/api/webhooks`). Vienai paskyrai galima turėti daugiausia 10 endpointų. Tai daroma tyčia: nutekėjęs raktas negali nukreipti jūsų duomenų į svetimą adresą. Webhooks valdymą per API planuojame ateityje, žr. [Pakeitimai](https://diko.app/api-docs/pakeitimai.md).

## Ar yra smėlio dėžė?

Ne. `dk_test_` raktai rezervuoti ateičiai, o v1 raktas visada veikia su tikrais duomenimis. Bandymui galite susikurti raktą su šablonu „Tik skaitymas“ ir trumpu galiojimu.

## Ką nurodyti kreipiantis į pagalbą?

Nurodykite atsakymo `request_id` (`req_...`) arba antraštę `Request-Id`, užklausos laiką ir endpointą. Niekada nesiųskite paties rakto.
