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
- Załóż darmowe konto w MyIMGs.org i potwierdź adres e-mail.
- Wybierz plan na stronie planów i cen Pro. Dostęp do API jest w każdym planie Pro.
- Otwórz stronę konta i wybierz Utwórz klucz API.
- 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
| Pole | Wymagane | Opis |
|---|---|---|
image | Tak | Plik obrazu (multipart form data) albo ciąg base64. Akceptowany jest też data URI, na przykład data:image/png;base64,.... |
name | Nie | Nazwa pliku zapisanego obrazu. Zostają tylko litery, cyfry, myślnik i podkreślnik. Domyślnie jest to nazwa przesłanego pliku. |
optimize | Nie | Wyś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. |
key | Nie | Twój klucz API, jeśli nie używasz nagłówka Authorization. |
Pola odpowiedzi
| Pole | Opis |
|---|---|
success | true, gdy obraz został zapisany. |
data.id | Krótki identyfikator obrazu. |
data.name | Nazwa zapisanego pliku, bez rozszerzenia. |
data.extension | jpg, png, gif lub webp, ustalone na podstawie rzeczywistej zawartości pliku. |
data.size | Rozmiar zapisanego pliku w bajtach. |
data.optimized | true, gdy obraz został zamieniony na WebP, bo wysłano optimize, w przeciwnym razie false. |
data.url | Bezpośredni link do obrazu. Używaj go w tagach <img>, w BBCode i w aplikacjach. |
data.viewer_url | Link do strony, która wyświetla obraz. data.url_viewer zawiera ten sam link. |
data.title | To samo co data.name. |
data.display_url | To samo co data.url. |
data.width, data.height | Rozmiar obrazu w pikselach. |
data.time | Czas przesłania jako uniksowy znacznik czasu. |
data.expiration | Zawsze 0: obrazy nie wygasają. |
data.image | Zapisany plik: filename, name, mime, extension i url. |
status | Kod 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:
| Status | Znaczenie |
|---|---|
| 201 | Obraz zapisany. Odpowiedź zawiera linki. |
| 401 | Brak klucza API lub klucz jest błędny. |
| 403 | Konto nie ma aktywnego planu Pro albo jest wyłączone. |
| 413 | Obraz jest większy niż 96 MB. |
| 422 | Nie wysłano obrazu, tekst base64 jest nieprawidłowy albo plik nie jest obrazem JPG, PNG, GIF ani WebP. |
| 429 | Ponad 60 żądań w ciągu minuty. Poczekaj i spróbuj ponownie. |
Limity API do hostingu obrazów
| Rozmiar obrazu | 96 MB na obraz |
|---|---|
| Formaty | JPG, PNG, GIF (animacja zostaje) i WebP |
| Limit żądań | 60 żądań na minutę dla każdego konta |
| Miejsce na dane | Nielimitowane miejsce w planach Pro |
| Dostarczanie | CDN przez HTTPS, bezpośrednie linki działają na forach, stronach i w aplikacjach |
| Dane wejściowe | Przesł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.