API de alojamiento de imágenes: sube imágenes con una solicitud POST
La API de alojamiento de imágenes de MyIMGs.org sube una imagen y devuelve un enlace directo en una sola solicitud. Envía un archivo o una imagen en base64 con tu clave de API y recibe JSON, listo para apps, sitios web y foros. Cada imagen se sirve desde un CDN por HTTPS. El acceso a la API está incluido en todos los planes Pro, desde $3.29 al mes.
Cómo obtener una clave de API de alojamiento de imágenes
- Crea una cuenta gratis en MyIMGs.org y verifica tu correo electrónico.
- Elige un plan en la página de planes Pro y precios. El acceso a la API forma parte de todos los planes Pro.
- Abre la página de tu cuenta y elige Crear clave de API.
- Copia la clave. Se muestra una sola vez. Si la pierdes, crea una clave nueva y la anterior deja de funcionar.
Cómo subir una imagen con curl (guía rápida)
Reemplaza YOUR_API_KEY por tu clave y ejecuta:
curl -X POST https://myimgs.org/api/v1/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@photo.jpg"
La respuesta es JSON. Usa data.url como enlace directo de la imagen y data.viewer_url para la página que muestra la imagen:
{
"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"
}
}
}
Referencia de la API para subir imágenes
Un solo endpoint: POST https://myimgs.org/api/v1/upload
Autenticación
Envía tu clave en el encabezado Authorization: Bearer YOUR_API_KEY. Para scripts escritos para ImgBB, también funciona un campo de formulario key. Usa el encabezado siempre que puedas, porque los campos de formulario pueden quedar en los registros del servidor.
Campos de la solicitud
| Campo | Obligatorio | Descripción |
|---|---|---|
image | Sí | El archivo de imagen (multipart form data) o una cadena en base64. Se acepta un data URI como data:image/png;base64,.... |
name | No | Nombre de archivo para la imagen almacenada. Solo se conservan letras, números, guion y guion bajo. Por defecto usa el nombre del archivo subido. |
optimize | No | Envía 1 o true para convertir imágenes JPG, PNG y WebP a WebP comprimido cuando eso reduce el tamaño del archivo. Los GIF nunca se convierten. La respuesta muestra el archivo final en data.extension y data.url. |
key | No | Tu clave de API, si no usas el encabezado Authorization. |
Campos de la respuesta
| Campo | Descripción |
|---|---|
success | true cuando la imagen se almacenó. |
data.id | ID corto de la imagen. |
data.name | Nombre del archivo almacenado, sin extensión. |
data.extension | jpg, png, gif o webp, tomada del contenido real del archivo. |
data.size | Tamaño almacenado en bytes. |
data.optimized | true cuando la imagen se convirtió a WebP porque enviaste optimize, de lo contrario false. |
data.url | Enlace directo de la imagen. Úsalo en etiquetas <img>, BBCode y apps. |
data.viewer_url | Enlace a la página que muestra la imagen. data.url_viewer contiene el mismo enlace. |
data.title | Igual que data.name. |
data.display_url | Igual que data.url. |
data.width, data.height | Tamaño de la imagen en píxeles. |
data.time | Hora de la subida como marca de tiempo Unix. |
data.expiration | Siempre 0: las imágenes no caducan. |
data.image | El archivo almacenado: filename, name, mime, extension y url. |
status | El código de estado HTTP, 201 cuando la imagen se almacenó. |
Ejemplos de la API para subir imágenes en JavaScript, Python y PHP
JavaScript (Node.js 18 o superior)
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"];
Cómo subir una imagen en base64
Es útil cuando la imagen solo existe en memoria, por ejemplo un canvas o una captura de pantalla:
curl -X POST https://myimgs.org/api/v1/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=$(base64 -w0 photo.jpg)" \
-F "name=photo"
Las fotos grandes se suben más rápido cuando pesan menos. Puedes comprimir imágenes en tu navegador con el compresor de imágenes gratis antes de enviarlas.
Errores y códigos de estado de la API de alojamiento de imágenes
Los errores devuelven JSON como {"success": false, "error": "message"} con uno de estos códigos de estado:
| Estado | Significado |
|---|---|
| 201 | Imagen almacenada. La respuesta contiene los enlaces. |
| 401 | Falta la clave de API o es incorrecta. |
| 403 | La cuenta no tiene un plan Pro activo, o la cuenta está desactivada. |
| 413 | La imagen pesa más de 96 MB. |
| 422 | No se envió ninguna imagen, el texto en base64 no es válido, o el archivo no es una imagen JPG, PNG, GIF o WebP. |
| 429 | Más de 60 solicitudes en un minuto. Espera y vuelve a intentarlo. |
Límites de la API de alojamiento de imágenes
| Tamaño de imagen | 96 MB por imagen |
|---|---|
| Formatos | JPG, PNG, GIF (se conserva la animación) y WebP |
| Límite de solicitudes | 60 solicitudes por minuto por cuenta |
| Almacenamiento | Almacenamiento ilimitado en los planes Pro |
| Entrega | CDN por HTTPS, los enlaces directos funcionan en foros, sitios web y apps |
| Entrada | Subida de archivo o base64 |
Alternativa a la API de ImgBB
Si ya subes imágenes con la API de ImgBB, cambiar a MyIMGs.org requiere dos ajustes: apunta la solicitud a https://myimgs.org/api/v1/upload y usa tu clave de MyIMGs.org. Los campos key e image funcionan igual, y el enlace directo llega en data.url. La respuesta también usa los nombres de ImgBB para url_viewer, display_url, title, width, height, time, expiration e image. No incluye thumb, medium ni delete_url, y no descarga una imagen desde una URL ni acepta un ajuste de caducidad. Los planes Pro suman imágenes de 96 MB, sin anuncios y almacenamiento ilimitado.
Precio de la API de alojamiento de imágenes
La API está incluida en todos los planes Pro. Elige el periodo de facturación que más te convenga:
Plan mensual
$11.49 al mes
Plan anual
$6.49 al mes
facturado $77.88
Plan de 3 años
$3.29 al mes
facturado $118.44
Ver los planes Pro y obtener tu clave de API
Preguntas frecuentes sobre la API de alojamiento de imágenes
¿Existe una API de alojamiento de imágenes gratis?
No. Subir con la API requiere un plan Pro, que empieza en $3.29 al mes. Una cuenta gratis aloja hasta 20 imágenes desde el sitio web y no tiene clave de API.
¿Cuál es el tamaño máximo de imagen de la API?
96 MB por imagen. Los archivos más grandes reciben un error 413.
¿Qué formatos de imagen acepta la API para subir imágenes?
JPG, PNG, GIF y WebP. El formato se lee del propio archivo, así que un archivo con la extensión equivocada se comprueba igualmente por su contenido real, y todo lo que no sea una imagen real se rechaza. Los GIF animados siguen animados.
¿Puedo subir una imagen desde una URL?
No. Envía el archivo como multipart form data, o envía la imagen como una cadena en base64. La descarga de URLs se deja fuera a propósito por seguridad.
¿Puedo eliminar imágenes con la API?
Todavía no. Por ahora subir es la única llamada de la API. Elimina las imágenes desde tu panel.
¿Cómo cambio o revoco mi clave de API?
Usa Crear una clave nueva en la página de tu cuenta. La clave anterior deja de funcionar al instante y la clave nueva se muestra una sola vez.
¿Cuál es el límite de solicitudes de la API?
60 solicitudes por minuto por cuenta. Por encima de eso la API responde con el estado 429 hasta que termine el minuto.
¿Caducan las imágenes subidas con la API?
No. No existe ningún ajuste de caducidad. Las imágenes subidas con tu clave se quedan en tu cuenta.
¿Funciona la API con scripts escritos para ImgBB?
Sí, para la llamada de subida. Envía los mismos campos key e image a la URL de MyIMGs.org. La respuesta usa los mismos nombres para url, url_viewer, display_url, title, width, height, time, expiration e image. No incluye thumb, medium ni delete_url, y no acepta la URL de una imagen ni un ajuste de caducidad.
MyIMGs.org es un servicio gratis de alojamiento de imágenes. Sube una imagen en la página de inicio sin necesidad de cuenta.