PRAEMUNIO API
    • Praemunio API - v1
    • AUTHENTICATION
      • API KEY Authentification
        POST
    • CORE
      • Teams
        • Members
          • Get Team Members
          • Add Team Member
          • Add Team Member Copy
        • Get Account Teams
        • Create Team
        • Get Team Details
        • Update Team Data
        • Delete Team
        • Get Team Data
        • Get Team workspaces
        • Get Team logs
      • Workspaces
        • Get Account Drive
        • Get Workspaces By Team
        • Create New Workspace
        • Get Workspace Details
        • Get Team Workspaces
        • Update workspace
        • Delete workspace
      • Folders
        • Get Folders
        • Create Folder
        • Get Folder Details
        • Get Folder Content
        • Update Folder
        • Delete Folder
        • Move Folder
      • Documents
        • Get Document Info
        • Get Document By Workspace
        • Update Document
        • Delete Document
        • Archive Document
        • Restore Document
        • Move Document
        • Stream Document
        • Stream Document Copy
        • Upload Document

    Praemunio API - v1

    API Overview#

    Version 1.0 · Developer Guide & Platform Index
    Welcome to the developer documentation for the Praemunio Public API. Praemunio is a multi-tenant document management platform: organize documents in teams, workspaces and folders, control access with granular permissions, and react to platform events in real time through signed webhooks.
    ProductionSandbox
    Base URLhttps://api.praemunio.io/api/v1https://sandbox.api.praemunio.io/api/v1
    API keyspk_live_… / sk_live_…pk_test_… / sk_test_…
    FormatJSON (application/json) and multipart uploads (multipart/form-data)
    AuthenticationAPI key pair → JWT Bearer token
    Documentationdocs.praemunio.io

    Table of contents#

    1.
    Where to start
    2.
    Platform overview
    3.
    Documentation modules
    4.
    Global conventions
    5.
    Quick start
    6.
    Errors
    7.
    Security & compliance
    8.
    Support

    1. Where to start#

    I want to…Go to
    Get my first API call workingQuick start
    Create API keys, manage tokens and scopesAuthentication & Webhooks
    Receive real-time event notificationsAuthentication & Webhooks → Webhooks
    Understand how resources relate to each otherCore Overview
    Upload, download or share documentsDocuments
    Manage teams, members and permissionsTeams

    2. Platform overview#

    Documentation map#

    Resource hierarchy#

    Every resource belongs to the level above it. Access is always evaluated from the top of the hierarchy down.
    ResourceDescription
    AccountThe tenant that owns everything: billing, API keys, webhooks
    TeamA group of members (individual or legal_entity) with permission templates
    WorkspaceAn isolated storage space with its own quota (storageLimit, in bytes)
    FolderA directory, nestable through parentFolderId
    DocumentA file with its metadata, status and sharing settings

    Document lifecycle#

    Documents in the completed state are ready to be streamed, downloaded and shared.

    3. Documentation modules#

    Authentication & Webhooks#

    Authentication & Webhooks Reference
    API keys (publicKey + secretKey), scopes, rate limits and pagination
    Access tokens (JWT, 15 minutes) and single-use refresh tokens (7 days), with reuse detection
    Signed webhooks: event catalog, payload schema, retries, idempotency and signature verification

    Core platform#

    Core Overview & Resource Hierarchy
    Entity model, entity-relationship diagrams and resource identifiers
    Response envelope standards (ApiResponse<T>, PaginatedApiResponse<T>)
    Offset-based pagination (page, limit, meta)
    Cross-module scopes and permissions matrix

    Resource modules#

    ModuleWhat you can doKey endpoints
    TeamsCreate teams, invite members with workspace and folder access rules (accessConfig), manage permission templates, read metrics and audit logsGET /teams/dashboard, GET /teams/logs
    WorkspacesCreate workspaces, allocate and enforce storage quotas, manage status (active, inactive, suspended), browse top-level contentGET /workspaces/drive, GET /workspaces/content
    FoldersBuild nested directory trees, list folder content, move one or several foldersPOST /folders/move, PATCH /folders/batch
    DocumentsUpload files, stream or download them, generate public links, rename, move, archive and restore, update status in batchPOST /documents/upload, GET /documents/stream, GET /documents/download, POST /documents/public-link

    4. Global conventions#

    Response envelopes#

    Every endpoint returns a JSON envelope.
    Single resource — ApiResponse<T>
    {
      "success": true,
      "message": "Operation executed successfully",
      "result": {
        "id": "a3f8e9d2-1a4b-4c7e-9f3a-2b8c6d4e1f0a",
        "name": "Production Workspace"
      },
      "errors": null,
      "except": null
    }
    Paginated list — PaginatedApiResponse<T>
    {
      "success": true,
      "message": "Resources retrieved successfully",
      "result": {
        "data": [],
        "meta": {
          "total": 100,
          "per_page": 20,
          "current_page": 1,
          "last_page": 5,
          "first_page": 1,
          "total_pages": 5,
          "has_next": true,
          "has_prev": false,
          "from": 1,
          "to": 20
        }
      },
      "errors": null,
      "except": null
    }
    FieldDescription
    successtrue if the request succeeded
    messageHuman-readable summary
    resultThe resource, or { data, meta } for lists; null on error
    errorsOn failure, an object with a machine-readable code (see Errors); otherwise null

    Pagination#

    List endpoints accept page (default 1) and limit (default 20, maximum 100). Pagination state is returned in result.meta.
    GET /api/v1/webhooks?page=2&limit=50

    Rate limits and quotas#

    Each API key enforces an hourly rate limit and a daily quota (defaults: 1,000 requests per hour, 10,000 per day). Every response includes:
    When a limit is exceeded the API returns 429 Too Many Requests with the code rate_limit_exceeded. Pause requests until X-RateLimit-Reset (Unix timestamp, in seconds). See Authentication & Webhooks for details.

    Scopes#

    Permissions are granted to API keys as resource:action scopes (for example document:read, document:write). A request without the required scope returns 403 with the code insufficient_scopes. The complete matrix is in the Core Overview.

    5. Quick start#

    This walkthrough authenticates, creates a team and a workspace, uploads a document and generates a download link. It needs curl and jq.
    Use the sandbox base URL and pk_test_ / sk_test_ keys while experimenting.
    Step 1 — Authenticate
    The access token is valid for 15 minutes. See token refresh to renew it.
    Step 2 — Create a team
    Step 3 — Create a workspace
    storageLimit is expressed in bytes (107374182400 = 100 GiB).
    Step 4 — Upload a document
    Step 5 — Generate a pre-signed download URL
    ttl is the lifetime of the link, in seconds.
    Next steps
    Subscribe to events with webhooks.
    Explore each module in section 3.

    6. Errors#

    Failed requests return the standard envelope with success: false and a machine-readable errors.code.
    {
      "success": false,
      "message": "Insufficient scopes",
      "result": null,
      "errors": { "code": "insufficient_scopes" },
      "statusCode": 403
    }
    HTTP statuserrors.codeMeaningRecommended action
    200 OK—Request succeededProcess the response body
    201 Created—Resource createdStore the returned resource id
    400 Bad Requestinvalid_requestMalformed JSON or invalid parameterCheck the request against the schema
    401 Unauthorizedsee Authentication errorsInvalid credentials, or invalid / expired tokenRe-authenticate or refresh the token
    403 Forbiddeninsufficient_scopesThe key lacks the required scopeAdd the scope to the API key
    404 Not Foundnot_foundThe resource does not existVerify the resource identifier
    409 Conflictresource_conflictA unique property is already in useUse a different name or value
    429 Too Many Requestsrate_limit_exceededHourly or daily limit exceededWait until X-RateLimit-Reset
    500 Internal Server Errorinternal_errorUnexpected server errorRetry with exponential backoff; contact support if it persists

    7. Security & compliance#

    Short-lived tokens. Access tokens expire after 15 minutes; refresh tokens are single-use and reuse is detected and revoked.
    Least privilege. Scopes restrict each API key to the resources and actions it needs.
    Signed webhooks. Every delivery carries an HMAC-SHA256 signature (X-Webhook-Signature) computed with your whsec_… secret.
    Tenant isolation. Workspaces and folders cannot be accessed across teams without explicit authorization.
    Encryption in transit. All production traffic is served over HTTPS/TLS.
    See Security best practices for recommendations on handling keys and secrets.

    8. Support#

    ResourceLink
    Documentationdocs.praemunio.io
    Contact supportdocs.praemunio.io/support
    Modified at 2026-09-30 11:23:13
    Next
    AUTHENTICATION
    Built with