暗号化シークレット共有のREST API

暗号化された自己消滅シークレットをプログラムで作成・取得します。

このAPIは事前に暗号化された暗号文を保存します。APIを呼び出す前に、暗号化をクライアントサイドで行う必要があります。サーバーは平文を見ることはありません。

ほとんどのユースケースでは、CLIまたはGitHub Actionが暗号化を自動的に処理します。

ベースURL

ベースURL
https://www.vaulted.fyi/api
POST/api/secrets

有効期限と閲覧制限のメタデータとともに暗号化された暗号文を保存します。シークレットIDを返します。

リクエストボディ

フィールド必須
ciphertextstringはい最大4096文字
ivstringはい初期化ベクトル
maxViewsnumberはい0, 1, 3, 5, 10 (0 = 無制限、viewsRemainingは-1を返す)
ttlnumberはい3600, 7200, 21600, 43200, 86400, 259200, 604800, 1209600, 2592000 (秒)
hasPassphrasebooleanいいえデフォルト false
リクエスト例
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
  }'
レスポンス
{ "id": "abc123" }

エラーレスポンス

ステータス説明
400バリデーションエラー(フィールドの欠落または不正)
429レート制限超過
500内部サーバーエラー
GET/api/secrets/[id]

暗号化された暗号文を取得し、閲覧回数を消費します。すべての閲覧回数が消費されるとシークレットは削除されます。

各リクエストで閲覧回数が1回消費されます。消費せずに確認するにはstatusエンドポイントを使用してください。

リクエスト例
curl https://www.vaulted.fyi/api/secrets/abc123
レスポンス
{
  "ciphertext": "encrypted-base64-data",
  "iv": "initialization-vector",
  "hasPassphrase": false,
  "viewsRemaining": 2
}

viewsRemainingは閲覧回数無制限のシークレット(maxViews = 0)の場合は-1です。

エラーレスポンス

ステータス説明
404シークレットが見つからないか期限切れ
429レート制限超過
500内部サーバーエラー
GET/api/secrets/[id]/status

閲覧回数を消費せずに、シークレットが存在するかどうかと残りの閲覧回数を確認します。

リクエスト例
curl https://www.vaulted.fyi/api/secrets/abc123/status
レスポンス
{
  "exists": true,
  "viewsRemaining": 3,
  "hasPassphrase": false
}

viewsRemainingは閲覧回数無制限のシークレット(maxViews = 0)の場合は-1です。

エラーレスポンス

ステータス説明
404シークレットが見つからないか期限切れ
500内部サーバーエラー

レート制限

エンドポイント制限時間枠
POST /api/secrets20リクエスト10分
GET /api/secrets/[id]60リクエスト10分

レート制限はIPアドレスごとに適用されます。制限を超えると429が返されます。