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

  1. Crie uma conta grátis no MyIMGs.org e confirme seu e-mail.
  2. Escolha um plano na página de planos e preços do Pro. O acesso à API faz parte de todos os planos Pro.
  3. Abra a página da conta e escolha Criar chave de API.
  4. 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

CampoObrigatórioDescrição
imageSimO arquivo de imagem (multipart form data) ou uma string base64. Um data URI como data:image/png;base64,... também é aceito.
nameNãoNome de arquivo da imagem armazenada. Só letras, números, hífen e sublinhado são mantidos. O padrão é o nome do arquivo enviado.
optimizeNãoEnvie 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.
keyNãoSua chave de API, se você não usar o cabeçalho Authorization.

Campos da resposta

CampoDescrição
successtrue quando a imagem foi armazenada.
data.idID curto da imagem.
data.nameNome do arquivo armazenado, sem extensão.
data.extensionjpg, png, gif ou webp, definido pelo conteúdo real do arquivo.
data.sizeTamanho armazenado em bytes.
data.optimizedtrue quando a imagem foi convertida para WebP porque você enviou optimize, caso contrário false.
data.urlLink direto da imagem. Use em tags <img>, BBCode e apps.
data.viewer_urlLink da página que exibe a imagem. data.url_viewer traz o mesmo link.
data.titleIgual a data.name.
data.display_urlIgual a data.url.
data.width, data.heightTamanho da imagem em pixels.
data.timeHora do envio como timestamp Unix.
data.expirationSempre 0: as imagens não expiram.
data.imageO arquivo armazenado: filename, name, mime, extension e url.
statusO 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:

StatusSignificado
201Imagem armazenada. A resposta traz os links.
401A chave de API está ausente ou incorreta.
403A conta não tem um plano Pro ativo, ou a conta está desativada.
413A imagem é maior que 96 MB.
422Nenhuma imagem foi enviada, o texto base64 é inválido ou o arquivo não é uma imagem JPG, PNG, GIF ou WebP.
429Mais de 60 requisições em um minuto. Aguarde e tente de novo.

Limites da API de hospedagem de imagens

Tamanho da imagem96 MB por imagem
FormatosJPG, PNG, GIF (com animação preservada) e WebP
Limite de requisições60 requisições por minuto para cada conta
ArmazenamentoArmazenamento ilimitado nos planos Pro
EntregaCDN via HTTPS, links diretos funcionam em fóruns, sites e apps
EntradaEnvio 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.