Skip to content
DikoAPI
API keys

Get the current key and account

Open as Markdown

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.

GET/me
Required scope
Any valid key
Authentication
Authorization: Bearer
Rate-limit policy
readaccountme

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).

Response

200

The key, the account and its limits.

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

  • api_keyobjectrequired

    The key used for this request.

    18 fields
    • idstringrequired

      Public key ID (key_ prefix).

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

    • objectstringrequired

      Always api_key.

    • namestringrequired

      Name given to the key.

    • descriptionstringrequired

      Optional description; an empty string when not set.

    • hintstringrequired

      Non-secret hint: prefix plus the first and last four characters of the random part.

    • scopesarray<string>required

      Scopes granted to the key.

      Allowed values: meetings:readlibrary:readlibrary:write

    • statusstringrequired

      Lifecycle status. expired is derived from expires_at.

      Allowed values: activedisabledrevokedexpired

    • allowed_cidrsarray<string>required

      IP allowlist in CIDR notation. An empty list allows any address.

    • created_atstringrequired

      When the key was created.

      ≤ 24 characters · format: date-time

    • expires_atstringrequired

      When the key stops working. Every key expires; the maximum is 365 days.

      ≤ 24 characters · format: date-time

    • last_used_atstring | nullrequired

      Last use, written at most every 5 minutes. Null if never used.

      ≤ 24 characters · format: date-time

    • last_used_ipstring | nullrequired

      IP of the last use. Stored only when the address could be determined reliably.

    • first_used_atstring | nullrequired

      First use. Null if never used.

      ≤ 24 characters · format: date-time

    • disabled_atstring | nullrequired

      When the key was disabled, if it is disabled.

      ≤ 24 characters · format: date-time

    • revoked_atstring | nullrequired

      When the key was revoked, if it is revoked.

      ≤ 24 characters · format: date-time

    • revoked_reasonstring | nullrequired

      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).

      Allowed values: userrotatedadminowneruser_disabledleakeddormantrevoke_all

    • rotated_fromstring | nullrequired

      ID of the key this key replaced through rotation.

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

    • grace_untilstring | nullrequired

      Until when the previous key keeps working after a rotation.

      ≤ 24 characters · format: date-time

  • userobjectrequired

    The owning account.

    4 fields
    • idstringrequired

      Public user ID (usr_ prefix).

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

    • objectstringrequired

      Always user.

    • emailstringrequired

      Account e-mail address, masked (for example j***@example.com). The full address is never returned to an API key.

    • display_namestring | nullrequired

      Display name, if set.

  • accessobjectrequired

    Whether the account may use the API.

    3 fields
    • allowedbooleanrequired

      True when API requests are allowed. GET /me works even when this is false.

    • reasonstringrequired

      Why access is or is not granted.

      Allowed values: subscriptionteamownerexemptpaywall_offsubscription_requiredplan_required

    • planstring | nullrequired

      Plan family of the account, or null.

      Allowed values: asmeninisproverslas

  • creditsobject | nullrequired

    Credit balance. Null unless the key has the library:write scope, the only scope that spends credits.

    3 fields
    • scopestring | nullrequired

      Whose balance this is: the personal one or the shared team pool. Null when it could not be read.

      Allowed values: userorganization

    • availablestring | nullrequired

      Available credits as a decimal string, for example "123.5000". Null when it could not be read.

    • as_ofstring | nullrequired

      When the balance was read. It is cached for 30 seconds per user. Null when it could not be read.

      ≤ 24 characters · format: date-time

  • limitsobjectrequired

    Limits that apply.

    3 fields
    • rateobjectrequired

      Rate-limit policies.

      6 fields
      • readobjectrequired

        Policy read, per API key.

        3 fields
        • burstintegerrequired

          Bucket capacity: how many requests may be sent at once.

          0–2147483647 · format: int32

        • per_secondinteger | null

          Refill rate in tokens per second, when the policy refills per second.

          0–2147483647 · format: int32

        • per_minuteinteger | null

          Refill rate in tokens per minute, when the policy refills per minute.

          0–2147483647 · format: int32

      • writeobjectrequired

        Policy write, per API key.

        3 fields
        • burstintegerrequired

          Bucket capacity: how many requests may be sent at once.

          0–2147483647 · format: int32

        • per_secondinteger | null

          Refill rate in tokens per second, when the policy refills per second.

          0–2147483647 · format: int32

        • per_minuteinteger | null

          Refill rate in tokens per minute, when the policy refills per minute.

          0–2147483647 · format: int32

      • importsobjectrequired

        Policy imports, per API key.

        3 fields
        • burstintegerrequired

          Bucket capacity: how many requests may be sent at once.

          0–2147483647 · format: int32

        • per_secondinteger | null

          Refill rate in tokens per second, when the policy refills per second.

          0–2147483647 · format: int32

        • per_minuteinteger | null

          Refill rate in tokens per minute, when the policy refills per minute.

          0–2147483647 · format: int32

      • accountobjectrequired

        Policy account, shared by all keys and members of the billing tenant: the paying team on a team plan, otherwise the user.

        3 fields
        • burstintegerrequired

          Bucket capacity: how many requests may be sent at once.

          0–2147483647 · format: int32

        • per_secondinteger | null

          Refill rate in tokens per second, when the policy refills per second.

          0–2147483647 · format: int32

        • per_minuteinteger | null

          Refill rate in tokens per minute, when the policy refills per minute.

          0–2147483647 · format: int32

      • meobjectrequired

        Policy me, per API key; applies to GET /me only.

        3 fields
        • burstintegerrequired

          Bucket capacity: how many requests may be sent at once.

          0–2147483647 · format: int32

        • per_secondinteger | null

          Refill rate in tokens per second, when the policy refills per second.

          0–2147483647 · format: int32

        • per_minuteinteger | null

          Refill rate in tokens per minute, when the policy refills per minute.

          0–2147483647 · format: int32

      • exportobjectrequired

        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.

        3 fields
        • burstintegerrequired

          Bucket capacity: how many requests may be sent at once.

          0–2147483647 · format: int32

        • per_secondinteger | null

          Refill rate in tokens per second, when the policy refills per second.

          0–2147483647 · format: int32

        • per_minuteinteger | null

          Refill rate in tokens per minute, when the policy refills per minute.

          0–2147483647 · format: int32

    • max_active_importsintegerrequired

      Most imports that may be active at once for the user.

      0–2147483647 · format: int32

    • max_daily_importsintegerrequired

      Most imports the user may create per day.

      0–2147483647 · format: int32

  • requestobjectrequired

    How this request was seen.

    2 fields
    • ipstring | nullrequired

      Client IP as seen by Diko, or null when it cannot be determined reliably.

    • ip_trustedbooleanrequired

      Whether the IP comes from a trusted proxy chain. IP allowlists need a trusted IP.

Examples

Request

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

Example response · 200 · application/json

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

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
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
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