REST API

Construa com FlingDrop

Envie arquivos e gere links compartilháveis de qualquer aplicação. Autentique-se com uma única API key, envie em uma requisição ou em partes, e deixe o FlingDrop cuidar da expiração e da entrega.

Início rápido

  1. 1

    Crie uma conta grátis

    Registre-se em app.flingdrop.com — leva 30 segundos.

  2. 2

    Obtenha sua API Key

    Sua API Key é enviada por email ao se registrar. Você também pode gerar novas keys no seu dashboard em Configurações > API Keys.

  3. 3

    Envie seu primeiro arquivo

    Use o comando cURL abaixo para enviar um arquivo e obter um link compartilhável.

    curl -X POST https://app.flingdrop.com/api/upload \
      -H "X-API-Key: YOUR_API_KEY" \
      -F "file=@document.pdf"

URL base e autenticação

Todas as requisições API vão para:

https://app.flingdrop.com

Autentique cada requisição incluindo sua API Key no header X-API-Key:

X-API-Key: your_api_key_here

Sua API Key é enviada por email ao se registrar. Você também pode criar novas keys no seu dashboard.

Formato de resposta

Todos os endpoints retornam JSON com uma estrutura consistente:

Resposta de sucesso

{
  "success": true,
  "data": { ... }
}

Resposta de erro

{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "..."
  }
}

Enviar um arquivo

POST /api/upload

Envie um arquivo único usando multipart form data. O servidor detecta automaticamente duplicatas pelo hash do arquivo — se o mesmo arquivo já foi enviado e não expirou, a URL existente é retornada sem armazenar uma segunda cópia.

Headers

HeaderDescription
X-API-KeyObrigatórioSua API Key
X-Content-EncodingOpcionalDefina como zstd se o arquivo está comprimido com zstd
X-Original-SizeOpcionalTamanho original em bytes (obrigatório quando usando zstd)
X-File-HashOpcionalHash SHA-256 do arquivo original (evita recálculo no servidor)

Body

multipart/form-data com um campo chamado file.

Resposta

{
  "success": true,
  "data": {
    "url": "https://app.flingdrop.com/f/abc123xyz",
    "shortCode": "abc123xyz",
    "fileName": "document.pdf",
    "fileSize": 2048576,
    "expiresAt": "2026-04-01T00:00:00Z",
    "isDuplicate": false
  }
}

Quando isDuplicate é true, nenhum arquivo novo foi armazenado — o link de download existente é retornado.

Upload por partes (chunked)

Para arquivos grandes, use upload chunked para dividir a transferência em múltiplas requisições. Isso evita timeouts e permite acompanhamento do progresso.

Passo 1 — Inicializar sessão

POST /api/upload/init

Envie os metadados do arquivo para iniciar uma sessão. Se uma duplicata for detectada pelo hash, a URL existente é retornada imediatamente e nenhum upload é necessário.

Body JSON

{
  "fileName": "large-video.mp4",
  "totalSize": 524288000,
  "fileHash": "A1B2C3...",
  "isCompressed": false,
  "originalSize": 524288000
}

Resposta

{
  "success": true,
  "data": {
    "sessionId": "550e8400-e29b-41d4-a716-446655440000",
    "isDuplicate": false
  }
}

Passo 2 — Enviar chunks

PATCH /api/upload/{sessionId}?index={n}

Envie os bytes brutos de cada chunk no body da requisição (não multipart). Máximo 50 MB por chunk. O parâmetro index começa em zero.

Resposta

{
  "success": true,
  "data": {
    "bytesReceived": 10485760,
    "chunksReceived": 1
  }
}

Passo 3 — Completar upload

POST /api/upload/{sessionId}/complete

Remonta os chunks, armazena o arquivo final e cria o registro no banco de dados. Retorna a mesma estrutura de resposta do endpoint de upload simples.

Cancelar upload

DELETE /api/upload/{sessionId}

Cancela uma sessão em andamento e limpa os arquivos temporários.

