API do hostingu obrazów: wysyłaj obrazy jednym żądaniem POST

API hostingu obrazów MyIMGs.org przesyła obraz i zwraca bezpośredni link w jednym żądaniu. Wyślij plik lub obraz w base64 razem z kluczem API i odbierz JSON, gotowy do użycia w aplikacjach, na stronach i forach. Każdy obraz jest serwowany z CDN przez HTTPS. Dostęp do API jest w każdym planie Pro, od $3.29 miesięcznie.

Jak zdobyć klucz API do hostingu obrazów

  1. Załóż darmowe konto w MyIMGs.org i potwierdź adres e-mail.
  2. Wybierz plan na stronie planów i cen Pro. Dostęp do API jest w każdym planie Pro.
  3. Otwórz stronę konta i wybierz Utwórz klucz API.
  4. Skopiuj klucz. Pokazujemy go tylko raz. Jeśli go zgubisz, utwórz nowy klucz, a stary przestanie działać.

Wyślij obraz za pomocą curl (szybki start)

Zamień YOUR_API_KEY na swój klucz i uruchom:

curl -X POST https://myimgs.org/api/v1/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "image=@photo.jpg"

Odpowiedź to JSON. Użyj data.url jako bezpośredniego linku do obrazu, a data.viewer_url jako strony, która pokazuje obraz:

{
  "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"
    }
  }
}

Dokumentacja API do wysyłania obrazów

Jeden endpoint: POST https://myimgs.org/api/v1/upload

Uwierzytelnianie

Wyślij klucz w nagłówku Authorization: Bearer YOUR_API_KEY. W skryptach napisanych dla ImgBB działa też pole formularza key. Gdy tylko możesz, używaj nagłówka, bo pola formularza mogą trafić do logów serwera.

Pola żądania

PoleWymaganeOpis
imageTakPlik obrazu (multipart form data) albo ciąg base64. Akceptowany jest też data URI, na przykład data:image/png;base64,....
nameNieNazwa pliku zapisanego obrazu. Zostają tylko litery, cyfry, myślnik i podkreślnik. Domyślnie jest to nazwa przesłanego pliku.
optimizeNieWyślij 1 lub true, aby obrazy JPG, PNG i WebP zamieniać na skompresowany WebP, gdy plik będzie przez to mniejszy. Pliki GIF nigdy nie są konwertowane. Odpowiedź pokazuje końcowy plik w data.extension i data.url.
keyNieTwój klucz API, jeśli nie używasz nagłówka Authorization.

Pola odpowiedzi

PoleOpis
successtrue, gdy obraz został zapisany.
data.idKrótki identyfikator obrazu.
data.nameNazwa zapisanego pliku, bez rozszerzenia.
data.extensionjpg, png, gif lub webp, ustalone na podstawie rzeczywistej zawartości pliku.
data.sizeRozmiar zapisanego pliku w bajtach.
data.optimizedtrue, gdy obraz został zamieniony na WebP, bo wysłano optimize, w przeciwnym razie false.
data.urlBezpośredni link do obrazu. Używaj go w tagach <img>, w BBCode i w aplikacjach.
data.viewer_urlLink do strony, która wyświetla obraz. data.url_viewer zawiera ten sam link.
data.titleTo samo co data.name.
data.display_urlTo samo co data.url.
data.width, data.heightRozmiar obrazu w pikselach.
data.timeCzas przesłania jako uniksowy znacznik czasu.
data.expirationZawsze 0: obrazy nie wygasają.
data.imageZapisany plik: filename, name, mime, extension i url.
statusKod statusu HTTP, 201, gdy obraz został zapisany.

Przykłady API do wysyłania obrazów w JavaScript, Python i PHP

JavaScript (Node.js 18 lub nowszy)

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"];

Wysyłanie obrazu w base64

Przydaje się, gdy obraz istnieje tylko w pamięci, na przykład z canvas albo zrzut ekranu:

curl -X POST https://myimgs.org/api/v1/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "image=$(base64 -w0 photo.jpg)" \
  -F "name=photo"

Duże zdjęcia wysyłają się szybciej, gdy są mniejsze. Przed wysłaniem możesz skompresować obrazy w przeglądarce darmowym narzędziem do kompresji.

Błędy i kody statusu API do hostingu obrazów

