Skip to content
DikoAPI
API keys

Get meeting minutes

Open as Markdown

Returns the latest ready version of the minutes.

GET/meetings/{meeting_id}/minutes
Required scope
meetings:read
Authentication
Authorization: Bearer
Rate-limit policy
readaccount

When no ready version exists the response is still 200 and status explains why: none, generating, failed, insufficient or unavailable.

Parameters

Parameters
NameInTypeRequiredDefaultConstraintsDescription
meeting_idpathstringrequired–26–26 characters · pattern: ^mtg_[0-9A-Za-z]{22}$Public meeting ID (mtg_ prefix).

Response

200

The minutes.

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

Content type: application/json

  • objectstringrequired

    Always minutes.

  • meeting_idstringrequired

    ID of the meeting.

    26–26 characters · pattern: ^mtg_[0-9A-Za-z]{22}$

  • statusstringrequired

    Minutes status.

    Allowed values: nonegeneratingreadyfailedinsufficientunavailable

  • reasonstring | nullrequired

    Reason when the status is insufficient.

  • versioninteger | nullrequired

    Version number.

    0–2147483647 · format: int32

  • generated_atstring | nullrequired

    When this version was generated.

    ≤ 24 characters · format: date-time

  • languagestring | nullrequired

    Language of the minutes.

  • summarystring | nullrequired

    Summary text.

  • key_pointsarray<object>required

    Key points.

    2 fields
    • textstringrequired

      The statement.

    • timestamps_msarray<integer>required

      Moments in the recording that support the statement, in milliseconds.

  • decisionsarray<object>required

    Decisions.

    2 fields
    • textstringrequired

      The statement.

    • timestamps_msarray<integer>required

      Moments in the recording that support the statement, in milliseconds.

  • action_itemsarray<object>required

    Generated action items.

    11 fields
    • objectstringrequired

      Always action_item.

    • idstring | nullrequired

      Public ID (act_ prefix). Null for generated items.

      26–26 characters · pattern: ^act_[0-9A-Za-z]{22}$

    • sourcestringrequired

      Where the item comes from.

      Allowed values: manualgenerated

    • textstringrequired

      Task title.

    • descriptionstring | nullrequired

      Longer description, if any.

    • statusstringrequired

      Task status. Generated items are always open.

      Allowed values: openin_progressdonecanceled

    • assignee_namestring | nullrequired

      Name of the person responsible.

    • due_textstring | nullrequired

      Free-text deadline from generated minutes.

    • due_atstring | nullrequired

      Deadline of a manual item.

      ≤ 24 characters · format: date-time

    • timestamps_msarray<integer>required

      Moments in the recording the item comes from, in milliseconds.

    • created_atstring | nullrequired

      When a manual item was created. Null for generated items.

      ≤ 24 characters · format: date-time

  • open_questionsarray<object>required

    Open questions.

    2 fields
    • textstringrequired

      The statement.

    • timestamps_msarray<integer>required

      Moments in the recording that support the statement, in milliseconds.

  • sectionsarray<object>required

    Additional sections.

    2 fields
    • titlestringrequired

      Section title.

    • contentstringrequired

      Section text.

  • verification_statusstring | nullrequired

    Result of the evidence check.

    Allowed values: verifiedrepairedunverified

Examples

Request

cURL
curl "https://api.diko.app/api/v1/meetings/mtg_0aZ1bY2cX3dW4eV5fU6gT7/minutes" \
  -H "Authorization: Bearer $DIKO_API_KEY"

Example response · 200 · application/json

JSON
{
  "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"
}

Errors

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

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

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

Search across all documentation pagesesc close