Java SDK
Official Java client — build from GitHub Release v1.0.0.
On this page
Official Java client (builder pattern, Jackson POJOs, streaming). Prefer TypeScript, Python, Go, or n8n when a package registry install is enough; use Java when you need a first-party JVM client.
Installation
git clone https://github.com/trycaedral/caedral-java.gitcd caedral-javagit checkout v1.0.0mvn clean installQuickstart
import com.caedral.sdk.Caedral;import com.caedral.sdk.model.ChatCompletionRequest;import com.caedral.sdk.model.ChatMessage;import java.util.List; Caedral caedral = Caedral.builder() .apiKey("cd_live_...") .baseUrl("http://localhost:5001") .build(); var completion = caedral.chat().completions().create( new ChatCompletionRequest( "anthropic/claude-haiku-4.5", List.of(new ChatMessage("user", "Hello!")) )); System.out.println(completion.getChoices().get(0).getMessage().get("content"));Repository and releases: https://github.com/trycaedral/caedral-java
| Builder method | Default | Description |
|---|---|---|
| apiKey(String) | required | API key (cd_live_...) |
| baseUrl(String) | https://api.caedral.com | Gateway base URL |
| timeout(Duration) | 120s | HTTP timeout |
| maxRetries(int) | 3 | Retries for idempotent GET |
| httpClient(OkHttpClient) | built-in | Custom OkHttp client |
| objectMapper(ObjectMapper) | built-in | Custom Jackson mapper |
caedral.chat().completions().create(request)
ChatCompletion completion = caedral.chat().completions().create(request);Streaming (Iterator)
try (ChatCompletionStream stream = caedral.chat().completions().createStream(request)) { while (stream.hasNext()) { var chunk = stream.next();// handle chunk }}Streaming (callback)
caedral.chat().completions().createStream(request, chunk -> { System.out.print(chunk.getChoices().get(0).getDelta().get("content"));});caedral.models().list()
ModelListResponse models = caedral.models().list();caedral.usage().get()
UsageSummary usage = caedral.usage().get();System.out.println(usage.getAccountStatus());// pools.caedral / pools.external carry usedMilli, limitMilli and percentUsedcaedral.embeddings().create(request)
caedral.embeddings().create( new EmbeddingCreateRequest("caedral-embed", "Hello world"));caedral.images().generate(request)
caedral.images().generate( new ImageGenerateRequest("A minimal logo on dark, dark background"));caedral.audio().speech().create(request)
AudioGenerateRequest req = new AudioGenerateRequest("Welcome to Caedral.");req.setModel("caedral-voice-1");req.setVoice("caedral-f1");req.setSpeed(1.0);SpeechAudio audio = caedral.audio().speech().create(req);Files.write(Path.of("welcome.wav"), audio.getBytes());caedral.rerank().create(request)
RerankCreateRequest req = new RerankCreateRequest( "billing", List.of("Caedral pricing", "Gateway port 5001"));req.setTopN(2);caedral.rerank().create(req);Errors
try { caedral.chat().completions().create(request);} catch (CaedralAPIException ex) { System.err.printf("status=%d type=%s msg=%s%n", ex.getStatusCode(), ex.getType(), ex.getMessage());}