Skip to main content

Vaults API

Base URL: https://api.torvussecurity.com/v1

The Vaults API allows you to programmatically create, manage, and delete vaults. All endpoints require authentication via API key or access token.


List All Vaults​

GET /vaults

Retrieve a paginated list of all vaults you own or have access to.

Request​

Headers:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Query Parameters:

ParameterTypeRequiredDescription
pageintegerNoPage number (default: 1)
per_pageintegerNoItems per page (default: 20, max: 100)
sortstringNoSort field: created_at, updated_at, name (default: created_at)
orderstringNoSort order: asc, desc (default: desc)
statusstringNoFilter by status: active, released, archived

Example Request​

curl -X GET https://api.torvussecurity.com/v1/vaults?page=1&per_page=20 \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json"

Success Response (200 OK)​

{
"data": [
{
"id": "vault_abc123xyz",
"name": "Digital Legacy Vault",
"description": "Important documents for family",
"status": "active",
"created_at": "2025-10-01T10:00:00Z",
"updated_at": "2025-10-07T15:30:00Z",
"released_at": null,
"document_count": 12,
"recipient_count": 3,
"policy": {
"type": "inactivity",
"frequency": "monthly",
"grace_period_days": 14
},
"owner": {
"id": "user_def456ghi",
"email": "user@example.com"
}
},
{
"id": "vault_xyz789abc",
"name": "Journalism Evidence",
"description": "Investigation materials",
"status": "active",
"created_at": "2025-09-15T08:00:00Z",
"updated_at": "2025-10-08T09:00:00Z",
"released_at": null,
"document_count": 24,
"recipient_count": 2,
"policy": {
"type": "manual",
"backup_policy": "inactivity"
},
"owner": {
"id": "user_def456ghi",
"email": "user@example.com"
}
}
],
"pagination": {
"current_page": 1,
"per_page": 20,
"total": 2,
"total_pages": 1
}
}

Error Responses​

Status CodeErrorDescription
401UnauthorizedMissing or invalid API key
429Too Many RequestsRate limit exceeded
500Internal Server ErrorServer error occurred

Get Vault by ID​

GET /vaults/{vault_id}

Retrieve detailed information about a specific vault.

Request​

Path Parameters:

ParameterTypeRequiredDescription
vault_idstringYesUnique vault identifier

Headers:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Example Request​

curl -X GET https://api.torvussecurity.com/v1/vaults/vault_abc123xyz \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json"

Success Response (200 OK)​

{
"id": "vault_abc123xyz",
"name": "Digital Legacy Vault",
"description": "Important documents for family",
"status": "active",
"created_at": "2025-10-01T10:00:00Z",
"updated_at": "2025-10-07T15:30:00Z",
"released_at": null,
"document_count": 12,
"recipient_count": 3,
"policy": {
"type": "inactivity",
"frequency": "monthly",
"grace_period_days": 14,
"next_checkin_due": "2025-11-01T10:00:00Z",
"last_checkin": "2025-10-01T10:00:00Z"
},
"settings": {
"notifications_enabled": true,
"auto_renew": true,
"encryption_enabled": true
},
"owner": {
"id": "user_def456ghi",
"email": "user@example.com",
"name": "John Doe"
},
"metadata": {
"size_bytes": 125829120,
"last_accessed": "2025-10-07T15:30:00Z"
}
}

Error Responses​

Status CodeErrorDescription
401UnauthorizedMissing or invalid API key
403ForbiddenYou don't have access to this vault
404Not FoundVault not found
429Too Many RequestsRate limit exceeded

Create Vault​

POST /vaults

Create a new vault.

Request​

Headers:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Body Parameters:

ParameterTypeRequiredDescription
namestringYesVault name (max 100 characters)
descriptionstringNoVault description (max 500 characters)
policy_typestringNoPolicy type: manual, inactivity, date_based, death_certificate (default: manual)
settingsobjectNoVault settings object

Example Request​

curl -X POST https://api.torvussecurity.com/v1/vaults \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Business Continuity Vault",
"description": "Critical business documents and credentials",
"policy_type": "inactivity",
"settings": {
"notifications_enabled": true,
"encryption_enabled": true
}
}'

Success Response (201 Created)​

{
"id": "vault_new123abc",
"name": "Business Continuity Vault",
"description": "Critical business documents and credentials",
"status": "active",
"created_at": "2025-10-08T12:00:00Z",
"updated_at": "2025-10-08T12:00:00Z",
"released_at": null,
"document_count": 0,
"recipient_count": 0,
"policy": {
"type": "inactivity",
"frequency": null,
"grace_period_days": null
},
"settings": {
"notifications_enabled": true,
"auto_renew": false,
"encryption_enabled": true
},
"owner": {
"id": "user_def456ghi",
"email": "user@example.com"
}
}

Error Responses​

Status CodeErrorDescription
400Bad RequestInvalid request body or missing required fields
401UnauthorizedMissing or invalid API key
402Payment RequiredVault limit reached on current plan
429Too Many RequestsRate limit exceeded

Update Vault​

PATCH /vaults/{vault_id}

Update vault details. Only provided fields will be updated.

Request​

Path Parameters:

ParameterTypeRequiredDescription
vault_idstringYesUnique vault identifier

Headers:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Body Parameters (all optional):

ParameterTypeDescription
namestringNew vault name (max 100 characters)
descriptionstringNew description (max 500 characters)
settingsobjectUpdated settings object

Example Request​

curl -X PATCH https://api.torvussecurity.com/v1/vaults/vault_abc123xyz \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Vault Name",
"description": "Updated description",
"settings": {
"notifications_enabled": false
}
}'

