Skip to content
SoundSyncAudio software platform

API Reference

Customer Library API

Verified customer-library token, listing, webview-library, expansion, review, and claim boundaries.

SoundSync

Verified library endpoints

These endpoints are route-backed and scoped by customer/library token where noted.

GET /api/library

Return customer portal/library payload for a library token.

Auth
Customer library/download token
Scope
Customer identity plus optional storefront/developer scope.
Request fields
  • query token: string
  • query download_token: string
  • query libraryToken: string
Returns
Products, subscriptions, licenses/serials, orders, marketing preferences, account profile, support, and download_token.
Side effects
None for GET endpoints unless noted.
Notes
When account-token session verification is unavailable, fail closed with 503 SESSION_VERIFICATION_UNAVAILABLE. Retry after recovery; do not treat it as authorization or confirmed revocation. A verified revoked account session returns 401 LIBRARY_SESSION_REVOKED. Shared library tokens follow their own token/ownership checks.
Request, response and error reference

Query and header parameters

[
  {
    "name": "token",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "download_token",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "libraryToken",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    }
  }
]

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      }
    },
    "subscriptions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      }
    },
    "licenses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      }
    },
    "orders": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      }
    },
    "prefs": {
      "type": "object",
      "properties": {},
      "additionalProperties": true
    },
    "profile": {
      "type": "object",
      "properties": {},
      "additionalProperties": true
    },
    "support": {
      "type": "object",
      "properties": {},
      "additionalProperties": true
    },
    "download_token": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

Documented failures: 401, 503.

Operation errors: SESSION_VERIFICATION_UNAVAILABLE, LIBRARY_SESSION_REVOKED.

GET /api/license/v1/library-token

Issue or return a customer library token for plugin/webview customer-library access.

Auth
x-ss-app-id + x-ss-plugin-key + x-ss-plugin-secret OR x-ss-app-id + x-ss-product-id + x-soundsync-public-client (matching generated native client)
Scope
Customer/library session scope.
Request fields
  • query instance_id: string
  • query validation_token: string
  • query plugin_session_id: string
Returns
Library token response used by HISE storefront package and webview-library flows.
Side effects
None for GET endpoints unless noted.
Request, response and error reference

Query and header parameters

[
  {
    "name": "instance_id",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "validation_token",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "plugin_session_id",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    }
  }
]

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "token": {
      "type": "string"
    },
    "library_token": {
      "type": "string"
    },
    "expiresIn": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 403, 500.

POST /api/license/v1/library-token

Issue or return a customer library token for plugin/webview customer-library access.

Auth
x-ss-app-id + x-ss-plugin-key + x-ss-plugin-secret OR x-ss-app-id + x-ss-product-id + x-soundsync-public-client (matching generated native client)
Scope
Customer/library session scope.
Request fields
  • instance_id: string
  • machine_id: string
  • product_id: integer
  • plugin_version: string
  • version: string
  • license_key: string
  • serial: string
  • email: string
  • validation_token: string
  • token: string
  • activationId: value
  • licenseReference: string
  • plugin_session_id: string
  • key: string
Returns
Library token response used by HISE storefront package and webview-library flows.
Side effects
None for GET endpoints unless noted.
Request, response and error reference

Request (application/json)

