API Reference
Complete REST API reference for building on the Inheribase protocol.
API Reference
The Inheribase API enables programmatic management of vaults, assets, guardians, and heirs. All endpoints follow REST conventions and return JSON responses.
Base URL: https://api.inheribase.com
Authentication
All requests require an Inheribase API key in the x-api-key header.
curl -H "x-api-key: sk_human_your_key_here" \
https://api.inheribase.com/v1/vaultKey Types
| Key Prefix | Scope | Use Case |
|---|---|---|
sk_human_... | Full vault access | Personal, trusted environments |
sk_agent_... | Restricted (read + check-in only) | Shared or automated setups |
Generate keys from Dashboard → Settings → API Keys.
Response Format
All successful responses follow this structure:
{
"data": { ... },
"meta": {
"timestamp": "2026-03-23T10:30:00Z",
"requestId": "req_abc123"
}
}Error responses:
{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Your Vault Credits balance is insufficient for this operation.",
"status": 402
}
}Error Codes
| HTTP Status | Error Code | Description | Resolution |
|---|---|---|---|
| 400 | VALIDATION_ERROR | Request body failed validation | Check required fields and data types |
| 401 | UNAUTHORIZED | Missing or invalid API key | Verify your x-api-key header |
| 402 | INSUFFICIENT_CREDITS | Vault Credits balance too low | Top up credits from the dashboard |
| 403 | FORBIDDEN | API key lacks permission | Use an sk_human_ key or request elevated scope |
| 404 | NOT_FOUND | Resource does not exist | Verify the vault/guardian/heir ID |
| 409 | CONFLICT | Resource already exists or state conflict | Check current vault state before retrying |
| 429 | RATE_LIMITED | Too many requests | Wait for Retry-After header duration |
| 500 | INTERNAL_ERROR | Server error | Retry after a brief delay; contact support if persistent |
Rate Limits
| Endpoint Pattern | Limit | Window |
|---|---|---|
GET /api/vault* | 120 requests | Per minute |
POST /api/vault/:id/asset | 60 requests | Per minute |
POST /api/vault/:id/release/* | 10 requests | Per minute |
POST /api/vault/:id/guardian | 30 requests | Per minute |
POST /api/vault/:id/heir | 30 requests | Per minute |
Rate-limited responses include a Retry-After header with the number of seconds to wait.
Types
Vault
interface Vault {
id: string;
state: VaultState;
createdAt: string; // ISO 8601
updatedAt: string; // ISO 8601
creditsBalance: number; // In Vault Credits (1 = $0.01)
assetCount: number;
guardianCount: number;
heirCount: number;
releaseTrigger: ReleaseTrigger | null;
sssPreset: SSSPreset;
}
type VaultState = "active" | "releasing" | "released";
type ReleaseTrigger = "dead_man_switch" | "manual" | "guardian_claim";
type SSSPreset = "standard" | "enhanced";
// standard = 2-of-3, enhanced = 3-of-5Guardian
interface Guardian {
id: string;
name: string;
email: string;
status: "pending" | "accepted" | "declined";
walletAddress?: string;
invitedAt: string; // ISO 8601
acceptedAt?: string; // ISO 8601
}Heir
interface Heir {
id: string;
name: string;
email: string;
walletAddress?: string;
addedAt: string; // ISO 8601
}Asset
interface Asset {
id: string;
filename: string;
contentType: string; // MIME type
sizeBytes: number;
category: "document" | "image" | "video" | "audio" | "other";
arweaveTxId: string;
createdAt: string; // ISO 8601
}Endpoints
Vaults
List Vaults
GET /api/vaultReturns all vaults owned by the authenticated user.
Example:
curl -H "x-api-key: sk_human_abc123" \
https://api.inheribase.com/v1/vaultResponse 200 OK:
{
"data": [
{
"id": "vault_01HQXYZ",
"state": "active",
"createdAt": "2026-01-15T09:00:00Z",
"creditsBalance": 5000,
"assetCount": 12,
"guardianCount": 3,
"heirCount": 2,
"releaseTrigger": "dead_man_switch",
"sssPreset": "standard"
}
]
}Get Vault Details
GET /api/vault/:idExample:
curl -H "x-api-key: sk_human_abc123" \
https://api.inheribase.com/v1/vault/vault_01HQXYZResponse 200 OK:
{
"data": {
"id": "vault_01HQXYZ",
"state": "active",
"createdAt": "2026-01-15T09:00:00Z",
"updatedAt": "2026-03-20T14:30:00Z",
"creditsBalance": 5000,
"assetCount": 12,
"guardianCount": 3,
"heirCount": 2,
"releaseTrigger": "dead_man_switch",
"sssPreset": "standard"
}
}Update Release Configuration
POST /api/vault/:id/release/configRequest Body:
{
"trigger": "dead_man_switch",
"config": {
"checkInFrequency": "monthly"
}
}| Field | Type | Required | Description |
|---|---|---|---|
trigger | ReleaseTrigger | Yes | One of dead_man_switch, manual, guardian_claim |
config.checkInFrequency | string | For DMS | weekly, biweekly, monthly, or quarterly |
Response 200 OK:
{
"data": {
"trigger": "dead_man_switch",
"checkInFrequency": "monthly",
"contestationDays": 30,
"nextCheckInDue": "2026-04-20T14:30:00Z"
}
}People
Add Guardian
POST /api/vault/:id/guardianSends an invitation email to the guardian.
Request Body:
{
"name": "Sarah Chen",
"email": "sarah@example.com"
}| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Guardian's display name |
email | string | Yes | Valid email address |
walletAddress | string | No | Optional Ethereum address |
Response 201 Created:
{
"data": {
"id": "grd_01HQABC",
"name": "Sarah Chen",
"email": "sarah@example.com",
"status": "pending",
"invitedAt": "2026-03-23T10:30:00Z"
}
}Errors:
409— Guardian with this email already exists400— Guardian limit reached for the current SSS preset
Remove Guardian
DELETE /api/vault/:id/guardian/:gidResponse 200 OK:
{
"data": {
"removed": "grd_01HQABC",
"remainingGuardians": 2,
"sharesRegenerated": true
}
}Add Heir
POST /api/vault/:id/heirRequest Body:
{
"name": "Alex Chen",
"email": "alex@example.com"
}| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Heir's display name |
email | string | Yes | Valid email address |
walletAddress | string | No | Optional Ethereum address |
Response 201 Created:
{
"data": {
"id": "heir_01HQDEF",
"name": "Alex Chen",
"email": "alex@example.com",
"addedAt": "2026-03-23T10:30:00Z"
}
}Errors:
409— Heir with this email already exists400— Maximum 5 heirs per vault
Remove Heir
DELETE /api/vault/:id/heir/:hidResponse 200 OK:
{
"data": {
"removed": "heir_01HQDEF",
"remainingHeirs": 1
}
}Assets
Upload Asset
POST /api/vault/:id/assetUpload an encrypted asset. Files must be encrypted client-side before upload.
Request Body (multipart/form-data):
| Field | Type | Required | Description |
|---|---|---|---|
file | binary | Yes | Encrypted file data |
filename | string | Yes | Original filename |
contentType | string | No | MIME type (auto-detected if omitted) |
metadata | JSON string | No | Custom metadata tags |
Response 201 Created:
{
"data": {
"id": "asset_01HQGHI",
"filename": "family-trust-2026.pdf",
"contentType": "application/pdf",
"sizeBytes": 2048576,
"category": "document",
"arweaveTxId": "ar_tx_abc123def456",
"createdAt": "2026-03-23T10:30:00Z",
"creditsConsumed": 20
}
}Errors:
402— Insufficient credits for the file size400— File exceeds 5 GB limit
List Assets
GET /api/vault/:id/assetQuery Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
category | string | all | Filter: document, image, video, audio, other |
limit | number | 50 | Results per page (max 100) |
offset | number | 0 | Pagination offset |
Response 200 OK:
{
"data": [
{
"id": "asset_01HQGHI",
"filename": "family-trust-2026.pdf",
"contentType": "application/pdf",
"sizeBytes": 2048576,
"category": "document",
"arweaveTxId": "ar_tx_abc123def456",
"createdAt": "2026-03-23T10:30:00Z"
}
],
"meta": { "total": 12, "limit": 50, "offset": 0 }
}Release
Check In (Reset DMS Timer)
POST /api/vault/:id/release/checkinRequest Body (optional):
{
"note": "Monthly review completed"
}Response 200 OK:
{
"data": {
"success": true,
"nextCheckInDue": "2026-04-23T10:30:00Z",
"daysRemaining": 30
}
}Errors:
402— Check-in costs $0.02 (2 credits)
Cancel Release
POST /api/vault/:id/release/cancelCancel an active release during the 30-day contestation period.
Response 200 OK:
{
"data": {
"cancelled": true,
"vaultState": "active",
"cancelledAt": "2026-03-23T10:30:00Z"
}
}Errors:
409— Vault is not inreleasingstate or contestation period elapsed
Deprecated Endpoints (v1.0)
The following endpoints were removed in v2.0. See the Migration Guide.
| Removed Endpoint | Replacement |
|---|---|
POST /api/vault/:id/lock | Vault states simplified to active / releasing / released |
POST /api/vault/:id/unlock | Vault states simplified |
* /api/vault/:id/protection/* | Merged into People endpoints |
* /api/vault/:id/succession/* | Merged into People endpoints |
POST /api/vault/:id/release/contest | POST /api/vault/:id/release/cancel |
* /api/vault/:id/verification | Removed (verification is automatic) |
* /api/vault/:id/certificate | Removed |
GET /api/verify/:hash | Removed |
SDK & Integration
- MCP Server Guide — AI-assisted vault management
- MCP Specification — Tool definitions and protocol details
Webhooks
Webhook support for real-time event notifications is planned for a future release. Use polling via GET /api/vault/:id to monitor vault state changes.