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

# Java

[![Version Maven Central](https://img.shields.io/maven-central/v/ai.sunra.client/sunra-client)](https://search.maven.org/artifact/ai.sunra.client/sunra-client)

### Introduction

La bibliothèque cliente pour Java offre une interface simple à utiliser pour interagir avec les services de Sunra.

### Installation

Pour intégrer le client dans votre projet, ajoutez la dépendance en utilisant Maven ou Gradle :

<CodeGroup>
  ```kotlin Gradle theme={null}
  implementation("ai.sunra.client:sunra-client:0.1.5")
  ```

  ```xml Maven theme={null}
  <dependency>
      <groupId>ai.sunra.client</groupId>
      <artifactId>sunra-client</artifactId>
      <version>0.1.5</version>
  </dependency>
  ```
</CodeGroup>

### Fonctionnalités

#### Appeler des points de terminaison

Sunra gère les requêtes de point de terminaison via un système de file d'attente, garantissant fiabilité et évolutivité. Utilisez la méthode `subscribe` pour soumettre une requête et attendre le résultat.

**Exemple :**

```java theme={null}
import ai.sunra.client.*;
import ai.sunra.client.queue.*;
import java.util.Map;
import com.google.gson.JsonObject;
import java.util.function.Consumer;

ClientConfig config = ClientConfig.builder()
    .withCredentials(CredentialsResolver.fromEnv())
    .build();

SunraClient client = SunraClient.withConfig(config);
Map<String, Object> input = Map.of(
    "prompt", "un chien qui court dans le parc");

Consumer<QueueStatus.StatusUpdate> statusUpdateHandler = update -> {
    String status = update.getStatus().toString();
    String message = String.format("\nMise à jour du statut : %s, ID de la requête : %s",
        status, update.getRequestId());
    System.out.println(message);
};

SubscribeOptions<JsonObject> options = SubscribeOptions.<JsonObject>builder()
    .input(input)
    .resultType(JsonObject.class)
    .onQueueUpdate(statusUpdateHandler)
    .logs(true)
    .build();

// enregistrer la requête d'abonnement dans une variable et l'imprimer
Output<JsonObject> response = client.subscribe("black-forest-labs/flux-kontext-pro/text-to-image", options);
System.out.println("Terminé !");
System.out.println(response.getData());
```

#### Gestion de la file d'attente

Gérez vos requêtes avec ces méthodes :

##### Soumettre une requête

Soumettez une requête et récupérez le `request_id` pour une utilisation ultérieure.

**Exemple :**

```java theme={null}
import ai.sunra.client.*;
import ai.sunra.client.queue.*;
import java.util.Map;
import com.google.gson.JsonObject;
import java.util.function.Consumer;

ClientConfig config = ClientConfig.builder()
    .withCredentials(CredentialsResolver.fromEnv())
    .build();

SunraClient client = SunraClient.withConfig(config);
Map<String, Object> input = Map.of(
    "prompt", "un chien qui court dans le parc");

Consumer<QueueStatus.StatusUpdate> statusUpdateHandler = update -> {
    String status = update.getStatus().toString();
    String message = String.format("\nMise à jour du statut : %s, ID de la requête : %s",
        status, update.getRequestId());
    System.out.println(message);
};

SubscribeOptions<JsonObject> options = SubscribeOptions.<JsonObject>builder()
    .input(input)
    .resultType(JsonObject.class)
    .onQueueUpdate(statusUpdateHandler)
    .logs(true)
    .build();

// enregistrer la requête d'abonnement dans une variable et l'imprimer
var request = client.queue().submit("black-forest-labs/flux-kontext-pro/text-to-image", options);
```

##### Vérifier le statut de la requête

Récupérez le statut d'une requête.

**Exemple :**

```java theme={null}
import ai.sunra.client.*;
import ai.sunra.client.queue.*;

ClientConfig config = ClientConfig.builder()
    .withCredentials(CredentialsResolver.fromEnv())
    .build();

SunraClient client = SunraClient.withConfig(config);
var job = client.queue().status(QueueStatusOptions.withRequestId("pd_eTYYuw4EqYLzRBHgnAMHA8zH"));
```

##### Récupérer les résultats de la requête

Récupérez le résultat d'une requête terminée.

**Exemple :**

```java theme={null}
import ai.sunra.client.*;
import ai.sunra.client.queue.*;

ClientConfig config = ClientConfig.builder()
    .withCredentials(CredentialsResolver.fromEnv())
    .build();

SunraClient client = SunraClient.withConfig(config);
var result = client.queue().result(QueueStatusOptions.withRequestId("pd_eTYYuw4EqYLzRBHgnAMHA8zH"));
```

#### Téléchargements de fichiers

<Note>Pas encore implémenté.</Note>

<Note>Taille maximale du fichier : 100 Mo</Note>

### Support

Rejoignez notre communauté pour obtenir de l'aide ou participer à des discussions :

* **Communauté Discord** : [Rejoignez-nous](https://discord.gg/897qCzvCcU)
* **Dépôt GitHub** : [Visitez ici](https://github.com/sunra-ai/sunra-clients)

Nous sommes là pour vous aider !