Verificar duplicata

GET /api/check/{hash}

Verifique se um arquivo com o hash SHA-256 dado já existe no seu tenant. Útil para evitar enviar um arquivo que já está disponível.

Resposta

{
  "success": true,
  "data": {
    "exists": true,
    "url": "https://app.flingdrop.com/f/abc123xyz",
    "expiresAt": "2026-04-01T00:00:00Z"
  }
}

Quando exists é false, url e expiresAt são null.

URLs de download

Cada arquivo enviado recebe uma URL curta no formato:

https://app.flingdrop.com/f/{shortCode}

Essas URLs são públicas — não é necessária autenticação para baixar. Qualquer pessoa com o link pode baixar o arquivo até ele expirar.

A expiração depende do plano do tenant: 7 dias (Free), 30 dias (Pro) ou 90 dias (Business). Após a expiração, o arquivo é excluído permanentemente.

Health check

GET /api/status

Verifique se a API está operacional. Não requer autenticação.

{
  "success": true,
  "data": {
    "status": "OK",
    "serverTime": "2026-03-23T12:00:00Z"
  }
}

Convites de equipe

Apenas plano Business

Tenants do plano Business podem convidar membros da equipe via API. Os convites são enviados por email e expiram após 7 dias.

Criar convite

POST /api/invitation

Body JSON

{
  "email": "colleague@company.com",
  "role": "Member",
  "tenantId": "550e8400-e29b-41d4-a716-446655440000"
}

Resposta

{
  "success": true,
  "token": "...",
  "invitationUrl": "https://app.flingdrop.com/invitation/...",
  "message": "Invitation created successfully"
}

Roles válidos: Owner, Admin, Member, ReadOnly.

Obter info do convite

GET /api/invitation/{token}

Obtém os detalhes de um convite pendente. Não requer autenticação.

{
  "success": true,
  "tenantName": "Acme Corp",
  "email": "colleague@company.com",
  "role": "Member",
  "expiresAt": "2026-03-30T00:00:00Z"
}

Aceitar convite

POST /api/invitation/{token}/accept

Body JSON

{
  "password": "securepassword123",
  "name": "Jane Doe"
}

Se o email já tem uma conta, apenas a associação é criada. Para novos usuários, password (mín. 8 caracteres) é obrigatório.

Códigos de erro

Todas as respostas de erro incluem um campo code legível por máquina:

CódigoHTTP StatusDescrição
INVALID_API_KEY401API key ausente, inválida ou inativa
TENANT_INACTIVE401Conta do tenant desativada
INVALID_FILE400 / 413 / 429Validação do arquivo falhou (vazio, muito grande ou limite atingido)
FILE_TOO_LARGE413Arquivo excede o limite de tamanho do plano
STORAGE_LIMIT_EXCEEDED429Limite mensal de armazenamento excedido
HASH_MISMATCH400Verificação do hash do arquivo falhou
INTERNAL_ERROR500Erro do servidor

Limites de taxa

Os endpoints de upload têm limites de taxa. Quando você excede o limite, recebe uma resposta HTTP 429 Too Many Requests com um header Retry-After indicando quantos segundos esperar.

Implemente backoff exponencial no seu cliente para lidar com limites de taxa de forma elegante.

Limites por plano

Cada plano tem limites específicos que a API aplica automaticamente:

LimiteFreePro ($7/mês)Business ($29/mês)
Tamanho máx. arquivo100 MB2 GB10 GB
Uploads por dia5100Ilimitado
Expiração do link7 days30 days90 days
Transferência mensalSem limiteSem limite500 GB
Membros da equipe1125
Convites por APINãoNãoSim

Exemplos de código

# Enviar um arquivo
curl -X POST https://app.flingdrop.com/api/upload \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "file=@/path/to/document.pdf"

Pronto para compartilhar?

Junte-se a milhares de usuários que já confiam no FlingDrop para compartilhar seus arquivos de forma rápida e segura.