API REST para compartilhamento de segredos criptografados

Crie e recupere segredos criptografados e autodestrutivos de forma programática.

Esta API armazena texto cifrado já criptografado de antemão. A criptografia deve acontecer no lado do cliente antes de chamar a API. O servidor nunca vê o texto plano.

Para a maioria dos casos de uso, a CLI ou a GitHub Action cuidam da criptografia automaticamente.

URL base

URL base
https://www.vaulted.fyi/api
POST/api/secrets

Armazena texto cifrado com metadados de expiração e limite de visualizações. Retorna um ID de segredo.

Corpo da requisição

CampoTipoObrigatórioValores
ciphertextstringsimmáx. 4096 caracteres
ivstringsimvetor de inicialização
maxViewsnumbersim0, 1, 3, 5, 10 (0 = ilimitado, retorna -1 em viewsRemaining)
ttlnumbersim3600, 7200, 21600, 43200, 86400, 259200, 604800, 1209600, 2592000 (segundos)
hasPassphrasebooleannãofalse por padrão
Requisição de exemplo
curl -X POST https://www.vaulted.fyi/api/secrets \
  -H "Content-Type: application/json" \
  -d '{
    "ciphertext": "encrypted-base64-data",
    "iv": "initialization-vector",
    "maxViews": 1,
    "ttl": 86400,
    "hasPassphrase": false
  }'
Resposta
{ "id": "abc123" }

Respostas de erro

StatusDescrição
400Erro de validação (campos faltando ou inválidos)
429Limite de requisições excedido
500Erro interno do servidor
GET/api/secrets/[id]

Recupera o texto cifrado e consome uma visualização. O segredo é excluído quando todas as visualizações são consumidas.

Cada requisição consome uma visualização. Use o endpoint de status para verificar sem consumir.

Requisição de exemplo
curl https://www.vaulted.fyi/api/secrets/abc123
Resposta
{
  "ciphertext": "encrypted-base64-data",
  "iv": "initialization-vector",
  "hasPassphrase": false,
  "viewsRemaining": 2
}

viewsRemaining é -1 para segredos com visualizações ilimitadas (maxViews = 0).

Respostas de erro

StatusDescrição
404Segredo não encontrado ou expirado
429Limite de requisições excedido
500Erro interno do servidor
GET/api/secrets/[id]/status

Verifica se um segredo existe e quantas visualizações restam sem consumir uma visualização.

Requisição de exemplo
curl https://www.vaulted.fyi/api/secrets/abc123/status
Resposta
{
  "exists": true,
  "viewsRemaining": 3,
  "hasPassphrase": false
}

viewsRemaining é -1 para segredos com visualizações ilimitadas (maxViews = 0).

Respostas de erro

StatusDescrição
404Segredo não encontrado ou expirado
500Erro interno do servidor

Limites de requisições

EndpointLimiteJanela
POST /api/secrets20 requisições10 minutos
GET /api/secrets/[id]60 requisições10 minutos

Os limites de requisições são por endereço IP. Exceder o limite retorna 429.