{
  "type": "object",
  "properties": {
    "instance_id": {
      "type": "string"
    },
    "machine_id": {
      "type": "string"
    },
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "plugin_version": {
      "type": "string"
    },
    "version": {
      "type": "string"
    },
    "license_key": {
      "type": "string"
    },
    "serial": {
      "type": "string"
    },
    "email": {
      "type": "string",
      "format": "email"
    },
    "validation_token": {
      "type": "string"
    },
    "token": {
      "type": "string"
    },
    "activationId": {
      "oneOf": [
        {
          "type": "integer",
          "minimum": 1
        },
        {
          "type": "string",
          "pattern": "^[1-9][0-9]*$"
        }
      ]
    },
    "licenseReference": {
      "type": "string"
    },
    "plugin_session_id": {
      "type": "string"
    },
    "key": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "token": {
      "type": "string"
    },
    "library_token": {
      "type": "string"
    },
    "expiresIn": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 403, 500.

GET /api/license/v1/webview-library

Return webview customer-library payload for plugin-hosted library experiences.

Auth
x-ss-app-id + x-ss-plugin-key + x-ss-plugin-secret OR x-ss-app-id + x-ss-product-id + x-soundsync-public-client (matching generated native client)
Scope
Customer library and product/storefront scope.
Request fields
  • query instance_id: string
  • query validation_token: string
  • query plugin_session_id: string
Returns
Customer library payload suitable for in-plugin WebView use.
Side effects
None for GET endpoints unless noted.
Request, response and error reference

Query and header parameters

[
  {
    "name": "instance_id",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "validation_token",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "plugin_session_id",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    }
  }
]

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "status": {
      "type": "string"
    },
    "libraryToken": {
      "type": "string"
    },
    "library_token": {
      "type": "string"
    },
    "download_token": {
      "type": "string"
    },
    "expiresIn": {
      "type": "integer",
      "minimum": 0
    },
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      }
    },
    "subscriptions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      }
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 403, 500.

POST /api/license/v1/webview-library

Return webview customer-library payload for plugin-hosted library experiences.

Auth
x-ss-app-id + x-ss-plugin-key + x-ss-plugin-secret OR x-ss-app-id + x-ss-product-id + x-soundsync-public-client (matching generated native client)
Scope
Customer library and product/storefront scope.
Request fields
  • instance_id: string
  • machine_id: string
  • product_id: integer
  • plugin_version: string
  • version: string
  • license_key: string
  • serial: string
  • email: string
  • validation_token: string
  • token: string
  • activationId: value
  • licenseReference: string
  • plugin_session_id: string
  • key: string
Returns
Customer library payload suitable for in-plugin WebView use.
Side effects
None for GET endpoints unless noted.
Request, response and error reference

Request (application/json)

{
  "type": "object",
  "properties": {
    "instance_id": {
      "type": "string"
    },
    "machine_id": {
      "type": "string"
    },
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "plugin_version": {
      "type": "string"
    },
    "version": {
      "type": "string"
    },
    "license_key": {
      "type": "string"
    },
    "serial": {
      "type": "string"
    },
    "email": {
      "type": "string",
      "format": "email"
    },
    "validation_token": {
      "type": "string"
    },
    "token": {
      "type": "string"
    },
    "activationId": {
      "oneOf": [
        {
          "type": "integer",
          "minimum": 1
        },
        {
          "type": "string",
          "pattern": "^[1-9][0-9]*$"
        }
      ]
    },
    "licenseReference": {
      "type": "string"
    },
    "plugin_session_id": {
      "type": "string"
    },
    "key": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "status": {
      "type": "string"
    },
    "libraryToken": {
      "type": "string"
    },
    "library_token": {
      "type": "string"
    },
    "download_token": {
      "type": "string"
    },
    "expiresIn": {
      "type": "integer",
      "minimum": 0
    },
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      }
    },
    "subscriptions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      }
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 403, 500.

POST /api/library/claim

Claim an external reseller/partner order item into the authenticated customer/developer account.

Auth
Account Bearer JWT
Scope
Public, customer-token, developer-user, or scoped partner API surface as noted.
Request fields
  • claim: string
  • claim_token: string
Returns
Claim result or LIBRARY_CLAIM_FAILED error.
Side effects
Claims an external reseller order item when the claim token is valid.
Notes
Requires an account JWT and a supported private claim token. claim is also accepted as a query alias. It does not create payment authority.
Request, response and error reference

Request (application/json)

