Разработчикам · бесплатный API

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

Загружайте изображения из своих приложений, ботов и скриптов. Один запрос возвращает прямую ссылку, HTML, BBCode и Markdown.

Получить ключ API

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

Создайте ключ в разделе Панель управления → Настройки → Ключи API. Передавайте его с каждым запросом:

Заголовок
Authorization: Bearer YOUR_API_KEY

Храните ключи на своём сервере. Любой, у кого есть ключ, может загружать изображения в ваш аккаунт и удалять их.

Загрузка изображения

POST /api/v1/upload

ПолеОписание
imageФайл изображения (multipart), до 4 МБ
urlВместо файла — публичный URL изображения для скачивания, до 32 МБ
nameНеобязательное название для страницы изображения
expiresInНеобязательное автоудаление: 1h (1 час), 1d (1 день), 1w (1 неделя), 1m (1 месяц), 6m (6 месяцев)
curl: загрузка файла
curl -X POST https://imgsharehub.com/api/v1/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]" \
  -F "name=Login error"
curl: загрузка по URL
curl -X POST https://imgsharehub.com/api/v1/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/photo.jpg", "expiresIn": "1w"}'
Node.js
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://imgsharehub.com/api/v1/upload", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IMGSHAREHUB_KEY}` },
  body: form,
});
const { data } = await res.json();
console.log(data.direct_url);
Python
import os, requests

res = requests.post(
    "https://imgsharehub.com/api/v1/upload",
    headers={"Authorization": f"Bearer {os.environ['IMGSHAREHUB_KEY']}"},
    files={"image": open("photo.jpg", "rb")},
)
print(res.json()["data"]["direct_url"])

Ответ (201)

JSON
{
  "success": true,
  "data": {
    "id": "a1b2c3",
    "url": "https://imgsharehub.com/a1b2c3",
    "direct_url": "https://imgsharehub.com/i/a1b2c3.webp",
    "html": "<a href=\"https://imgsharehub.com/a1b2c3\" target=\"_blank\"><img src=\"https://imgsharehub.com/i/a1b2c3.webp\" alt=\"Image hosted on ImgShareHub\" /></a>",
    "bbcode": "[url=https://imgsharehub.com/a1b2c3][img]https://imgsharehub.com/i/a1b2c3.webp[/img][/url]",
    "markdown": "[![Image](https://imgsharehub.com/i/a1b2c3.webp)](https://imgsharehub.com/a1b2c3)",
    "width": 1920,
    "height": 1080,
    "size": 284512,
    "private": false,
    "expires_at": null
  }
}

Получение и удаление изображения

Работает для изображений, принадлежащих аккаунту владельца ключа. GET также возвращает created_at и views.

Получить
curl https://imgsharehub.com/api/v1/images/a1b2c3 \
  -H "Authorization: Bearer YOUR_API_KEY"
Удалить
curl -X DELETE https://imgsharehub.com/api/v1/images/a1b2c3 \
  -H "Authorization: Bearer YOUR_API_KEY"

Лимиты и ошибки

Каждый ключ может загружать 100 изображений в час и выполнять 1000 других запросов в час. Каждый ответ содержит заголовки X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset. Ошибки возвращаются в виде {"success": false, "error": "..."}.

СтатусЗначение
400Нет изображения, неподдерживаемый файл, файл слишком большой или URL, который не удаётся скачать
401Ключ API не указан, неизвестен или отозван
404Изображение не найдено или не принадлежит аккаунту владельца ключа
429Достигнут лимит запросов; см. заголовок X-RateLimit-Reset
500Что-то пошло не так на нашей стороне; повторите попытку позже

Без программирования

Вопросы об API

API ImgShareHub бесплатный?

Да. В настройках аккаунта можно создать до 5 ключей. Каждый ключ может загружать 100 изображений в час.

Каков максимальный размер файла?

Файлы, отправленные прямо в запросе, могут весить до 4 МБ. Для изображений побольше, до 32 МБ, отправьте публичный URL — ImgShareHub скачает изображение сам.

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

В панели управления аккаунта, которому принадлежит ключ, рядом с изображениями, загруженными через сайт.

Могут ли загруженные изображения удаляться автоматически?

Да. Задайте для expiresIn одно из значений: 1h (1 час), 1d (1 день), 1w (1 неделя), 1m (1 месяц), 6m (6 месяцев). Изображения с истёкшим сроком сразу перестают загружаться.