{"openapi":"3.1.0","info":{"title":"ZenVault","version":"1.0.0","description":"Always-on infrastructure for AI agents. Pay per call with x402 or prepaid credits; every resource has a TTL.","contact":{"email":"zenvault@agentmail.to","url":"https://zenvault.eu"}},"servers":[{"url":"https://api.zenvault.eu"}],"components":{"securitySchemes":{"credit":{"type":"http","scheme":"bearer","description":"Prepaid credit token (zv_…) or a resource management token (zvm_…)"}}},"paths":{"/v1/wakeups":{"post":{"summary":"Schedule a one-shot webhook call","tags":["Time"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/schedules":{"post":{"summary":"Recurring cron webhook","tags":["Time"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/deadman":{"post":{"summary":"Dead-man switch","tags":["Time"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/delayed":{"post":{"summary":"Delayed payload delivery","tags":["Time"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/drips":{"post":{"summary":"Drip queue","tags":["Time"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/snapshots":{"post":{"summary":"Scheduled URL snapshot","tags":["Time"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/spread":{"post":{"summary":"Load-spread scheduler","tags":["Time"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/debounce":{"post":{"summary":"Quiet-period debouncer","tags":["Time"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/notary":{"post":{"summary":"Timestamp notary (signed)","tags":["Time"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/attest":{"post":{"summary":"Attested fetch (content + signed receipt)","tags":["Time"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/inboxes":{"post":{"summary":"Buffered webhook inbox","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/bins":{"post":{"summary":"Request bin (full capture)","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/fanout":{"post":{"summary":"Webhook fan-out","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/stable":{"post":{"summary":"Stable address indirection","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/deliveries":{"post":{"summary":"Guaranteed outbound delivery","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/oauth-callbacks":{"post":{"summary":"OAuth callback receiver","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/transformers":{"post":{"summary":"Webhook payload transformer","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/handshakes":{"post":{"summary":"Handshake/challenge responder","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/proxies":{"post":{"summary":"Auth-gated reverse proxy","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/forms":{"post":{"summary":"Hosted human contact form","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/notify":{"post":{"summary":"Notification relay to 100+ human channels","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/frontdoor":{"post":{"summary":"Agent front door (buffer + retry-until-ack)","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/approvals":{"post":{"summary":"Human approval gate","tags":["Address"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/vaults":{"post":{"summary":"Key-value namespace with TTL","tags":["Memory"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/checkpoints":{"post":{"summary":"Crash checkpoint store","tags":["Memory"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/journals":{"post":{"summary":"Append-only journal","tags":["Memory"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/secrets":{"post":{"summary":"One-time-read secret drop","tags":["Memory"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/blobs":{"post":{"summary":"Blob parking (100 MB, 48 h)","tags":["Memory"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/objects":{"post":{"summary":"Large object storage (2 GB, 7 days, server-side fetch)","tags":["Memory"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/idempotency":{"post":{"summary":"Idempotency / replay firewall","tags":["Memory"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/queues":{"post":{"summary":"Work queue with leases","tags":["Memory"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/counters":{"post":{"summary":"Atomic counter","tags":["Memory"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/pages":{"post":{"summary":"Publish a static page","tags":["Place"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/sites":{"post":{"summary":"Publish a static site from a zip","tags":["Place"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/links":{"post":{"summary":"Expiring share link","tags":["Place"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/pdf":{"post":{"summary":"HTML to PDF","tags":["Place"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/egress-connectors":{"post":{"summary":"Allowlisted egress from our fixed IP","tags":["Place"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/watches":{"post":{"summary":"Create a watch (13 types)","tags":["Watching"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/watch-groups":{"post":{"summary":"Compose watches with AND/OR","tags":["Watching"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/escalations":{"post":{"summary":"Escalation chain","tags":["Watching"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/ocr":{"post":{"summary":"OCR an image or PDF","tags":["Utilities"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/convert":{"post":{"summary":"Convert a document to PDF","tags":["Utilities"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/transfers":{"post":{"summary":"Server-side transfer between storage backends","tags":["Utilities"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/resources/{id}":{"get":{"summary":"Resource status","tags":["Manage"],"security":[{"credit":[]}],"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/resources/{id}/extend":{"post":{"summary":"Extend TTL by paying again","tags":["Manage"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/resources/{id}/export":{"get":{"summary":"Export everything before expiry","tags":["Manage"],"security":[{"credit":[]}],"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/credits/balance":{"get":{"summary":"Credit token balance","tags":["Money"],"security":[{"credit":[]}],"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/credits/subtokens":{"post":{"summary":"Mint a spend-capped child token","tags":["Money"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/receipts":{"get":{"summary":"Signed statement of charges","tags":["Money"],"security":[{"credit":[]}],"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/prices":{"get":{"summary":"Machine-readable price list","tags":["Money"],"security":[{"credit":[]}],"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/feature-requests":{"post":{"summary":"Tell the operator what is missing (free)","tags":["Ask"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}},"/v1/abuse-reports":{"post":{"summary":"Report abusive hosted content (free)","tags":["Ask"],"security":[{"credit":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"ok"},"201":{"description":"resource created"},"402":{"description":"payment required (x402 terms in body)"},"429":{"description":"rate limited"}}}}}}