Skip to content

REST API Explorer

Interactive REST API Explorer

Explore and test all REST API endpoints using Swagger UI. You can execute real API calls directly from your browser.

Authentication Required

To use the "Try it out" feature, click the "Authorize" button at the top right and enter your:

  • Bearer Token: JWT token from authentication
  • API Key: X-Api-Key header from settings

The explorer will remember your authentication for this session.

Quick Start

1. Get Your API Key

  1. Sign in to app.essence.digital
  2. Navigate to SettingsAPI Keys
  3. Click Generate New API Key
  4. Copy your API key

2. Authorize

  1. Click the "Authorize" button above (🔓 icon)
  2. Enter your API key in the X-Api-Key field
  3. Or enter your JWT token in the Bearer field
  4. Click "Authorize"
  5. Click "Close"

3. Try an Endpoint

  1. Find an endpoint (e.g., GET /api/v1/vaults)
  2. Click to expand the endpoint
  3. Click "Try it out"
  4. Edit parameters if needed
  5. Click "Execute"
  6. View the response below

API Endpoints Overview

Vaults

MethodEndpointDescription
GET/api/v1/vaultsList all vaults
POST/api/v1/vaultsCreate new vault
GET/api/v1/vaults/{id}Get vault by ID
PUT/api/v1/vaults/{id}Update vault
DELETE/api/v1/vaults/{id}Delete vault
GET/api/v1/vaults/searchSearch vaults

Documents

MethodEndpointDescription
GET/api/v1/documentsList documents
POST/api/v1/documentsUpload document
GET/api/v1/documents/{id}Get document
PUT/api/v1/documents/{id}Update document
DELETE/api/v1/documents/{id}Delete document
POST/api/v1/documents/{id}/shareCreate share link
GET/api/v1/documents/share/{token}Access shared document

Instances

MethodEndpointDescription
GET/api/v1/instancesList instances
GET/api/v1/instances/{id}Get instance
GET/api/v1/instances/{id}/healthGet instance health
GET/api/v1/instances/statisticsGet statistics

Users

MethodEndpointDescription
GET/api/v1/users/meGet current user
PUT/api/v1/users/meUpdate profile

Example API Calls

Create a Vault

bash
curl -X POST https://api.essence.digital/api/v1/vaults \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Personal Vault",
    "description": "Personal documents",
    "category": "personal"
  }'

Response:

json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "name": "My Personal Vault",
  "description": "Personal documents",
  "category": "personal",
  "userId": "user-123",
  "isActive": true,
  "documentCount": 0,
  "totalSize": 0,
  "createdAt": "2025-11-06T10:00:00Z"
}

List All Vaults

bash
curl -X GET https://api.essence.digital/api/v1/vaults \
  -H "Authorization: Bearer YOUR_TOKEN"

Upload a Document

bash
curl -X POST https://api.essence.digital/api/v1/documents \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "vaultId": "vault-id-here",
    "fileName": "document.pdf",
    "encryptedData": "base64-encrypted-data",
    "sizeBytes": 1024,
    "mimeType": "application/pdf",
    "encryptionMetadata": {
      "algorithm": "AES-256-GCM",
      "keyDerivation": "PBKDF2",
      "iterations": 100000,
      "iv": "base64-iv",
      "authTag": "base64-auth-tag"
    }
  }'

Share a Document

bash
curl -X POST https://api.essence.digital/api/v1/documents/{id}/share \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "permissions": ["read"],
    "expiresAt": "2025-12-31T23:59:59Z",
    "maxAccessCount": 5
  }'

Response:

json
{
  "id": "share-123",
  "shareToken": "secure-random-token-here",
  "permissions": ["read"],
  "expiresAt": "2025-12-31T23:59:59Z",
  "maxAccessCount": 5,
  "accessCount": 0,
  "isActive": true
}

Response Codes

CodeDescription
200 OKRequest successful
201 CreatedResource created successfully
204 No ContentRequest successful, no content returned
400 Bad RequestInvalid request parameters
401 UnauthorizedMissing or invalid authentication
403 ForbiddenInsufficient permissions
404 Not FoundResource not found
429 Too Many RequestsRate limit exceeded
500 Internal Server ErrorServer error

Error Response Format

All error responses follow this format:

json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Vault name is required",
    "details": {
      "field": "name",
      "constraint": "required"
    },
    "timestamp": "2025-11-06T10:00:00Z",
    "requestId": "req-123"
  }
}

Rate Limiting

API responses include rate limit headers:

http
X-Rate-Limit-Limit: 1000
X-Rate-Limit-Remaining: 995
X-Rate-Limit-Reset: 2025-11-06T11:00:00Z

Rate Limits by Tier

TierHourly LimitBurst Limit
Free1,00010/minute
Paid10,000100/minute
Enterprise100,0001,000/minute

When rate limited, you'll receive:

json
{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "API rate limit exceeded",
    "retryAfter": 45
  }
}

Pagination

List endpoints support pagination:

bash
GET /api/v1/vaults?page=1&pageSize=20&sortBy=createdAt&sortOrder=desc

Response:

json
{
  "data": [...],
  "pagination": {
    "page": 1,
    "pageSize": 20,
    "totalPages": 5,
    "totalCount": 95,
    "hasNextPage": true,
    "hasPreviousPage": false
  }
}

Filtering

Use query parameters to filter results:

bash
# Filter by category
GET /api/v1/vaults?category=health

# Filter by active status
GET /api/v1/vaults?isActive=true

# Search by name
GET /api/v1/vaults?search=medical

# Combine filters
GET /api/v1/vaults?category=health&isActive=true&sortBy=name

Sorting

Sort results using sortBy and sortOrder:

bash
# Sort by creation date (newest first)
GET /api/v1/vaults?sortBy=createdAt&sortOrder=desc

# Sort by name (A-Z)
GET /api/v1/vaults?sortBy=name&sortOrder=asc

# Sort by document count
GET /api/v1/documents?sortBy=documentCount&sortOrder=desc

OpenAPI Specification

Download the complete OpenAPI specification:

Use these to generate client SDKs, mock servers, or import into tools like Postman.

Alternative Tools

Postman

  1. Download OpenAPI spec
  2. Open Postman
  3. Click ImportLink
  4. Paste the OpenAPI URL
  5. Postman will create a collection with all endpoints

Insomnia

  1. Open Insomnia
  2. Click CreateImport
  3. Enter URL: https://api.essence.digital/openapi/v1.json
  4. Insomnia will import all endpoints

cURL

For command-line testing, use cURL with the examples above.

HTTPie

For a more user-friendly CLI:

bash
# Install httpie
pip install httpie

# Make requests
http GET https://api.essence.digital/api/v1/vaults \
  Authorization:"Bearer YOUR_TOKEN"

http POST https://api.essence.digital/api/v1/vaults \
  Authorization:"Bearer YOUR_TOKEN" \
  name="My Vault" \
  category="personal"

Next Steps


Need help? Join our Discord community or email support.

Built with ❤️ for developers