暗号化シークレット共有のREST API
暗号化された自己消滅シークレットをプログラムで作成・取得します。
このAPIは事前に暗号化された暗号文を保存します。APIを呼び出す前に、暗号化をクライアントサイドで行う必要があります。サーバーは平文を見ることはありません。
ほとんどのユースケースでは、CLIまたはGitHub Actionが暗号化を自動的に処理します。
ベースURL
ベースURL
https://www.vaulted.fyi/apiPOST/api/secrets
有効期限と閲覧制限のメタデータとともに暗号化された暗号文を保存します。シークレットIDを返します。
リクエストボディ
| フィールド | 型 | 必須 | 値 |
|---|---|---|---|
| ciphertext | string | はい | 最大4096文字 |
| iv | string | はい | 初期化ベクトル |
| maxViews | number | はい | 0, 1, 3, 5, 10 (0 = 無制限、viewsRemainingは-1を返す) |
| ttl | number | はい | 3600, 7200, 21600, 43200, 86400, 259200, 604800, 1209600, 2592000 (秒) |
| hasPassphrase | boolean | いいえ | デフォルト 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/secrets | 20リクエスト | 10分 |
| GET /api/secrets/[id] | 60リクエスト | 10分 |
レート制限はIPアドレスごとに適用されます。制限を超えると429が返されます。