API SnapID

Uma API minimalista para hospedagem de imagens.

📋 Resumo dos Endpoints

Método Endpoint Descrição
POST /api/key Gerar nova Chave de API
POST /upload Enviar imagem
GET /api/my-images Listar minhas imagens
GET /image/:id Obter detalhes de uma imagem
DELETE /image/:id Excluir uma imagem

1. Autenticação - Gerar Chave de API

Obtenha uma Chave de API para começar a enviar imagens. A chave é um UUID único que identifica você no sistema.

POST /api/key

Exemplo de requisição:

curl -X POST http://localhost:3000/api/key
        

Resposta de sucesso (200):

{
  "success": true,
  "apiKey": "550e8400-e29b-41d4-a716-446655440000"
}
        

2. Enviar Imagem

Envie um arquivo de imagem (multipart/form-data). Suporta: JPEG, JPG, PNG, GIF, WEBP. Limite: 5MB.

POST /upload

Parâmetros:

Nome Tipo Descrição
key obrigatório Sua Chave de API (query param ou form field)
image obrigatório Arquivo de imagem a ser enviado
expiration opcional Segundos até a expiração automática da imagem

Exemplo de requisição:

curl -X POST \
  -F "image=@/caminho/para/imagem.jpg" \
  -F "expiration=3600" \
  "http://localhost:3000/upload?key=SUA_CHAVE_API"
        

Resposta de sucesso (200):

{
  "success": true,
  "data": {
    "id": "675328ab1234567890abcdef",
    "title": "imagem.jpg",
    "url": "http://localhost:3000/uploads/1733489835123-456789.jpg",
    "delete_url": "http://localhost:3000/image/1733489835123-456789.jpg/delete",
    "expiration": 3600
  }
}
        

3. Listar Minhas Imagens

Retorna todas as imagens enviadas com sua Chave de API.

GET /api/my-images

Parâmetros:

Nome Tipo Descrição
key obrigatório Sua Chave de API (query param)

Exemplo de requisição:

curl "http://localhost:3000/api/my-images?key=SUA_CHAVE_API"
        

Resposta de sucesso (200):

{
  "success": true,
  "count": 2,
  "data": [
    {
      "id": "675328ab1234567890abcdef",
      "title": "foto1.jpg",
      "url": "http://localhost:3000/uploads/1733489835123-456789.jpg",
      "date": "2024-12-06T10:30:00.000Z",
      "expiration": null
    },
    {
      "id": "675328cd1234567890abcdef",
      "title": "foto2.png",
      "url": "http://localhost:3000/uploads/1733489900456-123456.png",
      "date": "2024-12-06T10:35:00.000Z",
      "expiration": "2024-12-06T11:35:00.000Z"
    }
  ]
}
        

Resposta de erro (401):

{
  "success": false,
  "error": "API Key required"
}
        
{
  "success": false,
  "error": "Invalid API Key"
}
        

4. Obter Detalhes da Imagem

Recupera os metadados de uma imagem específica pelo ID ou nome do arquivo.

GET /image/:id_ou_nome_arquivo

Exemplo de requisição:

curl http://localhost:3000/image/675328ab1234567890abcdef
        

ou pelo nome do arquivo:

curl http://localhost:3000/image/1733489835123-456789.jpg
        

Resposta de sucesso (200):

{
  "success": true,
  "data": {
    "id": "675328ab1234567890abcdef",
    "title": "imagem.jpg",
    "url": "http://localhost:3000/uploads/1733489835123-456789.jpg",
    "date": "2024-12-06T10:30:00.000Z",
    "expiration": null
  }
}
        

5. Excluir Imagem

Exclui uma imagem permanentemente. Requer a Chave de API do usuário que fez o upload.

DELETE /image/:id_ou_nome_arquivo

Parâmetros:

Nome Tipo Descrição
key obrigatório Sua Chave de API (query param)

Exemplo de requisição:

curl -X DELETE "http://localhost:3000/image/675328ab1234567890abcdef?key=SUA_CHAVE_API"
        

Resposta de sucesso (200):

{
  "success": true,
  "message": "Image deleted"
}
        

Resposta de erro (403):

{
  "success": false,
  "error": "Unauthorized: You did not upload this image"
}
        

Códigos de Erro

Código Descrição
400 Requisição inválida (ex: nenhuma imagem enviada)
401 Não autenticado (API Key ausente ou inválida)
403 Não autorizado (não é dono da imagem)
404 Imagem não encontrada
500 Erro interno do servidor