or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

client-setup.mderrors.mdindex.mdmessages.mdplatform-adapters.mdstreaming.mdstructured-outputs.mdtools.md
tile.json

tessl/maven-com-anthropic--anthropic-java

The Anthropic Java SDK provides convenient access to the Anthropic REST API from applications written in Java

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.anthropic/anthropic-java@2.11.x

To install, run

npx @tessl/cli install tessl/maven-com-anthropic--anthropic-java@2.11.0

index.mddocs/

Anthropic Java SDK

The Anthropic Java SDK provides convenient access to the Anthropic REST API from applications written in Java. It offers type-safe, idiomatic Java interfaces for Claude's advanced language capabilities including message generation, streaming responses, tool use, structured outputs, and deployment across multiple platforms (Anthropic API, AWS Bedrock, Google Vertex AI).

Package Information

  • Package Name: com.anthropic/anthropic-java
  • Package Type: maven
  • Language: Java
  • Minimum Java Version: Java 8
  • Current Version: 2.11.0

Installation

Gradle:

implementation("com.anthropic:anthropic-java:2.11.0")

Maven:

<dependency>
  <groupId>com.anthropic</groupId>
  <artifactId>anthropic-java</artifactId>
  <version>2.11.0</version>
</dependency>

Core Imports

import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.models.messages.Message;
import com.anthropic.models.messages.MessageCreateParams;
import com.anthropic.models.messages.Model;

Basic Usage

import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.models.messages.Message;
import com.anthropic.models.messages.MessageCreateParams;
import com.anthropic.models.messages.Model;

// Create client from environment (ANTHROPIC_API_KEY)
AnthropicClient client = AnthropicOkHttpClient.fromEnv();

// Build message parameters
MessageCreateParams params = MessageCreateParams.builder()
    .maxTokens(1024L)
    .addUserMessage("Hello, Claude")
    .model(Model.CLAUDE_SONNET_4_5)
    .build();

// Create message
Message message = client.messages().create(params);

// Access response
System.out.println(message.content());

Architecture

The SDK is organized into several key components:

  • Client Layer: AnthropicClient (synchronous) and AnthropicClientAsync (asynchronous)
  • Service Layer: Type-safe service interfaces for Messages, Models, Completions, and Beta APIs
  • Model Layer: Immutable request/response models with builder patterns
  • Platform Adapters: Backend implementations for Direct API, AWS Bedrock, and Google Vertex AI
  • HTTP Integration: OkHttp-based HTTP client with extensibility for custom implementations

Capabilities

Client Setup and Configuration

Create and configure the Anthropic client with authentication, timeouts, retries, and proxy settings.

package com.anthropic.client.okhttp;

public final class AnthropicOkHttpClient {
    public static Builder builder();
    public static AnthropicClient fromEnv();

    public static final class Builder {
        public Builder fromEnv();
        public Builder apiKey(String apiKey);
        public Builder authToken(String authToken);
        public Builder baseUrl(String baseUrl);
        public Builder backend(Backend backend);
        public Builder timeout(Duration timeout);
        public Builder maxRetries(int maxRetries);
        public Builder proxy(Proxy proxy);
        public AnthropicClient build();
    }
}
package com.anthropic.client;

public interface AnthropicClient {
    AnthropicClientAsync async();
    WithRawResponse withRawResponse();
    AnthropicClient withOptions(Consumer<ClientOptions.Builder> modifier);
    MessageService messages();
    ModelService models();
    CompletionService completions();
    BetaService beta();
    void close();
}

Client Setup and Configuration

Message Creation

Send messages to Claude models with full control over system prompts, conversation history, model selection, and generation parameters.

package com.anthropic.services.blocking;

public interface MessageService {
    Message create(MessageCreateParams params);
    Message create(MessageCreateParams params, RequestOptions requestOptions);
    StreamResponse<RawMessageStreamEvent> createStreaming(MessageCreateParams params);
    MessageTokensCount countTokens(MessageCountTokensParams params);
    BatchService batches();
}
package com.anthropic.models.messages;

public final class MessageCreateParams {
    public static Builder builder();

