Аккаунт, квота и лимиты
GET/api/v1/account
- Доступ
- Ключ API
- Право
account:read
Профиль владельца ключа, занятое место и квота, лимиты загрузки и права тарифа. С ключом API в ответе есть credential — сам ключ: права, срок, а у ключа приложения — приложение и компьютер. Хорошая первая проверка ключа.
Пример запроса
curl "https://lac.pics/api/v1/account" \
-H "Authorization: Bearer lac_api_YOUR_KEY"Ответы
200Готово
objectuserUserАккаунт.
User16 полейidstringid файла или заметки.
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.videoobjectVideos 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Права тарифа в силе. Бесплатный тариф — без подписки:
planUntilnull и без функций. Тариф не даёт меньше бесплатного; после его конца права сразу возвращаются, файлы и настройки ссылок остаются.Entitlements8 полей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— просмотры по дням. Без функции — 403PLAN_FEATURE_REQUIREDсparams.feature.значения:
"link_expiry""view_limit""view_stats""no_branding"без повторов
trialBillingTrialобязательныйили nullПробный период тарифа.
BillingTrial10 полейstatestringобязательныйСостояние:
UPLOADING,COMPLETING,COMPLETED,CANCELLEDилиEXPIRED.значения:
"available""active""ended""used""unavailable"planCodestringобязательныйThe plan offered or taken.
planNameBillingNameобязательныйBillingName2 поляrustringобязательныйenstringобязательный
daysintegerобязательныйСколько последних дней вернуть.
1–30
planQuotabooleanобязательныйThe trial gives the plan’s storage; false: the free quota stays.
startsAtstring · date-timeобязательныйили nullendsAtstring · date-timeобязательныйили nulldaysLeftintegerобязательныйили nullActive only.
от 1
reasonstringобязательныйили nullunavailable only: subscribed — the account had a subscription; limit — a trial was recently taken from this address or network.
значения:
"subscribed""limit"noticestringобязательныйили nullending: 2 days or less are left; ended: ended within the last 14 days. The cabinet shows these as notices.
значения:
"ending""ended"
credentialApiCredentialТолько с ключом API: сам ключ — права, срок, у ключа приложения — приложение и компьютер.
ApiCredential6 полей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Сервис занят или недоступен
Пример ответа
{
"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
}
}Коды ошибок
Ответы любого метода с ключом — неверный или истёкший ключ, нет права, частые запросы — в разделе Ошибки.