Hello,
Our GroupDocs.Total metered key pair works with GroupDocs.Comparison but Metered.setMeteredKey in GroupDocs.Conversion always throws InvalidOperationException: Authentication failed. GroupDocs sales (2026-09-15) checked the subscription under our account, confirmed it is an active GroupDocs.Total metered subscription entitled to Conversion, and asked us to bring the technical details here.
Environment
- macOS 26.6.2 (arm64), Zulu OpenJDK 17.0.17 and 21.0.11, Node.js 22.22.0
- GroupDocs.Conversion for Java 26.7 and 25.2 (GroupDocs Java Repository Browser /java/repo/): fails
- GroupDocs.Conversion for Node.js via Java 25.11.0 (npm): fails
- GroupDocs.Comparison for Java 26.8.2 and Node.js via Java 26.8.2, same keys, same machine, same minute: works
- No proxy, direct internet; system clock within 0.03 s of time.apple.com (checked with sntp)
Exact call (one product per JVM, keys read from a file so both products get byte-identical strings)
com.groupdocs.conversion.licensing.Metered m = new com.groupdocs.conversion.licensing.Metered();
m.setMeteredKey(publicKey, privateKey); // throws
com.groupdocs.comparison.license.Metered m = new com.groupdocs.comparison.license.Metered();
m.setMeteredKey(publicKey, privateKey); // OK
System.out.println(com.groupdocs.comparison.license.Metered.getConsumptionQuantity());
Output, 2026-09-15 08:58:44 UTC (public key 41 characters, private key 344 characters)
java 17.0.17, product conversion, public key groupdocs..., private key length 344
FAILED after 975 ms: com.groupdocs.conversion.internal.c.a.ms.System.InvalidOperationException: Authentication failed.
--- full stack trace ---
class com.groupdocs.conversion.internal.c.a.ms.System.InvalidOperationException: Authentication failed.
com.groupdocs.conversion.metered.j.setMeteredKey(Unknown Source)
com.groupdocs.conversion.licensing.Metered.setMeteredKey(Unknown Source)
demo.MeteredRepro.main(MeteredRepro.java:35)
at com.groupdocs.conversion.metered.j.setMeteredKey(Unknown Source)
at com.groupdocs.conversion.licensing.Metered.setMeteredKey(Unknown Source)
at demo.MeteredRepro.main(MeteredRepro.java:35)
java 17.0.17, product comparison, public key groupdocs..., private key length 344
OK: Comparison metered authenticated; consumption quantity 0.0, credit 0.0
Node.js 25.11.0, same second:
class com.groupdocs.conversion.internal.c.a.ms.System.InvalidOperationException: Authentication failed.
What we observed on the network
- Both products connect to purchase-api.dynabic.com (198.17.118.202:443).
- Comparison uses
HttpURLConnectionand we can see its requests with JDK logging:
GET /v1.2/subscriptions/site-GroupDocs?status=&pageNumber=&pageSize=&publicApiKey=…&privateApiKey=…&clientkey=…&signature=…andGET /v1.2/subscriptions/<id>/items?clientkey=…&signature=…, all answeredHTTP/1.1 200 OK(IIS/10.0). - Conversion opens exactly one TLS connection to the same host, which lasts well under a second, and then throws. Its HTTP client does not honour
-Dhttps.proxyHost, and JDKHttpURLConnectionlogging shows nothing, so we cannot see the request path or the server’s status code. Total wall time of the failing call is about 1.0 to 1.4 s.
What we ruled out
- Key copy errors: both products read the same file; Comparison authenticates with it.
- Java version: 17 and 21 behave the same. Node.js via Java 25.11 behaves the same.
- Conversion version: 25.2 and 26.7 behave the same.
- Network: direct connection, the Conversion process does reach the licence server (see above).
- Entitlement: confirmed by GroupDocs sales as an active GroupDocs.Total metered subscription.
Questions
- What does
Authentication failedmean in the Conversion metered client, a non-200 from the licence server, a
signature or key-format check, or something else? Is there a way to enable logging for that client? - Could you check the licence-server logs for our public key (shared by private message) around
2026-09-15 08:58:44 UTC and tell us what the server returned to the Conversion client? - Is there any difference in how Conversion signs or addresses the metered request compared with Comparison that
would make a key pair issued for Comparison months ago fail?
We will share the full key pair with staff by private message on request, not in the thread. The reproduction is a single Java class; happy to post it in full or run it with a debug build.
Thank you.