VUZDevelopers

Create a public share link for a document

POST
/documents/{id}/share

Creates a public share link for a document (primarily for quotes and invoices). Share links allow clients to view and optionally accept quotes without authentication.

Supported Document Types:

  • QUOTE: Most common use case - share quotes with clients for review/acceptance
  • INVOICE: Share invoices with clients for viewing
  • TAX_INVOICE: Share tax invoices with clients for viewing

Share Link Features:

  • Optional Expiration: Set expiration date (1-365 days)
  • Optional Password: Add password protection for sensitive documents
  • Comment Support: Allow clients to leave comments (optional)
  • Quote Acceptance: Allow clients to accept quotes directly (optional, quotes only)
  • View Tracking: Automatically tracks view count and last viewed timestamp

Use Cases:

  1. Quote Sharing: Send quote link to client for review and acceptance
  2. Invoice Sharing: Share invoice link for client to view and download
  3. Client Portal: Provide secure access to documents without login

Example Request:

{  "expiresInDays": 30,  "allowComments": false,  "allowAccept": true,  "accessPassword": "client123"}

Example Response:

{  "success": true,  "data": {    "shareId": "abc123-xyz789",    "documentId": "550e8400-e29b-41d4-a716-446655440000",    "shareUrl": "https://app.example.com/share/abc123-xyz789",    "expiresAt": "2025-12-10T10:30:00.000Z",    "allowComments": false,    "allowAccept": true,    "viewCount": 0,    "isAccessible": true,    "createdAt": "2025-11-10T10:30:00.000Z"  }}

Security:

  • Share links use unique random UUIDs (not sequential IDs)
  • Optional password protection available
  • Expiration dates automatically enforced
  • Links can be manually revoked
  • View tracking for audit trail
X-Api-Key<token>

Business API key, e.g. vuz_ab12cdef... Created via Settings → Integrations → API Keys. Unlike partner keys, a public API key's STRING does not encode its environment — isolation instead comes from a completely separate sandbox database: a key minted on the Sandbox server (above) only ever reads/writes sandbox data and can never see or affect production, regardless of what the key looks like.

In: header

Path Parameters

id*string

Document ID to share

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/documents/660e8400-e29b-41d4-a716-446655440000/share" \  -H "Content-Type: application/json" \  -d '{}'
{  "shareId": "abc123-xyz789",  "documentId": "550e8400-e29b-41d4-a716-446655440000",  "shareUrl": "https://app.example.com/share/abc123-xyz789",  "expiresAt": "2025-12-10T10:30:00.000Z",  "allowComments": false,  "allowAccept": true,  "viewCount": 0,  "isAccessible": true,  "createdAt": "2025-11-10T10:30:00.000Z"}