Błędy zwracają JSON w stylu {"success": false, "error": "message"} z jednym z tych kodów statusu:

StatusZnaczenie
201Obraz zapisany. Odpowiedź zawiera linki.
401Brak klucza API lub klucz jest błędny.
403Konto nie ma aktywnego planu Pro albo jest wyłączone.
413Obraz jest większy niż 96 MB.
422Nie wysłano obrazu, tekst base64 jest nieprawidłowy albo plik nie jest obrazem JPG, PNG, GIF ani WebP.
429Ponad 60 żądań w ciągu minuty. Poczekaj i spróbuj ponownie.

Limity API do hostingu obrazów

Rozmiar obrazu96 MB na obraz
FormatyJPG, PNG, GIF (animacja zostaje) i WebP
Limit żądań60 żądań na minutę dla każdego konta
Miejsce na daneNielimitowane miejsce w planach Pro
DostarczanieCDN przez HTTPS, bezpośrednie linki działają na forach, stronach i w aplikacjach
Dane wejściowePrzesłany plik lub base64

Alternatywa dla API ImgBB

Jeśli już wysyłasz obrazy przez API ImgBB, przejście wymaga dwóch zmian: skieruj żądanie na https://myimgs.org/api/v1/upload i użyj klucza z MyIMGs.org. Pola key i image działają tak samo, a bezpośredni link wraca w data.url. Odpowiedź używa też nazw z ImgBB dla url_viewer, display_url, title, width, height, time, expiration i image. Nie ma w niej thumb, medium ani delete_url, a API nie pobiera obrazu z adresu URL i nie przyjmuje ustawienia wygaśnięcia. Plany Pro dodają obrazy do 96 MB, brak reklam i nielimitowane miejsce.

Cennik API do hostingu obrazów

API jest w każdym planie Pro. Wybierz okres rozliczeniowy, który Ci odpowiada:

Plan miesięczny

$11.49 miesięcznie

Plan roczny

$6.49 miesięcznie

płatność $77.88

Plan 3-letni

$3.29 miesięcznie

płatność $118.44

Zobacz plany Pro i zdobądź klucz API

API do hostingu obrazów: najczęstsze pytania

Czy jest darmowe API do hostingu obrazów?

Wysyłanie przez API wymaga planu Pro, który kosztuje od $3.29 miesięcznie. Darmowe konto hostuje do 20 obrazów przesłanych ze strony i nie ma klucza API.

Jaki jest maksymalny rozmiar obrazu w API?

96 MB na obraz. Większe pliki dostają błąd 413.

Jakie formaty obrazów przyjmuje API do wysyłania obrazów?

JPG, PNG, GIF i WebP. Format jest odczytywany z samego pliku, więc plik z błędnym rozszerzeniem i tak jest sprawdzany po rzeczywistej zawartości, a wszystko, co nie jest prawdziwym obrazem, zostaje odrzucone. Animowane GIF-y pozostają animowane.

Czy mogę wysłać obraz z adresu URL?

Nie. Wyślij plik jako multipart form data albo obraz jako ciąg base64. Pobieranie adresów URL celowo pominęliśmy ze względów bezpieczeństwa.

Czy mogę usuwać obrazy przez API?

Jeszcze nie. Na razie jedynym wywołaniem API jest wysyłanie. Obrazy usuwasz w swoim panelu.

Jak zmienić lub unieważnić klucz API?

Wybierz Utwórz nowy klucz na stronie konta. Stary klucz przestaje działać natychmiast, a nowy jest pokazywany tylko raz.

Jaki jest limit żądań API?

60 żądań na minutę dla każdego konta. Powyżej tego API odpowiada statusem 429 do końca minuty.

Czy obrazy wysłane przez API wygasają?

Nie. Nie ma ustawienia wygasania. Obrazy wysłane z Twoim kluczem zostają na Twoim koncie.

Czy API działa ze skryptami napisanymi dla ImgBB?

Tak, w przypadku wysyłania. Wyślij te same pola key i image na adres MyIMGs.org. Odpowiedź używa tych samych nazw dla url, url_viewer, display_url, title, width, height, time, expiration i image. Nie ma w niej thumb, medium ani delete_url, a API nie przyjmuje adresu URL obrazu ani ustawienia wygaśnięcia.

MyIMGs.org to darmowy hosting obrazów. Prześlij obraz na stronie głównej bez zakładania konta.