Documentação da API

A API do YourImageShare permite-lhe carregar, listar e apagar ficheiros por programação. É uma pequena API JSON/REST - não precisa de SDK, apenas de um cliente HTTP e de uma chave da API - e também estão disponíveis bibliotecas oficiais de JavaScript, Python e MCP.

Todas as bibliotecas de cliente e as ferramentas abaixo são de código aberto. Consulte o código, reporte problemas ou contribua no nosso repositório oficial do GitHub em github.com/yourimageshare/yourimageshare.

URL base: https://yourimageshare.com/api · Formato: JSON na entrada e na saída, exceto os carregamentos, que são multipart/form-data · Autenticação: uma chave da API em cada pedido. · Especificação legível por máquinas: /openapi.json (OpenAPI 3.1), para agentes e ferramentas de geração de código que prefiram não analisar esta página.

Obter uma chave da API

Inicie sessão, vá a A minha conta e abra o separador API. A sua chave aparece aí, juntamente com um botão Regenerar. Ao regenerar uma chave, a anterior fica invalidada de imediato, por isso atualize todos os sítios onde ela é usada antes de clicar.

Esse separador tem também uma segunda chave, independente, a chave só de carregamento - veja a dica abaixo e os Plugins para fóruns para saber quando a usar.

Autenticação

Envie a chave num cabeçalho - é o método preferido, porque as query strings costumam acabar nos registos de acesso, nos registos de proxies e nos cabeçalhos Referer:

X-API-Key: YOUR_API_KEY

Um parâmetro de query ?key= também funciona, mantido por compatibilidade com integrações mais antigas e comandos curl pontuais. Se ambos estiverem presentes, o cabeçalho tem prioridade.

?key=YOUR_API_KEY

Dica: Trate a sua chave como uma palavra-passe - quem a tiver pode carregar, listar, alterar e apagar na sua conta. Cada pedido bem-sucedido fica registado e visível num gráfico no separador API da página da sua conta, por dia e por tipo de pedido. Se a chave tiver de estar num sítio que outras pessoas possam ver - um plugin de fórum, um ficheiro de configuração público - use antes a chave só de carregamento do mesmo separador: só serve para carregar - listar, consultar, alterar e apagar carregamentos rejeitam-na com um 401.

Endpoints

Carregar, listar e apagar partilham a mesma autenticação e os mesmos limites de pedidos; os ficheiros grandes podem ser enviados primeiro por partes.

POST /api - Carregar um ficheiro

Carrega um único ficheiro para a conta autenticada.

CampoTipoObrigatórioDescrição
uploadsficheiroum destes trêsO ficheiro a carregar, até 100MB (o limite de um único pedido através da nossa rede). Um ficheiro por pedido - este endpoint não carrega vários ficheiros de uma vez.
urlstringUm link http(s) público para uma imagem ou um vídeo. Descarregamo-lo nós, por isso funcionam ficheiros até 200MB.
upload_idstringUm ficheiro enviado antes por partes para POST /api/chunk, até 200MB.
filenamestringnãoCom upload_id: o nome original do ficheiro.
expires_inintegernãoApagar automaticamente este carregamento passados tantos segundos (60 a 31.536.000, ou seja, de 1 minuto a 1 ano). Omita para um carregamento normal e permanente.
allow_duplicatebooleannãoGuardar uma nova cópia mesmo que a sua conta já tenha carregado exatamente o mesmo ficheiro (veja duplicate abaixo).
keep_originalbooleannãoManter a imagem exatamente como foi carregada. Sem isto, os ficheiros JPG/PNG com mais de 1 MB são otimizados para WebP. Os metadados, como o GPS, são removidos em qualquer dos casos.
visibilitystringnãounlisted (predefinido): o ficheiro e a sua página funcionam para quem tiver o link, mas não ficam listados em lado nenhum. private: só o ficheiro - o link da página leva todos, exceto si, diretamente ao ficheiro (sem comentários, reações nem anúncios). public: listado no site e indexável.
titlestringnãoAté 90 caracteres, mostrado na página do carregamento.
descriptionstringnãoAté 500 caracteres.

Tipos aceites: imagens JPG, PNG, GIF, WEBP, AVIF, BMP, TIFF, HEIC ou HEIF; vídeo MP4, WEBM, AVI, MOV, MKV, MPEG, WMV, FLV ou 3GP (a lista exata pode crescer com o tempo). Os ficheiros HEIC/HEIF e TIFF são guardados como WebP, o vídeo que não seja MP4/WebM é convertido para MP4, e as imagens JPEG/PNG maiores são convertidas para WebP pouco depois do carregamento, quando isso as torna sensivelmente mais pequenas. Tamanho máximo: 200MB; os ficheiros demasiado grandes ou ilegíveis são rejeitados com um 422.

