К содержимому

Аккаунт, квота и лимиты

GET/api/v1/account

Доступ
Ключ API
Право
account:read

Профиль владельца ключа, занятое место и квота, лимиты загрузки и права тарифа. С ключом API в ответе есть credential — сам ключ: права, срок, а у ключа приложения — приложение и компьютер. Хорошая первая проверка ключа.

Пример запроса

curl "https://lac.pics/api/v1/account" \
  -H "Authorization: Bearer lac_api_YOUR_KEY"

Ответы

  • 200Готовоobject
    • userUser

      Аккаунт.

      User 16 полей
      • idstring

        id файла или заметки.

      • usernamestring

        Никнейм.

      • namestring

        Имя.

      • palettestring

        Палитра оформления.

      • biostring

        О себе.

        не длиннее 600

      • copyLinkboolean

        Копировать ссылку после загрузки.

      • privateByDefaultboolean

        Новые файлы — приватные по умолчанию.

      • unlistedPreviewsboolean

        Превью ссылок (Telegram, Discord…) у файлов по ссылке показывают изображение или видео. У публичных — всегда, у приватных, с паролем и одноразовых — никогда.

      • previewAuthorboolean

        Превью ссылок показывают имя и @никнейм автора.

      • captureHotkeystring

        Клавиша захвата в приложении.

      • avatarUrlstringили null

        Адрес аватара.

      • avatarRevisioninteger

        Ревизия аватара.

        0–2 147 483 647

      • storageUsedinteger · int64

        Занято байт.

      • quotaBytesinteger · int64

        Квота в байтах; в интерфейсе — в двоичных единицах (1 ГБ = 1024³ байт).

      • createdAtstring · date-time

        Когда создан.

      • planobjectили null

        Тариф в силе; null — бесплатный. Права — в entitlements.

        4 поля
        • codestringобязательный

          Одноразовый код из адреса возврата в приложение.

        • nameobjectобязательный

          Имя.

          2 поля
          • rustringобязательный
          • enstringобязательный
        • trialbooleanобязательный

          Пробный период тарифа.

        • untilstring · date-timeобязательный

          До какого момента.

    • limitsobject

      Лимиты аккаунта.

      10 полей
      • requestsPerMinuteinteger

        Запросов в минуту на аккаунт.

      • maxUploadBytesinteger

        Самый большой файл любого типа.

      • maxImageBytesinteger

        Самое большое изображение, которое можно загрузить сейчас: лимит тарифа (10 МБ на бесплатном) или предел сервера, если у тарифа лимита нет.

      • maxVideoBytesinteger

        Самое большое видео, которое можно загрузить сейчас: лимит тарифа (100 МБ на бесплатном) или предел сервера, если у тарифа лимита нет.

      • planImageBytesintegerили null

        Лимит тарифа на одно изображение; null — у тарифа лимита на файл нет (Pro): только место и предел сервера.

      • planVideoBytesintegerили null

        Лимит тарифа на одно видео; null — у тарифа лимита на файл нет (Pro): только место и предел сервера.

      • serverImageBytesinteger

        Предел сервера для одного изображения у любого аккаунта (64 МБ): картинка декодируется целиком в памяти. Больше — 413 IMAGE_TOO_LARGE с params.ceiling = server.

      • serverVideoBytesinteger · int64

        Предел сервера для одного видео у любого аккаунта (4 ГБ): объект хранилища пишется одним запросом, а размер такого запроса у S3-хранилищ ограничен. Больше — 413 VIDEO_TOO_LARGE с params.ceiling = server.

      • uploadsAtOnceinteger

        Сколько POST /uploads аккаунта идут одновременно; больше — 429.

      • videoobject

        Videos stored as they are: one version per video, compressed by the client. Anything else gets 415 VIDEO_NOT_SUITABLE (params.problems); the site and the Windows app compress it first.

        7 полей
        • formatsмассив objectобязательный
          4 поля
          • containerstringобязательный

            значения: "mp4" "webm"

          • videostringобязательный

            ffprobe codec_name.

          • audiostringобязательный

            ffprobe codec_name.

          • pixelFormatsмассив stringобязательный
        • maxLongSideintegerобязательный
        • maxShortSideintegerобязательный
        • maxFpsnumberобязательный
        • maxSecondsintegerобязательный
        • maxAudioStreamsintegerобязательный
        • bitrateobjectобязательный

          Average bitrate ceiling, bits/s: bitsPerPixel × width × height × min(fps, fpsCap), within min and max.

          4 поля
          • bitsPerPixelnumberобязательный
          • fpsCapnumberобязательный
          • minintegerобязательный
          • maxintegerобязательный
    • entitlementsEntitlements

      Права тарифа в силе. Бесплатный тариф — без подписки: planUntil null и без функций. Тариф не даёт меньше бесплатного; после его конца права сразу возвращаются, файлы и настройки ссылок остаются.

      Entitlements 8 полей
      • planUntilstring · date-timeобязательныйили null

        Конец тарифа; null — бесплатный.

      • imageBytesintegerобязательный

        Лимит изображения.

      • videoBytesintegerобязательный

        Лимит видео.

      • planImageBytesintegerили null

        Лимит тарифа на одно изображение; null — у тарифа лимита на файл нет (Pro): только место и предел сервера.

      • planVideoBytesintegerили null

        Лимит тарифа на одно видео; null — у тарифа лимита на файл нет (Pro): только место и предел сервера.

      • quotaBytesinteger · int64обязательныйили null

        Квота в байтах.

      • featuresмассив stringобязательный

        link_expiry — точный срок ссылки, view_limit — лимит просмотров, view_stats — просмотры по дням. Без функции — 403 PLAN_FEATURE_REQUIRED с params.feature.

        значения: "link_expiry" "view_limit" "view_stats" "no_branding"

        без повторов

      • trialBillingTrialобязательныйили null

        Пробный период тарифа.

        BillingTrial 10 полей
        • statestringобязательный

          Состояние: UPLOADING, COMPLETING, COMPLETED, CANCELLED или EXPIRED.

          значения: "available" "active" "ended" "used" "unavailable"

        • planCodestringобязательный

          The plan offered or taken.

        • planNameBillingNameобязательный
          BillingName 2 поля
          • rustringобязательный
          • enstringобязательный
        • daysintegerобязательный

          Сколько последних дней вернуть.

          1–30

        • planQuotabooleanобязательный

          The trial gives the plan’s storage; false: the free quota stays.

        • startsAtstring · date-timeобязательныйили null
        • endsAtstring · date-timeобязательныйили null
        • daysLeftintegerобязательныйили null

          Active only.

          от 1

        • reasonstringобязательныйили null

          unavailable only: subscribed — the account had a subscription; limit — a trial was recently taken from this address or network.

          значения: "subscribed" "limit"

        • noticestringобязательныйили null

          ending: 2 days or less are left; ended: ended within the last 14 days. The cabinet shows these as notices.

          значения: "ending" "ended"

    • credentialApiCredential

      Только с ключом API: сам ключ — права, срок, у ключа приложения — приложение и компьютер.

      ApiCredential 6 полей
      • idstringобязательный

        id файла или заметки.

      • namestringобязательный

        Название ключа; у ключа приложения — «lacuna для Windows · {компьютер}».

        длина 1–100

      • scopesмассив stringобязательный

        Права.

        значения: "content:read" "content:write" "content:delete" "account:read"

        1–4 элементов · без повторов

      • expiresAtstring · date-timeобязательный

        После этого момента — 401 API_KEY_EXPIRED. Ключ приложения живёт 365 дней и продлевается сам за 30 дней до конца.

      • clientstringобязательныйили null

        Приложение ключа подключения; null — ключ из формы.

        значения: "windows"

      • deviceNamestringобязательныйили null

        Компьютер; null — ключ из формы.

        длина 1–128

  • 400Некорректный запрос
  • 401Нужен действующий ключ
  • 403Нет права или функции тарифа
  • 404Не найдено
  • 409Конфликт
  • 410Файл удалён или истёк
  • 413Слишком большой файл или нет места
  • 429Слишком много запросов
  • 503Сервис занят или недоступен

