API хостинга изображений: загрузка картинок одним POST-запросом

API хостинга изображений MyIMGs.org загружает изображение и возвращает прямую ссылку за один запрос. Отправьте файл или изображение в base64 вместе с ключом API и получите JSON, готовый для приложений, сайтов и форумов. Все изображения отдаются через CDN по HTTPS. Доступ к API входит в каждый тариф Pro, от $3.29 в месяц.

Как получить ключ API хостинга изображений

  1. Создайте бесплатный аккаунт MyIMGs.org и подтвердите email.
  2. Выберите тариф на странице тарифов и цен Pro. Доступ к API входит в каждый тариф Pro.
  3. Откройте страницу аккаунта и нажмите Создать ключ API.
  4. Скопируйте ключ. Он показывается один раз. Если вы его потеряете, создайте новый ключ, и старый перестанет работать.

Загрузка изображения через 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 загрузки изображений

Один эндпоинт: POST https://myimgs.org/api/v1/upload

Аутентификация

Передавайте ключ в заголовке Authorization: Bearer YOUR_API_KEY. Для скриптов, написанных под ImgBB, работает и поле формы key. По возможности используйте заголовок: поля формы могут попасть в логи сервера.

Поля запроса

ПолеОбязательноеОписание
imageДаФайл изображения (multipart form data) или строка base64. Принимается и data URI вида data:image/png;base64,....
nameНетИмя файла для сохраненного изображения. Сохраняются только буквы, цифры, дефис и подчеркивание. По умолчанию берется имя загруженного файла.
optimizeНетОтправьте 1 или true, чтобы конвертировать изображения JPG, PNG и WebP в сжатый WebP, если файл от этого станет меньше. GIF никогда не конвертируются. Итоговый файл указан в ответе в data.extension и data.url.
keyНетВаш ключ API, если вы не используете заголовок Authorization.

Поля ответа

ПолеОписание
successtrue, если изображение сохранено.
data.idКороткий ID изображения.
data.nameИмя сохраненного файла без расширения.
data.extensionjpg, png, gif или webp, определяется по реальному содержимому файла.
data.sizeРазмер сохраненного файла в байтах.
data.optimizedtrue, если изображение конвертировано в WebP, потому что вы отправили optimize, иначе 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 timestamp.
data.expirationВсегда 0: срок хранения изображений не ограничен.
data.imageСохраненный файл: filename, name, mime, extension и url.
statusКод статуса HTTP, 201, если изображение сохранено.

Примеры API загрузки изображений на JavaScript, Python и PHP

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 хостинга изображений

Ошибки возвращают JSON вида {"success": false, "error": "message"} с одним из этих кодов статуса:

СтатусЗначение
201Изображение сохранено. В ответе есть ссылки.
401Ключ API не передан или неверен.
403У аккаунта нет активного тарифа Pro, или аккаунт отключен.
413Изображение больше 96 МБ.
422Изображение не отправлено, текст base64 некорректен или файл не является изображением JPG, PNG, GIF или WebP.
429Больше 60 запросов за минуту. Подождите и повторите.

Лимиты API хостинга изображений

Размер изображенияДо 96 МБ на изображение
ФорматыJPG, PNG, GIF (с анимацией) и WebP
Лимит запросов60 запросов в минуту на аккаунт
ХранилищеБезлимитное хранилище на тарифах Pro
ДоставкаCDN по HTTPS, прямые ссылки работают на форумах, сайтах и в приложениях
Входные данныеЗагрузка файла или base64

Альтернатива API ImgBB

Если вы уже загружаете через API ImgBB, для перехода нужно изменить две вещи: отправлять запрос на https://myimgs.org/api/v1/upload и использовать свой ключ MyIMGs.org. Поля key и image работают так же, а прямая ссылка возвращается в data.url. В ответе также используются названия ImgBB для url_viewer, display_url, title, width, height, time, expiration и image. В нем нет thumb, medium и delete_url, и API не загружает изображение по URL и не принимает настройку срока хранения. Тарифы Pro дают изображения до 96 МБ, сайт без рекламы и безлимитное хранилище.

Цены на API хостинга изображений

API входит в каждый тариф Pro. Выберите удобный период оплаты:

Месячный тариф

$11.49 в месяц

Годовой тариф

$6.49 в месяц

к оплате $77.88

Тариф на 3 года

$3.29 в месяц

к оплате $118.44

Смотреть тарифы Pro и получить ключ API

Вопросы и ответы об API хостинга изображений

Есть ли бесплатный API хостинга изображений?

Для загрузки через API нужен тариф Pro, от $3.29 в месяц. Бесплатный аккаунт хранит изображения, загруженные через сайт (лимит: 20 шт.), и не имеет ключа API.

Какой максимальный размер изображения для API?

96 МБ на изображение. На файлы больше вернется ошибка 413.

Какие форматы изображений принимает API загрузки?

JPG, PNG, GIF и WebP. Формат определяется по самому файлу, поэтому файл с неверным расширением все равно проверяется по реальному содержимому, а все, что не является настоящим изображением, отклоняется. Анимированные GIF остаются анимированными.

Можно ли загрузить изображение по URL?

Нет. Отправьте файл как multipart form data или изображение строкой base64. Загрузка по URL намеренно отключена ради безопасности.

Можно ли удалять изображения через API?

Пока нет. Сейчас API умеет только загружать. Удаляйте изображения в личном кабинете.

Как сменить или отозвать ключ API?

Нажмите "Создать новый ключ" на странице аккаунта. Старый ключ сразу перестанет работать, а новый будет показан один раз.

Какой лимит запросов у API?

60 запросов в минуту на аккаунт. Сверх этого API отвечает статусом 429, пока не закончится минута.

Удаляются ли со временем изображения, загруженные через API?

Нет. Срок хранения не задается. Изображения, загруженные с вашим ключом, остаются в вашем аккаунте.

Работает ли API со скриптами, написанными под ImgBB?

Да, для загрузки. Отправляйте те же поля key и image на URL MyIMGs.org. В ответе те же названия для url, url_viewer, display_url, title, width, height, time, expiration и image. В нем нет thumb, medium и delete_url, и API не принимает URL изображения или настройку срока хранения.

MyIMGs.org - бесплатный хостинг изображений. Загрузите изображение на главной странице без аккаунта.