API хостинга изображений: загрузка картинок одним POST-запросом
API хостинга изображений MyIMGs.org загружает изображение и возвращает прямую ссылку за один запрос. Отправьте файл или изображение в base64 вместе с ключом API и получите JSON, готовый для приложений, сайтов и форумов. Все изображения отдаются через CDN по HTTPS. Доступ к API входит в каждый тариф Pro, от $3.29 в месяц.
Как получить ключ API хостинга изображений
- Создайте бесплатный аккаунт MyIMGs.org и подтвердите email.
- Выберите тариф на странице тарифов и цен Pro. Доступ к API входит в каждый тариф Pro.
- Откройте страницу аккаунта и нажмите Создать ключ API.
- Скопируйте ключ. Он показывается один раз. Если вы его потеряете, создайте новый ключ, и старый перестанет работать.
Загрузка изображения через 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. |
Поля ответа
| Поле | Описание |
|---|---|
success | true, если изображение сохранено. |
data.id | Короткий ID изображения. |
data.name | Имя сохраненного файла без расширения. |
data.extension | jpg, png, gif или webp, определяется по реальному содержимому файла. |
data.size | Размер сохраненного файла в байтах. |
data.optimized | true, если изображение конвертировано в 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 - бесплатный хостинг изображений. Загрузите изображение на главной странице без аккаунта.