> ## 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.

# JavaScript / TypeScript

[![@sunra/client npm package](https://img.shields.io/npm/v/@sunra/client?color=%237527D7\&label=JavaScript\&style=flat-square)](https://www.npmjs.com/package/@sunra/client)

### Einführung

Die Client-Bibliothek für JavaScript/TypeScript bietet eine benutzerfreundliche Schnittstelle zur Interaktion mit den Diensten von Sunra AI.

### Installation

Um den Client in Ihr Projekt zu integrieren, installieren Sie ihn mit npm:

<CodeGroup>
  ```bash npm theme={null}
  npm install @sunra/client
  ```

  ```bash pnpm theme={null}
  pnpm add @sunra/client
  ```

  ```bash yarn theme={null}
  yarn add @sunra/client
  ```
</CodeGroup>

### Funktionen

#### Endpunkte aufrufen

Sunra AI verwaltet Endpunktanfragen über ein Warteschlangensystem, das Zuverlässigkeit und Skalierbarkeit gewährleistet. Verwenden Sie die `subscribe`-Methode, um eine Anfrage zu senden und auf das Ergebnis zu warten.

**Beispiel:**

```javascript theme={null}
import { sunra } from "@sunra/client";

const result = await sunra.subscribe("black-forest-labs/flux-kontext-pro/text-to-image", {
  input: {
    prompt: "Eine gläserne Teekanne mit blühendem Blumentee darin, auf einem Holztisch bei einem sonnendurchfluteten Fenster mit sanftem Morgenlicht.",
    "aspect_ratio": "16:9",
    "output_format": "jpeg",
  },
  logs: true,
  onQueueUpdate: (update) => {
    if (update.status === "IN_PROGRESS") {
      console.log(update.logs)
    }
  },
});

console.log(result.data);
console.log(result.requestId);
```

#### Warteschlangenverwaltung

Verwalten Sie Ihre Anfragen mit diesen Methoden:

##### Eine Anfrage senden

Senden Sie eine Anfrage und rufen Sie die `request_id` zur späteren Verwendung ab.

**Beispiel:**

```javascript theme={null}
import { sunra } from "@sunra/client";

const { request_id } = await sunra.queue.submit("black-forest-labs/flux-kontext-max", {
  input: {
    prompt: "Eine gläserne Teekanne mit blühendem Blumentee darin, auf einem Holztisch bei einem sonnendurchfluteten Fenster mit sanftem Morgenlicht.",
    "aspect_ratio": "16:9",
    "output_format": "jpeg",
  },
});
```

##### Anfragestatus überprüfen

Rufen Sie den Status einer Anfrage ab.

**Beispiel:**

```javascript theme={null}
import { sunra } from "@sunra/client";

const status = await sunra.queue.status({
  requestId: "pd_eTYYuw4EqYLzRBHgnAMHA8zH",
  logs: true,
});
```

##### Anforderungsergebnisse abrufen

Rufen Sie das Ergebnis einer abgeschlossenen Anfrage ab.

**Beispiel:**

```javascript theme={null}
import { sunra } from "@sunra/client";

const result = await sunra.queue.result({
  requestId: "pd_eTYYuw4EqYLzRBHgnAMHA8zH",
});

console.log(result.data);
console.log(result.requestId);
```

#### Speicher

Die `storage`-API ermöglicht es Ihnen, Dateien hochzuladen und eine URL zu erhalten, die dann in Ihren Modellanfragen verwendet werden kann. Dies ist besonders nützlich für Modelle, die Dateieingaben erfordern, wie z. B. Bild-zu-Video oder Sprache-zu-Text.

<Note>Maximale Dateigröße: 100MB</Note>

##### Dateien im Browser hochladen

Sie können Benutzern erlauben, Dateien direkt aus ihrem Browser hochzuladen. Das folgende Beispiel zeigt, wie Sie ein `<input type="file">`-Element verwenden, um eine Datei auszuwählen und hochzuladen.

<CodeGroup>
  ```javascript upload.js theme={null}
  import { sunra } from "@sunra/client";

  const fileInput = document.getElementById('file-input');

  fileInput.addEventListener('change', async (event) => {
    const file = event.target.files[0];
    if (file) {
      try {
        const url = await sunra.storage.upload(file);
        console.log('Datei erfolgreich hochgeladen:', url);
        // Jetzt können Sie diese URL mit einem Modellendpunkt verwenden
      } catch (error) {
        console.error('Upload fehlgeschlagen:', error);
      }
    }
  });
  ```

  ```html index.html theme={null}
  <input type="file" id="file-input" />
  ```
</CodeGroup>

##### Dateien in Node.js hochladen

Auf der Serverseite mit Node.js können Sie Dateien aus dem lokalen Dateisystem lesen und hochladen.

```javascript theme={null}
import { sunra } from "@sunra/client";
import { readFile } from "node:fs/promises";
import { basename } from "node:path";

async function uploadLocalFile(filePath) {
  try {
    const buffer = await readFile(filePath);
    // Der Client benötigt ein File-Objekt, das wir aus einem Puffer erstellen können
    const file = new File([buffer], basename(filePath));

    const url = await sunra.storage.upload(file);
    console.log('Datei erfolgreich hochgeladen:', url);
    return url;
  } catch (error) {
    console.error('Upload fehlgeschlagen:', error);
  }
}

uploadLocalFile("./pfad/zu/ihrem/bild.png");
```

#### Automatische Uploads mit Modellendpunkten

Das JavaScript-SDK kann Datei-Uploads automatisch für Sie erledigen. Wenn Sie ein `File`-Objekt, `Blob` oder eine Base64-Daten-URI an die Eingabe eines Modellendpunkts übergeben, lädt das SDK diese zuerst in den Speicher hoch und verwendet dann die resultierende URL in der Anfrage.

Dies vereinfacht den Prozess, da Sie keinen separaten Upload-Schritt durchführen müssen.

```javascript theme={null}
import { sunra } from "@sunra/client";

// Ein File-Objekt aus einer Browser-Dateieingabe wird automatisch hochgeladen
const fileInput = document.getElementById('file-input');
const file = fileInput.files[0];

const result = await sunra.subscribe("ein-modell-das-bilder-annimmt", {
  input: {
    image: file, // SDK lädt diese Datei automatisch hoch
    prompt: "Eine Aufforderung, die beschreibt, was mit dem Bild zu tun ist"
  }
});

// Eine Base64-Daten-URI wird ebenfalls automatisch hochgeladen
const base64Image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...";

const result2 = await sunra.subscribe("ein-modell-das-bilder-annimmt", {
  input: {
    image: base64Image, // SDK konvertiert dies automatisch in ein Blob und lädt es hoch
    prompt: "Eine Aufforderung, die beschreibt, was mit dem Bild zu tun ist"
  }
});
```

### Unterstützung

Treten Sie unserer Community für Hilfe oder Diskussionen bei:

* **Discord-Community**: [Treten Sie uns bei](https://discord.gg/897qCzvCcU)
* **GitHub-Repository**: [Besuchen Sie hier](https://github.com/sunra-ai/sunra-clients)

Wir sind hier, um Ihnen zu helfen!
