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."
}

Конечные точки

ПОЛУЧАТЬ /v1/пользователь
Получить текущего пользователя

Возвращает учетную запись владельца токена, активный план и текущее использование хранилища.

Запрос
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
  }
}
ПОЛУЧАТЬ /v1/файлы
Список файлов

Отображает список завершенных файлов, начиная с самых новых. Разбивка по страницам курсора: передать возвращенное 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
}
ПОЛУЧАТЬ /v1/папки
Список папок

Все папки в вашей учетной записи, в первую очередь папки верхнего уровня. Используйте 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" }
  ]
}
ПОЧТА /v1/папки
Создать папку

Создает папку. 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"
}
ПОЧТА /v1/загрузки
Создать загрузку

Пошаговое руководство по загрузке — загрузка состоит из двух шагов потому что байты уходят прямо на сервер хранения (через возобновляемый тус протокол); они никогда не проходят через этот 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…"
}
⚠ Разбивайте загружаемые файлы на части — требуется для файлов размером более ~100 МБ. Хранение сервер находится за CDN, который отклоняет любой отдельный запрос, тело которого превышает ~100 МБ с 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();
ПОЧТА /v1/uploads/{uuid}/подтвердить
Подтвердите дедупликацию

Второй шаг 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…"
}
ПОЛУЧАТЬ /v1/files/{uuid}
Получить информацию о файле

Возвращает метаданные для одного файла, которым вы владеете.

Запрос
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
}
ПОЛУЧАТЬ /v1/files/{uuid}/статус
Проверить статус загрузки

Упрощенная проверка состояния загрузки: 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…"
}
ПОЛУЧАТЬ /v1/files/{uuid}/загрузить
Получите прямую ссылку для скачивания

Создает готовый 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
}
ПОЧТА /v1/files/{uuid}/переименовать
Переименовать файл

Изменяет отображаемое имя файла, которым вы владеете. Ссылка на общий доступ (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…"
}
ПОЧТА /v1/files/{uuid}/переместить
Переместить файл

Сохраняет принадлежащий вам файл в одну из ваших папок. Отправлять {"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
}
ПОЧТА /v1/files/{uuid}/копия
Копирование общего файла

Помещает файл кто-то другой поделился с вами в вашей учетной записи, с вашей собственной ссылкой для общего доступа — здесь {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
}
ПОЧТА /v1/files/{uuid}/delete
Удалить файл

Мягко удаляет принадлежащий вам файл; он немедленно перестает быть доступным для загрузки, и вскоре после этого его байты восстанавливаются.

Запрос
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/delete \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Ответ
{ "ok": true, "uuid": "3f1c…-…-…" }