Skip to content
DikoAPI
API keys

List events

Open as Markdown

Returns the account's events (meeting.*, library.*) oldest first, in commit order.

GET/events
Required scope
Any valid key. Results are filtered by the key scopes.
Authentication
Authorization: Bearer
Rate-limit policy
readaccount

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.

Parameters

Parameters
NameInTypeRequiredDefaultConstraintsDescription
cursorquerystringno–≤ 128 charactersPosition in the stream: a next_cursor from the previous page, or latest to start from now.
typesqueryarray<string> repeatableno––Only these event types (repeat the parameter), for example types=meeting.ready&types=library.import.succeeded. An unknown type returns 400. Allowed values: meeting.readymeeting.failedmeeting.minutes.updatedmeeting.updatedmeeting.deletedlibrary.transcript.addedlibrary.transcript.updatedlibrary.transcript.removedlibrary.import.succeededlibrary.import.failedlibrary.import.canceled
limitqueryintegerno–1–100 · format: int32Page size, from 1 to 100. Default 20. Follow has_more, not the page size.

Response

200

A page of events.

  • 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 list.

  • dataarray<object>required

    The items of this page.

    5 fields
    • idstringrequired

      Public event ID (evt_ prefix). Use it to remove duplicates.

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

    • objectstringrequired

      Always event.

    • typestringrequired

      Event type such as meeting.ready. New types can appear; ignore the ones you do not know.

    • timestampstringrequired

      When the event happened.

      ≤ 24 characters · format: date-time

    • dataobjectrequired

      Snapshot of the resource.

      15 fields
      • objectstringrequired

        Resource type: meeting, library_transcript, library_import or webhook_endpoint.

      • idstringrequired

        Public ID of the resource.

        ≤ 64 characters

      • statusstring | null

        Resource status, for meetings.

      • archivedboolean | null

        Whether the meeting is archived.

      • minutes_statusstring | null

        Minutes status, for meeting events.

      • minutes_versioninteger | null

        Minutes version, for meeting events.

        0–2147483647 · format: int32

      • run_idstring | null

        Processing run the event belongs to.

      • error_codestring | null

        Error code, for meeting.failed and library.import.failed.

      • changed_fieldsarray<string> | null

        Fields that changed, for update events.

      • youtube_video_idstring | null

        YouTube video ID, for library events.

      • source_typestring | null

        Transcript source, for library.transcript.added.

      • added_atstring | null

        When the transcript was added, for library.transcript.added.

        ≤ 24 characters · format: date-time

      • summary_statusstring | null

        Summary status, for library.transcript.updated.

      • transcript_idstring | null

        Library transcript ID, for library.import.succeeded.

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

      • reusedboolean | null

        Whether the transcript already existed, for library.import.succeeded.

  • has_morebooleanrequired

    Whether more items follow. Keep paging while this is true.

  • next_cursorstringrequired

    Cursor for the next request. Always present in the event stream, also when has_more is false.

    ≤ 128 characters

Examples

Request

cURL
curl "https://api.diko.app/api/v1/events?cursor=latest&types=meeting.ready" \
  -H "Authorization: Bearer $DIKO_API_KEY"

Example response · 200 · application/json

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

Errors

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

HTTPCodeMeaningRetry?
400invalid_parameterA path, query or body parameter has an invalid value, a required field is missing or a field is unknown (unknown fields are rejected). `error.param` names the parameter.no
400invalid_cursorThe `cursor` is corrupted or was issued for another user, route, sort order or set of filters.no
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
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