Resposta - 200 OK:

{
  "type": "success",
  "msg": "success",
  "data": {
    "id": "aB3xY9qRz1",
    "type": "image",
    "path": "https://i.yourimageshare.com/aB3xY9qRz1.png",
    "src": "https://yourimageshare.com/ib/aB3xY9qRz1.png",
    "direct": "https://yourimageshare.com/ib/aB3xY9qRz1",
    "thumb": "https://i.yourimageshare.com/thumb-aB3xY9qRz1.webp",
    "width": 1920,
    "height": 1080,
    "size": 482113,
    "locked": false,
    "visibility": "unlisted",
    "title": null,
    "description": null,
    "expires_at": null,
    "duplicate": false,
    "delete_url": "https://yourimageshare.com/delete#iV3x...k9"
  }
}
CampoDescrição
idO identificador único do ficheiro.
typeimage ou video.
pathO URL de armazenamento do ficheiro tal como foi carregado. Pode mudar pouco depois, quando o ficheiro é convertido (WebP/MP4), por isso guarde src, não path.
srcURL direto e permanente do ficheiro - abre sempre o ficheiro atual, adequado para o src de um <img>/<video> e para guardar.
directA página do ficheiro no YourImageShare (título, descrição, comentários, opções de partilha).
thumbUma miniatura WebP com 280px de largura (num vídeo, a primeira imagem), ou null.
width, heightTamanho de apresentação em pixéis (na vertical; o tamanho da imagem de um vídeo), ou null se for desconhecido.
sizeTamanho do ficheiro em bytes, tal como está guardado.
lockedtrue se o carregamento estiver protegido por palavra-passe.
visibilityprivate, unlisted ou public (veja o campo do pedido acima).
title, descriptionConforme definidos, ou null. O texto passa pela mesma moderação que o site.
delete_urlApenas em novos carregamentos: um link privado que apaga este carregamento sem chave da API. Mostrado uma só vez (só se guarda um hash) - guarde-o se precisar dele.
expires_atData e hora ISO 8601 em que este carregamento será apagado automaticamente, ou null se não expirar.
duplicatetrue se a sua conta já tinha carregado exatamente o mesmo ficheiro: é devolvido esse carregamento e nada de novo é guardado. Não se aplica a carregamentos com expiração nem com allow_duplicate=1.

Carregamentos com expiração: depois de expires_at passar, o ficheiro é apagado do armazenamento e a página do carregamento passa a devolver 410 Gone em cerca de 5 minutos. Isto não pode ser anulado nem prolongado depois - apague mais cedo com o endpoint DELETE se precisar de o remover antes, ou volte a carregar com um novo expires_in se precisar que dure mais.

POST /api/chunk - Ficheiros grandes

Um único pedido pode transportar no máximo 100MB. Para ficheiros maiores (até 200MB), ou para manter cada pedido pequeno numa ligação lenta, envie o ficheiro em partes de no máximo 5MB e termine com POST /api:

  1. Escolha um id de carregamento: 32 caracteres hexadecimais aleatórios.
  2. Para cada parte, faça POST /api/chunk (multipart/form-data) com upload_id, index (a partir de 0), total (número de partes) e os bytes em chunk. A resposta é {"type": "success", "chunk_size": 5242880}.
  3. Faça POST /api com upload_id e filename em vez de uploads, mais quaisquer outros campos de carregamento. A resposta é a resposta normal de carregamento.

As partes de um carregamento que não é concluído são apagadas após 2 horas. Só o POST /api final conta para os limites de carregamento.

GET /api/{id} e PATCH /api/{id} - Um carregamento

GET devolve um dos seus carregamentos com os mesmos campos da lista abaixo. PATCH altera o seu visibility, title ou description (campos de formulário ou JSON; um título ou uma descrição vazios apagam-no) e responde com o carregamento atualizado. Ambos precisam da chave da API completa; 404 se não existir tal carregamento na sua conta.

curl -X PATCH https://yourimageshare.com/api/aB3xY9qRz1 \
  -H "X-API-Key: YOUR_API_KEY" -d visibility=public -d title="Sunset"

POST /api/{id}/replace - Substituir o ficheiro

Troca o ficheiro de um dos seus carregamentos e mantém o seu id, a página e todos os links. Qualquer tipo permitido serve, mesmo um diferente (uma imagem pode passar a vídeo). Envie o novo ficheiro como uploads (ou o upload_id de um ficheiro enviado por partes com POST /api/chunk); keep_original funciona como no carregamento. O novo ficheiro passa pelas mesmas verificações e conversões de um novo carregamento, e a versão anterior é removida. Precisa da chave da API completa; 404 se não existir tal carregamento na sua conta, 409 se estiver protegido por palavra-passe ou com limite de visualizações.

