---
title: API でデータをインポートする
description: 大規模なデータインポートに Twenty の API をいつ・どのように使用するか。
---
## 概要
Twenty は、プログラムによるデータインポートのために **GraphQL** と **REST API** の両方を提供しています。 CSV インポートがデータ量の観点で現実的でない場合、または自動化された定期的なインポートが必要な場合は、API を使用してください。
## API インポートを使うべきタイミング
| シナリオ | 推奨アプローチ |
| ------------- | ----------------- |
| 1 万件未満 | CSVインポート |
| 1 万〜5 万件 | CSVインポート(ファイルに分割) |
| **5 万件以上** | **API インポート** |
| 一度きりの移行 | どちらでも可(データ量に応じて) |
| **定期的なインポート** | **API インポート** |
| **リアルタイム同期** | **API インポート** |
| **他システムとの統合** | **API インポート** |
数十万件規模のデータセットでは、複数回の CSV インポートよりも API の方が大幅に高速で信頼性があります。
## API レートリミット
Twenty では、システムの安定性を確保するためにレート制限を設けています:
| 制限 | 値 |
| -------------------- | ------------- |
| **1 分あたりのリクエスト数** | 100 |
| **バッチ呼び出しあたりのレコード数** | 60 |
| **最大スループット** | ~6,000 レコード/分 |
**これらの制限を前提にインポート計画を立ててください。**
最大スループットで 100,000 レコードの場合、インポート時間は約 17 分になります。 エラー処理や再試行のための余裕時間を確保してください。
## 始めに
### ステップ 1: API キーを取得する
1. **設定 → 開発者** に移動
2. **+ API キーを作成** をクリック
3. キーにわかりやすい名前を付ける
4. API キーをすぐにコピーします(再表示されません)
5. 安全に保管する
**API キーは秘密にしてください。**
API キーを知っている人は誰でも、あなたのワークスペースのデータにアクセス・変更できます。 コードリポジトリにコミットしたり、公開で共有したりしないでください。
### ステップ 2: API を選択する
Twenty は 2 種類の API をサポートしています:
| API | 最適な用途 | ドキュメント |
| ----------- | ------------------------------ | -------------------------------------------------- |
| **GraphQL** | 柔軟なクエリ、関連データの取得、複雑な操作に最適 | [API ドキュメント](/l/ja/developers/api) |
| **REST** | シンプルな CRUD 操作、馴染みのある REST パターン | [API ドキュメント](/l/ja/developers/api) |
両方の API でサポートされる内容:
* レコードの作成、読み取り、更新、削除
* **バッチ操作** — 1 回の呼び出しで最大 60 レコードを作成または更新
**インポートではバッチ操作を使用**し、レート制限内でスループットを最大化してください。
### ステップ 3: インポート順序を計画する
CSV インポートと同様に、リレーションでは**順序が重要**です:
1. **会社**を最初に(依存関係なし)
2. 2 番目に **連絡先**(会社にリンク可能)
3. 3 番目に **商談**(会社および連絡先にリンク可能)
4. **タスク/メモ**(上記のいずれにもリンク可能)
5. **カスタムオブジェクト**(依存関係に従って)
## ベストプラクティス
### リクエストをバッチ化する
* レコードを 1 件ずつ送信しない
* 1 回の API 呼び出しにつき**最大 60 レコード**にまとめる
* これにより、レート制限内でスループットを最大化できます
### レート制限への対応
* リクエスト間に遅延を入れる(継続的なインポートでは最小 600ms)
* 制限に達したら指数バックオフを使用する
* 429(Too Many Requests)応答を監視する
### まずデータを検証する
* インポート前にデータをクリーンアップし、検証する
* 必須フィールドが入力されていることを確認する
* 形式が Twenty の要件に合致していることを確認する([フィールドマッピング](/l/ja/user-guide/data-migration/capabilities/field-mapping) を参照)
### すべてをログに記録する
* インポートしたすべてのレコード(ID を含む)を記録する
* エラーをコンテキスト情報とともに記録する
* これにより、問題のデバッグと完了確認が容易になります
### まずテストする
* 少量のバッチ(10〜20 レコード)でテストする
* Twenty にデータが正しく表示されることを確認する
* その後、フルインポートを実行する
### 重複を避けるためにアップサートを使用する
GraphQL API は **バッチ アップサート**をサポートしています — レコードが存在する場合は更新、存在しない場合は作成します。 これにより、インポートを再実行しても重複を防止できます。
## オブジェクト名とフィールド名の確認方法
利用可能なオブジェクトとフィールドを確認するには:
1. **設定 → API と Webhook** に移動
2. **Metadata API** を参照
3. すべての標準およびカスタムオブジェクトとそのフィールドを表示
ドキュメントには、すべての標準およびカスタムオブジェクト、そのフィールド、および期待されるデータ型が示されています。
## プロフェッショナルサービス
複雑な API 移行については、パートナーがお手伝いします:
| サービス | 提供内容 |
| ------------ | ------------------- |
| **データモデル設計** | 最適なデータ構造を設計 |
| **移行スクリプト** | インポート用スクリプトの作成と実行 |
| **データ変換** | 複雑なマッピングとクリーンアップに対応 |
| **検証と QA** | 移行が完了していることを検証 |
**最適な用途:**
* 10 万件以上のレコードの移行
* 複雑なデータ変換
* 厳しいスケジュール
* 開発リソースのないチーム
[contact@twenty.com](mailto:contact@twenty.com) までお問い合わせいただくか、[導入支援サービス](/l/ja/user-guide/getting-started/capabilities/implementation-services)をご覧ください。
## FAQ
GraphQL は、1 回のクエリで必要なデータだけを正確に要求でき、複雑な操作に適しています。 REST は標準的な HTTP メソッド(GET、POST、PUT、DELETE)を使用しており、従来の API を扱ったことがある場合は馴染みやすいでしょう。
はい! 更新用ミューテーション(GraphQL)またはレコードの `id` を用いた PUT/PATCH リクエスト(REST)を使用してください。
一意の識別子(メール、ドメイン)を使用して、まず既存のレコードをクエリします。 存在すれば更新、なければ作成します。
はい、削除用ミューテーション(GraphQL)または DELETE リクエスト(REST)を使用します。
現時点ではありませんが、どちらの API もあらゆる言語の任意の HTTP クライアントで利用できます。
## API ドキュメント
実装の詳細、コード例、スキーマリファレンスについては次を参照してください:
* [API ドキュメント](/l/ja/developers/api)