メインコンテンツへスキップ

概要

Twenty は、プログラムによるデータインポートのために GraphQLREST 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 ドキュメント
RESTシンプルな CRUD 操作、馴染みのある REST パターンAPI ドキュメント
両方の API でサポートされる内容:
  • レコードの作成、読み取り、更新、削除
  • バッチ操作 — 1 回の呼び出しで最大 60 レコードを作成または更新
インポートではバッチ操作を使用し、レート制限内でスループットを最大化してください。

ステップ 3: インポート順序を計画する

CSV インポートと同様に、リレーションでは順序が重要です:
  1. 会社を最初に(依存関係なし)
  2. 2 番目に 連絡先(会社にリンク可能)
  3. 3 番目に 商談(会社および連絡先にリンク可能)
  4. タスク/メモ(上記のいずれにもリンク可能)
  5. カスタムオブジェクト(依存関係に従って)

ベストプラクティス

リクエストをバッチ化する

  • レコードを 1 件ずつ送信しない
  • 1 回の API 呼び出しにつき最大 60 レコードにまとめる
  • これにより、レート制限内でスループットを最大化できます

レート制限への対応

  • リクエスト間に遅延を入れる(継続的なインポートでは最小 600ms)
  • 制限に達したら指数バックオフを使用する
  • 429(Too Many Requests)応答を監視する

まずデータを検証する

  • インポート前にデータをクリーンアップし、検証する
  • 必須フィールドが入力されていることを確認する
  • 形式が Twenty の要件に合致していることを確認する(フィールドマッピング を参照)

すべてをログに記録する

  • インポートしたすべてのレコード(ID を含む)を記録する
  • エラーをコンテキスト情報とともに記録する
  • これにより、問題のデバッグと完了確認が容易になります

まずテストする

  • 少量のバッチ(10〜20 レコード)でテストする
  • Twenty にデータが正しく表示されることを確認する
  • その後、フルインポートを実行する

重複を避けるためにアップサートを使用する

GraphQL API は バッチ アップサートをサポートしています — レコードが存在する場合は更新、存在しない場合は作成します。 これにより、インポートを再実行しても重複を防止できます。

オブジェクト名とフィールド名の確認方法

利用可能なオブジェクトとフィールドを確認するには:
  1. 設定 → API と Webhook に移動
  2. Metadata API を参照
  3. すべての標準およびカスタムオブジェクトとそのフィールドを表示
ドキュメントには、すべての標準およびカスタムオブジェクト、そのフィールド、および期待されるデータ型が示されています。

プロフェッショナルサービス

複雑な API 移行については、パートナーがお手伝いします:
サービス提供内容
データモデル設計最適なデータ構造を設計
移行スクリプトインポート用スクリプトの作成と実行
データ変換複雑なマッピングとクリーンアップに対応
検証と QA移行が完了していることを検証
最適な用途:
  • 10 万件以上のレコードの移行
  • 複雑なデータ変換
  • 厳しいスケジュール
  • 開発リソースのないチーム
contact@twenty.com までお問い合わせいただくか、導入支援サービスをご覧ください。

FAQ

GraphQL は、1 回のクエリで必要なデータだけを正確に要求でき、複雑な操作に適しています。 REST は標準的な HTTP メソッド(GET、POST、PUT、DELETE)を使用しており、従来の API を扱ったことがある場合は馴染みやすいでしょう。
はい! 更新用ミューテーション(GraphQL)またはレコードの id を用いた PUT/PATCH リクエスト(REST)を使用してください。
一意の識別子(メール、ドメイン)を使用して、まず既存のレコードをクエリします。 存在すれば更新、なければ作成します。
はい、削除用ミューテーション(GraphQL)または DELETE リクエスト(REST)を使用します。
現時点ではありませんが、どちらの API もあらゆる言語の任意の HTTP クライアントで利用できます。

API ドキュメント

実装の詳細、コード例、スキーマリファレンスについては次を参照してください: