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 |