Success Response (200 OK)​

{
"id": "vault_abc123xyz",
"name": "Updated Vault Name",
"description": "Updated description",
"status": "active",
"created_at": "2025-10-01T10:00:00Z",
"updated_at": "2025-10-08T12:30:00Z",
"released_at": null,
"document_count": 12,
"recipient_count": 3,
"policy": {
"type": "inactivity",
"frequency": "monthly",
"grace_period_days": 14
},
"settings": {
"notifications_enabled": false,
"auto_renew": true,
"encryption_enabled": true
},
"owner": {
"id": "user_def456ghi",
"email": "user@example.com"
}
}

Error Responses​

Status CodeErrorDescription
400Bad RequestInvalid request body
401UnauthorizedMissing or invalid API key
403ForbiddenYou don't own this vault
404Not FoundVault not found
422Unprocessable EntityValidation failed (e.g., vault already released)

Delete Vault​

DELETE /vaults/{vault_id}

Permanently delete a vault and all its contents. This action cannot be undone.

Request​

Path Parameters:

ParameterTypeRequiredDescription
vault_idstringYesUnique vault identifier

Headers:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Query Parameters:

ParameterTypeRequiredDescription
confirmbooleanYesMust be true to confirm deletion

Example Request​

curl -X DELETE "https://api.torvussecurity.com/v1/vaults/vault_abc123xyz?confirm=true" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json"

Success Response (204 No Content)​

No response body. Vault and all contents permanently deleted.

Error Responses​

Status CodeErrorDescription
400Bad RequestMissing confirm=true parameter
401UnauthorizedMissing or invalid API key
403ForbiddenYou don't own this vault
404Not FoundVault not found
422Unprocessable EntityVault already released (cannot delete)

Release Vault​

POST /vaults/{vault_id}/release

Manually release a vault to all recipients immediately. Typically used with manual release policies.

Request​

Path Parameters:

ParameterTypeRequiredDescription
vault_idstringYesUnique vault identifier

Headers:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Body Parameters:

ParameterTypeRequiredDescription
release_notestringNoOptional note to recipients (max 1000 characters)
notify_recipientsbooleanNoSend email notifications (default: true)

Example Request​

curl -X POST https://api.torvussecurity.com/v1/vaults/vault_abc123xyz/release \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"release_note": "Investigation complete - see attached evidence",
"notify_recipients": true
}'

Success Response (200 OK)​

{
"id": "vault_abc123xyz",
"name": "Journalism Evidence",
"status": "released",
"released_at": "2025-10-08T13:00:00Z",
"recipients_notified": 2,
"release_note": "Investigation complete - see attached evidence"
}

Error Responses​

Status CodeErrorDescription
401UnauthorizedMissing or invalid API key
403ForbiddenYou don't own this vault
404Not FoundVault not found
422Unprocessable EntityVault already released

Archive Vault​

POST /vaults/{vault_id}/archive

Archive a vault. Archived vaults are hidden from default lists but not deleted.

Example Request​

curl -X POST https://api.torvussecurity.com/v1/vaults/vault_abc123xyz/archive \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json"

Success Response (200 OK)​

{
"id": "vault_abc123xyz",
"name": "Old Vault",
"status": "archived",
"archived_at": "2025-10-08T13:15:00Z"
}

Restore Archived Vault​

POST /vaults/{vault_id}/restore

Restore an archived vault to active status.

Example Request​

curl -X POST https://api.torvussecurity.com/v1/vaults/vault_abc123xyz/restore \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json"

Success Response (200 OK)​

{
"id": "vault_abc123xyz",
"name": "Old Vault",
"status": "active",
"restored_at": "2025-10-08T13:20:00Z"
}

Get Vault Statistics​

GET /vaults/{vault_id}/statistics

Retrieve usage statistics and analytics for a vault.

Example Request​

curl -X GET https://api.torvussecurity.com/v1/vaults/vault_abc123xyz/statistics \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json"

Success Response (200 OK)​

{
"vault_id": "vault_abc123xyz",
"storage": {
"total_bytes": 125829120,
"document_count": 12,
"average_document_size": 10485760
},
"activity": {
"last_document_upload": "2025-10-07T15:30:00Z",
"last_checkin": "2025-10-01T10:00:00Z",
"total_checkins": 24,
"missed_checkins": 0
},
"recipients": {
"total_recipients": 3,
"verified_recipients": 3,
"pending_verification": 0
},
"access": {
"total_views": 0,
"total_downloads": 0,
"last_access": null
}
}

Rate Limiting​

The Vaults API has the following rate limits:

EndpointRate LimitTime Window
GET /vaults100 requestsPer minute
GET /vaults/{id}200 requestsPer minute
POST /vaults20 requestsPer minute
PATCH /vaults/{id}50 requestsPer minute
DELETE /vaults/{id}10 requestsPer minute
POST /vaults/{id}/release10 requestsPer minute

See Rate Limiting for details.


Error Codes​

Common error codes returned by the Vaults API:

CodeMessageSolution
vault_not_foundVault not foundCheck vault ID is correct
vault_already_releasedVault already releasedCannot modify released vaults
vault_limit_exceededVault limit reachedUpgrade plan or delete old vaults
invalid_policy_typeInvalid policy typeUse manual, inactivity, date_based, or death_certificate
vault_name_requiredVault name requiredProvide a vault name
vault_name_too_longVault name too longMax 100 characters

See Error Handling for complete error documentation.



Last Updated: October 8, 2025