Guide
Serial Claim and Email Verification
Use the supported claim path to prove the intended serial owner before activation.
SoundSync
From serial to authorized machine
-
Start the claim
Use beginClaim(serial, email) in a maintained native client, or POST /api/license/v1/claim with license_key, email and instance_id. The first helper argument is the serial, not a web claim token.
-
Verify ownership
Use the private link for this product. The link currently expires after 48 hours. Account-login two-factor codes and email-entitlement activation codes are different workflows. Never share the link in screenshots.
-
Resume the saved claim
Restore checks /api/license/v1/claim-status with the saved serial, instance_id and optional claim_id. Native pending serial/email context survives a restart; a pending two-factor login challenge does not.
-
Complete activation
Use the returned claim_activation_token in a separate /activate request. Its current ten-minute lifetime differs from the verification-link lifetime. If it expires, read claim status again for fresh proof rather than creating a new owner.
-
Apply the decision
Unlock only after authorized activation for this product and machine. Keep serial claims, email-code entitlements and customer account sessions separate.
SoundSync
Serial claim outcomes and recovery
| Result | What to do |
|---|---|
| pending_email_verification | Keep the product locked. Save claim_id with the serial, customer email and machine identity. Complete the private verification link, then Restore or poll claim status. |
| verified + claim_activation_token | POST /api/license/v1/activate for the same serial and machine with claim_activation_token. Verification alone is not activation or a device reservation. |
| 400 VERIFICATION_RESTART_REQUIRED | The link was not sent or has expired. Submit the email and serial to /claim again; do not poll the expired claim indefinitely. |
| 503 VERIFICATION_EMAIL_FAILED / emailSent:false | Delivery was not confirmed. Wait for service recovery and deliberately retry the claim, or contact product support. HTTP failure does not grant access. |
| SERIAL_OWNER_EMAIL_MISMATCH / SERIAL_OWNER_LOGIN_REQUIRED | Sign in to the owning customer account, verify the owner email where supported, or contact support. Do not replace the owner email or create another identity to bypass the denial. |
| identity_required / CUSTOMER_DETAILS_REQUIRED | Provide the requested identity or use the owner-login path indicated by nextAction. HTTP 200 with ok:false is not a verified claim. |
| 429, timeout or temporary server error while polling/finalizing | Maintained native clients keep a pending claim for Restore to retry. Honor retry guidance; do not clear the cache or replace the machine identity merely to retry. No offline grant is created. |
| Revoked, refunded, expired or product-mismatched serial | Stop activation and follow the purchase/support path. These are access decisions, not an eligible connectivity failure. |
SoundSync
Custom HTTP claim sequence
curl --fail-with-body -sS -X POST "$SOUNDSYNC_API_BASE/api/license/v1/claim" \
-H "x-ss-app-id: $APP_ID" \
-H "x-ss-plugin-key: $PLUGIN_KEY" \
-H "x-ss-plugin-secret: $PLUGIN_SECRET" \
-H "Content-Type: application/json" \
--data '{"license_key":"EXAMPLE-SERIAL","email":"customer@example.com","instance_id":"example-machine"}'
curl --fail-with-body -sS -X POST "$SOUNDSYNC_API_BASE/api/license/v1/claim-status" \
-H "x-ss-app-id: $APP_ID" \
-H "x-ss-plugin-key: $PLUGIN_KEY" \
-H "x-ss-plugin-secret: $PLUGIN_SECRET" \
-H "Content-Type: application/json" \
--data '{"license_key":"EXAMPLE-SERIAL","instance_id":"example-machine","claim_id":"123"}'
curl --fail-with-body -sS -X POST "$SOUNDSYNC_API_BASE/api/license/v1/activate" \
-H "x-ss-app-id: $APP_ID" \
-H "x-ss-plugin-key: $PLUGIN_KEY" \
-H "x-ss-plugin-secret: $PLUGIN_SECRET" \
-H "Content-Type: application/json" \
--data '{"license_key":"EXAMPLE-SERIAL","email":"customer@example.com","instance_id":"example-machine","claim_activation_token":"VERIFIED_CLAIM_ACTIVATION_TOKEN"}'
Use the matching client identity
The HTTP samples use standard product credentials. Generated JUCE/HISE Native clients use matching app/product/public-client headers instead. Developer and partner tokens cannot substitute for product licensing identity. These are illustrative requests, not live customer transcripts.
Package-specific access policy
JUCE 0.7.3 supports signed offline access for the grace period selected in product Access settings, through 90 days. A prior successful activation or validation and the matching package verification keys are required. Startup uses a verified unexpired grant or online authorization. Zero, disabled, missing or expired grace requires online authorization; confirmed denial or deactivation locks access. Regenerate and rebuild older plugins to use this release.
