---
title: "API キー | Tajo"
description: "Brevo における API キー認証の完全ガイド"
url: https://tajo.io/jp/docs/authentication/api-keys/
markdown: https://tajo.io/jp/docs/authentication/api-keys.md
lang: ja-JP
author: "Set Noa"
author_url: https://tajo.io/jp/set-noa/
robots: noindex
---

先行利用を申し込む

お名前と会社のメールアドレスを入力してください。Tajoへのアクセス申請を確認するためのリンクをメールでお送りします。

# API キー

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

API キーは、Brevo API で認証するための主要な方法です。アカウントにプログラムからアクセスするための、シンプルで安全な手段を提供します。

## API キーとは

API キーは、Brevo API へリクエストを送るときにアプリケーションを認証する一意の識別子です。各キーは 64 文字の文字列で、識別子とパスワードの両方の役割を果たします。

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

## API キーを生成する

### 手順ガイド

1. **Brevo にログインする**: [Brevo ダッシュボード](https://app.brevo.com/)を開きます
2. **設定へ移動する**: プロフィール → 設定 の順にクリックします
3. **API キーを開く**: 左メニューから「API Keys」を選択します
4. **新しいキーを作成する**: 「Generate a New API Key」をクリックします
5. **キーに名前を付ける**: 用途が分かる名前を付けます（例:「Production App」「Development Testing」）
6. **権限を設定する**: 適切なアクセスレベルを選びます
7. **生成する**: 「Generate」をクリックし、表示されたキーをすぐにコピーします

### API キーの命名規則

キーの用途が分かる名前を使ってください。

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

## API キーの種類と権限

### フルアクセスキー

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

### 読み取り専用キー

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

### 送信専用キー

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

### コンタクト管理キー

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

## API キーを使う

### ヘッダーによる認証

`api-key` ヘッダーに API キーを含めます。

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

### コード例

#### 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 キーのセキュリティ

### 安全な保管

**環境変数**（推奨）

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

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

**クラウドのシークレット管理サービス**

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

### セキュリティのベストプラクティス

1. **キーをハードコードしない**

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

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

2. **環境ごとに別のキーを使う**

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

3. **キーを定期的にローテーションする**

   - 四半期ごとのローテーションをカレンダーでリマインドします
   - キーのローテーションには自動化ツールを使います
   - ロールバックの手順を用意しておきます

4. **キーの利用状況を監視する**

   - 異常なアクティビティを検知するアラートを設定します
   - キーの利用ログを毎月確認します
   - アクセス元の地域の傾向を追跡します

## キーの管理

### 有効なキーの監視

ダッシュボードで有効なキーを監視します。

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

### キーのローテーション手順

1. **新しいキーを生成する**: 置き換え用のキーを作成します
2. **設定を更新する**: 新しいキーでデプロイします
3. **監視する**: 新しいキーが正しく動作することを確認します
4. **猶予期間を設ける**: 古いキーを 24〜48 時間は有効なままにします
5. **古いキーを失効させる**: 以前のキーを削除します

### 緊急時のキー失効

キーが漏えいした場合の対応は次のとおりです。

1. **直ちに失効させる**: ダッシュボードからキーを削除します
2. **代替キーを生成する**: すぐに新しいキーを作成します
3. **アプリケーションを更新する**: 新しいキーで可能な限り早くデプロイします
4. **アクティビティを監視する**: 不正な利用がないか確認します
5. **インシデントを報告する**: セキュリティインシデントとして記録します

## レート制限と API キー

Brevo は、1 日単位ではなくエンドポイントごとにリクエストを制限しています。すべてのプランで利用できる General ティアでは、`POST /v3/smtp/email` は 1 秒あたり 1,000 リクエスト、`/v3/contacts` エンドポイントは 1 秒あたり 10 リクエストかつ 1 時間あたり 36,000 リクエスト、個別の上限がないエンドポイントは 1 時間あたり 100 リクエストまで許可されます。Professional と Enterprise のプランでは、より高いティアが利用できます。全体の表は[レート制限](https://tajo.io/jp/docs/rate-limits/)を参照してください。

### レート制限のヘッダー

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

### レート制限への対処

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

## API キーのトラブルシューティング

### よくあるエラーメッセージ

**無効な API キー (401)**

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

**権限不足 (403)**

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

**レート制限の超過 (429)**

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

### デバッグ用チェックリスト

- キーの形式が正しい（64 文字）
- 余分なスペースや不可視文字が入っていない
- キーに必要な権限がある
- キーが有効である（失効していない）
- レート制限の範囲内である
- 正しい API エンドポイントを使っている
- ヘッダーの形式が正しい

## 次のステップ

- [OAuth 2.0 について学ぶ](https://tajo.io/jp/docs/authentication/oauth/)
- JWT トークンを理解する
- [レート制限を調べる](https://tajo.io/jp/docs/rate-limits/)
- [SDK を試す](https://tajo.io/jp/docs/sdks-libraries/)