    public static final class Builder {
        public Builder maxTokens(long maxTokens);
        public Builder messages(List<MessageParam> messages);
        public Builder addMessage(MessageParam message);
        public Builder addUserMessage(String content);
        public Builder addAssistantMessage(String content);
        public Builder model(Model model);
        public Builder model(String value);
        public Builder system(String system);
        public Builder temperature(double temperature);
        public Builder topK(long topK);
        public Builder topP(double topP);
        public Builder stopSequences(List<String> stopSequences);
        public Builder metadata(Metadata metadata);
        public Builder thinking(ThinkingConfigParam thinking);
        public Builder enabledThinking(long budgetTokens);
        public Builder toolChoice(ToolChoice toolChoice);
        public Builder tools(List<ToolUnion> tools);
        public Builder addTool(Tool tool);
        public Builder serviceTier(ServiceTier serviceTier);
        public MessageCreateParams build();
    }
}
package com.anthropic.models.messages;

public final class Message {
    public String id();
    public List<ContentBlock> content();
    public Model model();
    public Optional<StopReason> stopReason();
    public Optional<String> stopSequence();
    public Usage usage();

    public static Builder builder();
}
package com.anthropic.models.messages;

public enum Model {
    // Claude 4.5 Sonnet - Best for agents and coding
    CLAUDE_SONNET_4_5("claude-sonnet-4-5"),
    CLAUDE_SONNET_4_5_20250929("claude-sonnet-4-5-20250929"),

    // Claude 4 Sonnet - High-performance with extended thinking
    CLAUDE_SONNET_4_20250514("claude-sonnet-4-20250514"),
    CLAUDE_SONNET_4_0("claude-sonnet-4-0"),
    CLAUDE_4_SONNET_20250514("claude-4-sonnet-20250514"),

    // Claude 4 Opus - Most capable models
    CLAUDE_OPUS_4_0("claude-opus-4-0"),
    CLAUDE_OPUS_4_20250514("claude-opus-4-20250514"),
    CLAUDE_4_OPUS_20250514("claude-4-opus-20250514"),
    CLAUDE_OPUS_4_1_20250805("claude-opus-4-1-20250805"),

    // Claude 4.5 Haiku - Hybrid model with instant responses and extended thinking
    CLAUDE_HAIKU_4_5("claude-haiku-4-5"),
    CLAUDE_HAIKU_4_5_20251001("claude-haiku-4-5-20251001"),

    // Claude 3.5 Haiku - Fastest and most compact
    CLAUDE_3_5_HAIKU_LATEST("claude-3-5-haiku-latest"),
    CLAUDE_3_5_HAIKU_20241022("claude-3-5-haiku-20241022"),

    // Claude 3.7 Sonnet - High-performance with early extended thinking (DEPRECATED)
    // End-of-life: February 19, 2026
    CLAUDE_3_7_SONNET_LATEST("claude-3-7-sonnet-latest"),
    CLAUDE_3_7_SONNET_20250219("claude-3-7-sonnet-20250219"),

    // Claude 3 Opus - Excels at writing and complex tasks (DEPRECATED)
    // End-of-life: January 5, 2026
    CLAUDE_3_OPUS_LATEST("claude-3-opus-latest"),
    CLAUDE_3_OPUS_20240229("claude-3-opus-20240229"),

    // Claude 3 Haiku - Previous fast and cost-effective model
    CLAUDE_3_HAIKU_20240307("claude-3-haiku-20240307");

    public static Model of(String value);
    public String asString();
}

Message Creation

Streaming Responses

Stream message generation in real-time, receiving content as it's generated rather than waiting for the complete response.

package com.anthropic.core.http;

public interface StreamResponse<T> extends Closeable {
    Stream<T> stream();
    void close();
}
package com.anthropic.models.messages;

public final class RawMessageStreamEvent {
    public Optional<RawMessageStartEvent> messageStart();
    public Optional<RawMessageDeltaEvent> messageDelta();
    public Optional<RawMessageStopEvent> messageStop();
    public Optional<RawContentBlockStartEvent> contentBlockStart();
    public Optional<RawContentBlockDeltaEvent> contentBlockDelta();
    public Optional<RawContentBlockStopEvent> contentBlockStop();

