---
title: "API-nøgler | Tajo"
description: "Komplet guide til API-nøgleautentificering med Brevo"
url: https://tajo.io/dk/docs/authentication/api-keys/
markdown: https://tajo.io/dk/docs/authentication/api-keys.md
lang: da-DK
author: "Set Noa"
author_url: https://tajo.io/dk/set-noa/
robots: noindex
---

Bed om tidlig adgang til Tajo

Indtast dit fornavn og din arbejds-e-mailadresse. Vi sender dig et link til at bekræfte din anmodning om adgang til Tajo.

# API-nøgler

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

API-nøgler er den primære måde at autentificere sig mod Brevo API’et på. De giver en enkel og sikker adgang til din konto programmatisk.

## Hvad er API-nøgler?

API-nøgler er unikke identifikatorer, der autentificerer din applikation, når den sender forespørgsler til Brevo API’et. Hver nøgle er en streng på 64 tegn, der fungerer både som identifikator og som adgangskode.

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

## Sådan genererer du API-nøgler

### Trin for trin

1. **Log ind på Brevo**: Åbn dit [Brevo-dashboard](https://app.brevo.com/)
2. **Gå til indstillinger**: Klik på din profil → Settings
3. **Åbn API-nøgler**: Vælg “API Keys” i menuen til venstre
4. **Opret ny nøgle**: Klik på “Generate a New API Key”
5. **Navngiv din nøgle**: Giv den et beskrivende navn (f.eks. “Production App”, “Development Testing”)
6. **Sæt rettigheder**: Vælg det rette adgangsniveau
7. **Generér**: Klik på “Generate”, og kopiér nøglen med det samme

### Navnekonventioner for API-nøgler

Brug beskrivende navne, der gør det let at genkende nøglens formål:

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

## Typer af API-nøgler og rettigheder

### Nøgler med fuld adgang

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

### Nøgler med læseadgang

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

### Nøgler kun til afsendelse

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

### Nøgler til kontaktstyring

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

## Sådan bruger du API-nøgler

### Autentificering via header

Send din API-nøgle med i `api-key`-headeren:

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

### Kodeeksempler

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

## Sikkerhed for API-nøgler

### Sikker opbevaring

**Miljøvariabler** (anbefalet)

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

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

**Cloud secret managers**

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

### Bedste praksis for sikkerhed

1. **Skriv aldrig nøgler direkte i koden**

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

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

2. **Brug forskellige nøgler til hvert miljø**

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

3. **Rotér nøgler regelmæssigt**

   - Sæt en påmindelse i kalenderen om rotation hvert kvartal
   - Brug automatiseringsværktøjer til nøglerotation
   - Hav en rollback-plan klar

4. **Hold øje med brugen af nøgler**

   - Opsæt alarmer for usædvanlig aktivitet
   - Gennemgå logs over nøglebrug hver måned
   - Følg med i geografiske adgangsmønstre

## Nøglestyring

### Overvågning af aktive nøgler

Hold øje med dine aktive nøgler i dashboardet:

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

### Sådan roterer du en nøgle

1. **Generér ny nøgle**: Opret en afløsernøgle
2. **Opdatér konfigurationen**: Deploy med den nye nøgle
3. **Overvåg**: Sikr dig, at den nye nøgle virker korrekt
4. **Overgangsperiode**: Hold den gamle nøgle aktiv i 24-48 timer
5. **Tilbagekald den gamle nøgle**: Slet den forrige nøgle

### Akut tilbagekaldelse af en nøgle

Hvis en nøgle bliver kompromitteret:

1. **Tilbagekald med det samme**: Slet nøglen i dashboardet
2. **Opret en erstatning**: Generér en ny nøgle med det samme
3. **Opdatér dine applikationer**: Deploy med den nye nøgle hurtigst muligt
4. **Overvåg aktiviteten**: Tjek for uautoriseret brug
5. **Hændelsesrapport**: Dokumentér sikkerhedshændelsen

## Rate limiting og API-nøgler

Brevo begrænser forespørgsler pr. endepunkt, ikke pr. dag. På det generelle niveau, som alle abonnementer får, tillader `POST /v3/smtp/email` 1.000 forespørgsler pr. sekund, `/v3/contacts`-endepunkterne tillader 10 pr. sekund og 36.000 pr. time, og endepunkter uden egen grænse tillader 100 pr. time. Professional- og Enterprise-abonnementer låser op for højere niveauer. Se [Hastighedsgrænser](https://tajo.io/dk/docs/rate-limits/) for den fulde tabel.

### Rate limit-headers

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

### Sådan håndterer du rate limits

```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;
  }
}
```

## Fejlfinding på API-nøgler

### Almindelige fejlbeskeder

**Ugyldig API-nøgle (401)**

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

**Utilstrækkelige rettigheder (403)**

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

**Rate limit overskredet (429)**

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

### Tjekliste til fejlfinding

- Nøglen har det rigtige format (64 tegn)
- Ingen ekstra mellemrum eller skjulte tegn
- Nøglen har de nødvendige rettigheder
- Nøglen er aktiv (ikke tilbagekaldt)
- Du er inden for dine rate limits
- Du bruger det rigtige API-endpoint
- Headers er formateret korrekt

## Næste skridt

- [Læs om OAuth 2.0](https://tajo.io/dk/docs/authentication/oauth/)
- Forstå JWT-tokens
- [Udforsk rate limits](https://tajo.io/dk/docs/rate-limits/)
- [Prøv SDK’erne](https://tajo.io/dk/docs/sdks-libraries/)
