API unificada de armazenamento de arquivos.
Imagens, vídeos, áudios, documentos e Suporta até 4GB por envio.
| Método | Endpoint | Descrição | Auth |
|---|---|---|---|
| POST | /api/register | Registrar cliente e gerar API Key | Público |
| POST | /api/recover | Recuperar API Key por e-mail | Público |
| POST | /upload | Enviar arquivo (até 2GB) | 🔑 API Key |
| GET | /api/files | Listar meus arquivos | 🔑 API Key |
| GET | /api/files/:uuid | Detalhes de um arquivo | Público |
| GET | /file/:uuid.ext | Acessar / visualizar arquivo | Público |
| DELETE | /api/files/:uuid | Excluir arquivo | 🔑 API Key |
| POST | /api/files/:uuid/signed-url | Gerar URL assinada temporária | 🔑 API Key |
| GET | /api/usage | Consultar uso de armazenamento | 🔑 API Key |
| GET | /api/plans | Listar planos de assinatura | Público |
| POST | /api/subscribe | Assinar um plano | 🔑 API Key |
| PUT | /api/subscription/change | Trocar de plano (upgrade/downgrade) | 🔑 API Key |
Registre um novo cliente e receba sua API Key. A chave é enviada para o seu e-mail automaticamente.
| Campo | Tipo | Obrigatório |
|---|---|---|
| string | Sim | |
| name | string | Sim |
| string | Sim |
curl -X POST https://snapid.com.br/api/register \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "name": "João", "whatsapp": "(11) 99999-9999"}'
{
"success": true,
"data": {
"id": 1,
"email": "[email protected]",
"name": "João",
"whatsapp": "(11) 99999-9999",
"api_key": "sk_cbc82f071e394fc98b42ae159b9bc892"
},
"message": "Client registered successfully..."
}
Recupere sua API Key via e-mail. A chave é reenviada para o e-mail cadastrado.
| Campo | Tipo | Obrigatório |
|---|---|---|
| string | Sim |
curl -X POST https://snapid.com.br/api/recover \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]"}'
{
"success": true,
"message": "Se este e-mail estiver registrado, enviaremos a chave para ele em instantes."
}
Envia um arquivo via multipart/form-data. Suporta todos os tipos (imagem, vídeo, áudio, documento). Limite: até 2GB.
| Nome | Tipo | Onde | Obrigatório |
|---|---|---|---|
| key | string | query param | Sim |
| file | file | form-data | Sim |
| expiration | number | form-data | Não (seg) |
| visibility | string | form-data | Não (public/protected/private) |
curl -X POST \ -F "file=@/caminho/para/video.mp4" \ -F "expiration=86400" \ "https://snapid.com.br/upload?key=SUA_API_KEY"
{
"success": true,
"data": {
"id": 42,
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"title": "video.mp4",
"category": "video",
"mime_type": "video/mp4",
"size": 168000000,
"size_formatted": "160.22 MB",
"url": "https://snapid.com.br/file/a1b2c3d4.mp4",
"protected_url": "https://snapid.com.br/api/files/a1b2c3d4/signed",
"delete_url": "https://snapid.com.br/api/files/a1b2c3d4",
"visibility": "public",
"expiration": 86400
}
}
Lista todos os seus arquivos, com filtros opcionais.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| key | string | Sim | Sua API Key |
| category | string | Não | image, video, audio, document, other |
| visibility | string | Não | public, protected, private |
| limit | number | Não | Padrão: 50 |
| offset | number | Não | Padrão: 0 |
curl "https://snapid.com.br/api/files?key=SUA_API_KEY&category=image&limit=10"
Retorna os metadados de um arquivo específico pelo UUID.
curl https://snapid.com.br/api/files/a1b2c3d4-e5f6-7890-abcd-ef1234567890
Acessa diretamente o arquivo (redireciona para o Google Cloud Storage). Pode ser usado como src em tags <img>, <video>, etc.
<img src="https://snapid.com.br/file/a1b2c3d4.jpg" alt="Foto" /> <video src="https://snapid.com.br/file/a1b2c3d4.mp4" controls></video>
Exclui um arquivo permanentemente. Só o dono pode excluir.
curl -X DELETE "https://snapid.com.br/api/files/a1b2c3d4?key=SUA_API_KEY"
{
"success": true,
"message": "File deleted successfully"
}
Gera uma URL assinada de acesso temporário para arquivos protegidos.
| Campo | Tipo | Padrão |
|---|---|---|
| expires_in | number | 3600 (1h) |
curl -X POST "https://snapid.com.br/api/files/a1b2c3d4/signed-url?key=SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"expires_in": 7200}'
Lista todos os planos de assinatura disponíveis.
curl https://snapid.com.br/api/plans
{
"success": true,
"data": [
{
"id": 1,
"name": "Básico",
"slug": "basico",
"storage_limit_formatted": "5 GB",
"monthly_price": 20.00,
"annual_price": 200.00,
"is_recommended": false
},
...
]
}
Assina um plano. Ativa a assinatura imediatamente e retorna um link de checkout do Mercado Pago para pagamento.
| Campo | Tipo | Obrigatório |
|---|---|---|
| plan_id | number | Sim |
| billing_cycle | string | Não (monthly / annual) |
curl -X POST "https://snapid.com.br/api/subscribe?key=SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"plan_id": 2, "billing_cycle": "monthly"}'
Troca para um plano diferente (upgrade ou downgrade).
| Campo | Tipo | Obrigatório |
|---|---|---|
| plan_id | number | Sim |
| billing_cycle | string | Não (monthly / annual) |
curl -X PUT "https://snapid.com.br/api/subscription/change?key=SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"plan_id": 3, "billing_cycle": "annual"}'
Retorna o uso de armazenamento atual, limites do plano e breakdown por categoria.
curl "https://snapid.com.br/api/usage?key=SUA_API_KEY"
{
"success": true,
"data": {
"plan": "Intermediário",
"storage": {
"used_bytes": 2147483648,
"used_formatted": "2 GB",
"limit_bytes": 10737418240,
"limit_formatted": "10 GB",
"percentage": 20
},
"files": {
"total_count": 128,
"breakdown": [
{ "category": "image", "count": 80, "size_formatted": "1.2 GB" },
{ "category": "video", "count": 15, "size_formatted": "800 MB" }
]
}
}
}
Todas as rotas protegidas exigem a API Key. Você pode enviá-la de 3 formas:
curl "https://snapid.com.br/api/files?key=sk_sua_chave_aqui"
curl -H "X-API-Key: sk_sua_chave_aqui" https://snapid.com.br/api/files
curl -X POST https://snapid.com.br/api/subscribe \
-H "Content-Type: application/json" \
-d '{"key": "sk_sua_chave_aqui", "plan_id": 1}'
| Código | Descrição |
|---|---|
| 400 | Requisição inválida (parâmetros faltando ou inválidos) |
| 401 | API Key ausente ou inválida |
| 403 | Cota excedida ou sem permissão (não é o dono do arquivo) |
| 404 | Recurso não encontrado |
| 409 | E-mail já registrado |
| 500 | Erro interno do servidor |
| code | Significado |
|---|---|
API_KEY_MISSING |
API Key não foi fornecida |
API_KEY_INVALID |
API Key não encontrada ou inativa |
EMAIL_EXISTS |
E-mail já cadastrado |
NO_SUBSCRIPTION |
Nenhuma assinatura ativa |
QUOTA_EXCEEDED |
Limite de armazenamento atingido |
Use a URL do arquivo retornada pela API para exibir imagens em qualquer site ou compartilhá-las nas redes sociais.
<img src="https://snapid.com.br/file/SEU_UUID.jpg" alt="Descrição da imagem" loading="lazy" style="max-width: 100%; height: auto; border-radius: 8px;" />
<picture>
<source
srcset="https://snapid.com.br/file/SEU_UUID.webp"
type="image/webp"
/>
<img
src="https://snapid.com.br/file/SEU_UUID.jpg"
alt="Foto responsiva"
style="max-width: 100%; height: auto;"
/>
</picture>
<!-- Insira no <head> da sua página --> <meta property="og:title" content="Título da página" /> <meta property="og:description" content="Descrição curta da página" /> <meta property="og:image" content="https://snapid.com.br/file/SEU_UUID.jpg" /> <meta property="og:image:width" content="1200" /> <meta property="og:image:height" content="630" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://seusite.com/pagina" />
<!-- Insira no <head> da sua página --> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="Título da página" /> <meta name="twitter:description" content="Descrição curta" /> <meta name="twitter:image" content="https://snapid.com.br/file/SEU_UUID.jpg" />
Incorpore vídeos hospedados na SnapID diretamente em páginas web ou configure previews para redes sociais.
<video src="https://snapid.com.br/file/SEU_UUID.mp4" controls preload="metadata" poster="https://snapid.com.br/file/UUID_THUMB.jpg" style="max-width: 100%; border-radius: 8px;" > Seu navegador não suporta vídeo HTML5. </video>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 8px;">
<video
src="https://snapid.com.br/file/SEU_UUID.mp4"
controls
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
></video>
</div>
<!-- Insira no <head> da sua página --> <meta property="og:type" content="video.other" /> <meta property="og:title" content="Título do vídeo" /> <meta property="og:description" content="Descrição curta do vídeo" /> <meta property="og:video" content="https://snapid.com.br/file/SEU_UUID.mp4" /> <meta property="og:video:type" content="video/mp4" /> <meta property="og:video:width" content="1280" /> <meta property="og:video:height" content="720" /> <meta property="og:image" content="https://snapid.com.br/file/UUID_THUMB.jpg" />
Adicione players de áudio em suas páginas para músicas, podcasts ou qualquer conteúdo sonoro.
<audio src="https://snapid.com.br/file/SEU_UUID.mp3" controls preload="metadata" style="width: 100%;" > Seu navegador não suporta áudio HTML5. </audio>
<div style="background: #1a1a2e; padding: 16px; border-radius: 12px; display: flex; align-items: center; gap: 12px;">
<span style="font-size: 1.5rem;">🎵</span>
<div style="flex: 1;">
<p style="margin: 0 0 6px; color: #e0e0e0; font-size: 0.9rem;">Nome do áudio</p>
<audio
src="https://snapid.com.br/file/SEU_UUID.mp3"
controls
preload="metadata"
style="width: 100%;"
></audio>
</div>
</div>
<audio controls preload="metadata" style="width: 100%;"> <source src="https://snapid.com.br/file/SEU_UUID.ogg" type="audio/ogg" /> <source src="https://snapid.com.br/file/SEU_UUID.mp3" type="audio/mpeg" /> <source src="https://snapid.com.br/file/SEU_UUID.wav" type="audio/wav" /> Seu navegador não suporta áudio HTML5. </audio>
Incorpore PDFs, ofereça downloads ou configure previews de documentos para compartilhamento em redes sociais.
<iframe src="https://snapid.com.br/file/SEU_UUID.pdf" width="100%" height="600" style="border: 1px solid #2d2d44; border-radius: 8px;" title="Visualização do documento" ></iframe>
<a
href="https://snapid.com.br/file/SEU_UUID.pdf"
download="documento.pdf"
style="display: inline-flex; align-items: center; gap: 8px;
background: #0984e3; color: #fff; padding: 10px 20px;
border-radius: 8px; text-decoration: none;
font-family: sans-serif; font-size: 0.9rem;
transition: background 0.2s;"
onmouseover="this.style.background='#74b9ff'"
onmouseout="this.style.background='#0984e3'"
>
📥 Baixar documento
</a>
<!-- Insira no <head> da sua página --> <meta property="og:title" content="Nome do documento" /> <meta property="og:description" content="Clique para visualizar ou baixar o documento" /> <meta property="og:image" content="https://snapid.com.br/file/UUID_PREVIEW.jpg" /> <meta property="og:url" content="https://snapid.com.br/file/SEU_UUID.pdf" /> <meta property="og:type" content="article" />