---
title: "API-Schluessel | Tajo"
description: "Vollstaendiger Leitfaden zur API-Schluessel-Authentifizierung mit Brevo"
url: https://tajo.io/de/docs/authentication/api-keys/
markdown: https://tajo.io/de/docs/authentication/api-keys.md
lang: de-DE
author: "Set Noa"
author_url: https://tajo.io/de/set-noa/
robots: noindex
---

Beantrage frühzeitigen Zugang

Gib deinen Vornamen und deine geschäftliche E-Mail-Adresse ein. Wir senden dir einen Link, mit dem du deine Anfrage für den Tajo-Zugang bestätigst.

# API-Schluessel

[Set Noa](https://tajo.io/de/set-noa/)

API-Schluessel sind die primaere Methode zur Authentifizierung bei der Brevo API. Sie bieten eine einfache und sichere Moeglichkeit, programmgesteuert auf Ihr Konto zuzugreifen.

## Was sind API-Schluessel?

API-Schluessel sind eindeutige Kennungen, die Ihre Anwendung authentifizieren, wenn sie Anfragen an die Brevo API stellt. Jeder Schluessel ist eine 64 Zeichen lange Zeichenkette, die sowohl als Identifikator als auch als Passwort dient.

```
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4
```

## API-Schluessel generieren

### Schritt-fuer-Schritt-Anleitung

1. **Bei Brevo anmelden**: Greifen Sie auf Ihr [Brevo Dashboard](https://app.brevo.com/) zu
2. **Zu Einstellungen navigieren**: Klicken Sie auf Ihr Profil -> Einstellungen
3. **API-Schluessel oeffnen**: Waehlen Sie “API-Schluessel” aus dem linken Menue
4. **Neuen Schluessel erstellen**: Klicken Sie auf “Neuen API-Schluessel generieren”
5. **Schluessel benennen**: Geben Sie ihm einen aussagekraeftigen Namen (z.B. “Produktions-App”, “Entwicklungstest”)
6. **Berechtigungen festlegen**: Waehlen Sie die passende Zugriffsebene
7. **Generieren**: Klicken Sie auf “Generieren” und kopieren Sie den Schluessel sofort

### Namenskonventionen fuer API-Schluessel

Verwenden Sie aussagekraeftige Namen, die den Zweck des Schluessels erkennen lassen:

- `production-web-app`
- `staging-environment`
- `mobile-app-ios`
- `webhook-listener`
- `data-sync-service`

## API-Schluessel-Typen und Berechtigungen

### Vollzugriffs-Schluessel

```
Permissions: All API endpoints
Use cases: Complete application integration
Risk level: High - protect carefully
```

### Nur-Lese-Schluessel

```
Permissions: GET requests only
Use cases: Analytics, reporting, dashboards
Risk level: Low - limited access
```

### Nur-Sende-Schluessel

```
Permissions: Transactional email sending
Use cases: Application notifications, receipts
Risk level: Medium - can send emails
```

### Kontaktverwaltungs-Schluessel

```
Permissions: Contact CRUD operations
Use cases: CRM integrations, form submissions
Risk level: Medium - data modification
```

## API-Schluessel verwenden

### Header-Authentifizierung

Fuegen Sie Ihren API-Schluessel im `api-key`-Header ein:

```http
GET /v3/account HTTP/1.1
Host: api.brevo.com
Accept: application/json
Content-Type: application/json
api-key: YOUR_API_KEY
```

### Code-Beispiele

#### JavaScript/Node.js

```javascript
const brevo = require('@getbrevo/brevo');

const apiInstance = new brevo.AccountApi();
apiInstance.setApiKey(brevo.AccountApiApiKeys.apiKey, process.env.BREVO_API_KEY);

// Make authenticated request
apiInstance.getAccount()
  .then(data => console.log('Account info:', data))
  .catch(error => console.error('Error:', error));
```

#### Python

```python
import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException

# Configure API key
configuration = sib_api_v3_sdk.Configuration()
configuration.api_key['api-key'] = 'YOUR_API_KEY'

# Create API instance
api_instance = sib_api_v3_sdk.AccountApi(sib_api_v3_sdk.ApiClient(configuration))

try:
    # Get account info
    api_response = api_instance.get_account()
    print(api_response)
except ApiException as e:
    print("Exception when calling AccountApi->get_account: %s\n" % e)
```

#### PHP

```php
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key
$config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', 'YOUR_API_KEY');

// Create API instance
$apiInstance = new SendinBlue\Client\Api\AccountApi(
    new GuzzleHttp\Client(),
    $config
);

try {
    $result = $apiInstance->getAccount();
    print_r($result);
} catch (Exception $e) {
    echo 'Exception when calling AccountApi->getAccount: ', $e->getMessage(), PHP_EOL;
}
?>
```

#### Ruby

```ruby
require 'sib-api-v3-sdk'

# Configure API key
SibApiV3Sdk.configure do |config|
  config.api_key['api-key'] = 'YOUR_API_KEY'
end

# Create API instance
api_instance = SibApiV3Sdk::AccountApi.new

begin
  # Get account info
  result = api_instance.get_account
  puts result
rescue SibApiV3Sdk::ApiError => e
  puts "Exception when calling AccountApi->get_account: #{e}"
end
```

## API-Schluessel-Sicherheit

### Sichere Speicherung

**Umgebungsvariablen** (Empfohlen)

```bash
# .env file
BREVO_API_KEY=xkeysib-your-api-key-here

# Usage in code
const apiKey = process.env.BREVO_API_KEY;
```

**Cloud Secret Manager**

- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault

### Sicherheits-Best-Practices

1. **Schluessel niemals hartcodieren**

   ```javascript
   // ❌ Bad - hardcoded
   const apiKey = "xkeysib-a1b2c3d4...";

   // ✅ Good - environment variable
   const apiKey = process.env.BREVO_API_KEY;
   ```

2. **Unterschiedliche Schluessel pro Umgebung verwenden**

   ```
   Production:  BREVO_API_KEY_PROD
   Staging:     BREVO_API_KEY_STAGING
   Development: BREVO_API_KEY_DEV
   ```

3. **Schluessel regelmaessig rotieren**

   - Kalendererinnerungen fuer vierteljaehrliche Rotation setzen
   - Automatisierungstools fuer die Schluesselrotation verwenden
   - Einen Rollback-Plan bereithalten

4. **Schluesselnutzung ueberwachen**

   - Warnungen fuer ungewoehnliche Aktivitaeten einrichten
   - Schluesselnutzungsprotokolle monatlich ueberpruefen
   - Geografische Zugriffsmuster verfolgen

## Schluesselverwaltung

### Ueberwachung aktiver Schluessel

Ueberwachen Sie Ihre aktiven Schluessel im Dashboard:

```
Key Name: production-web-app
Created: 2024-01-15
Last Used: 2024-01-20 14:30 UTC
Requests Today: 1,247
Status: Active
```

### Schluesselrotationsprozess

1. **Neuen Schluessel generieren**: Ersatzschluessel erstellen
2. **Konfiguration aktualisieren**: Mit neuem Schluessel bereitstellen
3. **Ueberwachen**: Sicherstellen, dass der neue Schluessel korrekt funktioniert
4. **Uebergangszeit**: Alten Schluessel 24-48 Stunden aktiv lassen
5. **Alten Schluessel widerrufen**: Den vorherigen Schluessel loeschen

### Notfall-Schluesselwiderruf

Wenn ein Schluessel kompromittiert wurde:

1. **Sofortiger Widerruf**: Schluessel aus dem Dashboard loeschen
2. **Ersatz generieren**: Sofort neuen Schluessel erstellen
3. **Anwendungen aktualisieren**: Schnellstmoeglich mit neuem Schluessel bereitstellen
4. **Aktivitaet ueberwachen**: Auf unbefugte Nutzung pruefen
5. **Vorfallbericht**: Den Sicherheitsvorfall dokumentieren

## Ratenbegrenzungen und API-Schluessel

Brevo begrenzt Anfragen pro Endpunkt, nicht pro Tag. In der General-Stufe, die jeder Tarif erhaelt, erlaubt `POST /v3/smtp/email` 1.000 Anfragen pro Sekunde, die `/v3/contacts`-Endpunkte erlauben 10 pro Sekunde und 36.000 pro Stunde, und Endpunkte ohne eigenes Limit erlauben 100 pro Stunde. Professional- und Enterprise-Tarife schalten hoehere Stufen frei. Die vollstaendige Tabelle finden Sie unter [Ratenbegrenzungen](https://tajo.io/de/docs/rate-limits/).

### Rate-Limit-Header

```http
HTTP/1.1 200 OK
x-sib-ratelimit-limit: 1000
x-sib-ratelimit-remaining: 750
x-sib-ratelimit-reset: 1
```

### Ratenbegrenzungen behandeln

```javascript
async function makeApiCall() {
  try {
    const response = await fetch(url, { headers });

    if (response.status === 429) {
      // Seconds until the window resets
      const waitTime = Number(response.headers.get('x-sib-ratelimit-reset') || 1);

      console.log(`Rate limited. Waiting ${waitTime} seconds`);
      await new Promise(resolve => setTimeout(resolve, waitTime * 1000));

      // Retry the request
      return makeApiCall();
    }

    return response.json();
  } catch (error) {
    console.error('API call failed:', error);
    throw error;
  }
}
```

## Fehlerbehebung bei API-Schluesseln

### Haeufige Fehlermeldungen

**Ungueltiger API-Schluessel (401)**

```json
{
  "code": "unauthorized",
  "message": "Invalid API key provided"
}
```

**Unzureichende Berechtigungen (403)**

```json
{
  "code": "permission_denied",
  "message": "API key does not have required permissions"
}
```

**Ratenlimit ueberschritten (429)**

```json
{
  "code": "too_many_requests",
  "message": "Rate limit exceeded for API key"
}
```

### Checkliste zur Fehlersuche

- Schluessel ist korrekt formatiert (64 Zeichen)
- Keine zusaetzlichen Leerzeichen oder versteckten Zeichen
- Schluessel hat erforderliche Berechtigungen
- Schluessel ist aktiv (nicht widerrufen)
- Innerhalb der Ratenlimits
- Korrekter API-Endpunkt verwendet
- Header korrekt formatiert

## Naechste Schritte

- [Mehr ueber OAuth 2.0 erfahren](https://tajo.io/de/docs/authentication/oauth/)
- JWT Tokens verstehen
- [Ratenbegrenzungen erkunden](https://tajo.io/de/docs/rate-limits/)
- [SDKs ausprobieren](https://tajo.io/de/docs/sdks-libraries/)
