API リファレンス
ファイル操作・公開・トークン発行など、管理画面でできることは API でもできます。
基本
| 項目 | 内容 |
| ベース URL | https://s1-storage.nextvps.online |
| 認証 | Authorization: Bearer nsk_…(API キー)。キーの持ち主として動き、キーの権限と対象フォルダの範囲だけ操作できます |
| 本文 | JSON は Content-Type: application/json。アップロードは本文がそのままファイル |
| エラー | {"error": "…"} と HTTP ステータス |
| ステータス | 意味 |
400 | 入力の誤り(パスが不正、必須項目なし など) |
401 | キーが無い・無効・期限切れ・取り消し済み |
403 | キーの権限が足りない、または対象フォルダの外 |
404 | ファイル・リンクが無い(他人のものも 404) |
409 | 既に存在する(overwrite=0 のアップロード、同名フォルダ) |
413 / 507 | 容量の上限超過/ノードの空き不足 |
ファイル
| メソッド | パス | 権限 | 内容 |
| GET | /api/files?path=/dir | files:read | フォルダの中身(各ファイルの保存先ノード付き) |
| GET | /api/files/stat?path=/a.txt | files:read | 詳細(保存先・sha256・公開リンク) |
| GET | /api/files/tree?path=/dir&limit=1000 | files:read | 配下をすべて(最大 10000 件、truncated で続きの有無) |
| GET | /api/files/recent?limit=10 | files:read | 最近更新したファイル |
| GET | /api/files/content?path=/a.txt | files:read | ダウンロード(Range 対応) |
| PUT | /api/files/content?path=/dir/a.txt | files:write | アップロード。親フォルダは自動作成。overwrite=0 で上書き禁止、mtime(ミリ秒)で更新日時を指定、class=slow で低速ストレージ(既定は高速) |
| POST | /api/files/mkdir | files:write | {"path":"/a/b","parents":true} |
| POST | /api/files/move | files:write | {"from":"/a","to":"/b"} 移動・名前変更 |
| POST | /api/files/copy | files:write | {"from":"/a","to":"/b"} データ共有で即時 |
| POST | /api/files/delete | files:write | {"paths":["/a","/b"]} フォルダは中身ごと |
# 低速ストレージに保管(Cloudflare R2)
curl -T backup.tar.gz -H "Authorization: Bearer nsk_…" "https://s1-storage.nextvps.online/api/files/content?path=/archive/backup.tar.gz&class=slow"
# アップロード(上書きしない)
curl -T report.pdf -H "Authorization: Bearer nsk_…" \
"https://s1-storage.nextvps.online/api/files/content?path=/docs/report.pdf&overwrite=0"
# フォルダの中身
curl -H "Authorization: Bearer nsk_…" "https://s1-storage.nextvps.online/api/files?path=/docs"
# ダウンロード
curl -o report.pdf -H "Authorization: Bearer nsk_…" "https://s1-storage.nextvps.online/api/files/content?path=/docs/report.pdf"
公開
| メソッド | パス | 権限 | 内容 |
| POST | /api/publish | publish | {"path":"/site","access":"public"}(access: public / token) |
| POST | /api/unpublish | publish | {"id":"<公開ID>"} |
| GET | /api/publics | publish | 公開リンク一覧(URL・アクセス方式・ダウンロード数付き) |
| GET | /api/publics/get?id= または ?path= | publish | 公開リンク 1 件 |
| POST | /api/publics/access | publish | {"id":"…","access":"token"} アクセス方式の変更 |
アクセストークン
| メソッド | パス | 権限 | 内容 |
| POST | /api/publics/tokens | tokens | {"public_id","once","ttl_seconds","label"} → token と urls.link |
| GET | /api/publics/tokens?public_id= | tokens | トークン一覧(使用状況付き。トークン本体は返りません) |
| POST | /api/publics/tokens/revoke | tokens | {"id":123} |
詳しくは 公開リンクとアクセストークン。
API キー
| メソッド | パス | 権限 | 内容 |
| GET | /api/keys | keys | 一覧 |
| POST | /api/keys | keys | {"label","ttl_days","scopes","path_prefix"} |
| POST | /api/keys/revoke | keys | {"id":123} |
アカウント・ノード
| メソッド | パス | 権限 | 内容 |
| GET | /api/me | — | ユーザー情報 |
| GET | /api/usage | — | ファイル数・容量・ダウンロード統計 |
| GET | /api/nodes | — | ノード ID・リージョン・稼働状態 |
GET /api/usage
{
"files": 128, "folders": 12, "publics": 4,
"used_bytes": 5368709120, "quota_bytes": 0,
"downloads": { "links": {"count": 932, "bytes": 81604378624},
"direct": {"count": 15, "bytes": 1073741824},
"total": {"count": 947, "bytes": 82678120448} },
"downloads_7d": { "links": {…}, "direct": {…}, "total": {…} }
}
links は公開リンク経由、direct は本人のダウンロード(Web・API・FTP)。数え方は ダッシュボードとダウンロード統計。