curl -X POST https://yourimageshare.com/api/aB3xY9qRz1/replace \
  -H "X-API-Key: YOUR_API_KEY" -F uploads=@new-version.png

GET /api - Listar os seus carregamentos

Devolve uma lista paginada dos carregamentos da conta autenticada (de qualquer origem - API, site ou editor), os mais recentes primeiro, 50 por página.

ParâmetroEmObrigatórioDescrição
pagequerynãoNúmero da página, por omissão 1.

Resposta - 200 OK:

{
  "type": "success",
  "data": [
    {
      "id": "aB3xY9qRz1",
      "type": "image",
      "title": null,
      "path": "https://i.yourimageshare.com/aB3xY9qRz1.webp",
      "src": "https://yourimageshare.com/ib/aB3xY9qRz1.webp",
      "direct": "https://yourimageshare.com/ib/aB3xY9qRz1",
      "thumb": "https://i.yourimageshare.com/thumb-aB3xY9qRz1.webp",
      "width": 1920,
      "height": 1080,
      "size": 482113,
      "locked": false,
      "visibility": "unlisted",
      "description": null,
      "expires_at": null,
      "created_at": "2026-07-23T15:43:28+01:00"
    }
  ],
  "meta": { "current_page": 1, "last_page": 1, "total": 1 }
}

Os campos têm aqui o mesmo significado que na resposta de carregamento acima (num carregamento protegido por palavra-passe, path e thumb são links assinados de curta duração). Para consultar um carregamento pelo seu id, use GET /api/{id}.

DELETE /api/{id} - Apagar um carregamento

Apaga permanentemente um dos carregamentos da conta autenticada. Não pode ser anulado a partir da API. {id} é o valor devolvido como id pelos endpoints de carregamento ou de listagem.

Resposta - 200 OK:

{ "type": "success", "msg": "Deleted." }

404 se não existir nenhum carregamento com esse id na sua conta (ou nunca foi seu, ou já foi apagado).

POST /api/compare - Cursor antes/depois

Cria uma comparação antes/depois de dois dos seus carregamentos de imagem: uma página com um cursor em /c/{id} que também pode ser incorporada em qualquer site. A chave só de carregamento também funciona. Envie before e after (ids de carregamento, obrigatórios) e, opcionalmente, title, label_before e label_after (por omissão "Before" e "After").

Resposta - 201 Created:

{
  "type": "success",
  "id": "P7uAYy04VA",
  "url": "https://yourimageshare.com/c/P7uAYy04VA",
  "embed_url": "https://yourimageshare.com/embed/c/P7uAYy04VA",
  "embed": { "script": "<blockquote class=\"YISEmbed\" ...", "iframe": "<iframe ..." }
}

422 se algum dos ids não for um dos seus carregamentos de imagem (não se podem usar vídeos nem imagens protegidas por palavra-passe).

Limites de pedidos

Cada chave da API tem quotas independentes por minuto e por dia, além de um limite diário por IP, mais amplo, como salvaguarda contra um IP que alterne entre várias chaves. Carregar, listar e apagar partilham os mesmos limites.

JanelaLimite predefinidoÂmbito
Por minuto20 pedidospor chave da API
Por dia500 pedidospor chave da API completa
Por dia2.000 pedidospor chave só de carregamento (plugins que transferem bibliotecas de multimédia inteiras)
Por dia2.000 pedidospor endereço IP
Por minuto300 partespor chave da API, apenas POST /api/chunk

Estes limites podem mudar. Cada resposta inclui os cabeçalhos habituais de limite de pedidos:

X-RateLimit-Limit: 20
X-RateLimit-Remaining: 14

É devolvido um 429 quando um limite é excedido, com um cabeçalho Retry-After a indicar quantos segundos deve esperar.

Erros

Todas as respostas de erro usam a mesma estrutura, independentemente do endpoint ou da causa:

{ "type": "error", "errors": "A human-readable description of what went wrong." }
EstadoSignificado
401Chave da API em falta ou inválida.
403A conta ou o seu IP atual foi banido de carregar.
404Nenhum carregamento encontrado com esse id nesta conta (consultar, alterar, apagar).
413O pedido tem mais de 100MB. Envie o ficheiro por partes (POST /api/chunk) ou um link para ele em url (até 200MB).
422Falha de validação - nenhum ficheiro ou link indicado, tipo de ficheiro não suportado, dados de imagem ilegíveis, dimensões acima do limite de 30000x30000px, um ficheiro com mais de 200MB, um upload_id por concluir ou expirado, ou um url que não foi possível descarregar (a mensagem diz porquê).
429Limite de pedidos excedido - veja os Limites de pedidos acima.
500Algo falhou inesperadamente no servidor. Pode tentar de novo com segurança.

Bibliotecas de cliente

SDKs oficiais que envolvem os endpoints acima com resultados tipados e geram exceções em erros da API, em vez de tratar HTTP em bruto.

