Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.prudra.dev/llms.txt

Use this file to discover all available pages before exploring further.

Create a vault

Vaults are normally created automatically by vaultMiddleware. For non-Express workflows or custom orchestration, you can also create vaults manually via the API.

Automatic creation via vaultMiddleware

The recommended approach — add vaultMiddleware() after payMiddleware in your Express chain:
import { walletMiddleware, payMiddleware, vaultMiddleware } from '@prudra/express';

app.post(
  '/generate',
  walletMiddleware({ walletId: 'mwt_clx1abc123' }),
  payMiddleware({ price: '0.05', description: 'Generate report' }),
  vaultMiddleware(),
  async (req, res) => {
    // req.vault is ready — created for this payment
    const vault = req.vault!;
    console.log(vault.id);  // 'vlt_clx1abc123'

    await vault.addDocument({ report: 'data...' }, 'Report');
    await vault.seal('Report generated');

    res.json({ vaultId: vault.id });
  }
);
vaultMiddleware creates the vault, attaches it to req.vault, and handles cleanup if your handler throws.

Manual vault creation

For queue workers, Lambda functions, or other non-Express workflows:
import { initialise } from '@prudra/core';
import { createVault } from '@prudra/vault';

initialise({ apiKey: process.env.PRUDRA_API_KEY! });

const vault = await createVault({
  label:      'Report generation job',
  ttlHours:   24,
  paymentId:  'pay_clx1abc123',  // optional — link to payment
});

console.log(vault.id);        // 'vlt_clx1abc123'
console.log(vault.status);    // 'active'
console.log(vault.expiresAt); // ISO timestamp

Parameters

ParameterTypeRequiredDescription
labelstringNoHuman-readable description of the vault’s purpose
ttlHoursnumberNoTime-to-live in hours (default: plan default; max: plan limit)
paymentIdstringNoLink to a payment record for traceability

Plan TTL defaults

PlanDefault TTLMaximum TTL
Hobby24 hours24 hours
Pro7 days (168 hours)7 days
Enterprise30 daysUnlimited

Error handling

ErrorStatusCauseResolution
vault-quota-exceeded429Active vault limit reachedSeal or delete unused vaults
ttl-exceeds-plan422TTL greater than plan maximumUse a lower TTL or upgrade plan