📖 API 概览
Kedb 智能CRM提供两类API接口:开放API(密钥认证)供第三方开发者调用,内部API(Session认证)供浏览器插件和前端使用。所有接口均采用 RESTful 风格,返回 JSON 格式数据。
💡 新用户建议:先阅读「认证方式」了解如何获取密钥,然后从「开放API」开始对接。平台级接口需管理员创建平台密钥,租户级接口需租户申请API密钥并经管理员审核。
🔐 认证方式说明
方式一:API密钥认证(推荐外部系统使用)
在请求头中携带 X-App-Key 和 X-App-Secret。适用于电子名片小程序、邀请函、自有系统、第三方对接等。
申请流程:登录后台 → 服务市场 → 开放API平台 → 提交申请 → 管理员审核通过 → 创建密钥 → 查看密钥
方式二:Session认证(浏览器插件/前端使用)
先调用 GET /api/auth/captcha 获取验证码,再调用 POST /api/auth/login 获取 Session,后续请求自动携带 Cookie。
密钥类型区分
• 租户密钥:只能访问本租户数据,需租户申请+管理员审核
• 平台密钥:可访问全站数据,仅平台管理员可创建
GET API信息 租户平台
获取API服务基本信息,无需认证,可用于连通性检测。
{
"code": 0,
"data": {
"name": "Kedb CRM OpenAPI",
"version": "v2.0",
"status": "running"
}
}
GET 客户列表 租户密钥
获取当前租户的客户列表,支持分页和关键词搜索。仅返回该租户有权限查看的数据。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
page | int | 否 | 页码,默认1 |
pageSize | int | 否 | 每页条数,默认20,最大100 |
keyword | string | 否 | 搜索公司名/法人/手机号 |
lead_stage | int | 否 | 1=公海 3=客户 |
cust_status | int | 否 | 1=线索 2=跟进中 3=成交 4=无效 |
X-App-Key: your_app_key X-App-Secret: your_app_secret
{
"code": 0,
"data": {
"list": [
{ "id": 1, "company_name": "XX科技有限公司", "legal_person": "张三", "phone": "138****1234", "cust_status": 2, "responsible_person": "李四", "create_time": "2026-09-01 10:00:00" }
],
"total": 100,
"page": 1,
"pageSize": 20
}
}
GET 公海列表 租户密钥
获取当前租户公海池中的客户列表。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
page | int | 否 | 页码,默认1 |
pageSize | int | 否 | 每页条数,默认20 |
pool_id | int | 否 | 指定公海池ID,不传查全部公海 |
GET 查重检测 租户密钥
检测公司或手机号是否已在库中,避免重复录入。这是最常用的接口之一。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
company_name | string | 否 | 公司全称(模糊匹配) |
phone | string | 否 | 手机号(精确匹配) |
legal_person | string | 否 | 法人姓名 |
⚠️ company_name 和 phone 至少填写一项。返回结果中 exists=true 表示已存在。
GET 查询日志 租户密钥
获取当前租户的查重查询日志记录。
GET 平台统计 平台密钥
获取全平台运营统计数据,包括租户总数、用户总数、客户总数、查询次数等。仅平台密钥可调用。
GET 公司列表 平台密钥
获取平台所有租户公司列表。仅平台密钥可调用。
GET API调用统计 平台密钥
获取各API密钥的调用次数统计。仅平台密钥可调用。
GET 获取验证码
获取图形验证码(SVG格式),验证码文本嵌入在SVG的 text 标签中。登录时需携带此验证码。
Content-Type: image/svg+xml
Set-Cookie: connect.sid=xxx
<!-- SVG中包含验证码字符,如 <text>A</text><text>B</text>... -->
POST 用户登录
使用用户名密码登录,获取 Session。需先调用验证码接口获取验证码。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
username | string | 是 | 用户名 |
password | string | 是 | 密码 |
captcha | string | 是 | 验证码(从SVG中提取) |
{
"code": 0,
"user": {
"id": 23,
"username": "江志高",
"display_name": "江志高",
"role": "user",
"company_id": 9,
"company_role": "owner",
"data_scope": "all"
}
}
POST 用户注册
新用户注册。可通过邀请码加入已有公司,或创建新公司成为租户管理员。同一公司名称注册数量受限。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
username | string | 是 | 用户名(唯一) |
password | string | 是 | 密码(至少6位) |
company_name | string | 是 | 公司名称 |
captcha | string | 是 | 验证码 |
invite_code | string | 否 | 邀请码(加入已有公司时填写) |
GET 当前用户信息
获取当前登录用户的详细信息,包括公司、角色、权限、套餐等。需Session认证。
POST 退出登录
销毁当前Session,退出登录。
POST 修改密码
修改当前用户密码。需Session认证。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
old_password | string | 是 | 原密码 |
new_password | string | 是 | 新密码 |
POST 客户列表
获取客户/公海列表,支持丰富的筛选条件。需Session认证。数据权限根据用户角色自动过滤(全公司/部门/本人)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
page | int | 否 | 页码,默认1 |
pageSize | int | 否 | 每页条数,默认20 |
keyword | string | 否 | 搜索关键词 |
leadStage | string | 否 | 1=公海 mine=我的客户 3=全部客户 |
custStatus | string | 否 | 客户状态:1线索 2跟进中 3成交 4无效 |
category | string | 否 | 客户分类 |
responsible | string | 否 | 负责人 |
province | string | 否 | 省份 |
city | string | 否 | 城市 |
poolId | int | 否 | 公海池ID |
scope | string | 否 | mine=仅我的 all=全部 |
POST 客户详情
根据公司名获取客户完整信息,包括基本信息、联系人列表、跟进记录。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
companyName | string | 是 | 公司全称 |
POST 新增客户
新增客户/联系人。系统会自动检测手机号是否已存在,根据公司名自动填充省份城市。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
companyName | string | 是 | 公司全称 |
name | string | 否 | 法人/联系人姓名 |
phone | string | 是 | 手机号 |
category | string | 否 | 客户分类(自定义) |
responsiblePerson | string | 否 | 负责人,默认当前用户 |
leadStage | int | 否 | 1=公海 3=客户,默认3 |
province | string | 否 | 省份(可自动识别) |
city | string | 否 | 城市(可自动识别) |
sourceType | int | 否 | 1=手动 2=名片 3=邀请 4=网站 |
POST 编辑客户
更新客户信息,包括分类、状态、负责人、联系方式等。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
companyName | string | 是 | 公司全称(定位客户) |
category | string | 否 | 客户分类 |
custStatus | int | 否 | 客户状态 |
responsiblePerson | string | 否 | 负责人 |
phone | string | 否 | 手机号 |
legalPerson | string | 否 | 法人 |
POST 删除客户
删除客户记录。需删除权限。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
companyName | string | 是 | 公司全称 |
POST 公海池子列表
获取当前租户的所有公海池子(含默认公海和自定义公海池)。
POST 认领客户
从公海认领客户到我的客户。认领后进入保护期,保护期内其他同事不能认领。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
companyName | string | 是 | 公司全称 |
POST 放回公海
将我的客户放回公海,其他同事可认领。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
companyName | string | 是 | 公司全称 |
poolId | int | 否 | 目标公海池ID,不传则放回默认公海 |
POST 新增联系人
为客户添加联系人。一个客户可对应多个联系人。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
companyName | string | 是 | 公司全称 |
name | string | 是 | 联系人姓名 |
phone | string | 是 | 手机号 |
position | string | 否 | 职位 |
email | string | 否 | 邮箱 |
POST 添加跟进记录
为客户添加跟进记录,可设置下次跟进时间。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
companyName | string | 是 | 公司全称 |
content | string | 是 | 跟进内容 |
followType | string | 否 | 跟进类型:电话/微信/邮件/拜访 |
nextTime | string | 否 | 下次跟进时间(YYYY-MM-DD HH:mm:ss) |
POST 合同列表
获取合同列表,支持按状态、客户筛选。
POST 创建合同
创建新合同,关联客户和产品。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
customerName | string | 是 | 客户公司名 |
contractName | string | 是 | 合同名称 |
amount | decimal | 是 | 合同金额 |
signDate | string | 否 | 签订日期 |
endDate | string | 否 | 到期日期 |
POST 仪表盘统计
获取仪表盘统计数据,包括客户总数、各状态数量、分类分布、近7天新增趋势等。数据权限自动过滤。
POST 工作台数据
获取工作台完整数据,包括客户统计、待办任务、销售排行、商机分布、跟进趋势、合同回款等。
POST 报表概览
获取报表中心概览数据,包括客户总数、本月新增、跟进客户、成交客户、合同金额、回款金额等。
POST 统一查询 Session
按公司名、法人、股东、手机号查询库中是否存在。至少填写一项查询条件。浏览器插件主要使用此接口。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
company_name | string | 否 | 公司全称 |
legal_person | string | 否 | 法人姓名 |
shareholders | array | 否 | 股东姓名数组 |
phone | string | 否 | 手机号 |
POST 批量查询
批量查询公司或法人是否在库中,适用于列表页批量比对场景。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
companies | array | 否 | 公司名称数组 |
legalPersons | array | 否 | 法人姓名数组 |
POST 登记客户
将新客户/联系人登记到系统。如果公司+手机号已存在,返回 409 错误。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
company_name | string | 是 | 公司全称 |
phone | string | 是 | 手机号 |
name | string | 否 | 联系人姓名 |
legal_person | string | 否 | 法人姓名 |
customer_category | string | 否 | 客户分类 |
lead_stage | int | 否 | 1=公海 3=客户,默认3 |
POST 标无效
将指定公司+手机号标记为无效号码(废号共享)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
company_name | string | 是 | 公司全称 |
phone | string | 是 | 手机号 |
name | string | 否 | 联系人姓名(日志用) |
POST 标有效
将指定公司+手机号恢复为有效号码。
POST 插件状态
查询当前用户的插件开关状态。关闭后插件不会在企业查询网站自动弹出。
POST 插件开关
设置当前用户的插件开关。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
enabled | int | 是 | 1=开启 0=关闭 |
GET 公告列表
获取平台公告列表,用于首页和登录页展示。
POST 提交工单
提交工单反馈问题,仅租户管理员可提交。管理员后台可查看和回复。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
title | string | 是 | 工单标题 |
content | string | 是 | 问题描述 |
type | string | 否 | 类型:bug/需求/咨询/其他 |
GET 套餐状态
获取当前用户/公司的套餐状态,包括套餐类型、到期时间、用户上限、已用用户数等。
POST 企业认证申请
提交企业认证申请,需上传营业执照和授权书。认证后公司名称被保护,其他人不能注册同名公司。
⚠️ 错误码说明
| code | HTTP状态 | 说明 | 处理建议 |
|---|---|---|---|
| 0 | 200 | 成功 | - |
| 400 | 400 | 参数错误 | 检查必填参数是否齐全、格式是否正确 |
| 401 | 401 | 未登录/未认证 | 先调用登录接口,或检查API密钥是否正确 |
| 403 | 403 | 无权限 | 检查用户角色、租户功能开关、API密钥类型 |
| 404 | 404 | 数据不存在 | 公司名不在库中,或资源已被删除 |
| 409 | 409 | 数据冲突 | 公司+手机号已存在,无需重复登记 |
| 429 | 429 | 请求过于频繁 | 降低调用频率,或联系管理员提升配额 |
| 500 | 500 | 服务器错误 | 联系管理员查看日志,稍后重试 |
💡 统一响应格式:所有接口返回 {"code": 0, "data": {...}, "msg": "..."}。code=0 表示成功,非0表示失败,msg 中包含错误说明。