The SDK primarily throws LicensingApiException, which is used to signal issues when calling the Licensing API. In most cases, you can catch this exception type to handle all API-related errors. For more detailed handling, you can catch LicensingApiException specifically. This form gives you access to a structured ApiError object, including an error code you can use to guide behavior in your application—for example, showing tailored messages to users, retrying requests, or triggering a re-sync of the activation state. While the SDK maps most 4xx HTTP status responses to an ApiError, keep in mind that these messages are designed for developers and may not be suitable for display to end users. We recommend mapping error codes to user-friendly messages or implementing conditional logic for the specific cases relevant to your app. If you’re logging errors, it’s fine to include the raw ApiError details and stack trace in your logs (stored securely), but we suggest keeping user-facing messages simple and actionable. You can find all available error codes in the ApiErrorCodes class, and we’ve included a reference (ApiErrorCodes.cs) to help you see which methods might return which codes.