Guide
Test Connection
Verify that productId, appId, pluginKey, and pluginSecret belong together before activation testing.
Generated native clients use public identity
HISEScript/custom HTTP use the standard product key/secret path. Current native HISE and JUCE packages identify the generated app/product through the supported hise-native or juce-native public-client contract and keep pluginSecret out of public configuration. Product identification is not customer ownership proof; do not substitute a developer token.
SoundSync
Endpoint contract
This endpoint uses JSON body credential fields. It does not use product credential headers.
/api/plugin-connections/verify
Verify the standard product credential tuple or supported native public-client app/product identity before customer activation testing.
- Auth
- JSON body credential check. Headers are not used for this endpoint.
- Scope
- Product, app, credential, environment, and machine scoped.
- Request fields
- productId: integer (required)
- appId: string (required)
- pluginKey: string
- pluginSecret: string
- publicClient: hise-native | juce-native
- pluginVersion: string
- environment: string
- Returns
- ok/connected, productId, credentialId, pluginVersion, environment, lastSeenAt.
- Side effects
- Updates credential last-used state, upserts plugin connection status, and records a plugin connection event.
- Notes
- This endpoint reads its JSON body rather than substituting licensing headers. The native public-client path does not require a distributed pluginSecret. Connectivity/product identification is not customer entitlement or audio unlock.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"productId": {
"type": "integer",
"minimum": 1
},
"appId": {
"type": "string"
},
"pluginKey": {
"type": "string"
},
"pluginSecret": {
"type": "string"
},
"publicClient": {
"enum": [
"hise-native",
"juce-native"
]
},
"pluginVersion": {
"type": "string"
},
"environment": {
"type": "string"
}
},
"required": [
"productId",
"appId"
],
"additionalProperties": true
}
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"status": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": true
}
SoundSync
Copyable examples
Use canonical field names in new clients.
curl -sS -X POST "$SOUNDSYNC_API_BASE/api/plugin-connections/verify" \
-H "Content-Type: application/json" \
-d '{
"productId": 23794,
"appId": "ss_prod_demoapp123",
"pluginKey": "ss_pk_demokey123",
"pluginSecret": "ss_ps_demosecret123",
"pluginVersion": "1.0.0",
"environment": "test"
}'
SoundSyncApiClient.cpp
SoundSync::CredentialConfig config;
config.apiBaseUrl = "https://www.soundsync.dev";
config.productId = "23794";
config.appId = "ss_prod_demoapp123";
config.pluginKey = "ss_pk_demokey123";
config.pluginSecret = "ss_ps_demosecret123";
config.environment = "test";
SoundSync::ApiClient client(config);
client.verifyConnection("1.0.0", [](SoundSync::ApiResult result)
{
// Runs on the JUCE message thread in the example client.
// Do not unlock audio here; Test Connection only verifies product credentials.
DBG(result.ok ? "SoundSync Test Connection passed" : result.code);
});
SoundSync
Stable failure codes
A failed Test Connection means fix credentials or product context before testing activation.
| Code | HTTP | Meaning | Client action |
|---|---|---|---|
| MISSING_CREDENTIALS | 400 | Missing productId, appId, pluginKey, or pluginSecret. | Fill all four body fields. |
| INVALID_PRODUCT | 400 | Product identifier is invalid. | Use Product ID from the product setup page. |
| INVALID_APP_ID | 401 | App ID was not found. | Use ss_prod_* from current product credential. |
| INVALID_PLUGIN_KEY | 401 | Plugin key mismatch. | Use the current ss_pk_* value. |
| INVALID_PLUGIN_SECRET | 401 | Plugin secret mismatch. | Use the current ss_ps_* value. |
| REVOKED_CREDENTIAL | 403 | Credential has been revoked. | Generate/rotate credential and regenerate package. |
| INACTIVE_CREDENTIAL | 403 | Credential is inactive. | Enable or replace credential. |
| PRODUCT_MISMATCH | 403 | Credential belongs to another product. | Do not mix product config files. |
| PRODUCT_NOT_FOUND | 404 | Product record was not found. | Check product setup. |
SoundSync
Do not confuse Test Connection with
These calls answer different questions.
| Call | What it verifies |
|---|---|
| /api/license/ping | General licensing service reachability only. |
| /api/plugin-connections/verify | Product credential relationship and connection status. |
| /api/license/v1/activate | Customer/product/machine activation. |
| /api/license/v1/validate | Cached activation is still allowed. |
| /api/license/v1/customer-login/activate | Customer login entitlement plus machine activation. |
Use your actual product identifier
Set PRODUCT_ID to the saved positive integer ID from your product dashboard. It is not the product slug, App ID, serial, or an arbitrary label. Examples use 23794 only to demonstrate the numeric format; replace all identifiers, credentials, and tokens with matching values from your own product. Never copy another product's credentials.
