API ドキュメント
imgx のREST APIを使って、アプリケーションにファイル共有機能を統合できます。
画像・動画・ZIPに対応。全エンドポイントでCORS対応済み。認証にはAPIキーを使用します。
認証
APIキーはHTTPヘッダーまたはPOSTパラメータで送信します。APIキーは管理者に発行を依頼してください。
# ヘッダー方式(推奨)
X-API-Key: your_api_key_here
# パラメータ方式
api_key=your_api_key_here
1. ファイルのアップロード
POST
/api/upload.php
1つまたは複数のファイルをアップロードします。画像・動画・ZIPに対応。
ZIPファイルは40MBまで、その他は50MBまで。
パラメータ (multipart/form-data)
| 名前 | 必須 | 説明 |
|---|---|---|
files[] | はい | アップロードするファイル(複数可)。file でも可。 |
api_key | 任意 | APIキー。省略時はゲストアップロード。 |
visibility | 任意 | public(公開)または unlisted(限定)。デフォルト: public |
対応ファイル形式
| 種類 | 対応形式 | サイズ上限 |
|---|---|---|
| 画像 | JPEG, PNG, GIF, WebP, AVIF | 50 MB |
| 動画 | MP4, WebM, MOV | 50 MB |
| ZIP | ZIP | 40 MB |
使用例 (curl)
# 画像をアップロード
curl -X POST http://imgx.site/api/upload.php \
-H "X-API-Key: your_api_key" \
-F "files[]=@/path/to/image.jpg" \
-F "visibility=public"
# ZIPファイルをアップロード
curl -X POST http://imgx.site/api/upload.php \
-H "X-API-Key: your_api_key" \
-F "files[]=@/path/to/archive.zip"
# 複数ファイルを同時アップロード
curl -X POST http://imgx.site/api/upload.php \
-H "X-API-Key: your_api_key" \
-F "files[]=@image1.jpg" \
-F "files[]=@image2.png"
使用例 (JavaScript)
const fd = new FormData();
fd.append('files[]', fileInput.files[0]);
fd.append('visibility', 'public');
const response = await fetch('http://imgx.site/api/upload.php', {
method: 'POST',
headers: { 'X-API-Key': 'YOUR_KEY' },
body: fd
});
const data = await response.json();
console.log(data);
使用例 (Python)
import requests
url = "http://imgx.site/api/upload.php"
headers = {"X-API-Key": "YOUR_KEY"}
files = {"files[]": open("image.jpg", "rb")}
data = {"visibility": "public"}
r = requests.post(url, headers=headers, files=files, data=data)
print(r.json())
レスポンス例
{
"success": true,
"results": [
{
"id": "a1b2c3d",
"ext": "jpg",
"url": "http://imgx.site/i/a1b2c3d.jpg",
"page_url": "http://imgx.site/p/a1b2c3d",
"image_url": "http://imgx.site/i/a1b2c3d.jpg",
"delete_url": "http://imgx.site/delete/a1b2c3d/abc123...",
"expires_at": null
}
]
}
2. ファイル情報の取得
GET
/api/info.php?id={file_id}
アップロード済みファイルのメタデータを取得します。認証不要。
パラメータ
| 名前 | 必須 | 説明 |
|---|---|---|
id | はい | ファイルID(7文字の英数字) |
レスポンス例
{
"id": "a1b2c3d",
"image_url": "http://imgx.site/i/a1b2c3d.jpg",
"page_url": "http://imgx.site/p/a1b2c3d",
"size": 1048576,
"mime": "image/jpeg",
"ext": "jpg",
"created_at": 1708200000,
"views": 42,
"visibility": "public",
"expires_at": null,
"owner": {
"username": "user1",
"display_name": "ユーザー1",
"profile_url": "/u/user1"
}
}
3. ファイルの削除
DELETE
/api/delete.php?id={id}&token={token}
IDと削除トークンを使用してファイルを完全に削除します。削除トークンはアップロード時のレスポンスに含まれます。
パラメータ
| 名前 | 必須 | 説明 |
|---|---|---|
id | はい | ファイルID |
token | はい | 削除トークン(32文字の16進数) |
4. レート制限
IPアドレスごとに1時間あたり160回のアップロードに制限されています。制限を超えるとHTTP 500エラーが返されます。
5. ステータスコード
200成功
400不正なリクエスト(パラメータ不足・ファイルなし)
403アクセス拒否(IPバン・ユーザーバン・無効なトークン)
404ファイルが見つかりません
405メソッド不許可
500サーバーエラー(レート制限超過含む)
6. エラーレスポンス
{
"success": false,
"error": "エラーメッセージ"
}