API-документация
Автоматизируйте загрузку и управляйте файлами программно с помощью простого API JSON REST.
Все запросы и ответы application/json. Базовый URL-адрес:
https://api.fast2share.com
Аутентификация
Создайте токен на своей панели в разделе
Настройки → API токены. Отправляйте его по каждому запросу в
Authorization заголовок. Токены отображаются один раз при создании — сохраните их
надежно. Каждый токен действует от имени вашей учетной записи и видит только ваши собственные файлы.
Authorization: Bearer f2s_YOUR_TOKEN
Ошибки
Ошибки используют стандартные коды состояния HTTP и возвращают тело JSON с
error сообщение. Общие коды: 401 (отсутствует/неверный токен),
403 (квота или лимит плана), 404 (файл не найден),
409 (конфликт — например, файл уже находится в вашей учетной записи, см.
POST /v1/uploads), 422 (неверное тело запроса),
503 (нет сервера хранения).
{
"error": "Invalid or revoked API token."
}Конечные точки
Возвращает учетную запись владельца токена, активный план и текущее использование хранилища.
curl https://api.fast2share.com/v1/user \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"id": 42,
"email": "[email protected]",
"display_name": "You",
"plan": {
"name": "premium-monthly",
"max_file_size": 5368709120,
"storage_quota": 107374182400
},
"usage": {
"used_bytes": 2147483648,
"file_count": 12,
"remaining_bytes": 105226698752
}
}Отображает список завершенных файлов, начиная с самых новых. Разбивка по страницам курсора: передать возвращенное next_before как ?before= для следующей страницы. Фильтровать по имени с помощью ?q=.
curl "https://api.fast2share.com/v1/files?before=0&q=report" \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"data": [
{
"uuid": "3f1c…-…-…",
"name": "report.pdf",
"size": 184320,
"mime": "application/pdf",
"sha256": "9f86d0…",
"status": "completed",
"downloads": 3,
"share_url": "https://…/f/3f1c…",
"created_at": "2026-07-01T10:00:00+00:00",
"expires_at": null
}
],
"next_before": 1057
}Находит ваши файлы по имени. ?q= является обязательным и соответствует любому месту имени файла без учета регистра. Та же нумерация страниц курсора, что и в листинге (?before=), и поиск охватывает каждую папку, если вы не ограничите ее областью ?folder_id= (0 = файлы, находящиеся в корне).
curl "https://api.fast2share.com/v1/files/search?q=invoice" \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"query": "invoice",
"data": [
{
"uuid": "3f1c…-…-…",
"name": "invoice-2026-07.pdf",
"size": 184320,
"mime": "application/pdf",
"status": "completed",
"share_url": "https://…/f/3f1c…",
"created_at": "2026-07-01T10:00:00+00:00"
}
],
"next_before": null
}Все папки в вашей учетной записи, в первую очередь папки верхнего уровня. Используйте id как folder_id при перемещении или копировании файла.
curl https://api.fast2share.com/v1/folders \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"data": [
{ "id": 12, "name": "Invoices", "parent_id": null, "created_at": "2026-06-02T09:12:00+00:00" },
{ "id": 19, "name": "2026", "parent_id": 12, "created_at": "2026-06-02T09:13:00+00:00" }
]
}Создает папку. name является обязательным и должен быть уникальным в вашей учетной записи (без учета регистра) — ответы на конфликты 409. Проходить parent_id вложить его: папки идут только один уровень глубины, а родительский элемент содержит не более одной подпапки, поэтому родительский элемент, который сам является вложенным (или уже имеет дочерний элемент), отвечает 422.
curl -X POST https://api.fast2share.com/v1/folders \
-H "Authorization: Bearer f2s_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Invoices","parent_id":null}'{
"id": 12,
"name": "Invoices",
"parent_id": null,
"created_at": "2026-07-31T08:20:00+00:00"
}Пошаговое руководство по загрузке — загрузка состоит из двух шагов потому что байты уходят прямо на сервер хранения (через возобновляемый тус протокол); они никогда не проходят через этот API. Этот вызов проверяет ваш план/квоту и возвращает конечную точку tus плюс подписанный upload_token.
1. POST /v1/uploads с именем файла и размером → возвращает upload_url, upload_token и uuid (это конечная точка).
2. Выполните загрузку upload_url, добавив метаданные token <upload_token>. Любой tus клиент работает (например. tus-js-client, tusc). Отправляйте байты частями (рекомендуется 8 МБ): одиночный запрос tus, содержащий весь файл, отклоняется с 413 CDN хранилища, если тело превышает ~100 МБ.
3. Опрос GET /v1/files/{uuid}/status пока он не сообщит completed, затем используйте возвращенный share_url.
Пропустить передачу с дедупликацией (необязательно). Если такие же байты уже сохранены, файл можно создать мгновенно — ничего не загружается:
• fingerprint = SHA-256 первых 8 МБ, объединенных с последними 8 МБ (читается ≤16 МБ; если размер файла ≤8 МБ, это просто SHA-256 всего файла, а между 8 и 16 МБ оба диапазона охватывают его один раз, не перекрываясь). Всегда отправляйте это когда вам нужна дедупликация — именно так API узнает, что вы действительно храните файл, поэтому байты, принадлежащие другой учетной записи, никогда не передаются по голой контрольной сумме.
• sha256 = полный файл SHA-256, шестнадцатеричный. Отправьте его вместе с отпечатком пальца, и ответ будет немедленным: если в вашей учетной записи уже есть этот файл ничего не создается, и вы получаете 409 с {"status":"exists","uuid":…,"share_url":…} указывая на существующую копию; если байты принадлежат другой учетной записи, они мгновенно передаются вам: {"status":"completed","deduped":true,"share_url":…} — готово, ничего не загружено.
• Для больших файлов хешируйте лениво: отправляйте только fingerprint. Ответ {"status":"need_hash"} означает, что возможное совпадение существует — полностью хэшируйте файл и вызывайте POST /v1/uploads/{uuid}/confirm. Любой другой ответ является обычным билетом; загружайте как обычно.
Опустите оба поля, чтобы всегда загружать.
curl -X POST https://api.fast2share.com/v1/uploads \
-H "Authorization: Bearer f2s_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filename":"report.pdf","size":184320,"type":"application/pdf","fingerprint":"5b41e3…","sha256":"9f86d0…"}'{
"uuid": "3f1c…-…-…",
"status": "pending",
"upload_url": "https://storage1.example.com/files/",
"upload_token": "eyJ1d….<sig>",
"protocol": "tus",
"metadata_key": "token"
}
// deduped instead — the bytes were already stored, nothing to upload:
{
"uuid": "3f1c…-…-…",
"status": "completed",
"deduped": true,
"size": 184320,
"sha256": "9f86d0…",
"share_url": "https://…/f/3f1c…"
}413 Request Entity Too Large. Тус
PATCH который несет в себе весь поэтому файл не работает с большими файлами. Держите
каждый кусочек маленький — 8 МБ это хорошее значение по умолчанию, что также делает загрузку
возобновляется после разрыва соединения.
Распространенная ошибка:
tus-js-client по умолчанию
chunkSize: Infinity (один запрос на весь файл), поэтому объем загрузки превышает ~100 МБ.
потерпеть неудачу с 413. Ты должен установить явный chunkSize:
import * as tus from "tus-js-client";
// upload_url + upload_token come from POST /v1/uploads
const upload = new tus.Upload(file, {
endpoint: upload_url,
chunkSize: 8 * 1024 * 1024, // 8 MB — REQUIRED, keep well under 100 MB
metadata: { token: upload_token },
onError: (err) => console.error(err),
onSuccess: () => console.log("done — poll /v1/files/{uuid}/status"),
});
upload.start();Второй шаг fingerprint поток: вызывайте это только после POST /v1/uploads ответил {"status":"need_hash"}, с полным файлом sha256. Отпечаток пальца и размер — это те, которые вы отправили при создании загрузки — они не считываются повторно из этого запроса. Те же три результата, что и выше: уже в вашем аккаунте → 409 exists (ничего не сохраняется); принадлежит другому лицу → завершается сразу (deduped); в противном случае отпечатки пальцев просто столкнутся, и вы получите нормальный upload_url / upload_token билет — загрузите, как описано в шаге 2 выше.
curl -X POST https://api.fast2share.com/v1/uploads/3f1c…-…-…/confirm \
-H "Authorization: Bearer f2s_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sha256":"9f86d0…"}'{
"uuid": "3f1c…-…-…",
"status": "completed",
"deduped": true,
"size": 184320,
"sha256": "9f86d0…",
"share_url": "https://…/f/3f1c…"
}Возвращает метаданные для одного файла, которым вы владеете.
curl https://api.fast2share.com/v1/files/3f1c…-…-… \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"uuid": "3f1c…-…-…",
"name": "report.pdf",
"size": 184320,
"mime": "application/pdf",
"sha256": "9f86d0…",
"status": "completed",
"downloads": 3,
"share_url": "https://…/f/3f1c…",
"created_at": "2026-07-01T10:00:00+00:00",
"expires_at": null
}Упрощенная проверка состояния загрузки: pending, completed или failed. После завершения он также возвращает share_url.
curl https://api.fast2share.com/v1/files/3f1c…-…-…/status \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"uuid": "3f1c…-…-…",
"status": "completed",
"size": 184320,
"share_url": "https://…/f/3f1c…"
}Создает готовый URL-адрес прямой загрузки для вашего файла. Ссылка передает байты сразу с помощью сеанс браузера не требуется (используйте его из скрипта/curl) и срок его действия истекает примерно через 5 минут. Требуется активная Премиум-подписка (всегда разрешено администраторам).
curl https://api.fast2share.com/v1/files/3f1c…-…-…/download \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"uuid": "3f1c…-…-…",
"name": "report.pdf",
"size": 184320,
"download_url": "https://…/d/9xA2…",
"expires_in": 300
}Изменяет отображаемое имя файла, которым вы владеете. Ссылка на общий доступ (uuid) не меняется, поэтому ссылки, которые вы уже раздали, продолжают работать — меняется только имя, отображаемое на странице общего доступа и отправленное вместе с загрузкой. Разделители путей и управляющие символы удаляются; имя ограничено 512 символами.
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/rename \
-H "Authorization: Bearer f2s_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"invoice-july.pdf"}'{
"uuid": "3f1c…-…-…",
"name": "invoice-july.pdf",
"size": 184320,
"status": "completed",
"share_url": "https://…/f/3f1c…"
}Сохраняет принадлежащий вам файл в одну из ваших папок. Отправлять {"folder_id": 0} (или опустите его), чтобы переместить его обратно в корень. Папка должна быть вашей, иначе 404.
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/move \
-H "Authorization: Bearer f2s_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"folder_id":12}'{
"uuid": "3f1c…-…-…",
"name": "invoice-july.pdf",
"status": "completed",
"share_url": "https://…/f/3f1c…",
"folder_id": 12
}Помещает файл кто-то другой поделился с вами в вашей учетной записи, с вашей собственной ссылкой для общего доступа — здесь {uuid} это источник Пуля общего доступа к файлу, а не ваш. Никакие байты не передаются: копирование указывает на тот же сохраненный объект, поэтому оно завершается мгновенно и учитывается в квоте хранилища, как и любой другой файл.
Исходник должен быть публичным, законченным, а его владелец должен разрешить копирование — иначе вы получите 403. 409 означает, что это уже ваш файл (или уже в вашей учетной записи), и 403 также охватывает «осталось недостаточно места». Необязательные поля тела: folder_id, is_public (по умолчанию true) и free_download (по умолчанию ложь).
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/copy \
-H "Authorization: Bearer f2s_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"folder_id":12,"is_public":true}'{
"uuid": "8b2e…-…-…",
"name": "report.pdf",
"size": 184320,
"status": "completed",
"share_url": "https://…/f/8b2e…",
"copied": true
}Мягко удаляет принадлежащий вам файл; он немедленно перестает быть доступным для загрузки, и вскоре после этого его байты восстанавливаются.
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/delete \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{ "ok": true, "uuid": "3f1c…-…-…" }