JavaScript / TypeScript

Sem dependências, funciona em Node.js e em navegadores. Também no JSR como @yourimageshare/yourimageshare - npx jsr add @yourimageshare/yourimageshare - o mesmo código-fonte, publicado diretamente em TypeScript.

npm install yourimageshare

Python

Uma dependência (requests), Python 3.8+.

pip install yourimageshare

PHP

Sem dependências do Composer (usa a própria extensão curl do PHP), PHP 7.4+. Código-fonte no GitHub.

composer require yourimageshare/yourimageshare-php

Go

Sem dependências (apenas a biblioteca padrão), Go 1.18+. Veja pkg.go.dev para a documentação de referência completa.

go get github.com/yourimageshare/yourimageshare/go

Rust

Duas dependências (ureq para HTTP bloqueante - sem trazer um runtime assíncrono - e serde), Rust 1.70+. Código-fonte no GitHub.

cargo add yourimageshare

Ruby

Sem dependências de gems (Net::HTTP da stdlib + json), Ruby 2.7+. Código-fonte no GitHub.

gem install yourimageshare

.NET

Uma dependência (o próprio System.Text.Json da Microsoft), destinada a netstandard2.0, por isso funciona tanto no .NET Framework como no .NET moderno. Código-fonte no GitHub. Criada e verificada com esta API em produção; publicação no NuGet em breve.

dotnet add package YourImageShare

Dart / Flutter

Uma dependência (http, o pacote da própria equipa do Dart), Dart 2.17+. Código-fonte no GitHub. Criada e verificada com esta API em produção; publicação no pub.dev em breve.

dart pub add yourimageshare

Elixir

Uma dependência (Req), Elixir 1.14+. Devolve tuplos {:ok, result}| {:error, reason} - o equivalente direto do tratamento de erros desta API em todos os outros SDKs - e também variantes com ponto de exclamação que geram exceções. Código-fonte no GitHub, documentação no HexDocs.

{:yourimageshare, "~> 1.1"}

Servidor MCP

Para agentes de programação com IA (Claude Code, Cursor e outras ferramentas compatíveis com MCP) - cole uma captura de ecrã num relatório de erro, numa descrição de PR ou numa conversa de suporte como um URL real, em vez de um blob base64 ou de um passo manual de carregamento. Funciona da mesma forma com o Claude Desktop e com qualquer outro cliente MCP.

Alojado, sem nada para instalar: adicione-o como servidor MCP remoto (no Claude: Definições › Conectores › Adicionar conector personalizado; também no ChatGPT, Cursor, VS Code e outros clientes que aceitam um URL de servidor) com a sua chave da API no URL:

https://yourimageshare.com/mcp?key=YOUR_API_KEY

Os clientes que permitem definir cabeçalhos podem usar https://yourimageshare.com/mcp com Authorization: Bearer YOUR_API_KEY. O URL com a sua chave funciona como uma palavra-passe: mantenha-o privado e obtenha uma nova chave em A minha conta se ele vazar. No servidor alojado, upload_image aceita um link público (até 200MB) ou conteúdo base64 em linha (até 15MB). Sem chave, https://yourimageshare.com/mcp continua a carregar de forma anónima, como o site: só não listado ou privado, limites mais baixos, e o carregamento é apagado com o delete_url que devolve. As outras ferramentas precisam de chave.

Local: execute-o diretamente com npx, sem passo de instalação (também consegue ler ficheiros do seu disco):

npx yourimageshare-mcp

Ferramentas: upload_image (um ficheiro local, conteúdo em linha ou um link, até 200MB, com visibilidade, título e apagamento automático opcionais), list_uploads, get_upload, update_upload e delete_upload.

Também no registo oficial de MCP (como io.github.yourimageshare/yourimageshare) e listado no Smithery e no Glama, se o seu cliente MCP instalar a partir de um deles.

Novo no MCP? Veja como ligar o Claude e o ChatGPT a esta API por MCP para um guia completo de configuração.

Todas as dez têm licença MIT. Não há biblioteca oficial para a sua linguagem? Os exemplos de código abaixo mostram como chamar a API diretamente.

Exemplos de código

curl

# Upload a file
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "uploads=@/path/to/photo.jpg"

# Upload from a link (files up to 200MB; one direct upload request stops at 100MB -
# bigger files go in pieces, see Large Files above)
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "url=https://example.com/video.mp4"

# Upload a file that auto-deletes after 1 hour
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "uploads=@/path/to/photo.jpg" \
  -F "expires_in=3600"

# List uploads
curl "https://yourimageshare.com/api" -H "X-API-Key: YOUR_API_KEY"

# Upload a file without a page of its own (file only) and give it a title
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "uploads=@/path/to/photo.jpg" \
  -F "visibility=private" \
  -F "title=Sunset"

