{
  "components": {
    "headers": {
      "Content-Location": {
        "description": "URL of the existing import that this answer describes.",
        "schema": {
          "format": "uri",
          "type": "string"
        }
      },
      "Idempotent-Replayed": {
        "description": "`true` when the response is a replay of an earlier request with the same `Idempotency-Key`.",
        "schema": {
          "enum": [
            "true"
          ],
          "type": "string"
        }
      },
      "Location": {
        "description": "URL of the created import.",
        "schema": {
          "format": "uri",
          "type": "string"
        }
      },
      "RateLimit": {
        "description": "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.",
        "schema": {
          "maxLength": 64,
          "type": "string"
        }
      },
      "RateLimit-Policy": {
        "description": "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.",
        "schema": {
          "maxLength": 256,
          "type": "string"
        }
      },
      "Request-Id": {
        "description": "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.",
        "schema": {
          "maxLength": 30,
          "minLength": 30,
          "pattern": "^req_[A-Z2-7]{26}$",
          "type": "string"
        }
      },
      "Retry-After": {
        "description": "Seconds to wait before the next request.",
        "schema": {
          "format": "int32",
          "minimum": 1,
          "type": "integer"
        }
      },
      "WWW-Authenticate": {
        "description": "Bearer challenge, with `error=\"invalid_token\"` or `error=\"insufficient_scope\"` where it applies.",
        "schema": {
          "maxLength": 256,
          "type": "string"
        }
      },
      "X-Client-Request-Id": {
        "description": "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 . _ : -.",
        "schema": {
          "maxLength": 128,
          "pattern": "^[A-Za-z0-9._:-]{1,128}$",
          "type": "string"
        }
      },
      "X-RateLimit-Limit": {
        "description": "Burst quota of the most restrictive policy (`q` in `RateLimit-Policy`). Absent when no rate limiter ran.",
        "schema": {
          "format": "int32",
          "maximum": 2147483647,
          "minimum": 0,
          "type": "integer"
        }
      },
      "X-RateLimit-Remaining": {
        "description": "Requests left in the most restrictive policy (`r` in `RateLimit`). Absent when no rate limiter ran.",
        "schema": {
          "format": "int32",
          "maximum": 2147483647,
          "minimum": 0,
          "type": "integer"
        }
      },
      "X-RateLimit-Reset": {
        "description": "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.",
        "schema": {
          "format": "int32",
          "maximum": 2147483647,
          "minimum": 0,
          "type": "integer"
        }
      }
    },
    "parameters": {
      "Cursor": {
        "description": "Opaque cursor from `next_cursor` of the previous page. Cursors are tied to the user, route, sort order and filters.",
        "in": "query",
        "name": "cursor",
        "required": false,
        "schema": {
          "maxLength": 1024,
          "type": "string"
        }
      },
      "IdempotencyKey": {
        "description": "Makes a retry safe: the same key with the same request returns the first answer (`Idempotent-Replayed: true`); a different request under the same key is rejected with 422 `idempotency_key_reused`. 8-255 characters from A-Z a-z 0-9 _ - : . Kept for 24 hours.",
        "in": "header",
        "name": "Idempotency-Key",
        "required": false,
        "schema": {
          "maxLength": 255,
          "minLength": 8,
          "pattern": "^[A-Za-z0-9_\\-:.]{8,255}$",
          "type": "string"
        }
      }
    },
    "responses": {
      "BadRequest": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The request is invalid. See `error.code` and `error.param`.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "Conflict": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The request conflicts with the current state of the resource. `idempotency_in_progress` carries `Retry-After`: the first request with that `Idempotency-Key` is still running.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "Forbidden": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The key is valid but this request is not allowed (scope, plan, IP or account state). `insufficient_scope` also carries a `WWW-Authenticate` challenge.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "WWW-Authenticate": {
            "$ref": "#/components/headers/WWW-Authenticate"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "InternalError": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "An internal error. Quote the `request_id` if it persists.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "NotFound": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The resource or route does not exist, or it is not yours.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "PayloadTooLarge": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The request body is larger than 64 KB.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "PaymentRequired": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "Payment is required: no paid access, or not enough credits.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "RequestTimeout": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The request body was not received in time (`request_timeout`). Nothing was created, so it is safe to send the same request again with the same `Idempotency-Key`.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "ServiceUnavailable": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The service is busy or writes are switched off. Wait `Retry-After` seconds.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "TooManyRequests": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "A rate limit or import capacity was exceeded. Wait `Retry-After` seconds.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "Unauthorized": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The key is missing, invalid, expired, revoked or disabled.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "WWW-Authenticate": {
            "$ref": "#/components/headers/WWW-Authenticate"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "UnprocessableEntity": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The `Idempotency-Key` was reused with a different request.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "UnsupportedMediaType": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The body must be `application/json`.",
        "headers": {
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Request-Id": {
            "$ref": "#/components/headers/Request-Id"
          },
          "X-Client-Request-Id": {
            "$ref": "#/components/headers/X-Client-Request-Id"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      }
    },
    "schemas": {
      "Access": {
        "description": "Whether the account may use the API right now.",
        "properties": {
          "allowed": {
            "description": "True when API requests are allowed. `GET /me` works even when this is false.",
            "type": "boolean"
          },
          "reason": {
            "description": "Why access is or is not granted.",
            "enum": [
              "subscription",
              "team",
              "owner",
              "exempt",
              "paywall_off",
              "subscription_required",
              "plan_required"
            ],
            "type": "string"
          },
          "plan": {
            "anyOf": [
              {
                "enum": [
                  "asmeninis",
                  "pro",
                  "verslas"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Plan family of the account, or null."
          }
        },
        "required": [
          "allowed",
          "reason",
          "plan"
        ],
        "type": "object"
      },
      "ActionItem": {
        "description": "An action item. Manual items come from the meeting; generated items come from the latest ready minutes.",
        "example": {
          "object": "action_item",
          "id": "act_4VYK4CNn7WirPteKPtx17L",
          "source": "manual",
          "text": "Išsiųsti pasiūlymą",
          "description": null,
          "status": "open",
          "assignee_name": "Jonas",
          "due_text": null,
          "due_at": "2026-10-17T00:00:00.000Z",
          "timestamps_ms": [],
          "created_at": "2026-10-11T09:31:00.000Z"
        },
        "properties": {
          "object": {
            "const": "action_item",
            "description": "Always `action_item`.",
            "enum": [
              "action_item"
            ],
            "type": "string"
          },
          "id": {
            "anyOf": [
              {
                "maxLength": 26,
                "minLength": 26,
                "pattern": "^act_[0-9A-Za-z]{22}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Public ID (`act_` prefix). Null for generated items."
          },
          "source": {
            "description": "Where the item comes from.",
            "enum": [
              "manual",
              "generated"
            ],
            "type": "string"
          },
          "text": {
            "description": "Task title.",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Longer description, if any."
          },
          "status": {
            "description": "Task status. Generated items are always `open`.",
            "enum": [
              "open",
              "in_progress",
              "done",
              "canceled"
            ],
            "type": "string"
          },
          "assignee_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Name of the person responsible."
          },
          "due_text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Free-text deadline from generated minutes."
          },
          "due_at": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Deadline of a manual item."
          },
          "timestamps_ms": {
            "description": "Moments in the recording the item comes from, in milliseconds.",
            "items": {
              "format": "int64",
              "maximum": 9007199254740991,
              "minimum": 0,
              "type": "integer"
            },
            "type": "array"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When a manual item was created. Null for generated items."
          }
        },
        "required": [
          "object",
          "id",
          "source",
          "text",
          "description",
          "status",
          "assignee_name",
          "due_text",
          "due_at",
          "timestamps_ms",
          "created_at"
        ],
        "type": "object"
      },
      "ActionItemList": {
        "description": "A page of action items.",
        "example": {
          "object": "list",
          "data": [
            {
              "object": "action_item",
              "id": "act_4VYK4CNn7WirPteKPtx17L",
              "source": "manual",
              "text": "Išsiųsti pasiūlymą",
              "description": null,
              "status": "open",
              "assignee_name": "Jonas",
              "due_text": null,
              "due_at": "2026-10-17T00:00:00.000Z",
              "timestamps_ms": [],
              "created_at": "2026-10-11T09:31:00.000Z"
            }
          ],
          "has_more": false,
          "next_cursor": null
        },
        "properties": {
          "object": {
            "const": "list",
            "description": "Always `list`.",
            "enum": [
              "list"
            ],
            "type": "string"
          },
          "data": {
            "description": "The items of this page.",
            "items": {
              "$ref": "#/components/schemas/ActionItem"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether more items follow. Keep paging while this is true.",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cursor for the next page, or null when `has_more` is false."
          }
        },
        "required": [
          "object",
          "data",
          "has_more",
          "next_cursor"
        ],
        "type": "object"
      },
      "ApiIndex": {
        "description": "Index of the API. It needs no key.",
        "example": {
          "object": "api",
          "version": "v1",
          "docs_url": "https://diko.app/en/api-docs",
          "openapi_url": "https://api.diko.app/api/v1/openapi.json"
        },
        "properties": {
          "object": {
            "const": "api",
            "description": "Always `api`.",
            "enum": [
              "api"
            ],
            "type": "string"
          },
          "version": {
            "description": "API version, `v1`.",
            "enum": [
              "v1"
            ],
            "type": "string"
          },
          "docs_url": {
            "description": "Link to the documentation.",
            "format": "uri",
            "type": "string"
          },
          "openapi_url": {
            "description": "Link to the OpenAPI 3.1 document.",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "object",
          "version",
          "docs_url",
          "openapi_url"
        ],
        "type": "object"
      },
      "ApiKey": {
        "description": "An API key. The secret itself is shown once when the key is created and is never returned by the API.",
        "example": {
          "id": "key_4Vf9771zpS8JcQdtUcR0u8",
          "object": "api_key",
          "name": "CRM sync",
          "description": "",
          "hint": "dk_live_Ab12…9xYz",
          "scopes": [
            "meetings:read",
            "library:read"
          ],
          "status": "active",
          "allowed_cidrs": [],
          "created_at": "2026-10-11T09:00:00.000Z",
          "expires_at": "2027-01-09T09:00:00.000Z",
          "last_used_at": null,
          "last_used_ip": null,
          "first_used_at": null,
          "disabled_at": null,
          "revoked_at": null,
          "revoked_reason": null,
          "rotated_from": null,
          "grace_until": null
        },
        "properties": {
          "id": {
            "description": "Public key ID (`key_` prefix).",
            "maxLength": 26,
            "minLength": 26,
            "pattern": "^key_[0-9A-Za-z]{22}$",
            "type": "string"
          },
          "object": {
            "const": "api_key",
            "description": "Always `api_key`.",
            "enum": [
              "api_key"
            ],
            "type": "string"
          },
          "name": {
            "description": "Name given to the key.",
            "type": "string"
          },
          "description": {
            "description": "Optional description; an empty string when not set.",
            "type": "string"
          },
          "hint": {
            "description": "Non-secret hint: prefix plus the first and last four characters of the random part.",
            "type": "string"
          },
          "scopes": {
            "description": "Scopes granted to the key.",
            "items": {
              "enum": [
                "meetings:read",
                "library:read",
                "library:write"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "status": {
            "description": "Lifecycle status. `expired` is derived from `expires_at`.",
            "enum": [
              "active",
              "disabled",
              "revoked",
              "expired"
            ],
            "type": "string"
          },
          "allowed_cidrs": {
            "description": "IP allowlist in CIDR notation. An empty list allows any address.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "created_at": {
            "description": "When the key was created.",
            "format": "date-time",
            "maxLength": 24,
            "type": "string"
          },
          "expires_at": {
            "description": "When the key stops working. Every key expires; the maximum is 365 days.",
            "format": "date-time",
            "maxLength": 24,
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Last use, written at most every 5 minutes. Null if never used."
          },
          "last_used_ip": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "IP of the last use. Stored only when the address could be determined reliably."
          },
          "first_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "First use. Null if never used."
          },
          "disabled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the key was disabled, if it is disabled."
          },
          "revoked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the key was revoked, if it is revoked."
          },
          "revoked_reason": {
            "anyOf": [
              {
                "enum": [
                  "user",
                  "rotated",
                  "admin",
                  "owner",
                  "user_disabled",
                  "leaked",
                  "dormant",
                  "revoke_all"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Why the key was revoked: `user` (you revoked it), `rotated` (a rotation grace period ended), `admin` (a team administrator revoked it), `owner` (the team owner revoked it), `user_disabled` (the account was disabled), `leaked` (a leak was detected), `dormant` (unused for a year), `revoke_all` (the revoke-all action)."
          },
          "rotated_from": {
            "anyOf": [
              {
                "maxLength": 26,
                "minLength": 26,
                "pattern": "^key_[0-9A-Za-z]{22}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ID of the key this key replaced through rotation."
          },
          "grace_until": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Until when the previous key keeps working after a rotation."
          }
        },
        "required": [
          "id",
          "object",
          "name",
          "description",
          "hint",
          "scopes",
          "status",
          "allowed_cidrs",
          "created_at",
          "expires_at",
          "last_used_at",
          "last_used_ip",
          "first_used_at",
          "disabled_at",
          "revoked_at",
          "revoked_reason",
          "rotated_from",
          "grace_until"
        ],
        "type": "object"
      },
      "Chapter": {
        "description": "A chapter of a video.",
        "properties": {
          "title": {
            "description": "Chapter title.",
            "type": "string"
          },
          "start_ms": {
            "description": "Chapter start in milliseconds.",
            "format": "int64",
            "maximum": 9007199254740991,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "title",
          "start_ms"
        ],
        "type": "object"
      },
      "CreateLibraryImportRequest": {
        "additionalProperties": false,
        "description": "The video to import.",
        "example": {
          "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
          "language": "lt"
        },
        "properties": {
          "url": {
            "description": "A YouTube video link (youtube.com, www.youtube.com, m.youtube.com, music.youtube.com or youtu.be).",
            "examples": [
              "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
            ],
            "maxLength": 2048,
            "minLength": 1,
            "type": "string"
          },
          "language": {
            "anyOf": [
              {
                "enum": [
                  "lt",
                  "en"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hint for the caption language and speech recognition. Omit to use your Diko default language."
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "Credits": {
        "description": "Credit balance that imports draw from.",
        "properties": {
          "scope": {
            "anyOf": [
              {
                "enum": [
                  "user",
                  "organization"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Whose balance this is: the personal one or the shared team pool. Null when it could not be read."
          },
          "available": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Available credits as a decimal string, for example `\"123.5000\"`. Null when it could not be read."
          },
          "as_of": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the balance was read. It is cached for 30 seconds per user. Null when it could not be read."
          }
        },
        "required": [
          "scope",
          "available",
          "as_of"
        ],
        "type": "object"
      },
      "Error": {
        "description": "Uniform error envelope returned for every 4xx and 5xx response.",
        "example": {
          "type": "error",
          "error": {
            "type": "invalid_request_error",
            "code": "invalid_parameter",
            "message": "limit must be between 1 and 100.",
            "param": "limit",
            "doc_url": "https://diko.app/en/api-docs/errors#invalid_parameter"
          },
          "request_id": "req_QBPIQ5QTIWAUYTMDNCLD7CMKBE"
        },
        "properties": {
          "type": {
            "const": "error",
            "description": "Always `error`.",
            "enum": [
              "error"
            ],
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/ErrorBody",
            "description": "Details of the error."
          },
          "request_id": {
            "description": "Request ID (`req_` prefix). Quote it when contacting support.",
            "type": "string"
          }
        },
        "required": [
          "type",
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "ErrorBody": {
        "description": "The error itself. Branch on the HTTP status and `code`, never on `message`.",
        "properties": {
          "type": {
            "description": "Error class, for example `invalid_request_error`.",
            "enum": [
              "api_error",
              "authentication_error",
              "billing_error",
              "conflict_error",
              "invalid_request_error",
              "not_found_error",
              "permission_error",
              "rate_limit_error",
              "request_too_large",
              "service_unavailable_error"
            ],
            "type": "string"
          },
          "code": {
            "description": "Stable machine-readable error code. The catalog is on the Errors page.",
            "enum": [
              "account_disabled",
              "api_access_suspended",
              "api_disabled",
              "api_key_disabled",
              "api_key_expired",
              "api_key_in_query",
              "api_key_revoked",
              "credit_balance_unavailable",
              "email_not_verified",
              "idempotency_in_progress",
              "idempotency_key_invalid",
              "idempotency_key_reused",
              "import_not_cancelable",
              "insufficient_credits",
              "insufficient_scope",
              "internal_error",
              "invalid_api_key",
              "invalid_cursor",
              "invalid_parameter",
              "invalid_request",
              "invalid_youtube_url",
              "ip_not_allowed",
              "method_not_allowed",
              "missing_api_key",
              "not_found",
              "plan_required",
              "queue_limit_exceeded",
              "rate_limit_exceeded",
              "request_timeout",
              "request_too_large",
              "resource_not_ready",
              "route_not_found",
              "service_unavailable",
              "subscription_required",
              "team_member_disabled",
              "team_member_limit_reached",
              "transcript_changed",
              "unsupported_media_type",
              "writes_disabled"
            ],
            "type": "string"
          },
          "message": {
            "description": "Human-readable explanation in English, or Lithuanian when `Accept-Language: lt` is sent.",
            "type": "string"
          },
          "param": {
            "description": "Name of the offending parameter, when one applies.",
            "type": [
              "string",
              "null"
            ]
          },
          "doc_url": {
            "description": "Link to the documentation of this code.",
            "format": "uri",
            "type": "string"
          },
          "details": {
            "$ref": "#/components/schemas/ErrorDetails",
            "description": "Extra context for some codes."
          }
        },
        "required": [
          "type",
          "code",
          "message",
          "doc_url"
        ],
        "type": "object"
      },
      "ErrorDetails": {
        "additionalProperties": true,
        "description": "Extra machine-readable context. Only the fields that apply to the error are present.",
        "properties": {
          "required_scopes": {
            "description": "Scopes the endpoint needs (`insufficient_scope`).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "granted_scopes": {
            "description": "Scopes the key has (`insufficient_scope`).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "required_plans": {
            "description": "Plans that include the API (`plan_required`).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "policy": {
            "description": "Name of the exceeded rate-limit policy (`rate_limit_exceeded`).",
            "type": "string"
          },
          "limit": {
            "description": "Which import limit was reached (`queue_limit_exceeded`): `user_active_imports`, `capacity` or `user_daily_imports`.",
            "type": "string"
          },
          "retry_after": {
            "description": "Seconds to wait before retrying, same value as the `Retry-After` header.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "Event": {
        "description": "An event. The same object is the webhook body and the item of the event stream.",
        "example": {
          "id": "evt_6wRxUNQvdvcZDQqmAzvcqD",
          "object": "event",
          "type": "meeting.ready",
          "timestamp": "2026-10-11T09:30:00.000Z",
          "data": {
            "object": "meeting",
            "id": "mtg_5uF4g2Xu1i0qz3yAp0CP7W",
            "status": "ready",
            "archived": false,
            "minutes_status": "ready",
            "minutes_version": 2,
            "run_id": "f122ed73-1ae0-5816-8fe0-814cdde13471"
          }
        },
        "properties": {
          "id": {
            "description": "Public event ID (`evt_` prefix). Use it to remove duplicates.",
            "maxLength": 26,
            "minLength": 26,
            "pattern": "^evt_[0-9A-Za-z]{22}$",
            "type": "string"
          },
          "object": {
            "const": "event",
            "description": "Always `event`.",
            "enum": [
              "event"
            ],
            "type": "string"
          },
          "type": {
            "description": "Event type such as `meeting.ready`. New types can appear; ignore the ones you do not know.",
            "type": "string"
          },
          "timestamp": {
            "description": "When the event happened.",
            "format": "date-time",
            "maxLength": 24,
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/EventData",
            "description": "Snapshot of the resource."
          }
        },
        "required": [
          "id",
          "object",
          "type",
          "timestamp",
          "data"
        ],
        "type": "object"
      },
      "EventData": {
        "additionalProperties": true,
        "description": "Snapshot of the resource the event is about. `object` and `id` are always present; the other fields depend on the event type.",
        "properties": {
          "object": {
            "description": "Resource type: `meeting`, `library_transcript`, `library_import` or `webhook_endpoint`.",
            "type": "string"
          },
          "id": {
            "description": "Public ID of the resource.",
            "maxLength": 64,
            "type": "string"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Resource status, for meetings."
          },
          "archived": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Whether the meeting is archived."
          },
          "minutes_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Minutes status, for meeting events."
          },
          "minutes_version": {
            "anyOf": [
              {
                "format": "int32",
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Minutes version, for meeting events."
          },
          "run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Processing run the event belongs to."
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Error code, for `meeting.failed` and `library.import.failed`."
          },
          "changed_fields": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Fields that changed, for update events."
          },
          "youtube_video_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "YouTube video ID, for library events."
          },
          "source_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Transcript source, for `library.transcript.added`."
          },
          "added_at": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the transcript was added, for `library.transcript.added`."
          },
          "summary_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Summary status, for `library.transcript.updated`."
          },
          "transcript_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "minLength": 6,
                "pattern": "^trn_[A-Za-z0-9_-]+$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Library transcript ID, for `library.import.succeeded`."
          },
          "reused": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Whether the transcript already existed, for `library.import.succeeded`."
          }
        },
        "required": [
          "object",
          "id"
        ],
        "type": "object"
      },
      "EventList": {
        "description": "A page of the event stream.",
        "example": {
          "object": "list",
          "data": [
            {
              "id": "evt_6wRxUNQvdvcZDQqmAzvcqD",
              "object": "event",
              "type": "meeting.ready",
              "timestamp": "2026-10-11T09:30:00.000Z",
              "data": {
                "object": "meeting",
                "id": "mtg_5uF4g2Xu1i0qz3yAp0CP7W",
                "status": "ready",
                "archived": false,
                "minutes_status": "ready",
                "minutes_version": 2,
                "run_id": "f122ed73-1ae0-5816-8fe0-814cdde13471"
              }
            }
          ],
          "has_more": false,
          "next_cursor": "ev1.4821.9917"
        },
        "properties": {
          "object": {
            "const": "list",
            "description": "Always `list`.",
            "enum": [
              "list"
            ],
            "type": "string"
          },
          "data": {
            "description": "The items of this page.",
            "items": {
              "$ref": "#/components/schemas/Event"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether more items follow. Keep paging while this is true.",
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Cursor for the next request. Always present in the event stream, also when `has_more` is false.",
            "maxLength": 128,
            "type": "string"
          }
        },
        "required": [
          "object",
          "data",
          "has_more",
          "next_cursor"
        ],
        "type": "object"
      },
      "ImportError": {
        "description": "Why an import failed.",
        "properties": {
          "code": {
            "description": "Stable error code. Unknown internal codes are reported as `internal_error`.",
            "enum": [
              "video_unavailable",
              "video_private",
              "age_restricted",
              "video_too_long",
              "video_duration_unknown",
              "captions_unavailable",
              "download_failed",
              "transcription_failed",
              "transcription_timeout",
              "provider_limit",
              "insufficient_credits",
              "internal_error"
            ],
            "type": "string"
          },
          "message": {
            "description": "Explanation in the language of `Accept-Language`.",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "LibraryImport": {
        "description": "An asynchronous import of a YouTube video into the library. `succeeded`, `failed` and `canceled` are final.",
        "example": {
          "id": "imp_6Mfj7Oxm4MfxGGmZRhiUQf",
          "object": "library_import",
          "status": "succeeded",
          "stage": null,
          "queue_position": null,
          "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
          "youtube_video_id": "dQw4w9WgXcQ",
          "language": null,
          "reused": true,
          "transcript_id": "trn_ZFF3NHc5V2dYY1E",
          "error": null,
          "created_at": "2026-10-11T09:30:00.000Z",
          "updated_at": "2026-10-11T09:30:00.400Z",
          "completed_at": "2026-10-11T09:30:00.400Z"
        },
        "properties": {
          "id": {
            "description": "Public import ID (`imp_` prefix).",
            "maxLength": 26,
            "minLength": 26,
            "pattern": "^imp_[0-9A-Za-z]{22}$",
            "type": "string"
          },
          "object": {
            "const": "library_import",
            "description": "Always `library_import`.",
            "enum": [
              "library_import"
            ],
            "type": "string"
          },
          "status": {
            "description": "Import status.",
            "enum": [
              "queued",
              "processing",
              "canceling",
              "succeeded",
              "failed",
              "canceled"
            ],
            "type": "string"
          },
          "stage": {
            "anyOf": [
              {
                "enum": [
                  "captions",
                  "waiting",
                  "downloading",
                  "transcribing",
                  "summarizing"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Current stage; only while `processing`."
          },
          "queue_position": {
            "anyOf": [
              {
                "format": "int32",
                "maximum": 2147483647,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Position among your queued imports (1 = next); null when the import is not `queued`."
          },
          "url": {
            "description": "Canonical YouTube URL.",
            "format": "uri",
            "type": "string"
          },
          "youtube_video_id": {
            "description": "YouTube video ID.",
            "type": "string"
          },
          "language": {
            "anyOf": [
              {
                "enum": [
                  "lt",
                  "en"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Language hint that was sent, or null."
          },
          "reused": {
            "description": "True when the video was already in your library or in Diko's shared cache, so no credits were used.",
            "type": "boolean"
          },
          "transcript_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "minLength": 6,
                "pattern": "^trn_[A-Za-z0-9_-]+$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ID (`trn_` prefix) of the library transcript once the import has `succeeded`; otherwise null."
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ImportError"
              },
              {
                "type": "null"
              }
            ],
            "description": "Error details when the import `failed`; otherwise null."
          },
          "created_at": {
            "description": "When the import was created.",
            "format": "date-time",
            "maxLength": 24,
            "type": "string"
          },
          "updated_at": {
            "description": "When the import last changed.",
            "format": "date-time",
            "maxLength": 24,
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the import reached a final status; otherwise null."
          }
        },
        "required": [
          "id",
          "object",
          "status",
          "stage",
          "queue_position",
          "url",
          "youtube_video_id",
          "language",
          "reused",
          "transcript_id",
          "error",
          "created_at",
          "updated_at",
          "completed_at"
        ],
        "type": "object"
      },
      "LibraryImportList": {
        "description": "A page of imports from the last 90 days.",
        "example": {
          "object": "list",
          "data": [
            {
              "id": "imp_6Mfj7Oxm4MfxGGmZRhiUQf",
              "object": "library_import",
              "status": "succeeded",
              "stage": null,
              "queue_position": null,
              "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
              "youtube_video_id": "dQw4w9WgXcQ",
              "language": null,
              "reused": true,
              "transcript_id": "trn_ZFF3NHc5V2dYY1E",
              "error": null,
              "created_at": "2026-10-11T09:30:00.000Z",
              "updated_at": "2026-10-11T09:30:00.400Z",
              "completed_at": "2026-10-11T09:30:00.400Z"
            }
          ],
          "has_more": false,
          "next_cursor": null
        },
        "properties": {
          "object": {
            "const": "list",
            "description": "Always `list`.",
            "enum": [
              "list"
            ],
            "type": "string"
          },
          "data": {
            "description": "The items of this page.",
            "items": {
              "$ref": "#/components/schemas/LibraryImport"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether more items follow. Keep paging while this is true.",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cursor for the next page, or null when `has_more` is false."
          }
        },
        "required": [
          "object",
          "data",
          "has_more",
          "next_cursor"
        ],
        "type": "object"
      },
      "LibrarySummary": {
        "description": "Summary of a library transcript.",
        "properties": {
          "status": {
            "description": "Summary status.",
            "enum": [
              "pending",
              "ready",
              "failed",
              "unavailable"
            ],
            "type": "string"
          },
          "text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Summary text. Null in list items and until the summary is ready."
          }
        },
        "required": [
          "status",
          "text"
        ],
        "type": "object"
      },
      "LibraryTranscript": {
        "description": "A transcript in the library. List items have `summary.text` set to null and omit `chapters`.",
        "example": {
          "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"
        },
        "properties": {
          "id": {
            "description": "Public ID (`trn_` prefix).",
            "maxLength": 64,
            "minLength": 6,
            "pattern": "^trn_[A-Za-z0-9_-]+$",
            "type": "string"
          },
          "object": {
            "const": "library_transcript",
            "description": "Always `library_transcript`.",
            "enum": [
              "library_transcript"
            ],
            "type": "string"
          },
          "title": {
            "description": "Title.",
            "type": "string"
          },
          "source_type": {
            "description": "Where the transcript comes from.",
            "enum": [
              "youtube",
              "upload"
            ],
            "type": "string"
          },
          "youtube_video_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "YouTube video ID. Null for uploads."
          },
          "url": {
            "anyOf": [
              {
                "format": "uri",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Source URL. Null for uploads."
          },
          "channel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Channel name, if known."
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Language code, for example `lt`."
          },
          "duration_ms": {
            "anyOf": [
              {
                "format": "int64",
                "maximum": 9007199254740991,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Duration in milliseconds."
          },
          "transcription_method": {
            "anyOf": [
              {
                "enum": [
                  "captions",
                  "speech_recognition"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "How the text was produced: from captions or by speech recognition. Providers are not named."
          },
          "summary": {
            "$ref": "#/components/schemas/LibrarySummary",
            "description": "Summary state and text."
          },
          "chapters": {
            "description": "Chapters. Only in the single-transcript response.",
            "items": {
              "$ref": "#/components/schemas/Chapter"
            },
            "type": "array"
          },
          "categories": {
            "description": "Categories assigned in Diko.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "added_at": {
            "description": "When the transcript was added to your library.",
            "format": "date-time",
            "maxLength": 24,
            "type": "string"
          },
          "archived": {
            "description": "Whether the item is archived.",
            "type": "boolean"
          },
          "segment_count": {
            "description": "Number of transcript segments.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          },
          "revision": {
            "description": "Opaque token that changes whenever any segment changes.",
            "type": "string"
          },
          "web_url": {
            "description": "Link in the Diko app.",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "id",
          "object",
          "title",
          "source_type",
          "youtube_video_id",
          "url",
          "channel",
          "language",
          "duration_ms",
          "transcription_method",
          "summary",
          "categories",
          "added_at",
          "archived",
          "segment_count",
          "revision",
          "web_url"
        ],
        "type": "object"
      },
      "LibraryTranscriptList": {
        "description": "A page of library transcripts.",
        "example": {
          "object": "list",
          "data": [
            {
              "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": null
              },
              "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"
            }
          ],
          "has_more": false,
          "next_cursor": null
        },
        "properties": {
          "object": {
            "const": "list",
            "description": "Always `list`.",
            "enum": [
              "list"
            ],
            "type": "string"
          },
          "data": {
            "description": "The items of this page.",
            "items": {
              "$ref": "#/components/schemas/LibraryTranscript"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether more items follow. Keep paging while this is true.",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cursor for the next page, or null when `has_more` is false."
          }
        },
        "required": [
          "object",
          "data",
          "has_more",
          "next_cursor"
        ],
        "type": "object"
      },
      "Limits": {
        "description": "Limits that apply to the account.",
        "properties": {
          "rate": {
            "$ref": "#/components/schemas/RateLimits",
            "description": "Rate-limit policies."
          },
          "max_active_imports": {
            "description": "Most imports that may be active at once for the user.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          },
          "max_daily_imports": {
            "description": "Most imports the user may create per day.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "rate",
          "max_active_imports",
          "max_daily_imports"
        ],
        "type": "object"
      },
      "Me": {
        "description": "The key that made the request and the account behind it.",
        "example": {
          "object": "me",
          "api_key": {
            "id": "key_4Vf9771zpS8JcQdtUcR0u8",
            "object": "api_key",
            "name": "CRM sync",
            "description": "",
            "hint": "dk_live_Ab12…9xYz",
            "scopes": [
              "meetings:read",
              "library:write"
            ],
            "status": "active",
            "allowed_cidrs": [],
            "created_at": "2026-10-11T09:00:00.000Z",
            "expires_at": "2027-01-09T09:00:00.000Z",
            "last_used_at": null,
            "last_used_ip": null,
            "first_used_at": null,
            "disabled_at": null,
            "revoked_at": null,
            "revoked_reason": null,
            "rotated_from": null,
            "grace_until": null
          },
          "user": {
            "id": "usr_4iAD1dYhdAEJIkMN5GPczR",
            "object": "user",
            "email": "j***@example.com",
            "display_name": "Jonas"
          },
          "access": {
            "allowed": true,
            "reason": "subscription",
            "plan": "pro"
          },
          "credits": {
            "scope": "user",
            "available": "123.5000",
            "as_of": "2026-10-11T09:30:00.000Z"
          },
          "limits": {
            "rate": {
              "read": {
                "burst": 10,
                "per_second": 5
              },
              "write": {
                "burst": 5,
                "per_second": 1
              },
              "imports": {
                "burst": 5,
                "per_minute": 30
              },
              "account": {
                "burst": 20,
                "per_second": 10
              },
              "me": {
                "burst": 5,
                "per_second": 1
              },
              "export": {
                "burst": 10,
                "per_second": 1
              }
            },
            "max_active_imports": 10,
            "max_daily_imports": 500
          },
          "request": {
            "ip": null,
            "ip_trusted": false
          }
        },
        "properties": {
          "object": {
            "const": "me",
            "description": "Always `me`.",
            "enum": [
              "me"
            ],
            "type": "string"
          },
          "api_key": {
            "$ref": "#/components/schemas/ApiKey",
            "description": "The key used for this request."
          },
          "user": {
            "$ref": "#/components/schemas/User",
            "description": "The owning account."
          },
          "access": {
            "$ref": "#/components/schemas/Access",
            "description": "Whether the account may use the API."
          },
          "credits": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Credits"
              },
              {
                "type": "null"
              }
            ],
            "description": "Credit balance. Null unless the key has the `library:write` scope, the only scope that spends credits."
          },
          "limits": {
            "$ref": "#/components/schemas/Limits",
            "description": "Limits that apply."
          },
          "request": {
            "$ref": "#/components/schemas/RequestInfo",
            "description": "How this request was seen."
          }
        },
        "required": [
          "object",
          "api_key",
          "user",
          "access",
          "credits",
          "limits",
          "request"
        ],
        "type": "object"
      },
      "Meeting": {
        "description": "A meeting. List items omit `participants`, `speakers` and `counts`; fetch the single meeting for them.",
        "example": {
          "id": "mtg_5uF4g2Xu1i0qz3yAp0CP7W",
          "object": "meeting",
          "title": "Pardavimų aptarimas",
          "language": "lt",
          "status": "ready",
          "archived": false,
          "created_at": "2026-10-11T08:00:00.000Z",
          "updated_at": "2026-10-11T09:30:00.000Z",
          "started_at": null,
          "duration_ms": 3541000,
          "web_url": "https://studio.diko.app/meetings/c2171dae-bbc2-53b3-92b9-ba8c37850ff6",
          "processing": {
            "status": "complete",
            "progress": 1,
            "error": null
          },
          "transcript": {
            "status": "ready",
            "revision": "r_1bedcb71b3a1fdc6bfeeb92054fc6f92",
            "segment_count": 412,
            "has_pending_edits": false
          },
          "minutes": {
            "status": "ready",
            "version": 2,
            "verification_status": "verified"
          },
          "participants": [
            {
              "id": "prt_6LwrMxamyJTo9VWwrFAvXU",
              "object": "participant",
              "name": "Jonas",
              "email": "jonas@example.com",
              "role": null
            }
          ],
          "speakers": [
            {
              "id": "spk_0deCHcpckGv0OnXkWw7nUx",
              "object": "speaker",
              "label": "SPEAKER_00",
              "name": "Jonas"
            }
          ],
          "counts": {
            "participants": 3,
            "speakers": 2,
            "action_items": 5,
            "comments": 1
          }
        },
        "properties": {
          "id": {
            "description": "Public meeting ID (`mtg_` prefix).",
            "maxLength": 26,
            "minLength": 26,
            "pattern": "^mtg_[0-9A-Za-z]{22}$",
            "type": "string"
          },
          "object": {
            "const": "meeting",
            "description": "Always `meeting`.",
            "enum": [
              "meeting"
            ],
            "type": "string"
          },
          "title": {
            "description": "Meeting title.",
            "type": "string"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Language code of the meeting, for example `lt`."
          },
          "status": {
            "description": "Derived status. Archived meetings keep the status of their latest processing run.",
            "enum": [
              "draft",
              "recording",
              "uploaded",
              "processing",
              "ready",
              "failed"
            ],
            "type": "string"
          },
          "archived": {
            "description": "Whether the meeting is archived.",
            "type": "boolean"
          },
          "created_at": {
            "description": "When the meeting was created.",
            "format": "date-time",
            "maxLength": 24,
            "type": "string"
          },
          "updated_at": {
            "description": "When the meeting was last changed.",
            "format": "date-time",
            "maxLength": 24,
            "type": "string"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Real start time, or null while unknown. It is not aliased to `created_at`."
          },
          "duration_ms": {
            "anyOf": [
              {
                "format": "int64",
                "maximum": 9007199254740991,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Duration in milliseconds, or null."
          },
          "web_url": {
            "description": "Link to the meeting in the Diko app.",
            "format": "uri",
            "type": "string"
          },
          "processing": {
            "$ref": "#/components/schemas/MeetingProcessing",
            "description": "Latest processing run."
          },
          "transcript": {
            "$ref": "#/components/schemas/MeetingTranscriptInfo",
            "description": "Transcript summary."
          },
          "minutes": {
            "$ref": "#/components/schemas/MeetingMinutesInfo",
            "description": "Minutes summary."
          },
          "participants": {
            "description": "Participants. Only in the single-meeting response.",
            "items": {
              "$ref": "#/components/schemas/Participant"
            },
            "type": "array"
          },
          "speakers": {
            "description": "Speakers. Only in the single-meeting response.",
            "items": {
              "$ref": "#/components/schemas/Speaker"
            },
            "type": "array"
          },
          "counts": {
            "$ref": "#/components/schemas/MeetingCounts",
            "description": "Counts. Only in the single-meeting response."
          }
        },
        "required": [
          "id",
          "object",
          "title",
          "language",
          "status",
          "archived",
          "created_at",
          "updated_at",
          "started_at",
          "duration_ms",
          "web_url",
          "processing",
          "transcript",
          "minutes"
        ],
        "type": "object"
      },
      "MeetingCounts": {
        "description": "Counts of related items.",
        "properties": {
          "participants": {
            "description": "Number of participants.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          },
          "speakers": {
            "description": "Number of speakers.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          },
          "action_items": {
            "description": "Number of action items.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          },
          "comments": {
            "description": "Number of comments.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "participants",
          "speakers",
          "action_items",
          "comments"
        ],
        "type": "object"
      },
      "MeetingList": {
        "description": "A page of meetings.",
        "example": {
          "object": "list",
          "data": [
            {
              "id": "mtg_5uF4g2Xu1i0qz3yAp0CP7W",
              "object": "meeting",
              "title": "Pardavimų aptarimas",
              "language": "lt",
              "status": "ready",
              "archived": false,
              "created_at": "2026-10-11T08:00:00.000Z",
              "updated_at": "2026-10-11T09:30:00.000Z",
              "started_at": null,
              "duration_ms": 3541000,
              "web_url": "https://studio.diko.app/meetings/c2171dae-bbc2-53b3-92b9-ba8c37850ff6",
              "processing": {
                "status": "complete",
                "progress": 1,
                "error": null
              },
              "transcript": {
                "status": "ready",
                "revision": "r_1bedcb71b3a1fdc6bfeeb92054fc6f92",
                "segment_count": 412,
                "has_pending_edits": false
              },
              "minutes": {
                "status": "ready",
                "version": 2,
                "verification_status": "verified"
              }
            }
          ],
          "has_more": false,
          "next_cursor": null
        },
        "properties": {
          "object": {
            "const": "list",
            "description": "Always `list`.",
            "enum": [
              "list"
            ],
            "type": "string"
          },
          "data": {
            "description": "The items of this page.",
            "items": {
              "$ref": "#/components/schemas/Meeting"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether more items follow. Keep paging while this is true.",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cursor for the next page, or null when `has_more` is false."
          }
        },
        "required": [
          "object",
          "data",
          "has_more",
          "next_cursor"
        ],
        "type": "object"
      },
      "MeetingMinutesInfo": {
        "description": "Summary of the minutes of the meeting.",
        "properties": {
          "status": {
            "description": "Minutes status.",
            "enum": [
              "none",
              "generating",
              "ready",
              "failed",
              "insufficient",
              "unavailable"
            ],
            "type": "string"
          },
          "version": {
            "anyOf": [
              {
                "format": "int32",
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Version number of the latest ready minutes."
          },
          "verification_status": {
            "anyOf": [
              {
                "enum": [
                  "verified",
                  "repaired",
                  "unverified"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Result of the evidence check: verified, repaired after a second pass, or unverified."
          }
        },
        "required": [
          "status",
          "version",
          "verification_status"
        ],
        "type": "object"
      },
      "MeetingProcessing": {
        "description": "State of the latest processing run.",
        "properties": {
          "status": {
            "anyOf": [
              {
                "enum": [
                  "queued",
                  "transcribing",
                  "diarizing",
                  "summarizing",
                  "complete",
                  "failed",
                  "canceled"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Processing status, or null when no run exists."
          },
          "progress": {
            "anyOf": [
              {
                "maximum": 1,
                "minimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Progress from 0 to 1, or null."
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProcessingError"
              },
              {
                "type": "null"
              }
            ],
            "description": "Error details when processing failed."
          }
        },
        "required": [
          "status",
          "progress",
          "error"
        ],
        "type": "object"
      },
      "MeetingTranscriptInfo": {
        "description": "Summary of the transcript of the meeting.",
        "properties": {
          "status": {
            "description": "Transcript status.",
            "enum": [
              "none",
              "processing",
              "ready"
            ],
            "type": "string"
          },
          "revision": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Opaque token that changes whenever any segment changes."
          },
          "segment_count": {
            "description": "Number of segments.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          },
          "has_pending_edits": {
            "description": "Whether grammar suggestions are waiting for approval in Diko.",
            "type": "boolean"
          }
        },
        "required": [
          "status",
          "revision",
          "segment_count",
          "has_pending_edits"
        ],
        "type": "object"
      },
      "Minutes": {
        "description": "The meeting minutes. The latest ready version is returned; when none exists the status explains why.",
        "example": {
          "object": "minutes",
          "meeting_id": "mtg_5uF4g2Xu1i0qz3yAp0CP7W",
          "status": "ready",
          "reason": null,
          "version": 2,
          "generated_at": "2026-10-11T09:30:00.000Z",
          "language": "lt",
          "summary": "Aptartas pasiūlymo kainodaros pakeitimas ir kiti žingsniai iki mėnesio pabaigos.",
          "key_points": [
            {
              "text": "Nauja kainodara įsigalioja nuo lapkričio 1 d.",
              "timestamps_ms": []
            }
          ],
          "decisions": [
            {
              "text": "Pasiūlymą klientui išsiunčiame šią savaitę.",
              "timestamps_ms": [
                754000
              ]
            }
          ],
          "action_items": [
            {
              "object": "action_item",
              "id": null,
              "source": "generated",
              "text": "Išsiųsti pasiūlymą",
              "description": null,
              "status": "open",
              "assignee_name": "Jonas",
              "due_text": null,
              "due_at": null,
              "timestamps_ms": [],
              "created_at": null
            }
          ],
          "open_questions": [
            {
              "text": "Ar nuolaida taikoma ir esamiems klientams?",
              "timestamps_ms": []
            }
          ],
          "sections": [
            {
              "title": "Kainodara",
              "content": "Kainos peržiūrimos kartą per ketvirtį.\nNuolaidos taikomos nuo trečios licencijos."
            }
          ],
          "verification_status": "verified"
        },
        "properties": {
          "object": {
            "const": "minutes",
            "description": "Always `minutes`.",
            "enum": [
              "minutes"
            ],
            "type": "string"
          },
          "meeting_id": {
            "description": "ID of the meeting.",
            "maxLength": 26,
            "minLength": 26,
            "pattern": "^mtg_[0-9A-Za-z]{22}$",
            "type": "string"
          },
          "status": {
            "description": "Minutes status.",
            "enum": [
              "none",
              "generating",
              "ready",
              "failed",
              "insufficient",
              "unavailable"
            ],
            "type": "string"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Reason when the status is `insufficient`."
          },
          "version": {
            "anyOf": [
              {
                "format": "int32",
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Version number."
          },
          "generated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "maxLength": 24,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When this version was generated."
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Language of the minutes."
          },
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Summary text."
          },
          "key_points": {
            "description": "Key points.",
            "items": {
              "$ref": "#/components/schemas/MinutesItem"
            },
            "type": "array"
          },
          "decisions": {
            "description": "Decisions.",
            "items": {
              "$ref": "#/components/schemas/MinutesItem"
            },
            "type": "array"
          },
          "action_items": {
            "description": "Generated action items.",
            "items": {
              "$ref": "#/components/schemas/ActionItem"
            },
            "type": "array"
          },
          "open_questions": {
            "description": "Open questions.",
            "items": {
              "$ref": "#/components/schemas/MinutesItem"
            },
            "type": "array"
          },
          "sections": {
            "description": "Additional sections.",
            "items": {
              "$ref": "#/components/schemas/MinutesSection"
            },
            "type": "array"
          },
          "verification_status": {
            "anyOf": [
              {
                "enum": [
                  "verified",
                  "repaired",
                  "unverified"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Result of the evidence check."
          }
        },
        "required": [
          "object",
          "meeting_id",
          "status",
          "reason",
          "version",
          "generated_at",
          "language",
          "summary",
          "key_points",
          "decisions",
          "action_items",
          "open_questions",
          "sections",
          "verification_status"
        ],
        "type": "object"
      },
      "MinutesItem": {
        "description": "A statement in the minutes with the moments it comes from.",
        "properties": {
          "text": {
            "description": "The statement.",
            "type": "string"
          },
          "timestamps_ms": {
            "description": "Moments in the recording that support the statement, in milliseconds.",
            "items": {
              "format": "int64",
              "maximum": 9007199254740991,
              "minimum": 0,
              "type": "integer"
            },
            "type": "array"
          }
        },
        "required": [
          "text",
          "timestamps_ms"
        ],
        "type": "object"
      },
      "MinutesSection": {
        "description": "A titled section of the minutes.",
        "properties": {
          "title": {
            "description": "Section title.",
            "type": "string"
          },
          "content": {
            "description": "Section text.",
            "type": "string"
          }
        },
        "required": [
          "title",
          "content"
        ],
        "type": "object"
      },
      "Participant": {
        "description": "A person invited to or detected in the meeting.",
        "properties": {
          "id": {
            "description": "Public participant ID (`prt_` prefix).",
            "maxLength": 26,
            "minLength": 26,
            "pattern": "^prt_[0-9A-Za-z]{22}$",
            "type": "string"
          },
          "object": {
            "const": "participant",
            "description": "Always `participant`.",
            "enum": [
              "participant"
            ],
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Participant name."
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Participant e-mail address, if known."
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Participant role, if known."
          }
        },
        "required": [
          "id",
          "object",
          "name",
          "email",
          "role"
        ],
        "type": "object"
      },
      "ProcessingError": {
        "description": "Why processing failed.",
        "properties": {
          "code": {
            "description": "Stable error code. Unknown internal codes are reported as `internal_error`.",
            "enum": [
              "upload_unavailable",
              "audio_invalid",
              "audio_too_long",
              "transcription_failed",
              "transcription_timeout",
              "provider_limit",
              "canceled",
              "internal_error"
            ],
            "type": "string"
          },
          "message": {
            "description": "Explanation in the language of `Accept-Language`. Never an internal error text.",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "RateLimitBucket": {
        "description": "Token bucket of one rate-limit policy.",
        "properties": {
          "burst": {
            "description": "Bucket capacity: how many requests may be sent at once.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          },
          "per_second": {
            "anyOf": [
              {
                "format": "int32",
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Refill rate in tokens per second, when the policy refills per second."
          },
          "per_minute": {
            "anyOf": [
              {
                "format": "int32",
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Refill rate in tokens per minute, when the policy refills per minute."
          }
        },
        "required": [
          "burst"
        ],
        "type": "object"
      },
      "RateLimits": {
        "description": "Rate-limit policies that apply to the key.",
        "properties": {
          "read": {
            "$ref": "#/components/schemas/RateLimitBucket",
            "description": "Policy `read`, per API key."
          },
          "write": {
            "$ref": "#/components/schemas/RateLimitBucket",
            "description": "Policy `write`, per API key."
          },
          "imports": {
            "$ref": "#/components/schemas/RateLimitBucket",
            "description": "Policy `imports`, per API key."
          },
          "account": {
            "$ref": "#/components/schemas/RateLimitBucket",
            "description": "Policy `account`, shared by all keys and members of the billing tenant: the paying team on a team plan, otherwise the user."
          },
          "me": {
            "$ref": "#/components/schemas/RateLimitBucket",
            "description": "Policy `me`, per API key; applies to `GET /me` only."
          },
          "export": {
            "$ref": "#/components/schemas/RateLimitBucket",
            "description": "Policy `export`, shared by all keys and members of the billing tenant (the paying team on a team plan, otherwise the user); applies to transcripts with `format=text`, `srt` or `vtt`."
          }
        },
        "required": [
          "read",
          "write",
          "imports",
          "account",
          "me",
          "export"
        ],
        "type": "object"
      },
      "RequestInfo": {
        "description": "How Diko saw this request, for debugging IP allowlists.",
        "properties": {
          "ip": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Client IP as seen by Diko, or null when it cannot be determined reliably."
          },
          "ip_trusted": {
            "description": "Whether the IP comes from a trusted proxy chain. IP allowlists need a trusted IP.",
            "type": "boolean"
          }
        },
        "required": [
          "ip",
          "ip_trusted"
        ],
        "type": "object"
      },
      "SegmentSpeaker": {
        "description": "Speaker of a transcript segment.",
        "properties": {
          "id": {
            "anyOf": [
              {
                "maxLength": 26,
                "minLength": 26,
                "pattern": "^spk_[0-9A-Za-z]{22}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Speaker ID. Null for library transcripts, which have no speaker records."
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Automatic speaker label."
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Speaker name, if assigned."
          }
        },
        "required": [
          "id",
          "label",
          "name"
        ],
        "type": "object"
      },
      "Speaker": {
        "description": "A speaker the recording was split into.",
        "properties": {
          "id": {
            "description": "Public speaker ID (`spk_` prefix).",
            "maxLength": 26,
            "minLength": 26,
            "pattern": "^spk_[0-9A-Za-z]{22}$",
            "type": "string"
          },
          "object": {
            "const": "speaker",
            "description": "Always `speaker`.",
            "enum": [
              "speaker"
            ],
            "type": "string"
          },
          "label": {
            "description": "Automatic label such as `SPEAKER_00`.",
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Name assigned to the speaker, if any."
          }
        },
        "required": [
          "id",
          "object",
          "label",
          "name"
        ],
        "type": "object"
      },
      "TranscriptSegment": {
        "description": "One timed piece of the transcript.",
        "example": {
          "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
        },
        "properties": {
          "object": {
            "const": "transcript_segment",
            "description": "Always `transcript_segment`.",
            "enum": [
              "transcript_segment"
            ],
            "type": "string"
          },
          "index": {
            "description": "Zero-based position of the segment in the transcript.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          },
          "start_ms": {
            "description": "Start in milliseconds from the beginning of the recording.",
            "format": "int64",
            "maximum": 9007199254740991,
            "minimum": 0,
            "type": "integer"
          },
          "end_ms": {
            "description": "End in milliseconds from the beginning of the recording.",
            "format": "int64",
            "maximum": 9007199254740991,
            "minimum": 0,
            "type": "integer"
          },
          "speaker": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SegmentSpeaker"
              },
              {
                "type": "null"
              }
            ],
            "description": "Who spoke, or null when unknown."
          },
          "text": {
            "description": "Approved text. A pending grammar suggestion is never included.",
            "type": "string"
          },
          "edited": {
            "description": "Whether the text was edited after transcription.",
            "type": "boolean"
          },
          "has_pending_edit": {
            "description": "Whether a grammar suggestion waits for approval in Diko.",
            "type": "boolean"
          }
        },
        "required": [
          "object",
          "index",
          "start_ms",
          "end_ms",
          "speaker",
          "text",
          "edited",
          "has_pending_edit"
        ],
        "type": "object"
      },
      "TranscriptSegmentList": {
        "description": "A page of transcript segments with the transcript revision.",
        "example": {
          "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"
        },
        "properties": {
          "object": {
            "const": "list",
            "description": "Always `list`.",
            "enum": [
              "list"
            ],
            "type": "string"
          },
          "data": {
            "description": "The items of this page.",
            "items": {
              "$ref": "#/components/schemas/TranscriptSegment"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether more items follow. Keep paging while this is true.",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cursor for the next page, or null when `has_more` is false."
          },
          "revision": {
            "description": "Revision of the transcript. Paging is tied to it; a change returns 409 `transcript_changed`.",
            "type": "string"
          }
        },
        "required": [
          "object",
          "data",
          "has_more",
          "next_cursor",
          "revision"
        ],
        "type": "object"
      },
      "User": {
        "description": "The account that owns the key.",
        "properties": {
          "id": {
            "description": "Public user ID (`usr_` prefix).",
            "maxLength": 26,
            "minLength": 26,
            "pattern": "^usr_[0-9A-Za-z]{22}$",
            "type": "string"
          },
          "object": {
            "const": "user",
            "description": "Always `user`.",
            "enum": [
              "user"
            ],
            "type": "string"
          },
          "email": {
            "description": "Account e-mail address, masked (for example `j***@example.com`). The full address is never returned to an API key.",
            "type": "string"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Display name, if set."
          }
        },
        "required": [
          "id",
          "object",
          "email",
          "display_name"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "bearerFormat": "dk_live_…",
        "description": "Send the API key as `Authorization: Bearer <key>`. No other transport is accepted.",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "contact": {
      "name": "Diko",
      "url": "https://diko.app"
    },
    "description": "The Diko public API v1. Read your meetings (metadata, transcripts, minutes, action items) and your YouTube library, import YouTube videos, and follow changes through webhooks or the event stream. Authenticate with an API key created in the Diko app.",
    "summary": "Read meetings and the YouTube library, import YouTube videos and receive events.",
    "title": "Diko API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/": {
      "get": {
        "description": "Returns the API name, version and links to the documentation and the OpenAPI document. No API key is needed. The request is not rate limited, so the response carries no rate-limit headers.",
        "operationId": "getApiIndex",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "object": "api",
                  "version": "v1",
                  "docs_url": "https://diko.app/en/api-docs",
                  "openapi_url": "https://api.diko.app/api/v1/openapi.json"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiIndex"
                }
              }
            },
            "description": "The API index.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "security": [],
        "summary": "Get the API index",
        "tags": [
          "Account"
        ],
        "x-error-codes": [
          "api_disabled",
          "internal_error"
        ],
        "x-rate-limit-policy": [],
        "x-required-scopes": []
      }
    },
    "/me": {
      "get": {
        "description": "Returns the key used for the request, the account behind it, whether the account may use the API, the credit balance, the limits and how the request was seen. It works for any valid key, even when the plan does not include the API, so it is the right call for diagnosing access problems. The account e-mail is always masked, and the credit balance is returned only when the key has the `library:write` scope (it is null otherwise). It has its own limit of one request per second (a burst of five is allowed).",
        "operationId": "getMe",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "object": "me",
                  "api_key": {
                    "id": "key_4Vf9771zpS8JcQdtUcR0u8",
                    "object": "api_key",
                    "name": "CRM sync",
                    "description": "",
                    "hint": "dk_live_Ab12…9xYz",
                    "scopes": [
                      "meetings:read",
                      "library:write"
                    ],
                    "status": "active",
                    "allowed_cidrs": [],
                    "created_at": "2026-10-11T09:00:00.000Z",
                    "expires_at": "2027-01-09T09:00:00.000Z",
                    "last_used_at": null,
                    "last_used_ip": null,
                    "first_used_at": null,
                    "disabled_at": null,
                    "revoked_at": null,
                    "revoked_reason": null,
                    "rotated_from": null,
                    "grace_until": null
                  },
                  "user": {
                    "id": "usr_4iAD1dYhdAEJIkMN5GPczR",
                    "object": "user",
                    "email": "j***@example.com",
                    "display_name": "Jonas"
                  },
                  "access": {
                    "allowed": true,
                    "reason": "subscription",
                    "plan": "pro"
                  },
                  "credits": {
                    "scope": "user",
                    "available": "123.5000",
                    "as_of": "2026-10-11T09:30:00.000Z"
                  },
                  "limits": {
                    "rate": {
                      "read": {
                        "burst": 10,
                        "per_second": 5
                      },
                      "write": {
                        "burst": 5,
                        "per_second": 1
                      },
                      "imports": {
                        "burst": 5,
                        "per_minute": 30
                      },
                      "account": {
                        "burst": 20,
                        "per_second": 10
                      },
                      "me": {
                        "burst": 5,
                        "per_second": 1
                      },
                      "export": {
                        "burst": 10,
                        "per_second": 1
                      }
                    },
                    "max_active_imports": 10,
                    "max_daily_imports": 500
                  },
                  "request": {
                    "ip": null,
                    "ip_trusted": false
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Me"
                }
              }
            },
            "description": "The key, the account and its limits.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Get the current key and account",
        "tags": [
          "Account"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account",
          "me"
        ],
        "x-required-scopes": []
      }
    },
    "/meetings": {
      "get": {
        "description": "Returns your meetings, newest first by default. Archived meetings are hidden unless `archived` says otherwise. List items omit `participants`, `speakers` and `counts`; fetch one meeting to get them. Every item carries the current `transcript.revision`, which takes time proportional to the length of its transcript, so pages of very long meetings answer slower: use a smaller `limit` when you walk your whole history.",
        "operationId": "listMeetings",
        "parameters": [
          {
            "description": "Filter by derived status. Repeat the parameter to match several (`status=ready&status=failed`).",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "draft",
                  "recording",
                  "uploaded",
                  "processing",
                  "ready",
                  "failed"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "description": "Return active (`false`), archived (`true`) or all (`all`) items.",
            "in": "query",
            "name": "archived",
            "required": false,
            "schema": {
              "default": "false",
              "enum": [
                "false",
                "true",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only meetings created after this moment (exclusive). RFC 3339 date or date-time. Compared in milliseconds, like the timestamps in responses, so passing back a returned timestamp never returns that same item again.",
            "in": "query",
            "name": "created_after",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date"
                },
                {
                  "format": "date-time"
                }
              ],
              "example": "2026-10-11T09:30:00.000Z",
              "maxLength": 64,
              "type": "string"
            }
          },
          {
            "description": "Only meetings created before this moment (exclusive). RFC 3339 date or date-time. Compared in milliseconds, like the timestamps in responses, so passing back a returned timestamp never returns that same item again.",
            "in": "query",
            "name": "created_before",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date"
                },
                {
                  "format": "date-time"
                }
              ],
              "example": "2026-10-11T09:30:00.000Z",
              "maxLength": 64,
              "type": "string"
            }
          },
          {
            "description": "Only meetings changed after this moment (exclusive). RFC 3339 date or date-time. Compared in milliseconds, like the timestamps in responses, so passing back a returned timestamp never returns that same item again.",
            "in": "query",
            "name": "updated_after",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date"
                },
                {
                  "format": "date-time"
                }
              ],
              "example": "2026-10-11T09:30:00.000Z",
              "maxLength": 64,
              "type": "string"
            }
          },
          {
            "description": "Search in the title.",
            "in": "query",
            "name": "q",
            "required": false,
            "schema": {
              "maxLength": 200,
              "type": "string"
            }
          },
          {
            "description": "Field to sort by.",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "created_at",
              "enum": [
                "created_at",
                "updated_at"
              ],
              "type": "string"
            }
          },
          {
            "description": "Sort direction.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "desc",
                "asc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Page size, from 1 to 100. Default 20. Follow `has_more`, not the page size.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "data": [
                    {
                      "id": "mtg_5uF4g2Xu1i0qz3yAp0CP7W",
                      "object": "meeting",
                      "title": "Pardavimų aptarimas",
                      "language": "lt",
                      "status": "ready",
                      "archived": false,
                      "created_at": "2026-10-11T08:00:00.000Z",
                      "updated_at": "2026-10-11T09:30:00.000Z",
                      "started_at": null,
                      "duration_ms": 3541000,
                      "web_url": "https://studio.diko.app/meetings/c2171dae-bbc2-53b3-92b9-ba8c37850ff6",
                      "processing": {
                        "status": "complete",
                        "progress": 1,
                        "error": null
                      },
                      "transcript": {
                        "status": "ready",
                        "revision": "r_1bedcb71b3a1fdc6bfeeb92054fc6f92",
                        "segment_count": 412,
                        "has_pending_edits": false
                      },
                      "minutes": {
                        "status": "ready",
                        "version": 2,
                        "verification_status": "verified"
                      }
                    }
                  ],
                  "has_more": false,
                  "next_cursor": null
                },
                "schema": {
                  "$ref": "#/components/schemas/MeetingList"
                }
              }
            },
            "description": "A page of meetings.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "List meetings",
        "tags": [
          "Meetings"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "invalid_parameter",
          "invalid_cursor",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-required-scopes": [
          "meetings:read"
        ]
      }
    },
    "/meetings/{meeting_id}": {
      "get": {
        "description": "Returns one meeting with its participants, speakers and counts. A meeting that is not yours returns 404, never 403.",
        "operationId": "getMeeting",
        "parameters": [
          {
            "description": "Public meeting ID (`mtg_` prefix).",
            "in": "path",
            "name": "meeting_id",
            "required": true,
            "schema": {
              "example": "mtg_0aZ1bY2cX3dW4eV5fU6gT7",
              "maxLength": 26,
              "minLength": 26,
              "pattern": "^mtg_[0-9A-Za-z]{22}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "mtg_5uF4g2Xu1i0qz3yAp0CP7W",
                  "object": "meeting",
                  "title": "Pardavimų aptarimas",
                  "language": "lt",
                  "status": "ready",
                  "archived": false,
                  "created_at": "2026-10-11T08:00:00.000Z",
                  "updated_at": "2026-10-11T09:30:00.000Z",
                  "started_at": null,
                  "duration_ms": 3541000,
                  "web_url": "https://studio.diko.app/meetings/c2171dae-bbc2-53b3-92b9-ba8c37850ff6",
                  "processing": {
                    "status": "complete",
                    "progress": 1,
                    "error": null
                  },
                  "transcript": {
                    "status": "ready",
                    "revision": "r_1bedcb71b3a1fdc6bfeeb92054fc6f92",
                    "segment_count": 412,
                    "has_pending_edits": false
                  },
                  "minutes": {
                    "status": "ready",
                    "version": 2,
                    "verification_status": "verified"
                  },
                  "participants": [
                    {
                      "id": "prt_6LwrMxamyJTo9VWwrFAvXU",
                      "object": "participant",
                      "name": "Jonas",
                      "email": "jonas@example.com",
                      "role": null
                    }
                  ],
                  "speakers": [
                    {
                      "id": "spk_0deCHcpckGv0OnXkWw7nUx",
                      "object": "speaker",
                      "label": "SPEAKER_00",
                      "name": "Jonas"
                    }
                  ],
                  "counts": {
                    "participants": 3,
                    "speakers": 2,
                    "action_items": 5,
                    "comments": 1
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Meeting"
                }
              }
            },
            "description": "The meeting.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Get a meeting",
        "tags": [
          "Meetings"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "not_found",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-required-scopes": [
          "meetings:read"
        ]
      }
    },
    "/meetings/{meeting_id}/transcript": {
      "get": {
        "description": "Returns the approved transcript. `format=json` (the default) pages through segments and puts `revision` in the list envelope; the cursor is tied to the revision, so a change returns 409 `transcript_changed`. `text`, `srt` and `vtt` return the whole transcript as a file-like body and use the stricter `export` policy. While the transcript does not exist yet the call returns 409 `resource_not_ready`. Text lines look like `[HH:MM:SS] Name: text`.",
        "operationId": "getMeetingTranscript",
        "parameters": [
          {
            "description": "Public meeting ID (`mtg_` prefix).",
            "in": "path",
            "name": "meeting_id",
            "required": true,
            "schema": {
              "example": "mtg_0aZ1bY2cX3dW4eV5fU6gT7",
              "maxLength": 26,
              "minLength": 26,
              "pattern": "^mtg_[0-9A-Za-z]{22}$",
              "type": "string"
            }
          },
          {
            "description": "Response format: paged JSON, plain text, SubRip or WebVTT.",
            "in": "query",
            "name": "format",
            "required": false,
            "schema": {
              "default": "json",
              "enum": [
                "json",
                "text",
                "srt",
                "vtt"
              ],
              "type": "string"
            }
          },
          {
            "description": "Page size, from 1 to 1000. Default 200. Follow `has_more`, not the page size.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 200,
              "format": "int32",
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "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"
                },
                "schema": {
                  "$ref": "#/components/schemas/TranscriptSegmentList"
                }
              },
              "application/x-subrip": {
                "example": "1\n00:00:01,200 --> 00:00:05,400\nJonas: Labas rytas.\n",
                "schema": {
                  "type": "string"
                }
              },
              "text/plain": {
                "example": "[00:00:01] Jonas: Labas rytas.\n[00:00:05] Rūta: Labas, pradėkime.",
                "schema": {
                  "type": "string"
                }
              },
              "text/vtt": {
                "example": "WEBVTT\n\n00:00:01.200 --> 00:00:05.400\nJonas: Labas rytas.\n",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Transcript segments, or the whole transcript as text, SubRip or WebVTT.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Get a meeting transcript",
        "tags": [
          "Meetings"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "not_found",
          "invalid_parameter",
          "invalid_cursor",
          "resource_not_ready",
          "transcript_changed",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-rate-limit-policy-alternate": [
          "export"
        ],
        "x-required-scopes": [
          "meetings:read"
        ]
      }
    },
    "/meetings/{meeting_id}/minutes": {
      "get": {
        "description": "Returns the latest ready version of the minutes. When no ready version exists the response is still 200 and `status` explains why: `none`, `generating`, `failed`, `insufficient` or `unavailable`.",
        "operationId": "getMeetingMinutes",
        "parameters": [
          {
            "description": "Public meeting ID (`mtg_` prefix).",
            "in": "path",
            "name": "meeting_id",
            "required": true,
            "schema": {
              "example": "mtg_0aZ1bY2cX3dW4eV5fU6gT7",
              "maxLength": 26,
              "minLength": 26,
              "pattern": "^mtg_[0-9A-Za-z]{22}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "object": "minutes",
                  "meeting_id": "mtg_5uF4g2Xu1i0qz3yAp0CP7W",
                  "status": "ready",
                  "reason": null,
                  "version": 2,
                  "generated_at": "2026-10-11T09:30:00.000Z",
                  "language": "lt",
                  "summary": "Aptartas pasiūlymo kainodaros pakeitimas ir kiti žingsniai iki mėnesio pabaigos.",
                  "key_points": [
                    {
                      "text": "Nauja kainodara įsigalioja nuo lapkričio 1 d.",
                      "timestamps_ms": []
                    }
                  ],
                  "decisions": [
                    {
                      "text": "Pasiūlymą klientui išsiunčiame šią savaitę.",
                      "timestamps_ms": [
                        754000
                      ]
                    }
                  ],
                  "action_items": [
                    {
                      "object": "action_item",
                      "id": null,
                      "source": "generated",
                      "text": "Išsiųsti pasiūlymą",
                      "description": null,
                      "status": "open",
                      "assignee_name": "Jonas",
                      "due_text": null,
                      "due_at": null,
                      "timestamps_ms": [],
                      "created_at": null
                    }
                  ],
                  "open_questions": [
                    {
                      "text": "Ar nuolaida taikoma ir esamiems klientams?",
                      "timestamps_ms": []
                    }
                  ],
                  "sections": [
                    {
                      "title": "Kainodara",
                      "content": "Kainos peržiūrimos kartą per ketvirtį.\nNuolaidos taikomos nuo trečios licencijos."
                    }
                  ],
                  "verification_status": "verified"
                },
                "schema": {
                  "$ref": "#/components/schemas/Minutes"
                }
              }
            },
            "description": "The minutes.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Get meeting minutes",
        "tags": [
          "Meetings"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "not_found",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-required-scopes": [
          "meetings:read"
        ]
      }
    },
    "/meetings/{meeting_id}/action-items": {
      "get": {
        "description": "Returns the manual action items of the meeting and those generated in the latest ready minutes, in one shape. Filter with `source`.",
        "operationId": "listMeetingActionItems",
        "parameters": [
          {
            "description": "Public meeting ID (`mtg_` prefix).",
            "in": "path",
            "name": "meeting_id",
            "required": true,
            "schema": {
              "example": "mtg_0aZ1bY2cX3dW4eV5fU6gT7",
              "maxLength": 26,
              "minLength": 26,
              "pattern": "^mtg_[0-9A-Za-z]{22}$",
              "type": "string"
            }
          },
          {
            "description": "Return only manual or only generated items.",
            "in": "query",
            "name": "source",
            "required": false,
            "schema": {
              "enum": [
                "manual",
                "generated"
              ],
              "type": "string"
            }
          },
          {
            "description": "Page size, from 1 to 100. Default 20. Follow `has_more`, not the page size.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "data": [
                    {
                      "object": "action_item",
                      "id": "act_4VYK4CNn7WirPteKPtx17L",
                      "source": "manual",
                      "text": "Išsiųsti pasiūlymą",
                      "description": null,
                      "status": "open",
                      "assignee_name": "Jonas",
                      "due_text": null,
                      "due_at": "2026-10-17T00:00:00.000Z",
                      "timestamps_ms": [],
                      "created_at": "2026-10-11T09:31:00.000Z"
                    }
                  ],
                  "has_more": false,
                  "next_cursor": null
                },
                "schema": {
                  "$ref": "#/components/schemas/ActionItemList"
                }
              }
            },
            "description": "A page of action items.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "List meeting action items",
        "tags": [
          "Meetings"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "not_found",
          "invalid_parameter",
          "invalid_cursor",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-required-scopes": [
          "meetings:read"
        ]
      }
    },
    "/library/transcripts": {
      "get": {
        "description": "Returns the transcripts in your library, newest added first by default. List items have `summary.text` set to null and no `chapters`; fetch one transcript to get them.",
        "operationId": "listLibraryTranscripts",
        "parameters": [
          {
            "description": "Only transcripts from this source.",
            "in": "query",
            "name": "source_type",
            "required": false,
            "schema": {
              "enum": [
                "youtube",
                "upload"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return active (`false`), archived (`true`) or all (`all`) items.",
            "in": "query",
            "name": "archived",
            "required": false,
            "schema": {
              "default": "false",
              "enum": [
                "false",
                "true",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only items added after this moment (exclusive). RFC 3339 date or date-time. Compared in milliseconds, like the timestamps in responses, so passing back a returned timestamp never returns that same item again.",
            "in": "query",
            "name": "added_after",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date"
                },
                {
                  "format": "date-time"
                }
              ],
              "example": "2026-10-11T09:30:00.000Z",
              "maxLength": 64,
              "type": "string"
            }
          },
          {
            "description": "Only items added before this moment (exclusive). RFC 3339 date or date-time. Compared in milliseconds, like the timestamps in responses, so passing back a returned timestamp never returns that same item again.",
            "in": "query",
            "name": "added_before",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date"
                },
                {
                  "format": "date-time"
                }
              ],
              "example": "2026-10-11T09:30:00.000Z",
              "maxLength": 64,
              "type": "string"
            }
          },
          {
            "description": "Search in the title.",
            "in": "query",
            "name": "q",
            "required": false,
            "schema": {
              "maxLength": 200,
              "type": "string"
            }
          },
          {
            "description": "Sort direction.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "desc",
                "asc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Page size, from 1 to 100. Default 20. Follow `has_more`, not the page size.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "data": [
                    {
                      "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": null
                      },
                      "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"
                    }
                  ],
                  "has_more": false,
                  "next_cursor": null
                },
                "schema": {
                  "$ref": "#/components/schemas/LibraryTranscriptList"
                }
              }
            },
            "description": "A page of library transcripts, sorted by `added_at`.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "List library transcripts",
        "tags": [
          "Library"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "invalid_parameter",
          "invalid_cursor",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-required-scopes": [
          "library:read"
        ]
      }
    },
    "/library/transcripts/{transcript_id}": {
      "get": {
        "description": "Returns one library transcript with its summary and chapters.",
        "operationId": "getLibraryTranscript",
        "parameters": [
          {
            "description": "Public library transcript ID (`trn_` prefix).",
            "in": "path",
            "name": "transcript_id",
            "required": true,
            "schema": {
              "example": "trn_ZFF3NHc5V2dYY1E",
              "maxLength": 64,
              "minLength": 6,
              "pattern": "^trn_[A-Za-z0-9_-]+$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "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"
                },
                "schema": {
                  "$ref": "#/components/schemas/LibraryTranscript"
                }
              }
            },
            "description": "The library transcript.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Get a library transcript",
        "tags": [
          "Library"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "not_found",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-required-scopes": [
          "library:read"
        ]
      }
    },
    "/library/transcripts/{transcript_id}/transcript": {
      "get": {
        "description": "Returns the segments of a library transcript as paged JSON, or the whole text as `text`, `srt` or `vtt`. It works like the meeting transcript; segments have `speaker.id` set to null.",
        "operationId": "getLibraryTranscriptTranscript",
        "parameters": [
          {
            "description": "Public library transcript ID (`trn_` prefix).",
            "in": "path",
            "name": "transcript_id",
            "required": true,
            "schema": {
              "example": "trn_ZFF3NHc5V2dYY1E",
              "maxLength": 64,
              "minLength": 6,
              "pattern": "^trn_[A-Za-z0-9_-]+$",
              "type": "string"
            }
          },
          {
            "description": "Response format: paged JSON, plain text, SubRip or WebVTT.",
            "in": "query",
            "name": "format",
            "required": false,
            "schema": {
              "default": "json",
              "enum": [
                "json",
                "text",
                "srt",
                "vtt"
              ],
              "type": "string"
            }
          },
          {
            "description": "Page size, from 1 to 1000. Default 200. Follow `has_more`, not the page size.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 200,
              "format": "int32",
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "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"
                },
                "schema": {
                  "$ref": "#/components/schemas/TranscriptSegmentList"
                }
              },
              "application/x-subrip": {
                "example": "1\n00:00:01,200 --> 00:00:05,400\nLabas rytas.\n",
                "schema": {
                  "type": "string"
                }
              },
              "text/plain": {
                "example": "[00:00:01] Labas rytas.\n[00:00:05] Pradėkime.",
                "schema": {
                  "type": "string"
                }
              },
              "text/vtt": {
                "example": "WEBVTT\n\n00:00:01.200 --> 00:00:05.400\nLabas rytas.\n",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Transcript segments, or the whole transcript as text, SubRip or WebVTT.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Get the text of a library transcript",
        "tags": [
          "Library"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "not_found",
          "invalid_parameter",
          "invalid_cursor",
          "transcript_changed",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-rate-limit-policy-alternate": [
          "export"
        ],
        "x-required-scopes": [
          "library:read"
        ]
      }
    },
    "/library/imports": {
      "get": {
        "description": "Your imports from the last 90 days, newest first. Filter with the repeatable `status` parameter (`status=queued&status=processing`). Follow `has_more` and `next_cursor` to page.",
        "operationId": "listLibraryImports",
        "parameters": [
          {
            "description": "Only imports in these statuses: `queued`, `processing`, `canceling`, `succeeded`, `failed` or `canceled`. Repeat the parameter to match several.",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "queued",
                  "processing",
                  "canceling",
                  "succeeded",
                  "failed",
                  "canceled"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "description": "Page size, from 1 to 100. Default 20. Follow `has_more`, not the page size.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "data": [
                    {
                      "id": "imp_6Mfj7Oxm4MfxGGmZRhiUQf",
                      "object": "library_import",
                      "status": "succeeded",
                      "stage": null,
                      "queue_position": null,
                      "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
                      "youtube_video_id": "dQw4w9WgXcQ",
                      "language": null,
                      "reused": true,
                      "transcript_id": "trn_ZFF3NHc5V2dYY1E",
                      "error": null,
                      "created_at": "2026-10-11T09:30:00.000Z",
                      "updated_at": "2026-10-11T09:30:00.400Z",
                      "completed_at": "2026-10-11T09:30:00.400Z"
                    }
                  ],
                  "has_more": false,
                  "next_cursor": null
                },
                "schema": {
                  "$ref": "#/components/schemas/LibraryImportList"
                }
              }
            },
            "description": "A page of imports.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "List library imports",
        "tags": [
          "Imports"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "invalid_parameter",
          "invalid_cursor",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-required-scopes": [
          "library:read"
        ]
      },
      "post": {
        "description": "Queues a YouTube video for transcription and adds it to your library. The request never waits for the transcription: poll `GET /library/imports/{import_id}` (or subscribe to the `library.import.*` events) until `status` is `succeeded`, `failed` or `canceled`.\n\n* A video already in your library, or already transcribed by Diko, answers `201` with `reused: true` and costs no credits. It is still an import: it counts toward the daily limit.\n* An import of the same video that is still running answers `200` with that import.\n* Otherwise `201` with a `Location` header. Credits are checked now and again before paid work; when too many imports are queued, or the daily limit is reached, the answer is `429 queue_limit_exceeded` (`error.details.limit` says which limit).\n* A video without captions is transcribed by speech recognition in Diko's shared queue. Those jobs use the same per-user transcription slots as your own uploads in the app, but never the last free one (it stays available for your uploads and recordings), and may wait for a free slot; the import stays `queued` or `processing` meanwhile.\n* Revoking, disabling or deleting the API key that created an import, rotating it without an overlap period, or a revocation because of a leak cancels that key's imports that are still queued or running, and suspending API access does the same for the whole account: a queued import ends `canceled` at once, a running one becomes `canceling` and ends `canceled` when the work stops (event `library.import.canceled`). A rotation with a grace period leaves them running. Work already done is charged as usual.\n\nSend an `Idempotency-Key` header to make retries safe.",
        "operationId": "createLibraryImport",
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
                "language": "lt"
              },
              "schema": {
                "$ref": "#/components/schemas/CreateLibraryImportRequest"
              }
            }
          },
          "description": "The video to import.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "imp_6Mfj7Oxm4MfxGGmZRhiUQf",
                  "object": "library_import",
                  "status": "queued",
                  "stage": null,
                  "queue_position": 1,
                  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
                  "youtube_video_id": "dQw4w9WgXcQ",
                  "language": "lt",
                  "reused": false,
                  "transcript_id": null,
                  "error": null,
                  "created_at": "2026-10-11T09:30:00.000Z",
                  "updated_at": "2026-10-11T09:30:00.100Z",
                  "completed_at": null
                },
                "schema": {
                  "$ref": "#/components/schemas/LibraryImport"
                }
              }
            },
            "description": "An import of this video is already queued or running; that import is returned.",
            "headers": {
              "Content-Location": {
                "$ref": "#/components/headers/Content-Location"
              },
              "Idempotent-Replayed": {
                "$ref": "#/components/headers/Idempotent-Replayed"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "id": "imp_6Mfj7Oxm4MfxGGmZRhiUQf",
                  "object": "library_import",
                  "status": "queued",
                  "stage": null,
                  "queue_position": 1,
                  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
                  "youtube_video_id": "dQw4w9WgXcQ",
                  "language": "lt",
                  "reused": false,
                  "transcript_id": null,
                  "error": null,
                  "created_at": "2026-10-11T09:30:00.000Z",
                  "updated_at": "2026-10-11T09:30:00.100Z",
                  "completed_at": null
                },
                "schema": {
                  "$ref": "#/components/schemas/LibraryImport"
                }
              }
            },
            "description": "The import was created (`queued`), or the transcript already existed (`succeeded` with `reused: true`).",
            "headers": {
              "Idempotent-Replayed": {
                "$ref": "#/components/headers/Idempotent-Replayed"
              },
              "Location": {
                "$ref": "#/components/headers/Location"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "408": {
            "$ref": "#/components/responses/RequestTimeout"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Import a YouTube video into the library",
        "tags": [
          "Imports"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "invalid_request",
          "invalid_parameter",
          "invalid_youtube_url",
          "idempotency_key_invalid",
          "idempotency_key_reused",
          "idempotency_in_progress",
          "request_timeout",
          "unsupported_media_type",
          "request_too_large",
          "insufficient_credits",
          "team_member_limit_reached",
          "team_member_disabled",
          "queue_limit_exceeded",
          "credit_balance_unavailable",
          "writes_disabled",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "write",
          "imports",
          "account"
        ],
        "x-required-scopes": [
          "library:write"
        ]
      }
    },
    "/library/imports/{import_id}": {
      "get": {
        "description": "The current state of one import. While it is not final the response carries `Retry-After: 3`; poll no faster than that.",
        "operationId": "getLibraryImport",
        "parameters": [
          {
            "description": "Public import ID (`imp_` prefix).",
            "in": "path",
            "name": "import_id",
            "required": true,
            "schema": {
              "example": "imp_7Qw3eR5tY8uI1oP4aS6dFg",
              "maxLength": 26,
              "minLength": 26,
              "pattern": "^imp_[0-9A-Za-z]{22}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "imp_6Mfj7Oxm4MfxGGmZRhiUQf",
                  "object": "library_import",
                  "status": "succeeded",
                  "stage": null,
                  "queue_position": null,
                  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
                  "youtube_video_id": "dQw4w9WgXcQ",
                  "language": null,
                  "reused": true,
                  "transcript_id": "trn_ZFF3NHc5V2dYY1E",
                  "error": null,
                  "created_at": "2026-10-11T09:30:00.000Z",
                  "updated_at": "2026-10-11T09:30:00.400Z",
                  "completed_at": "2026-10-11T09:30:00.400Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/LibraryImport"
                }
              }
            },
            "description": "The import.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Get a library import",
        "tags": [
          "Imports"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "not_found",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-required-scopes": [
          "library:read"
        ]
      }
    },
    "/library/imports/{import_id}/cancel": {
      "post": {
        "description": "A queued import becomes `canceled` at once. A running import becomes `canceling` and ends `canceled` when the work stops (a transcript that was already fetched or was finishing still reaches your library and is charged as usual). Canceling an import that is already `canceling` or `canceled` returns it unchanged; a `succeeded` or `failed` import answers `409 import_not_cancelable`.",
        "operationId": "cancelLibraryImport",
        "parameters": [
          {
            "description": "Public import ID (`imp_` prefix).",
            "in": "path",
            "name": "import_id",
            "required": true,
            "schema": {
              "example": "imp_7Qw3eR5tY8uI1oP4aS6dFg",
              "maxLength": 26,
              "minLength": 26,
              "pattern": "^imp_[0-9A-Za-z]{22}$",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "imp_6Mfj7Oxm4MfxGGmZRhiUQf",
                  "object": "library_import",
                  "status": "canceling",
                  "stage": "downloading",
                  "queue_position": null,
                  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
                  "youtube_video_id": "dQw4w9WgXcQ",
                  "language": "lt",
                  "reused": false,
                  "transcript_id": null,
                  "error": null,
                  "created_at": "2026-10-11T09:30:00.000Z",
                  "updated_at": "2026-10-11T09:30:00.100Z",
                  "completed_at": null
                },
                "schema": {
                  "$ref": "#/components/schemas/LibraryImport"
                }
              }
            },
            "description": "The import after the cancel request.",
            "headers": {
              "Idempotent-Replayed": {
                "$ref": "#/components/headers/Idempotent-Replayed"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Cancel a library import",
        "tags": [
          "Imports"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "insufficient_scope",
          "not_found",
          "import_not_cancelable",
          "idempotency_key_invalid",
          "idempotency_key_reused",
          "idempotency_in_progress",
          "writes_disabled",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "write",
          "account"
        ],
        "x-required-scopes": [
          "library:write"
        ]
      }
    },
    "/events": {
      "get": {
        "description": "Returns the account's events (`meeting.*`, `library.*`) oldest first, in commit order. Pass the `next_cursor` of the previous response as `cursor` to continue; `cursor=latest` starts from now and returns an empty page with the current position. Only event families the key may read are returned. `next_cursor` is always present, also on an empty page, so a poller can keep its place.",
        "operationId": "listEvents",
        "parameters": [
          {
            "description": "Position in the stream: a `next_cursor` from the previous page, or `latest` to start from now.",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "maxLength": 128,
              "type": "string"
            }
          },
          {
            "description": "Only these event types (repeat the parameter), for example `types=meeting.ready&types=library.import.succeeded`. An unknown type returns 400.",
            "in": "query",
            "name": "types",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "meeting.ready",
                  "meeting.failed",
                  "meeting.minutes.updated",
                  "meeting.updated",
                  "meeting.deleted",
                  "library.transcript.added",
                  "library.transcript.updated",
                  "library.transcript.removed",
                  "library.import.succeeded",
                  "library.import.failed",
                  "library.import.canceled"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "description": "Page size, from 1 to 100. Default 20. Follow `has_more`, not the page size.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "data": [
                    {
                      "id": "evt_6wRxUNQvdvcZDQqmAzvcqD",
                      "object": "event",
                      "type": "meeting.ready",
                      "timestamp": "2026-10-11T09:30:00.000Z",
                      "data": {
                        "object": "meeting",
                        "id": "mtg_5uF4g2Xu1i0qz3yAp0CP7W",
                        "status": "ready",
                        "archived": false,
                        "minutes_status": "ready",
                        "minutes_version": 2,
                        "run_id": "f122ed73-1ae0-5816-8fe0-814cdde13471"
                      }
                    }
                  ],
                  "has_more": false,
                  "next_cursor": "ev1.4821.9917"
                },
                "schema": {
                  "$ref": "#/components/schemas/EventList"
                }
              }
            },
            "description": "A page of events.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "List events",
        "tags": [
          "Events"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "invalid_parameter",
          "invalid_cursor",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-required-scopes": [],
        "x-scope-filtered": true
      }
    },
    "/events/{event_id}": {
      "get": {
        "description": "Returns one event by ID. An event the key cannot read, or that is not yours, returns 404.",
        "operationId": "getEvent",
        "parameters": [
          {
            "description": "Public event ID (`evt_` prefix).",
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "example": "evt_3kQ9mXw0aB7nZp1RtYc4Ld",
              "maxLength": 26,
              "minLength": 26,
              "pattern": "^evt_[0-9A-Za-z]{22}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "evt_6wRxUNQvdvcZDQqmAzvcqD",
                  "object": "event",
                  "type": "meeting.ready",
                  "timestamp": "2026-10-11T09:30:00.000Z",
                  "data": {
                    "object": "meeting",
                    "id": "mtg_5uF4g2Xu1i0qz3yAp0CP7W",
                    "status": "ready",
                    "archived": false,
                    "minutes_status": "ready",
                    "minutes_version": 2,
                    "run_id": "f122ed73-1ae0-5816-8fe0-814cdde13471"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            },
            "description": "The event.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "Request-Id": {
                "$ref": "#/components/headers/Request-Id"
              },
              "X-Client-Request-Id": {
                "$ref": "#/components/headers/X-Client-Request-Id"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Get an event",
        "tags": [
          "Events"
        ],
        "x-error-codes": [
          "missing_api_key",
          "invalid_api_key",
          "api_key_expired",
          "api_key_revoked",
          "api_key_disabled",
          "ip_not_allowed",
          "account_disabled",
          "email_not_verified",
          "api_access_suspended",
          "subscription_required",
          "plan_required",
          "not_found",
          "rate_limit_exceeded",
          "internal_error",
          "service_unavailable"
        ],
        "x-rate-limit-policy": [
          "read",
          "account"
        ],
        "x-required-scopes": [],
        "x-scope-filtered": true
      }
    }
  },
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "servers": [
    {
      "url": "https://api.diko.app/api/v1"
    }
  ],
  "tags": [
    {
      "description": "Your key and account",
      "name": "Account"
    },
    {
      "description": "Read meetings, transcripts, minutes and action items",
      "name": "Meetings"
    },
    {
      "description": "Read the YouTube library",
      "name": "Library"
    },
    {
      "description": "Import YouTube videos into the library",
      "name": "Imports"
    },
    {
      "description": "Pull the event stream",
      "name": "Events"
    }
  ]
}