{
  "type": "object",
  "properties": {
    "claim": {
      "type": "string"
    },
    "claim_token": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "claimed": {
      "type": "boolean"
    },
    "redirect_to": {
      "type": "string"
    },
    "customer_id": {
      "type": "integer",
      "minimum": 1
    },
    "product": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "minimum": 1
        },
        "name": {
          "type": "string"
        }
      },
      "additionalProperties": true
    },
    "order": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "minimum": 1
        },
        "external_order_id": {
          "type": "string"
        }
      },
      "additionalProperties": true
    },
    "license": {
      "type": "object",
      "properties": {
        "serial": {
          "type": [
            "string",
            "null"
          ]
        },
        "entitlement_id": {
          "type": [
            "integer",
            "null"
          ]
        },
        "status": {
          "type": "string"
        }
      },
      "additionalProperties": true
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 500, 503.

SoundSync

Purchase to library flow

This is the verified conceptual flow; do not expose internal-only endpoints.

  1. Purchase/order

    Checkout or partner fulfillment records product access.

  2. Entitlement

    Entitlement state is the access source used by delivery.

  3. Customer account/link

    Customer identity service resolves user/customer IDs from the token.

  4. Library item

    GET /api/library returns products, serials/licenses, subscriptions, and support context.

  5. Download

    Download links point to entitlement-gated delivery routes.

  6. Plugin activation

    Licensing endpoints remain separate from library listing.

Public boundary

Customer website UI, embedded customer library, in-plugin WebView library, and developer API access are separate surfaces. Do not document internal customer tables or admin routes as public APIs.

SoundSync

Customer activation reset

POST /api/library/licenses/:kind/:licenseId/reset-activations

Reset the current customer's eligible device activations

Auth
Account Bearer JWT
Scope
License ownership, developer reset enablement, cooldown, and storefront scope are checked.
Request fields
  • query storefront: string
  • expectedLastResetAt: string,null (required)
Returns
Updated reset result or an eligibility/conflict error; reload before another action.
Notes
kind is serial or entitlement. Account Bearer token only, not a shared library/download link. Send null before the first reset or the exact last value read. Enablement, cooldown, current active devices and stale-state conflicts are checked. When account-token session verification is unavailable, fail closed with 503 SESSION_VERIFICATION_UNAVAILABLE. Retry after recovery; do not treat it as authorization or confirmed revocation. A verified revoked account session returns 401 LIBRARY_SESSION_REVOKED. Shared library tokens follow their own token/ownership checks.
Request, response and error reference

Query and header parameters

[
  {
    "name": "storefront",
    "in": "query",
    "schema": {
      "type": "string"
    },
    "required": false,
    "description": ""
  }
]

Request (application/json)

{
  "type": "object",
  "properties": {
    "expectedLastResetAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    }
  },
  "required": [
    "expectedLastResetAt"
  ],
  "additionalProperties": true
}

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "reset": {
      "type": "boolean"
    },
    "resetCount": {
      "type": "integer"
    },
    "serialCount": {
      "type": "integer"
    },
    "message": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 500, 503, 401.

Operation errors: SESSION_VERIFICATION_UNAVAILABLE, LIBRARY_SESSION_REVOKED.

Customer activation resets, when enabled

Developers can allow customer self-service resets for supported serial and entitlement licenses, with a configured cooldown. Only the signed-in owner of the license can request a reset. The confirmation clears the affected device activations and sessions together while preserving the license and product ownership.

A reset is not a refund, a new serial, or unlimited extra devices. Customers must reload the current state and wait for the next eligible reset when a cooldown applies.

Current access and previous records

The customer account separates current licenses and plans from Previous licenses and Previous subscriptions. Ended or inactive records stay available in expandable history; a plan with remaining eligible paid-through access is not hidden merely because cancellation is scheduled.

A signed-in marketplace customer who already owns a product can open their library and downloads from its product page. This is an account-specific lookup, not a public ownership list. License-reset cooldowns show the next eligible date; resetting activations does not create another license.

Account sessions must be verifiable

A signed account token is not enough on its own: customer account requests also check that the session is still allowed. If that check is unavailable, protected library, invoice, review, device-reset, download and customer-token activation requests stop before returning private data or performing the protected action.

503 SESSION_VERIFICATION_UNAVAILABLE means verification could not finish. Retry after service recovery; it does not mean that the purchase disappeared or the session was confirmed revoked. A confirmed revoked session returns 401 LIBRARY_SESSION_REVOKED and requires sign-in again. Do not grant access on either response.

Shared library/download tokens retain their separate token and ownership checks. Optional storefront personalization can fall back to anonymous browsing when customer identity cannot be established; that does not authorize a private download. This account-session check does not replace the signed JUCE offline-grant policy.