# Look up one upload, then make it public
curl "https://yourimageshare.com/api/aB3xY9qRz1" -H "X-API-Key: YOUR_API_KEY"
curl -X PATCH "https://yourimageshare.com/api/aB3xY9qRz1" \
  -H "X-API-Key: YOUR_API_KEY" -d "visibility=public"

# Delete an upload
curl -X DELETE "https://yourimageshare.com/api/aB3xY9qRz1" -H "X-API-Key: YOUR_API_KEY"

JavaScript (fetch)

const API_KEY = 'YOUR_API_KEY';
const BASE = 'https://yourimageshare.com/api';

async function uploadFile(file) {
  const form = new FormData();
  form.append('uploads', file);

  const res = await fetch(BASE, {
    method: 'POST',
    headers: { 'X-API-Key': API_KEY },
    body: form,
  });
  const json = await res.json();
  if (json.type !== 'success') throw new Error(json.errors);
  return json.data;
}

async function listUploads(page = 1) {
  const res = await fetch(`${BASE}?page=${page}`, {
    headers: { 'X-API-Key': API_KEY },
  });
  return res.json();
}

async function deleteUpload(id) {
  const res = await fetch(`${BASE}/${id}`, {
    method: 'DELETE',
    headers: { 'X-API-Key': API_KEY },
  });
  return res.json();
}

Python (requests)

import requests

API_KEY = "YOUR_API_KEY"
BASE = "https://yourimageshare.com/api"

HEADERS = {"X-API-Key": API_KEY}

# Upload a file
with open("/path/to/photo.jpg", "rb") as f:
    res = requests.post(BASE, headers=HEADERS, files={"uploads": f})
res.raise_for_status()
upload = res.json()["data"]

# List uploads
res = requests.get(BASE, headers=HEADERS, params={"page": 1})
uploads = res.json()

# Delete an upload
res = requests.delete(f"{BASE}/{upload['id']}", headers=HEADERS)

PHP (curl)

<?php

$apiKey = 'YOUR_API_KEY';
$base = 'https://yourimageshare.com/api';

// Upload a file
$curl = curl_init($base);
curl_setopt_array($curl, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: $apiKey"],
    CURLOPT_POSTFIELDS => ['uploads' => new CURLFile('/path/to/photo.jpg')],
    CURLOPT_RETURNTRANSFER => true,
]);
$upload = json_decode(curl_exec($curl), true)['data'];
curl_close($curl);

// List uploads
$curl = curl_init("$base?page=1");
curl_setopt($curl, CURLOPT_HTTPHEADER, ["X-API-Key: $apiKey"]);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$uploads = json_decode(curl_exec($curl), true);
curl_close($curl);

Go (net/http)

O SDK oficial de Go acima trata disto por si - esta versão em bruto serve quem preferir não adicionar a dependência.

package main

