--- title: 通过 API 导入数据 description: 何时以及如何使用 Twenty 的 API 进行大规模数据导入。 --- ## 概览 Twenty 提供 **GraphQL** 和 **REST API**,用于以编程方式导入数据。 当 CSV 导入不适合您的数据量,或您需要自动化、定期的导入时,请使用 API。 ## 何时使用 API 导入 | 场景 | 推荐方法 | | ------------------- | --------------- | | 少于 10,000 条记录 | CSV 导入 | | 10,000 - 50,000 条记录 | CSV 导入(拆分为多个文件) | | **50,000+ 条记录** | **API 导入** | | 一次性迁移 | 两者皆可(取决于数据量) | | **定期导入** | **API 导入** | | **实时同步** | **API 导入** | | **与其他系统集成** | **API 导入** | 对于包含数十万条记录的数据集,API 比多次 CSV 导入显著更快且更可靠。 ## API 速率限制 Twenty 实施速率限制以确保系统稳定性: | 限制 | 值 | | -------------- | ------------- | | **每分钟请求数** | 100 | | **每次批量调用的记录数** | 60 | | **最大吞吐量** | ~6,000 条记录/分钟 | **围绕这些限制规划您的导入。** 在最大吞吐量下,导入 100,000 条记录预计约需 17 分钟。 为错误处理和重试预留缓冲时间。 ## 开始使用 ### 步骤 1:获取您的 API 密钥 1. 前往 **设置 → 开发者** 2. 点击 **+ 创建 API 密钥** 3. 为您的密钥指定一个描述性名称 4. 立即复制该 API 密钥(不会再次显示) 5. 将其安全存储 **请保密您的 API 密钥。** 任何获得您 API 密钥的人都可以访问并修改您的工作区数据。 切勿将其提交到代码仓库或公开分享。 ### 步骤 2:选择您的 API Twenty 支持两种 API 类型: | 接口 | 最适合 | 文档 | | ----------- | ----------------------- | -------------------------------- | | **GraphQL** | 灵活查询、获取关联数据、复杂操作 | [API 文档](/l/zh/developers/extend/api) | | **REST** | 简单的 CRUD 操作、熟悉的 REST 模式 | [API 文档](/l/zh/developers/extend/api) | 两种 API 都支持: * 创建、读取、更新和删除记录 * **批量操作** — 每次调用最多创建或更新 60 条记录 **对于导入,请使用批量操作**,以在速率限制内最大化吞吐量。 ### 步骤 3:规划您的导入顺序 与 CSV 导入一样,对于关联关系,**顺序很重要**: 1. **公司** 优先(无依赖) 2. **人员** 其次(可关联到公司) 3. **商机** 第三(可关联到公司和人员) 4. **任务/笔记**(可关联到以上任一项) 5. **自定义对象**(按照其依赖关系) ## 最佳实践 ### 批量处理请求 * 不要逐条发送记录 * 每次 API 调用最多分组处理 **60 条记录** * 这可在速率限制内最大化吞吐量 ### 处理速率限制 * 在请求之间实施延迟(持续导入时至少 600ms) * 达到限制时使用指数退避 * 监控 429(请求过多)响应 ### 先验证数据 * 在导入前清洗并验证数据 * 检查必填字段是否已填写 * 验证格式是否符合 Twenty 的要求 (参见 [字段映射](/l/zh/user-guide/data-migration/capabilities/field-mapping)) ### 记录一切 * 记录每一条导入的记录(包括 ID) * 记录错误及其完整上下文 * 这有助于调试问题并验证完成情况 ### 先进行测试 * 使用小批量进行测试(10-20 条记录) * 验证数据在 Twenty 中显示是否正确 * 然后执行完整导入 ### 使用合并插入避免重复 GraphQL API 支持**批量合并插入** — 若记录已存在则更新,不存在则创建。 这可以在重新运行导入时防止重复。 ## 查找对象和字段名称 查看可用的对象和字段: 1. 前往 **设置 → API 和 Webhooks** 2. 浏览 **Metadata API** 3. 查看所有标准和自定义对象及其字段 文档展示了所有标准和自定义对象、它们的字段以及预期的数据类型。 ## 专业服务 对于复杂的 API 迁移,我们的合作伙伴可以提供帮助: | 服务 | 包含内容 | | ---------- | ---------- | | **数据模型设计** | 设计最优的数据结构 | | **迁移脚本** | 编写并运行导入脚本 | | **数据转换** | 处理复杂的映射与清理 | | **验证与 QA** | 验证迁移是否完成 | **适用于:** * 迁移 100,000+ 条记录 * 复杂的数据转换 * 紧迫的时间安排 * 缺乏开发人员资源的团队 请通过 [contact@twenty.com](mailto:contact@twenty.com) 与我们联系,或查看我们的 [实施服务](/l/zh/user-guide/getting-started/capabilities/implementation-services)。 ## 常见问题 GraphQL 允许您在一次查询中准确请求所需数据,并且更适合复杂操作。 REST 使用标准的 HTTP 方法(GET、POST、PUT、DELETE),如果您使用过传统 API,可能会更熟悉。 是! 使用 update mutation(GraphQL)或带有记录 `id` 的 PUT/PATCH 请求(REST)。 首先使用唯一标识符(email、domain)查询现有记录。 存在则更新,不存在则创建。 可以,使用 delete mutation(GraphQL)或 DELETE 请求(REST)。 目前没有,但这两种 API 可与任何语言中的任意 HTTP 客户端配合使用。 ## API 文档 有关完整的实现细节、代码示例和架构参考: * [API 文档](/l/zh/developers/extend/api)