画像ホスティングAPI:POST 1回で画像をアップロード
MyIMGs.orgの画像ホスティングAPIは、1回のリクエストで画像をアップロードして直リンクを返します。APIキーを付けてファイルまたはbase64画像を送るとJSONが返るので、アプリ、ウェブサイト、掲示板にそのまま使えます。画像はすべてCDNからHTTPSで配信されます。 API利用はすべてのProプランに含まれ、月額$3.29からです。
画像ホスティングAPIキーの取得方法
- MyIMGs.orgの無料アカウントを作成し、メールアドレスを確認します。
- Proプランと料金のページでプランを選びます。API利用はすべてのProプランに含まれます。
- アカウントページを開き、APIキーを作成を選びます。
- キーをコピーします。キーが表示されるのは1回だけです。紛失した場合は新しいキーを作ると、古いキーは使えなくなります。
curlで画像をアップロード(クイックスタート)
YOUR_API_KEYをご自身のキーに置き換えて実行します。
curl -X POST https://myimgs.org/api/v1/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@photo.jpg"
返ってくるのはJSONです。data.urlが画像の直リンク、data.viewer_urlが画像を表示するページのリンクです。
{
"success": true,
"status": 201,
"data": {
"id": "AbC12xyz",
"title": "photo",
"name": "photo",
"extension": "jpg",
"size": 245891,
"optimized": false,
"url": "https://myimgs.org/storage/images/61178/photo.jpg",
"viewer_url": "https://myimgs.org/image/AbC12xyz",
"url_viewer": "https://myimgs.org/image/AbC12xyz",
"display_url": "https://myimgs.org/storage/images/61178/photo.jpg",
"width": 1600,
"height": 1067,
"time": 1762000000,
"expiration": 0,
"image": {
"filename": "photo.jpg",
"name": "photo",
"mime": "image/jpeg",
"extension": "jpg",
"url": "https://myimgs.org/storage/images/61178/photo.jpg"
}
}
}
画像アップロードAPIリファレンス
エンドポイントは1つです:POST https://myimgs.org/api/v1/upload
認証
キーはAuthorization: Bearer YOUR_API_KEYヘッダーで送ります。ImgBB用に書かれたスクリプトでは、keyフォームフィールドも使えます。フォームフィールドはサーバーのログに残ることがあるため、可能ならヘッダーを使ってください。
リクエストのフィールド
| フィールド | 必須 | 説明 |
|---|---|---|
image | はい | 画像ファイル(multipartフォームデータ)またはbase64文字列。data:image/png;base64,...のようなデータURIも使えます。 |
name | いいえ | 保存する画像のファイル名。使えるのは英数字、ハイフン、アンダースコアのみで、それ以外は取り除かれます。省略するとアップロードしたファイル名になります。 |
optimize | いいえ | 1またはtrueを送ると、JPG、PNG、WebPの画像を、サイズが小さくなる場合に圧縮WebPへ変換します。GIFは変換されません。最終的なファイルはdata.extensionとdata.urlに反映されます。 |
key | いいえ | Authorizationヘッダーを使わない場合のAPIキー。 |
レスポンスのフィールド
| フィールド | 説明 |
|---|---|
success | 画像が保存されたときはtrue。 |
data.id | 画像の短いID。 |
data.name | 拡張子を除いた、保存後のファイル名。 |
data.extension | jpg、png、gif、webpのいずれか。実際のファイル内容から判定されます。 |
data.size | 保存後のサイズ(バイト)。 |
data.optimized | optimizeを送ったためにWebPへ変換された場合はtrue、それ以外はfalse。 |
data.url | 画像の直リンク。<img>タグ、BBCode、アプリで使えます。 |
data.viewer_url | 画像を表示するページへのリンク。data.url_viewerにも同じリンクが入ります。 |
data.title | data.nameと同じ値。 |
data.display_url | data.urlと同じ値。 |
data.width, data.height | 画像のサイズ(ピクセル)。 |
data.time | アップロード時刻(Unixタイムスタンプ)。 |
data.expiration | 常に0。画像に有効期限はありません。 |
data.image | 保存されたファイル:filename、name、mime、extension、url。 |
status | HTTPステータスコード。画像が保存されたときは201。 |
JavaScript、Python、PHPの画像アップロードAPIサンプル
JavaScript(Node.js 18以上)
import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("image", new Blob([await readFile("photo.jpg")]), "photo.jpg");
const res = await fetch("https://myimgs.org/api/v1/upload", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
body: form,
});
const json = await res.json();
console.log(json.data.url);
Python(requests)
import requests
r = requests.post(
"https://myimgs.org/api/v1/upload",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"image": open("photo.jpg", "rb")},
)
print(r.json()["data"]["url"])
PHP(cURL)
$ch = curl_init("https://myimgs.org/api/v1/upload");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
CURLOPT_POSTFIELDS => ["image" => new CURLFile("photo.jpg")],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
echo $data["data"]["url"];
base64画像をアップロード
canvasやスクリーンショットなど、画像がメモリ上にしかない場合に便利です。
curl -X POST https://myimgs.org/api/v1/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=$(base64 -w0 photo.jpg)" \
-F "name=photo"
大きな写真は、サイズを小さくするとアップロードが速くなります。送信前に、無料の画像圧縮ツールでブラウザ上で画像を圧縮できます。
画像ホスティングAPIのエラーとステータスコード
エラー時は{"success": false, "error": "message"}のようなJSONが、次のいずれかのステータスコードで返ります。
| ステータス | 意味 |
|---|---|
| 201 | 画像を保存しました。レスポンスにリンクが含まれます。 |
| 401 | APIキーがないか、正しくありません。 |
| 403 | アカウントに有効なProプランがないか、アカウントが無効です。 |
| 413 | 画像が96 MBを超えています。 |
| 422 | 画像が送られていないか、base64文字列が不正か、JPG、PNG、GIF、WebP以外のファイルです。 |
| 429 | 1分間に60回を超えるリクエストです。しばらく待ってから再試行してください。 |
画像ホスティングAPIの制限
| 画像サイズ | 1枚96 MBまで |
|---|---|
| 対応形式 | JPG、PNG、GIF(アニメーション維持)、WebP |
| レート制限 | アカウントごとに毎分60リクエスト |
| ストレージ | Proプランは無制限のストレージ |
| 配信 | CDNからHTTPSで配信。直リンクは掲示板、ウェブサイト、アプリで使えます |
| 入力方法 | ファイルアップロードまたはbase64 |
ImgBB APIの代わりに使う
すでにImgBB APIでアップロードしている場合、切り替えは2か所の変更だけです。リクエスト先をhttps://myimgs.org/api/v1/uploadにして、MyIMGs.orgのキーを使います。keyとimageのフィールドは同じように使え、直リンクはdata.urlに入ります。レスポンスでは、url_viewer、display_url、title、width、height、time、expiration、imageにもImgBBと同じ名前を使っています。thumb、medium、delete_urlはなく、URLからの画像取得や有効期限の設定にも対応していません。Proプランなら、96 MBの画像、広告なし、無制限のストレージが使えます。
画像ホスティングAPIの料金
APIはすべてのProプランに含まれます。ご希望の請求期間をお選びください。
月額プラン
$11.49 /月
年額プラン
$6.49 /月
請求額$77.88
3年プラン
$3.29 /月
請求額$118.44
画像ホスティングAPIのFAQ
無料で使える画像ホスティングAPIはありますか。
APIでのアップロードにはProプランが必要で、月額$3.29からです。無料アカウントでは、ウェブサイトから20枚まで保存できますが、APIキーはありません。
APIで送れる画像の最大サイズは?
1枚96 MBまでです。これより大きいファイルは413エラーになります。
画像アップロードAPIはどの画像形式に対応していますか。
JPG、PNG、GIF、WebPです。形式はファイルそのものから判定するため、拡張子が違っていても実際の内容で確認され、本物の画像でないものは拒否されます。アニメーションGIFもそのまま動きます。
URLを指定して画像をアップロードできますか。
できません。ファイルをmultipartフォームデータで送るか、画像をbase64文字列で送ってください。URLからの取得は、セキュリティのためあえて対応していません。
APIで画像を削除できますか。
現在は未対応です。今のところAPIで使えるのはアップロードのみです。画像の削除はダッシュボードから行ってください。
APIキーを変更または無効にするには?
アカウントページの「新しいキーを作成」を使います。古いキーはすぐに使えなくなり、新しいキーは1回だけ表示されます。
APIのレート制限は?
アカウントごとに毎分60リクエストです。これを超えると、その1分が終わるまでAPIはステータス429を返します。
APIでアップロードした画像に有効期限はありますか。
ありません。有効期限の設定はなく、キーでアップロードした画像はアカウントに残ります。
ImgBB用に書いたスクリプトでもAPIを使えますか。
アップロード呼び出しなら使えます。同じkeyとimageのフィールドをMyIMGs.orgのURLに送ってください。レスポンスでは、url、url_viewer、display_url、title、width、height、time、expiration、imageに同じ名前を使っています。thumb、medium、delete_urlはなく、画像のURL指定や有効期限の設定にも対応していません。
MyIMGs.orgは無料の画像ホスティングサービスです。登録なしでホームページから画像をアップロードできます。