    public boolean isMessageStart();
    public boolean isContentBlockDelta();
}
package com.anthropic.helpers;

public final class MessageAccumulator {
    public static MessageAccumulator create();

    public RawMessageStreamEvent accumulate(RawMessageStreamEvent event);
    public Message message();
}

Streaming Responses

Tool Use and Function Calling

Enable Claude to use external tools and functions, with automatic parameter validation and result handling.

package com.anthropic.models.messages;

public final class Tool {
    public static Builder builder();

    public static final class Builder {
        public Builder inputSchema(InputSchema inputSchema);
        public Builder name(String name);
        public Builder description(String description);
        public Builder cacheControl(CacheControlEphemeral cacheControl);
        public Tool build();
    }

    public InputSchema inputSchema();
    public String name();
    public Optional<String> description();

    public static final class InputSchema {
        public static Builder builder();
    }
}
package com.anthropic.models.messages;

public final class ToolChoice {
    public static ToolChoice ofAuto(ToolChoiceAuto auto);
    public static ToolChoice ofAny(ToolChoiceAny any);
    public static ToolChoice ofTool(ToolChoiceTool tool);
    public static ToolChoice ofNone(ToolChoiceNone none);

    public Optional<ToolChoiceAuto> auto();
    public Optional<ToolChoiceAny> any();
    public Optional<ToolChoiceTool> tool();
    public boolean isAuto();
    public boolean isAny();
    public boolean isTool();
}
package com.anthropic.models.messages;

public final class ToolUseBlock {
    public String id();
    public String name();
    public Object input();

    public static Builder builder();
}
package com.anthropic.models.messages;

public final class ToolResultBlockParam {
    public static Builder builder();

    public static final class Builder {
        public Builder toolUseId(String toolUseId);
        public Builder content(String content);
        public Builder contentAsJson(Object content);
        public Builder isError(boolean isError);
        public ToolResultBlockParam build();
    }
}

Tool Use and Function Calling

Structured Outputs

Generate responses that conform to JSON schemas, automatically derived from Java classes or explicitly defined.

package com.anthropic.models.beta.messages;

public final class MessageCreateParams {
    public static Builder builder();

    public static final class Builder {
        public <T> StructuredMessageCreateParams.Builder<T> outputFormat(Class<T> clazz);
        public <T> StructuredMessageCreateParams.Builder<T> outputFormat(
            Class<T> clazz,
            JsonSchemaLocalValidation validation
        );
        public Builder outputFormat(BetaJsonOutputFormat outputFormat);
    }
}
package com.anthropic.models.beta.messages;

public final class StructuredMessageCreateParams<T> {
    public static final class Builder<T> {
        public Builder<T> model(Model model);
        public Builder<T> maxTokens(long maxTokens);
        public Builder<T> addUserMessage(String content);
        public Builder<T> system(String system);
        public Builder<T> temperature(double temperature);
        public StructuredMessageCreateParams<T> build();
    }
}
package com.anthropic.models.beta.messages;

public final class StructuredMessage<T> {
    public String id();
    public List<StructuredContentBlock<T>> content();
    public Model model();
    public Usage usage();
}
package com.anthropic.core;

public enum JsonSchemaLocalValidation {
    YES,
    NO
}

Structured Outputs

Platform Adapters

Deploy Claude on AWS Bedrock or Google Vertex AI using platform-specific authentication and configuration.

AWS Bedrock:

package com.anthropic.bedrock.backends;

public final class BedrockBackend implements Backend {
    public static Builder builder();
    public static BedrockBackend fromEnv();

    public static final class Builder {
        public Builder fromEnv();
        public Builder fromEnv(AwsCredentialsProvider provider);
        public Builder awsCredentials(AwsCredentials credentials);
        public Builder awsCredentialsProvider(AwsCredentialsProvider provider);
        public Builder apiKey(String apiKey);
        public Builder region(Region region);
        public BedrockBackend build();
    }
}

Google Vertex AI:

package com.anthropic.vertex.backends;

public final class VertexBackend implements Backend {
    public static Builder builder();
    public static VertexBackend fromEnv();

