API Reference
Complete REST API and GraphQL documentation for zkVault Protocol
Base URL
Production:
https://api.vaultprotocol.ai
Testnet:
https://testnet-api.vaultprotocol.ai
Authentication
zkVault API uses wallet signature-based authentication. Include the JWT token in the Authorization header:
Authorization: Bearer <your_jwt_token> // Or sign each request with wallet X-Wallet-Address: 0x... X-Signature: 0x... X-Timestamp: 1234567890
Vault Endpoints
POST
/api/vaultsAuth: RequiredCreate a new vault
Request Body:
{
"name": "string",
"releaseType": "SCHEDULED | DEADMAN | HYBRID",
"unlockTime": "number (optional)",
"checkInPeriod": "number (optional)",
"recipients": "string[]",
"encrypted": "boolean"
}Response:
{
"id": "string",
"owner": "string",
"createdAt": "timestamp"
}GET
/api/vaults/:idAuth: RequiredGet vault details
Path Parameters:
id: Vault IDResponse:
{
"id": "string",
"name": "string",
"releaseType": "string"
}GET
/api/vaultsAuth: RequiredList vaults (paginated)
Query Parameters:
page: number, limit: number, owner: address (optional)Response:
{
"vaults": "Vault[]",
"total": "number",
"page": "number"
}POST
/api/vaults/:id/checkinAuth: RequiredPerform vault check-in
Path Parameters:
id: Vault IDResponse:
{
"success": "boolean",
"nextCheckIn": "timestamp"
}PUT
/api/vaults/:id/beneficiariesAuth: RequiredUpdate vault beneficiaries
Request Body:
{
"beneficiaries": "[{ address, share }]"
}Path Parameters:
id: Vault IDResponse:
{
"success": "boolean",
"beneficiaries": "Beneficiary[]"
}POST
/api/vaults/:id/releaseAuth: RequiredRelease vault assets
Path Parameters:
id: Vault IDResponse:
{
"success": "boolean",
"txHash": "string"
}Attestation Endpoints
POST
/api/attestationsAuth: RequiredSubmit death attestation
Request Body:
{
"vaultId": "string",
"proof": "string",
"signatures": "string[]"
}Response:
{
"success": "boolean",
"attestationId": "string"
}GET
/api/attestations/:vaultIdAuth: OptionalGet attestation status
Path Parameters:
vaultId: Vault IDResponse:
{
"status": "string",
"consensus": "number",
"required": "number"
}GraphQL API
Endpoint
POST https://api.vaultprotocol.ai/graphql
Example Query
query GetVault($id: ID!) {
vault(id: $id) {
id
name
owner
releaseType
unlockTime
checkInPeriod
recipients
beneficiaries {
address
share
}
status
createdAt
}
}Example Mutation
mutation CreateVault($input: CreateVaultInput!) {
createVault(input: $input) {
id
owner
name
releaseType
createdAt
}
}Example Subscription
subscription OnVaultUpdated($vaultId: ID!) {
vaultUpdated(vaultId: $vaultId) {
id
status
lastCheckIn
updatedAt
}
}Rate Limits
100
Requests per minute
Free tier
1000
Requests per minute
Premium tier
Custom
Requests per minute
Enterprise tier
Rate Limit Headers: Check X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers in responses.
Common Error Codes
400Bad Request
Invalid request parameters or body
401Unauthorized
Missing or invalid authentication
403Forbidden
Insufficient permissions for this resource
404Not Found
Resource not found
429Too Many Requests
Rate limit exceeded
500Internal Server Error
Server error - contact support if persistent