> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sendsculpt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Java

> SendSculpt Java official client.

<Note>Requires Java 11+ and `jackson-databind` (for JSON serialization)</Note>

## Installation

Include the Jackson dependency in your `pom.xml`.

```xml theme={null}
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>
```

Alternatively, import the SDK via JitPack, or pull `com.sendsculpt` classes directly into your project.

## Quick Start

Initialize the client with your **[API Key](https://sendsculpt.com/settings)**.

```java theme={null}
import com.sendsculpt.SendEmailRequest;
import com.sendsculpt.SendEmailResponse;
import com.sendsculpt.SendSculptClient;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        SendSculptClient client = new SendSculptClient("your-api-key");

        SendEmailRequest request = new SendEmailRequest();
        request.setTo(Arrays.asList("recipient@example.com"));
        request.setSubject("Welcome to SendSculpt! (Java Test)");
        request.setFromEmail("noreply@yourdomain.com");
        request.setBodyHtml("<h1>Hello!</h1><p>Test sent from Java 11 HttpRequest.</p>");

        try {
            SendEmailResponse response = client.sendEmail(request);
            System.out.println("Email sent successfully: " + response.getMessageId());
        } catch (Exception e) {
            System.err.println("Failed to send email: " + e.getMessage());
        }
    }
}
```

## Advanced Usage

Send emails utilizing **SendSculpt Templates** and auto-encoded **Attachments**.

```java theme={null}
import java.util.HashMap;
import java.util.Map;
import com.sendsculpt.SendEmailRequest;
import com.sendsculpt.SendSculptClient;

public class TestTemplates {
    public static void main(String[] args) {
        SendSculptClient client = new SendSculptClient("your-api-key");

        SendEmailRequest request = new SendEmailRequest();
        request.setTo(Arrays.asList("john@doe.com"));
        request.setSubject("Your Purchase Invoice");
        request.setFromEmail("billing@yourdomain.com");
        request.setTemplateId("your-template-id");

        Map<String, Object> data = new HashMap<>();
        data.put("first_name", "John");
        data.put("amount", "49.99");
        request.setTemplateData(data);

        SendEmailRequest.Attachment attachment = new SendEmailRequest.Attachment();
        attachment.setFilename("invoice.pdf");
        attachment.setFilePath("/path/to/local/invoice.pdf"); // Auto-converted to Base64
        attachment.setMimeType("application/pdf");

        request.setAttachments(Arrays.asList(attachment));
        try {
            var response = client.sendEmail(request);
            System.out.println("Message ID: " + response.getMessageId());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
```

<Tip>
  The SendSculpt API automatically handles environments based on your API key. Use a Sandbox key for testing and a Live key for production.
</Tip>