    public static final class Builder {
        public Builder fromEnv();
        public Builder googleCredentials(GoogleCredentials credentials);
        public Builder region(String region);
        public Builder project(String project);
        public VertexBackend build();
    }
}

Platform Adapters

Error Handling

Handle API errors with a comprehensive exception hierarchy for different failure scenarios.

package com.anthropic.errors;

public class AnthropicException extends RuntimeException {
    public AnthropicException(String message);
    public AnthropicException(String message, Throwable cause);
}
package com.anthropic.errors;

public class AnthropicServiceException extends AnthropicException {
    public int statusCode();
    public Headers headers();
}
package com.anthropic.errors;

public final class BadRequestException extends AnthropicServiceException {}
public final class UnauthorizedException extends AnthropicServiceException {}
public final class PermissionDeniedException extends AnthropicServiceException {}
public final class NotFoundException extends AnthropicServiceException {}
public final class RateLimitException extends AnthropicServiceException {}
public final class InternalServerException extends AnthropicServiceException {}
package com.anthropic.errors;

public final class AnthropicIoException extends AnthropicException {}
public final class AnthropicInvalidDataException extends AnthropicException {}

Error Handling

Core Types

Content Blocks

package com.anthropic.models.messages;

public final class ContentBlock {
    public static ContentBlock ofText(TextBlock text);
    public static ContentBlock ofThinking(ThinkingBlock thinking);
    public static ContentBlock ofToolUse(ToolUseBlock toolUse);

    public Optional<TextBlock> text();
    public Optional<ThinkingBlock> thinking();
    public Optional<ToolUseBlock> toolUse();

    public boolean isText();
    public boolean isThinking();
    public boolean isToolUse();

    public TextBlock asText();
    public ThinkingBlock asThinking();
    public ToolUseBlock asToolUse();

    public <T> T accept(Visitor<T> visitor);

    public interface Visitor<T> {
        T visitText(TextBlock text);
        T visitThinking(ThinkingBlock thinking);
        T visitToolUse(ToolUseBlock toolUse);
    }
}
package com.anthropic.models.messages;

public final class TextBlock {
    public String text();
    public String type();

    public static Builder builder();
}
package com.anthropic.models.messages;

public final class ThinkingBlock {
    public String thinking();
    public String type();

    public static Builder builder();
}

Message Parameters

package com.anthropic.models.messages;

public final class MessageParam {
    public Role role();
    public List<ContentBlockParam> content();

    public static Builder builder();

    public enum Role {
        USER("user"),
        ASSISTANT("assistant");

        public static Role of(String value);
        public String asString();
    }
}

Usage Information

package com.anthropic.models.messages;

public final class Usage {
    public long inputTokens();
    public long outputTokens();
    public Optional<Long> cacheCreationInputTokens();
    public Optional<Long> cacheReadInputTokens();

    public static Builder builder();
}

Stop Reasons

package com.anthropic.models.messages;

public enum StopReason {
    END_TURN("end_turn"),
    MAX_TOKENS("max_tokens"),
    STOP_SEQUENCE("stop_sequence"),
    TOOL_USE("tool_use"),
    PAUSE_TURN("pause_turn"),
    REFUSAL("refusal");

    public static StopReason of(String value);
    public String asString();
}

Request Options

package com.anthropic.core;

public final class RequestOptions {
    public static Builder builder();

    public static final class Builder {
        public Builder timeout(Duration timeout);
        public Builder responseValidation(boolean validation);
        public RequestOptions build();
    }
}

Client Options

package com.anthropic.core;

public final class ClientOptions {
    public HttpClient httpClient();
    public String baseUrl();
    public Headers headers();
    public Duration timeout();
    public int maxRetries();
    public boolean responseValidation();

    public static Builder builder();

    public static final class Builder {
        public Builder httpClient(HttpClient httpClient);
        public Builder baseUrl(String baseUrl);
        public Builder timeout(Duration timeout);
        public Builder timeout(Timeout timeout);
        public Builder maxRetries(int maxRetries);
        public Builder responseValidation(boolean validation);
        public Builder putHeader(String name, String value);
        public Builder putQueryParam(String key, String value);
        public ClientOptions build();
    }
}