Пример ответа

200 · application/json
{
  "user": {
    "id": "cmf8a1x2k0000q7lh3v9w2e4d",
    "username": "alex",
    "name": "Alex",
    "palette": "original",
    "bio": "",
    "copyLink": true,
    "privateByDefault": false,
    "unlistedPreviews": true,
    "previewAuthor": true,
    "captureHotkey": "PrintScreen",
    "avatarUrl": null,
    "avatarRevision": 0,
    "storageUsed": 734003200,
    "quotaBytes": 2684354560,
    "createdAt": "2026-09-27T09:30:00.000Z",
    "plan": null
  },
  "limits": {
    "requestsPerMinute": 60,
    "maxUploadBytes": 104857600,
    "maxImageBytes": 10485760,
    "maxVideoBytes": 104857600,
    "planImageBytes": 10485760,
    "planVideoBytes": 104857600,
    "serverImageBytes": 67108864,
    "serverVideoBytes": 4294967296,
    "uploadsAtOnce": 2,
    "video": {
      "formats": [
        {
          "container": "mp4",
          "video": "string",
          "audio": "string",
          "pixelFormats": [
            "string"
          ]
        }
      ],
      "maxLongSide": 1,
      "maxShortSide": 1,
      "maxFps": 1,
      "maxSeconds": 1,
      "maxAudioStreams": 1,
      "bitrate": {
        "bitsPerPixel": 1,
        "fpsCap": 1,
        "min": 1,
        "max": 1
      }
    }
  },
  "entitlements": {
    "planUntil": null,
    "imageBytes": 10485760,
    "videoBytes": 104857600,
    "planImageBytes": 10485760,
    "planVideoBytes": 104857600,
    "quotaBytes": 2684354560,
    "features": [],
    "trial": null
  },
  "credential": {
    "id": "cmf8a1x2k0001q7lh5b2n8r6t",
    "name": "Upload script",
    "scopes": [
      "content:write"
    ],
    "expiresAt": "2026-12-26T09:30:00.000Z",
    "client": null,
    "deviceName": null
  }
}

Коды ошибок

Ответы любого метода с ключом — неверный или истёкший ключ, нет права, частые запросы — в разделе Ошибки.

Аккаунт, квота и лимиты: GET /api/v1/account · API lacuna