# Java Quick Start

## 1.  Get an API Key and Secret

If you haven’t already, [sign up for a free trial](https://www.enzoic.com/free-trial).

## 2.  Include the Enzoic Library in Your Project

The Java package is available either via package manager or direct download.

**Maven**

The enzoic-java-client is available in Maven Central. Just include the following in your pom.xml dependencies section.

```xml
<dependencies>
    <dependency>
      <groupId>com.enzoic</groupId>
      <artifactId>enzoic-java-client</artifactId>
      <version>3.0.1</version>
    </dependency>
</dependencies>
```

**Gradle**

Include the following in your build.gradle dependencies section.

```gradle
dependencies {
  compile 'com.enzoic:enzoic-java-client:3.0.1'
}
```

**Download**

You can download a version of the .jar directly from\
<https://oss.sonatype.org/content/groups/public/com/enzoic/enzoic-java-client/>

## 3.  Try Out Our Example Code

We’ve made calling the API dead simple. This sample code snippet shows you examples of calling the four supported APIs:

```java
// Create a new Enzoic instance - this is our primary interface for making API calls
Enzoic enzoic = new Enzoic(YOUR_API_KEY, YOUR_API_SECRET);

// (Optional) Set a reasonable timeout for our application, in milliseconds.
enzoic.SetRequestTimeout(500);

// Check whether a password has been compromised
if (enzoic.CheckPassword("password-to-test")) {
    System.out.println("Password is compromised");
}
else {
    System.out.println("Password is not compromised");
}

// Check whether a password has been compromised with extended return information
CheckPasswordExResponse response = enzoic.CheckPasswordEx("password-to-test");
if (response != null) {
    System.out.println("Password is compromised");
    if (response.isRevealedInExposure()) {
        System.out.println("Password has been revealed in a data breach " +
            Integer.toString(response.exposureCount()) +  
            " times and has a relative breach frequency of " +
            Integer.toString(response.relativeExposureFrequency()));
    }
    else {
        System.out.println("Password has not been revealed in a data breach, " + 
            "but exists publicly in cracking dictionaies.");
    }
}
else {
    System.out.println("Password is not compromised");
}

 
// Check whether a specific set of credentials are compromised
if (enzoic.CheckCredentials("test@enzoic.com", "password-to-test")) {
    System.out.println("Credentials are compromised");
}
else {
    System.out.println("Credentials are not compromised");
}

// Use the CheckCredentialsEx call to tweak performance by including the
// date/time of the last check and excluding BCrypt
if (enzoic.CheckCredentialsEx("test@enzoic.com", "password-to-test",
        lastCheckTimestamp, new PasswordType[] { PasswordType.BCrypt })) {
    System.out.println("Credentials are compromised");
}
else {
    System.out.println("Credentials are not compromised");
}
 
// get all exposures for a given user
ExposuresResponse exposures = enzoic.GetExposuresForUser("test@enzoic.com");
System.out.println(exposures.getCount() + " exposures found for test@enzoic.com");
 
// now get the full details for the first exposure found
ExposureDetails details = enzoic.GetExposureDetails(exposures.getExposures()[0]);
System.out.println("First exposure for test@enzoic.com was " + details.getTitle());

// get all passwords for a given user - requires special approval, 
// contact Enzoic sales
UserPasswords userPasswords = enzoic.GetUserPasswords("eicar_0@enzoic.com");
System.out.println("First password for eicar_0@enzoic.com was " + 
    userPasswords.getPasswords[0].getPassword());
```

## 4.  Learn More

That should get you started. Check out the [GitHub project page](https://github.com/Enzoic/enzoic-java-client) for more details.  Make sure you also review the [Using the Enzoic API](/enzoic-api-developer-documentation/using-the-enzoic-api.md) page.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.enzoic.com/enzoic-api-developer-documentation/getting-started/java-quick-start.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
