API de hospedagem de imagens: envie imagens com uma requisição POST
A API de hospedagem de imagens do MyIMGs.org envia uma imagem e devolve um link direto em uma única requisição. Mande um arquivo ou uma imagem em base64 com sua chave de API e receba JSON de volta, pronto para apps, sites e fóruns. Toda imagem é entregue por uma CDN via HTTPS. O acesso à API está incluído em todos os planos Pro, a partir de $3.29 por mês.
Como obter uma chave de API de hospedagem de imagens
- Crie uma conta grátis no MyIMGs.org e confirme seu e-mail.
- Escolha um plano na página de planos e preços do Pro. O acesso à API faz parte de todos os planos Pro.
- Abra a página da conta e escolha Criar chave de API.
- Copie a chave. Ela aparece uma única vez. Se você perdê-la, crie uma nova chave e a antiga deixa de funcionar.
Como enviar uma imagem com curl (início rápido)
Troque YOUR_API_KEY pela sua chave e execute:
curl -X POST https://myimgs.org/api/v1/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@photo.jpg"
A resposta é um JSON. Use data.url como link direto da imagem e data.viewer_url para a página que exibe a imagem:
{
"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"
}
}
}
Referência da API de envio de imagens
Um único endpoint: POST https://myimgs.org/api/v1/upload
Autenticação
Envie sua chave no cabeçalho Authorization: Bearer YOUR_API_KEY. Para scripts feitos para o ImgBB, um campo de formulário key também funciona. Use o cabeçalho sempre que puder, porque campos de formulário podem acabar nos logs do servidor.
Campos da requisição
| Campo | Obrigatório | Descrição |
|---|---|---|
image | Sim | O arquivo de imagem (multipart form data) ou uma string base64. Um data URI como data:image/png;base64,... também é aceito. |
name | Não | Nome de arquivo da imagem armazenada. Só letras, números, hífen e sublinhado são mantidos. O padrão é o nome do arquivo enviado. |
optimize | Não | Envie 1 ou true para converter imagens JPG, PNG e WebP em WebP comprimido quando isso deixar o arquivo menor. GIFs nunca são convertidos. A resposta mostra o arquivo final em data.extension e data.url. |
key | Não | Sua chave de API, se você não usar o cabeçalho Authorization. |
Campos da resposta
| Campo | Descrição |
|---|---|
success | true quando a imagem foi armazenada. |
data.id | ID curto da imagem. |
data.name | Nome do arquivo armazenado, sem extensão. |
data.extension | jpg, png, gif ou webp, definido pelo conteúdo real do arquivo. |
data.size | Tamanho armazenado em bytes. |
data.optimized | true quando a imagem foi convertida para WebP porque você enviou optimize, caso contrário false. |
data.url | Link direto da imagem. Use em tags <img>, BBCode e apps. |
data.viewer_url | Link da página que exibe a imagem. data.url_viewer traz o mesmo link. |
data.title | Igual a data.name. |
data.display_url | Igual a data.url. |
data.width, data.height | Tamanho da imagem em pixels. |
data.time | Hora do envio como timestamp Unix. |
data.expiration | Sempre 0: as imagens não expiram. |
data.image | O arquivo armazenado: filename, name, mime, extension e url. |
status | O código de status HTTP, 201 quando a imagem foi armazenada. |
Exemplos da API de envio de imagens em JavaScript, Python e PHP
JavaScript (Node.js 18 ou mais recente)
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"];
Enviar uma imagem em base64
Útil quando a imagem só existe na memória, por exemplo um canvas ou uma captura de tela:
curl -X POST https://myimgs.org/api/v1/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=$(base64 -w0 photo.jpg)" \
-F "name=photo"
Fotos grandes são enviadas mais rápido quando ficam menores. Você pode comprimir imagens no navegador com o compressor de imagens grátis antes de enviá-las.
Erros e códigos de status da API de hospedagem de imagens
Os erros retornam um JSON como {"success": false, "error": "message"} com um destes códigos de status:
| Status | Significado |
|---|---|
| 201 | Imagem armazenada. A resposta traz os links. |
| 401 | A chave de API está ausente ou incorreta. |
| 403 | A conta não tem um plano Pro ativo, ou a conta está desativada. |
| 413 | A imagem é maior que 96 MB. |
| 422 | Nenhuma imagem foi enviada, o texto base64 é inválido ou o arquivo não é uma imagem JPG, PNG, GIF ou WebP. |
| 429 | Mais de 60 requisições em um minuto. Aguarde e tente de novo. |
Limites da API de hospedagem de imagens
| Tamanho da imagem | 96 MB por imagem |
|---|---|
| Formatos | JPG, PNG, GIF (com animação preservada) e WebP |
| Limite de requisições | 60 requisições por minuto para cada conta |
| Armazenamento | Armazenamento ilimitado nos planos Pro |
| Entrega | CDN via HTTPS, links diretos funcionam em fóruns, sites e apps |
| Entrada | Envio de arquivo ou base64 |
Alternativa à API do ImgBB
Se você já envia imagens pela API do ImgBB, migrar exige duas mudanças: aponte a requisição para https://myimgs.org/api/v1/upload e use sua chave do MyIMGs.org. Os campos key e image funcionam do mesmo jeito, e o link direto volta em data.url. A resposta também usa os nomes do ImgBB para url_viewer, display_url, title, width, height, time, expiration e image. Ela não tem thumb, medium nem delete_url, e não busca uma imagem a partir de uma URL nem aceita configuração de expiração. Os planos Pro trazem imagens de 96 MB, sem anúncios e armazenamento ilimitado.
Preço da API de hospedagem de imagens
A API está incluída em todos os planos Pro. Escolha o período de cobrança que combina com você:
Plano Mensal
$11.49 por mês
Plano Anual
$6.49 por mês
cobrado $77.88
Plano de 3 Anos
$3.29 por mês
cobrado $118.44
Ver os planos Pro e obter sua chave de API
Perguntas frequentes sobre a API de hospedagem de imagens
Existe uma API de hospedagem de imagens grátis?
Não. Enviar pela API exige um plano Pro, que começa em $3.29 por mês. Uma conta grátis hospeda até 20 imagens pelo site e não tem chave de API.
Qual é o tamanho máximo de imagem na API?
96 MB por imagem. Arquivos maiores recebem um erro 413.
Quais formatos de imagem a API de envio aceita?
JPG, PNG, GIF e WebP. O formato é lido do próprio arquivo, então um arquivo com a extensão errada ainda é verificado pelo conteúdo real, e tudo que não for uma imagem de verdade é recusado. GIFs animados continuam animados.
Dá para enviar uma imagem a partir de uma URL?
Não. Envie o arquivo como multipart form data, ou envie a imagem como uma string base64. Buscar URLs ficou de fora de propósito, por segurança.
Dá para excluir imagens pela API?
Ainda não. Por enquanto o envio é a única chamada da API. Exclua as imagens pelo seu painel.
Como trocar ou revogar minha chave de API?
Use Criar nova chave na página da conta. A chave antiga para de funcionar na hora, e a nova chave aparece uma única vez.
Qual é o limite de requisições da API?
60 requisições por minuto para cada conta. Acima disso a API responde com o status 429 até o minuto terminar.
As imagens enviadas pela API expiram?
Não. Não existe configuração de expiração. As imagens enviadas com sua chave ficam na sua conta.
A API funciona com scripts feitos para o ImgBB?
Sim, na chamada de envio. Mande os mesmos campos key e image para a URL do MyIMGs.org. A resposta usa os mesmos nomes para url, url_viewer, display_url, title, width, height, time, expiration e image. Ela não tem thumb, medium nem delete_url, e não aceita URL de imagem nem configuração de expiração.
O MyIMGs.org é um serviço de hospedagem de imagens grátis. Envie uma imagem na página inicial sem precisar de conta.