import (
    "bytes"
    "encoding/json"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

const apiKey = "YOUR_API_KEY"
const base = "https://yourimageshare.com/api"

func uploadFile(path string) (map[string]any, error) {
    file, err := os.Open(path)
    if err != nil {
        return nil, err
    }
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    part, _ := writer.CreateFormFile("uploads", path)
    io.Copy(part, file)
    writer.Close()

    req, _ := http.NewRequest("POST", base, body)
    req.Header.Set("Content-Type", writer.FormDataContentType())
    req.Header.Set("X-API-Key", apiKey)

    res, err := http.DefaultClient.Do(req)
    if err != nil {
        return nil, err
    }
    defer res.Body.Close()

    var result map[string]any
    json.NewDecoder(res.Body).Decode(&result)
    return result, nil
}

Ferramentas de capturas de ecrã

Uma extensão do navegador, mais configurações e scripts prontos a usar para enviar capturas de ecrã diretamente para o YourImageShare, sem carregamento manual. Cada uma carrega através do mesmo endpoint /api documentado acima.

Extensão do navegador (Chrome & Firefox)

A extensão YourImageShare Capture para Chrome e Firefox dispensa scripts e ficheiros de configuração. Captura a área visível, uma região selecionada com o rato ou uma página completa com deslocamento, abre um editor integrado para setas, texto, desfoque/ocultação e outras anotações e depois descarrega o resultado, copia-o para a área de transferência ou publica-o diretamente no YourImageShare com um clique. A publicação usa o mesmo endpoint /api documentado acima - adicione a sua chave da API uma só vez nas Definições da extensão e cada publicação a partir daí devolve de imediato um link partilhável. Funciona no Chrome para computador (e noutros navegadores Chromium), no Firefox para computador e no Firefox para Android.

Obter o YourImageShare Capture para Firefox Obter o YourImageShare Capture para Chrome

ShareX

Descarregue o uploader personalizado abaixo e, no ShareX, vá a Destinations > Custom uploader settings > Import > from file, abra o .sxcu descarregado e substitua YOUR_API_KEY no campo Headers pela sua chave real. Defina-o como destino de imagens/ficheiros e as capturas são carregadas automaticamente.

Descarregar YourImageShare.sxcu

Apagar: o link "Delete" do ShareX para cada carregamento abre a nossa página de eliminação no seu navegador (o delete_url de uso único do carregamento), para poder remover uma captura diretamente do histórico do ShareX. Também pode apagar carregamentos em A minha conta. Descarregou a configuração antes de outubro de 2026? Descarregue-a de novo para ter isto.

Flameshot (Linux)

Um pequeno script de shell que executa flameshot gui, carrega a captura e copia o link para a área de transferência. Associe-o a um atalho de teclado no seu ambiente de trabalho, no lugar do predefinido do Flameshot.

Descarregar yis-flameshot-upload.sh

# One-time setup
chmod +x yis-flameshot-upload.sh
export YIS_API_KEY="YOUR_API_KEY"   # or add to ~/.config/yourimageshare/api_key

# Then bind this to a hotkey instead of calling flameshot directly:
/path/to/yis-flameshot-upload.sh

Greenshot (Windows)

Um script PowerShell para o destino integrado External command do Greenshot. Compatível com o Windows PowerShell 5.1 que vem com o Windows, sem instalação adicional.

Descarregar yis-greenshot-upload.ps1

# One-time setup
setx YIS_API_KEY "YOUR_API_KEY"

# In Greenshot: Preferences > Destinations > External command > Settings
#   Command:   powershell.exe
#   Arguments: -ExecutionPolicy Bypass -File "C:\path\to\yis-greenshot-upload.ps1" "%1"

Plugins para fóruns

Adicione um verdadeiro botão "Carregar imagem" junto ao editor de mensagens do seu fórum. Cada um carrega através do mesmo endpoint /api documentado acima e insere BBCode na posição do cursor - sem outro separador, sem copiar e colar à mão.

Use a sua chave só de carregamento, não a chave da API, abaixo. Cada plugin apresenta a chave no código-fonte da página de todos os visitantes, e a chave só de carregamento (A minha conta > separador API) só consegue carregar - não consegue listar nem apagar os seus carregamentos, mesmo que alguém a copie da página.

Os carregamentos de fóruns são privados por omissão: a imagem funciona na mensagem, mas o YourImageShare não lhe dá página própria (sem comentários, reações nem anúncios). Cada plugin tem uma definição para mudar para unlisted se também quiser uma página para quem tiver o link.

phpBB

Uma verdadeira extensão para phpBB 3.2/3.3. Descomprima em ext/, ative-a em Customise > Manage extensions e depois substitua YOUR_UPLOAD_ONLY_KEY no ficheiro de eventos de modelo da extensão pela sua chave só de carregamento real.

Descarregar para phpBB

SMF (Simple Machines Forum)

Um verdadeiro pacote SMF - instale em Admin > Package Manager e depois substitua YOUR_UPLOAD_ONLY_KEY em Sources/yis_forumupload.php pela sua chave só de carregamento real.

Descarregar para SMF

MyBB

Um verdadeiro plugin para MyBB 1.8. Copie para inc/plugins/, ative-o em Configuration > Plugins e depois substitua YOUR_UPLOAD_ONLY_KEY no ficheiro do plugin pela sua chave só de carregamento real.

Descarregar para MyBB

FluxBB, PunBB & ZetaBoards

Estes não têm um sistema formal de plugins, por isso é um pequeno excerto colado diretamente no seu modelo (FluxBB/PunBB) ou no Admin CP (ZetaBoards) - instruções completas de copiar e colar para cada um:

Instruções do FluxBB Instruções do PunBB Instruções do ZetaBoards

Plugin de WordPress

Transfira a sua Biblioteca de multimédia para o YourImageShare em vez do disco local. Os novos carregamentos de imagens/vídeos passam automaticamente pelo mesmo endpoint /api documentado acima, o ficheiro local (e todos os tamanhos de miniatura gerados) é apagado depois de o carregamento ser confirmado, e todos os URLs de anexos do WordPress - o editor de blocos, imagens de destaque, galerias, API REST - passam a apontar para o ficheiro alojado no YourImageShare. Sem shortcode, sem alterar o seu fluxo de trabalho.

  • Transfira em massa uma Biblioteca de multimédia existente em segundo plano (ou com wp yis offload --all), e não apenas os novos carregamentos
  • As imagens e os vídeos já colocados em artigos continuam a funcionar depois de os ficheiros locais serem removidos
  • As miniaturas e o srcset usam a nossa miniatura de 280px, por isso os espaços pequenos para imagens não carregam ficheiros em tamanho completo
  • Ficheiros até 200MB, enviados por partes para que os vídeos grandes nunca sobrecarreguem um alojamento partilhado
  • Restaure qualquer ficheiro transferido para o armazenamento local em qualquer altura
  • Uma coluna na Biblioteca de multimédia mostra o que foi transferido e o que ainda é local
  • Os ficheiros transferidos são guardados como privados: carregam onde quer que o seu site os use, mas não têm página própria no YourImageShare

Usa a sua chave só de carregamento, não a chave da API. A chave da API completa, opcional, só é necessária se quiser que os ficheiros transferidos sejam apagados do YourImageShare quando os apagar no WordPress.

Obter no WordPress.org Descarregar o ZIP

No WordPress: Plugins > Adicionar novo, procure YourImageShare Media Offload e depois Instalar e Ativar.

Botão de carregamento para qualquer site

Dê aos seus visitantes um botão "Carregar" em qualquer site - um formulário de comentários, uma página de suporte, um fórum para o qual não temos plugin, um site estático. Cole duas linhas; sem registo e sem código de servidor.

<a class="yis-upload" href="https://yourimageshare.com/" data-target="#message" data-format="bbcode">Image and video hosting by YourImageShare</a>
<script src="https://yourimageshare.com/w.js" async></script>

Ambos os atributos são opcionais: sem eles, o botão mostra os links com um botão Copiar. A caixa de carregamento é construída em torno do link.

  • Os carregamentos acontecem na sua própria página: clique no botão, largue ficheiros nele ou cole uma captura de ecrã - vários ficheiros de uma vez, com barra de progresso e miniatura
  • As imagens coladas ou largadas diretamente no campo indicado em data-target (qualquer textarea, input ou caixa editável) também são carregadas, e os links são adicionados a esse campo; sem destino, aparecem por baixo do botão com um botão Copiar
  • data-format: url (link direto do ficheiro, o predefinido), page, bbcode, html ou markdown; data-label altera o texto do botão
  • data-key (opcional): a sua chave só de carregamento (A minha conta > API). Os carregamentos passam então para a sua conta, com os seus próprios limites. Sem chave, os carregamentos são anónimos e não listados, com um limite diário por visitante e por site
  • Os programadores podem escutar o evento yis:upload na caixa de carregamento: event.detail.item contém {id, type, page, url, thumb}
  • Ficheiros até 95 MB através do botão (os maiores no site). A nossa moderação e os nossos termos aplicam-se como habitualmente; cada visitante recebe o seu próprio link para apagar

O botão é desenhado na sua própria caixa isolada, por isso o CSS do seu site não o consegue estragar. O pequeno link "Image and video hosting by YourImageShare" fica visível dentro da caixa de carregamento.

Atalho para iPhone & iPad

Carregue a partir da folha de partilha de qualquer app - Fotografias, Ficheiros, Safari, uma captura de ecrã - e receba o link na área de transferência. Sem apps para instalar e sem registo.

Para o criar você mesmo na app Atalhos (cerca de dois minutos):

  1. Novo atalho, com o nome "Upload to YourImageShare". Nos detalhes, ative Mostrar na folha de partilha e aceite imagens e multimédia.
  2. Adicione Obter conteúdo do URL: URL https://yourimageshare.com/api/widget, método POST, corpo do pedido Formulário com dois campos: uploads (Ficheiro) = Entrada do atalho, e client (Texto) = ios-shortcut.
  3. Adicione Obter valor do dicionário para data e outro para src - esse é o link direto.
  4. Adicione Copiar para a área de transferência e Mostrar notificação ("Link copiado").

Sem chave, os carregamentos são anónimos e não listados, com um limite diário. Adicione um cabeçalho X-API-Key com a sua chave só de carregamento (A minha conta > API) para carregar para a sua conta. A resposta também tem delete_url se quiser guardar um link para apagar.

PicGo & PicList

O PicGo e o PicList carregam imagens coladas ou arrastadas para editores de Markdown - Typora, VS Code, Obsidian, Joplin - e colocam o link no seu texto. O nosso plugin faz do YourImageShare um dos seus alojamentos de imagens.

  • No PicGo ou no PicList: Plugins, procure yourimageshare, instale e depois escolha YourImageShare como serviço de carregamento. Linha de comandos: picgo install yourimageshare
  • Ou descarregue o plugin e importe-o como plugin local (descomprima primeiro)
  • Definições: chave só de carregamento (opcional - vazia = carregamentos anónimos e não listados), visibilidade e se deve devolver o link direto da imagem (para Markdown) ou o link da página
  • O link devolvido continua a funcionar quando as imagens grandes são otimizadas para WebP mais tarde

Descarregar o plugin do PicGo

Bot do Telegram

Obtenha um link para uma foto, um vídeo ou um GIF sem sair do Telegram. Envie-o para @YourImageShare_bot e o link volta logo - sem registo e sem chave da API. O bot carrega através do mesmo endpoint /api documentado acima.

  • Envie uma foto, um vídeo, um GIF ou um ficheiro de imagem ou de vídeo; um álbum até 10 itens volta numa só resposta
  • Num grupo, responda /link a uma foto ou a um vídeo e o bot publica o respetivo link para todos
  • /autodelete faz com que os seus próximos carregamentos se apaguem sozinhos após 1 hora, 1 dia, 1 semana ou 30 dias
  • Cada resultado tem um botão Apagar que só funciona para quem carregou o ficheiro
  • Os links não são listados: só quem tem o link pode ver o ficheiro
  • O bot responde no idioma do seu Telegram quando o site está disponível nesse idioma

Mantenha a qualidade total: o Telegram comprime as fotos enviadas da forma normal. Envie-as como ficheiro (📎 → Ficheiro) e é carregado o original. O Telegram só deixa os bots obter ficheiros até 20 MB, por isso carregue os ficheiros maiores no site.

Abrir @YourImageShare_bot no Telegram

Bot do Discord

Transforme qualquer imagem, GIF ou vídeo do Discord num link permanente. Os links de anexos do próprio Discord deixam de funcionar passado algum tempo; os links do YourImageShare não. Sem registo e sem chave da API. O bot carrega através do mesmo endpoint /api documentado acima.

  • /upload com um ficheiro: apagamento automático opcional após 1, 7 ou 30 dias, e only_me para mostrar o link só a si
  • Clique com o botão direito numa mensagem → Apps → Rehost on YourImageShare para voltar a alojar até 6 imagens ou vídeos dela numa só resposta
  • Adicione-o a um servidor, ou à sua própria conta para o usar em qualquer conversa ou mensagem direta
  • Cada resultado tem um botão Apagar que só funciona para quem carregou o ficheiro
  • Os links não são listados: só quem tem o link pode ver o ficheiro

Adicionar o YourImageShare ao Discord

GitHub Action para Playwright & Cypress

Quando os testes de ponta a ponta falham num pull request, veja porquê sem descarregar zips de artefactos. A action carrega as capturas de ecrã das falhas e as diferenças visuais e mostra-as como imagens num único comentário do pull request, atualizado a cada execução.

  • Funciona com Playwright e Cypress, e descobre sozinha qual deles o projeto usa
  • As comparações visuais falhadas aparecem como Expected, Actual e Diff, com um link para um cursor antes/depois (o toHaveScreenshot do Playwright; no Cypress, os plugins cypress-image-diff-js e cypress-visual-regression)
  • O comentário passa a "all tests passed" quando os testes são corrigidos; o mesmo relatório vai para o resumo do job
  • As capturas de ecrã são privadas (só ficheiros de imagem, sem página) e são apagadas após 30 dias por omissão
  • Precisa da sua chave só de carregamento como segredo do repositório YOURIMAGESHARE_API_KEY; nunca faz falhar a sua build
- uses: yourimageshare/playwright-pr-screenshots@v1
  if: always()
  with:
    api-key: ${{ secrets.YOURIMAGESHARE_API_KEY }}

Guia de configuração no GitHub

Projetos da comunidade

Algumas das melhores integrações do YourImageShare são feitas por quem o usa. Estes projetos foram criados por membros da comunidade com a API pública documentada acima. São mantidos pelos respetivos autores, por isso, para dúvidas ou relatórios de erros, contacte o autor através da página do projeto.

  • YourImageShare Uploads for FlatBB - um plugin para o fórum FlatBB de madromas (MadWay Inc.).
    • Adiciona um botão de carregamento ao compositor de mensagens do FlatBB: escolha uma ou mais imagens ou vídeos e o Markdown é inserido na posição do cursor
    • Insere cada carregamento como miniatura clicável, imagem em tamanho completo ou link simples (vídeos como link)
    • Os carregamentos passam pelo servidor do seu fórum com uma chave da API só de carregamento, por isso a chave nunca chega aos navegadores dos visitantes
    • Os ficheiros ficam alojados no YourImageShare, e não no disco do seu fórum, com uma visibilidade predefinida à sua escolha (privada, não listada ou pública)
    • Funciona em conjunto com o carregador do próprio FlatBB, com um limite de tamanho de ficheiro separado

    Código-fonte no GitHub · Página no mercado do FlatBB

Obrigado

Um grande obrigado a todos os que criam com o YourImageShare e partilham o seu trabalho com os outros. Os projetos da comunidade levam o YourImageShare a sítios que nunca alcançaríamos sozinhos. Criou algo com a API? Conte-nos e teremos todo o gosto em acrescentá-lo aqui.

Do blogue

Pronto para experimentar?

Obtenha a sua chave da API →