画像ホスティングAPI:POST 1回で画像をアップロード

MyIMGs.orgの画像ホスティングAPIは、1回のリクエストで画像をアップロードして直リンクを返します。APIキーを付けてファイルまたはbase64画像を送るとJSONが返るので、アプリ、ウェブサイト、掲示板にそのまま使えます。画像はすべてCDNからHTTPSで配信されます。 API利用はすべてのProプランに含まれ、月額$3.29からです。

画像ホスティングAPIキーの取得方法

  1. MyIMGs.orgの無料アカウントを作成し、メールアドレスを確認します。
  2. Proプランと料金のページでプランを選びます。API利用はすべてのProプランに含まれます。
  3. アカウントページを開き、APIキーを作成を選びます。
  4. キーをコピーします。キーが表示されるのは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.extensionjpg、png、gif、webpのいずれか。実際のファイル内容から判定されます。
data.size保存後のサイズ(バイト)。
data.optimizedoptimizeを送ったためにWebPへ変換された場合はtrue、それ以外はfalse。
data.url画像の直リンク。<img>タグ、BBCode、アプリで使えます。
data.viewer_url画像を表示するページへのリンク。data.url_viewerにも同じリンクが入ります。
data.titledata.nameと同じ値。
data.display_urldata.urlと同じ値。
data.width, data.height画像のサイズ(ピクセル)。
data.timeアップロード時刻(Unixタイムスタンプ)。
data.expiration常に0。画像に有効期限はありません。
data.image保存されたファイル:filename、name、mime、extension、url。
statusHTTPステータスコード。画像が保存されたときは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画像を保存しました。レスポンスにリンクが含まれます。
401APIキーがないか、正しくありません。
403アカウントに有効なProプランがないか、アカウントが無効です。
413画像が96 MBを超えています。
422画像が送られていないか、base64文字列が不正か、JPG、PNG、GIF、WebP以外のファイルです。
4291分間に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

Proプランを見てAPIキーを取得

画像ホスティング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は無料の画像ホスティングサービスです。登録なしでホームページから画像をアップロードできます。