身份验证与权限范围
每次调 用 Kaleidr 平台 API 都必须携带一种凭据。凭据分为三种,API 对它们的处理方式各不相同:
- 可公开密钥用于在浏览器中标识您的组织。它不能直接调用 API,必须先交换为会话。
- 会话令牌是浏览器实际调用 API 时使用的凭据。它有效期较短,并绑定到一个网站来源和一种产品。
- 服务器密钥是由您的后端在每次请求中直接发送的机密凭据。
本文介绍每种凭据的发送方式、会话交换过程、各个权限范围开放的功能、vendor 权限范围的授予方法,以及每种身份验证错误的原因和解决办法。如果您想了解凭据泄露后可能带来的影响,请参阅安全模型。
凭据类型
| 凭据 | 前缀 | 存放位置 | 使用方式 | 套餐 |
|---|---|---|---|---|
| 可公开密钥 | kld_pk_live_… | 页面源代码 | 向会话交换接口发送一次;其他所有端点均拒绝该密钥 | Free、Pro、Enterprise |
| 会话令牌 | kld_sess_live_… | 浏览器内存 | 从颁发令牌的页面发起每次运行时调用时发送 | 由可公开密钥或已发布地图生成 |
| 服务器密钥 | kld_sk_live_… | 仅存放在您的后端 | 每次运行时调用均发送;如果请求携带 Origin 标头,则会被拒绝 | Pro、Enterprise |
| 旧版密钥 | kld_live_… | 您的后端 | 与服务 器密钥一样,可直接作为凭据使用。轮换后会生成服务器密钥 | 仅限现有密钥 |
使用密钥管理 API 并设置 environment: "test" 创建的密钥,会以 test 代替 live(kld_pk_test_…、kld_sk_test_…)。测试密钥无法加载底图瓦片。
密钥仅在创建或轮换时完整显示一次。Kaleidr 只存储哈希值,因此无法恢复丢失的密钥;请轮换密钥。
发送凭据
可以通过任意一个标头发送凭据。所有端点均接受这两种标头。
Authorization: Bearer kld_sk_live_…
X-Api-Key: kld_sk_live_…
如果请求同时携带两者,且 Authorization 的值以 Kaleidr 前缀开头,则优先使用它;否则读取 X-Api-Key。切勿把服务器密钥放入 URL。
各类凭据在运行时端点(会话交换端点除外)上的行为如下:
| 凭据 | 运行时端点的处理结果 |
|---|---|
| 可公开密钥 | 401 publishable_requires_session。必须先交换为会话。 |
没有 Origin 标头的服务器密钥 | 接受密钥,然后检查 IP 允许列表、权限范围、允许的产品、配额和速率限制。 |
带有 Origin 标头的服务器密钥 | 403 server_key_in_browser。浏览器在跨站请求时会添加 Origin,API 因而能够识别网页中使用的服务器密钥。 |
| 来自令牌颁发来源的会话令牌 | 接受。 |
带有不同 Origin 的会话令牌 | 403 session_origin_mismatch。 |
不带 Origin 的已发布地图会话令牌 | 403 session_origin_mismatch。 |
JavaScript SDK 会更早实施同一规则:Kaleidr.mount 在浏览器中发现 kld_sk_… 密钥时,不会发起请求,而是直接拒绝。
会话交换
可公开密钥需要通过一个端点换取会话令牌。SDK 在每次使用密钥挂载组件时自动完成交换,并负责刷新令牌。只有在自行构建浏览器客户端时,您才需要直接调用此端点。
POST https://api.kaleidr.com/inference-api/b2b/v1/sdk/sessions
X-Api-Key: kld_pk_live_…
Content-Type: application/json
{ "product": "chat" }
必须提供 product,其值只能是 chat、editor、viewer 或 tile。请求必须带有 Origin 标头;浏览器会自动添加。
{
"session_token": "kld_sess_live_eyJhbGciOi…",
"expires_in": 900,
"product": "chat",
"basemap_style_id": null
}
| 字段 | 含义 |
|---|---|
session_token | 运行时调用使用的凭据,格式为 kld_sess_{env}_{token}。 |
expires_in | 有效期,单位为秒。通过密钥生成的会话有效期为 900 秒。请读取该字段,不要在代码中写死数值。 |
product | 会话绑定的产品。 |
basemap_style_id | 组织的默认底图;未设置时为 null。 |
会话的绑定条件
- 一个来源。 即交换请求的
Origin。来自其他来源的调用会被拒绝。 - 一种产品。
tile会话不能调用聊天端点。 - 受限的权限范围集合。 会话仅包含产品所需的权限范围:聊天使用
ai,编辑器使用design,瓦片使用maps,查看器不需要权限范围。只有当密钥具有vendor且套餐允许(Enterprise)时,聊天会话才会保留vendor。任何其他产品的会话都不会包含这一权限范围。
刷新
客户端无法要求更长的有效期。应在 expires_in 到期前重新交换。SDK 会在到期前 90 秒刷新;当后台标签页重新变为可见,且会话距离到期不足 90 秒或已经到期时,也会刷新;刷新失败后则每隔 30 秒重试。如果首次交换失败,组件挂载就会失败,且不会自动重试。
每次为 product: "tile" 交换会话,都会消耗组织额度中的一次地图加载;其他产品交换会话不收费。会话交换具有单独的每密钥速率限制,与运行时调用分开计算。请参阅配额与速率限制。
检查顺序
会话交换在遇到第一项失败的检查时立即停止:
| 顺序 | 检查项目 | 失败结果 |
|---|---|---|
| 1 | 密钥有效 | 401 Invalid or missing API key |
| 2 | 密钥的会话交换速率限制 | 429 rate_limited |
| 3 | 密钥是可公开密钥 | 403 publishable_key_required |
| 4 | 请求包含 Origin 标头 | 403 origin_required |
| 5 | 如果密钥设置了允许来源列表,请求来源必须在其中 | 403 origin_not_allowed |
| 6 | 密钥的产品限制没有排除该产品 | 403 product_not_allowed |
| 7 | 当前套餐包含该产品 | 403 tier_capability_not_allowed |
| 8 | 密钥具有产品所需的权限范围 | 403 insufficient_scope;如果密钥具备该权限范围,但当前套餐不再支持,则为 tier_capability_not_allowed |
| 9 | 对于 tile:仍有可用地图加载次数 | 429 map_load_quota_exceeded |
在终端中测试
curl -s https://api.kaleidr.com/inference-api/b2b/v1/sdk/sessions \
-H "X-Api-Key: kld_pk_live_…" \
-H "Origin: https://www.example.com" \
-H "Content-Type: application/json" \
-d '{"product":"chat"}'
这种测试之所以有效,是因为 Origin 是普通 HTTP 标头,任何非浏览器客户端都可以自行设置。因此,允许来源列表属于浏览器控制机制,并非保密手段。请参阅 CORS 与允许的来源。
已发布地图的会话
如果从 Studio 发布的地图在其 Kaleidr AI 磁贴中开启了 Control Tower 或 Popup Window,访客无需在网页中使用密钥即可聊天。网页改为使用地图的公开 ID 以及要开启的功能交换会话:
POST https://api.kaleidr.com/inference-api/b2b/v1/sdk/share-sessions
Content-Type: application/json
{ "share_id": "your-map-id", "feature": "control_tower" }
{ "session_token": "kld_sess_live_eyJhbGciOi…", "expires_in": 300, "product": "chat" }
这种会话仅适用于聊天,包含 ai 权限范围,有效期为 300 秒,费用计入地图所有者的组织。它永远不包含 vendor。会话只能在发起交换的网页使用;如果调用缺少 Origin 或来源不同,将被拒绝。拒绝原因如下:
| 状态码 | 错误代码 | 原因 |
|---|---|---|
| 403 | origin_required | 请求缺少 Origin 标头。 |
| 404 | not_found | 不存在使用此 ID 的已发布地图或分享链接,或分享链接的地图已取消发布。 |
| 403 | chat_disabled | 地图的 Kaleidr AI 未开启所请求的功能。 |
| 403 | origin_not_allowed | 网页不在地图允许的域名列表中。 |
| 403 | owner_has_no_organization | 地图所有者没有可计费的组织。 |
| 403 | tier_capability_not_allowed | 地图所有者的套餐不包含聊天功能。 |
| 429 | rate_limited | 此地图或此地址发起的会话交换过多。 |
配置方法请参阅已发布地图上的 Kaleidr AI。
权限范围
每个密钥都有权限范围。每个端点系列都需要对应的权限范围。
| 权限范围 | 开放的功能 | 适用对象 |
|---|---|---|
ai | /chat/* 和 /retrieval/* 端点 | Chat,以及调用聊天或查询端点的任何后端 |
design | /design/* 端点 | Editor 会话,以及调用设计端点的任何后端 |
maps | 底图会话 | Tile |
vendor | 本身不开放端点,但允许聊天回答使用组织自行发布的数据。 | 已上传数据时的 Chat |
除非另有指定,新密钥默认具有 ai、maps 和 design。在 Free 套餐下,密钥始终具有 Free 的全部能力:恰好这三个权限范围以及全部四种产品(chat、editor、viewer、tile),无论请求指定哪一种产品。vendor 从不默认授予,只有 Enterprise 组织可以创建包含它的密钥。
如果创建密钥时指定的权限范围或产品超出套餐支持范围,请求会收到 403 tier_capability_not_allowed。系统不会不报错就悄悄移除请求中的内容。典型情况是在 Free 或 Pro 中请求 vendor。
权限范围在创建密钥时就已固定。 此后任何端点或设置都无法更改。轮换密钥会继承原有权限范围,但会去除当前套餐已不支持的部分。若需更改权限范围,请创建新密钥并撤销旧密钥。
Free 套餐的密钥轮换遵循 Free 规则。 在 Free 下,轮换后生成的可公开密钥具有 Free 的全部能力(ai、maps、design 及全部四种产品),不受旧密钥权限范围影响。Free 不允许轮换服务器密钥或旧版密钥:请求会被拒绝,并返回 403 free_plan_publishable_only。
密钥实际权限取决于密钥与套餐两者中更严格的一方
每个请求都会对照您组织当前套餐的功能范围,检查密钥中保存的权限范围和产品设置。更改套餐不会直接修改密钥,但会改变密钥能够执行的操作:
insufficient_scope:密钥从未获得相应权限范围。解决方法:换用具有该权限范围的密钥。tier_capability_not_allowed:密钥具备相应权限范围,但当前套餐不支持。解决方法:更改套餐。
vendor 是第二种情况的例外,因为它不开放任何端点。当低于 Enterprise 的套餐中仍保存着具有 vendor 的密钥时,系统不会拒绝请求:请求可以成功,但生成的回答不会使用您组织的数据。
如果密钥的产品列表为空,则可访问当前套餐包含的所有产品。没有任何权限范围的密钥在所有端点都会被拒绝。
产品限制适用于所有密钥
allowed_products 可以将密钥限制为 chat、editor、viewer 和 tile 中的部分产品。所有密钥类型都会在使用时执行这一限制:
| 密钥 | 检查限制的时机 | 拒绝结果 |
|---|---|---|
| 可公开密钥 | 会话交换时,检查请求的 product | 403 product_not_allowed |
| 服务器密钥或旧版密钥 | 每次运行时请求,检查端点所属产品 | 403 product_not_allowed |
每个端点系列都归属于其所需权限范围对应的产品:
| 端点 | 权限范围 | 受限密钥必须允许的产品 |
|---|---|---|
/chat/*、/retrieval/* | ai | chat |
/design/* | design | editor |
因此,即便服务器密钥具有 ai 权限范围,如果创建时指定了 "allowed_products": ["tile"],调用 /chat/control/stream 仍会被拒绝并返回 403 product_not_allowed。如果服务器密钥仅允许 viewer,则无法调用任何运行时端点,因为已发布地图不需要密钥。如果希望密钥可以访问其权限范围允许的所有端点,请将该列表留空。
此处不会再次检查会话令牌,因为交换时它已经绑定到单一产品。
| Free | Pro | Enterprise | |
|---|---|---|---|
| 可公开密钥 | 是 | 是 | 是 |
| 服务器密钥 | 否 | 是 | 是 |
ai、maps、design | 是 | 是 | 是 |
vendor | 否 | 否 | 是 |
与 Free 相比,Pro 增加了服务器密钥功能,并提高了活跃密钥数量上限。完整套餐对照表请参阅获取 API 密钥。
vendor 权限范围
vendor 本身不开放任何端点。它决定使用此密钥生成的聊天回答能否在 Kaleidr 通用知识之外,使用您组织自己发布的数据。从上传到生成回答的完整流程,请参阅您的数据:概览。
哪些组织可以使用:
- Free 和 Pro 不能持有
vendor。无论是否提交vendor_acknowledged,申请创建包含该权限范围的密钥都会收到 403tier_capability_not_allowed,并且不会创建密钥。 - Enterprise 可以创建具有
vendor的密钥。
此权限范围负责通过密钥读取数据。上传数据属于另一项单独权限,授予组织所有者或管理员,而不是任何密钥;该权限同样仅向 Enterprise 开放,Free 和 Pro 无法上传业务数据。已登录用户在 Kaleidr Studio 中添加到地图的文件属于另一项功能,所有套餐均可使用,且无法通过任何权限范围读取:请参阅地图上的数据集。
API Keys 页面无法授予 vendor。请通过密钥管理 API 创建包含该权限范围的密钥:
curl -s https://api.kaleidr.com/shared-api/api-keys \
-H "Authorization: Bearer $KALEIDR_ACCOUNT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "store-locator-chat",
"key_type": "publishable",
"scopes": ["ai", "vendor"],
"vendor_acknowledged": true,
"allowed_origins": ["https://www.example.com"]
}'
如果可公开密钥包含 vendor,就必须提供 vendor_acknowledged: true。否则请求会返回 422 vendor_scope_requires_acknowledgement。这是因为可公开密钥存在于公开的页面源代码中;任何访问该网页的人都能读取此密钥可访问的数据。服务器密钥无需提供此确认。
在为可公开密钥添加 vendor 之前:
- 每个网站使用一把独立密钥。只有确实需要使用您数据生成回答的网站,才应授予
vendor。 - 将已发布数据视为该网站上的公开信息。不要发布成本价格、尚未公布的费率或任何不愿展示在网页上的内容。
- 请注意,已经发放的会话不会自动获得该权限范围。创建带有
vendor的密钥后,只有之后交换生成的会话才会获得它。
要撤回 vendor,请撤销原密钥并创建不带该权限范围的替代密钥。撤销会从下一次请求起生效,包括已经发放的会话。
当组织不再使用 Enterprise 套餐时
从 Enterprise 降级为 Pro 或 Free,不会修改已有密钥,也不会使其全部失效:
| 项目 | 降级后的情况 |
|---|---|
具有 vendor 的密钥 | 其他功能仍可正常使用,但聊天回答不再使用您的数据。不会通过错误、状态或字段提示这一变化。 |
| 降级前发放的浏览器会话 | 会话被终止。下一次请求返回 401,SDK 随后获取不带 vendor 的新会话。 |
轮换包含 vendor 的密钥 | 在 Pro 中:返回 201 表示成功。替代密钥继承相同权限范围,但不包含 vendor;产品列表保持不变。在 Free 中:可公开密钥的替代密钥包含 ai、maps、design 和全部四种产品,不受旧密钥设置影响;服务器密钥和旧版密钥的轮换会被拒绝,返回 403 free_plan_publishable_only。 |
创建包含 vendor 的密钥 | 返回 403 tier_capability_not_allowed,请求被拒绝。 |
| 您的发布版本 | 在任何套餐下,所有者和管理员仍可通过上传 API 列出、取消发布和删除版本。Free 和 Pro 的上传及发布请求会被拒绝,返回 403 vendor_data_not_on_plan。 |
如果组织重新升级至 Enterprise,仍然保存有 vendor 的密钥可以再次访问数据。若密钥是在低级套餐下轮换生成的,则不会自动恢复这一权限范围;请创建新密钥。
限制密钥
| 限制 | 适用密钥 | 可在 API Keys 页面设置 | 可通过密钥管理 API 设置 | 拒绝结果 |
|---|---|---|---|---|
| 允许的来源 | 可公开密钥 | 是 | 是(allowed_origins) | 交换时返回 403 origin_not_allowed |
| 允许的产品 | 所有密钥 | 否 | 是(allowed_products) | 可公开密钥在交换时返回 403 product_not_allowed;服务器或旧版密钥在每次运行时请求中返回该错误。请参阅产品限制。 |
| IP 允许列表 | 服务器密钥和旧版密钥 | 否 | 是(allowed_ips) | 403 ip_not_allowed |
| 每月上限 | 所有密钥 | 否 | 是(monthly_cap_tokens) | 429 quota_exceeded |
| 到期时间 | 所有密钥 | 否 | 是(expires_at) | 指定日期之后返回 401 |
| 权限范围 | 所有密钥 | 否 | 仅在创建时设置(scopes) | 403 insufficient_scope |
允许的来源。 最多 100 项,每项格式为 scheme://host[:port],不包含路径。可公开密钥的列表为空表示允许任何来源。详情及失败条件请参阅 CORS 与允许的来源。
IP 允许列表。 最多可以添加 100 个 IP 地址或 CIDR 网段。涵盖所有地址的网段(/0)会被拒绝;如果要允许任意地址,请将列表留空。如果密钥配置了允许列表,但无法确定调用者的地址,请求也会被拒绝。
每月上限。 限制一把密钥在一个计费周期内能够消耗的组织 AI 积分数量。详情请参阅配额与速率限制。
已发放的会话如何受到变更影响
每次请求都会重新检查会话关联的原始密钥,因此撤销权限能够迅速生效。但增加权限需要重新交换会话。
| 密钥或账户变更 | 对已发放会话的影响 |
|---|---|
| 密钥被撤销,或轮换时没有宽限期 | 下一次请求返回 401。 |
| 会话来源被移出密钥的允许来源列表 | 下一次请求返回 401。 |
| 会话对应产品被移出密钥的允许产品列表 | 下一次请求返回 401。 |
| 套餐降级 | 降级前发放的会话返回 401。降级后交换的会话访问套餐已不再支持的功能时,返回 403 tier_capability_not_allowed。 |
| 新增或降低每月上限 | 下一次请求起生效。 |
| 移除每月上限 | 下一次交换会话后生效。 |
| 套餐升级 | 下一次交换会话后生效。 |
由于会话仅持续几分钟,因此等待“下一次交换”通常不会太久。SDK 会在刷新时自动应用变化,无需修改代码。
密钥管理 API
您可以在 kaleidr.com/api-keys 的 API Keys 页面设置密钥名称、类型及允许的来源。本文介绍的其他设置均通过该页面使用的同一套 API 完成。
- 基础 URL:
https://api.kaleidr.com/shared-api/api-keys - 身份验证: 通过
Authorization: Bearer发送已登录 Kaleidr 账户的访问令牌,且该账户必须是组织的所有者或管理员。此处不接受平台密钥。目前没有专门用于密钥管理的长期有效凭据。 - 组织: 不指定组织时,默认使用您的主要组织。若要指定其他组织,创建密钥时请在 JSON 请求体中传入
org_id;其他所有路由则通过查询参数?org_id=传入。创建路由中的org_id查询参数会被忽略。
| 方法和路径 | 用途 | 成功响应 |
|---|---|---|
POST / | 创建密钥 | 201,密钥对象及 plaintext_key |
GET / | 列出活跃密钥,按新到旧排序 | 200 |
GET /{id}/events?limit=1..200 | 查看密钥审计事件 | 200 |
PATCH /{id} | 修改限制条件 | 200,密钥对象 |
POST /{id}/rotate | 替换密钥 | 201,新密钥及 plaintext_key |
POST /{id}/revoke | 撤销密钥 | 200,密钥对象 |
没有删除密钥的路由;如需停用,请撤销密钥。
创建密钥时支持以下字段:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name | 字符串,1 至 200 个字符 | 必填 | |
org_id | UUID | 您的主要组织 | 要创建密钥的组织。必须放在请求体中;此路由忽略查询参数。 |
key_type | "publishable" 或 "server" | "publishable" | Free 套餐不支持 "server",会返回 403 free_plan_publishable_only。 |
environment | "live" 或 "test" | "live" | |
scopes | 字符串数组 | ["ai", "maps", "design"] | 可用值为 ai、maps、design、vendor。其他值会返回 422 unknown_scope。套餐不支持的权限范围(例如 Enterprise 以下的 vendor)会返回 403 tier_capability_not_allowed。 |
allowed_origins | 字符串数组,最多 100 项 | [] | 对可公开密钥,空列表表示允许任何来源。 |
allowed_products | 字符串数组 | [] | 可选 chat、editor、viewer、tile。空列表表示全部。其他值返回 422 unknown_product。该设置适用于可公开密钥、服务器密钥和旧版密钥;请参阅产品限制。 |
allowed_ips | 字符串数组,最多 100 项 | [] | IP 地址或 CIDR 网段。 |
monthly_cap_tokens | 整数,0 或更大 | 无 | 1 或更大的值会限制密钥;0 或 null 表示无上限。 |
expires_at | 未来的日期和时间 | 无 | |
vendor_acknowledged | 布尔值 | false | 可公开密钥包含 vendor 时必填(Enterprise)。 |
PATCH 支持 name、allowed_origins、allowed_products、allowed_ips、monthly_cap_tokens 和 expires_at。仅发送希望更改的字段;明确指定 null 可以清除该值。不支持 scopes。
rotate 接受 { "grace_hours": 0 },值范围为 0 至 8760。替代密钥继承旧密钥的权限范围,但会移除当前套餐不再允许的权限。Free 套餐中,替代密钥总是包含 Free 的全部能力,并且无法轮换服务器密钥或旧版密钥(403 free_plan_publishable_only)。当值为 0 时,旧密钥及其会话立即失效。设置宽限期后,旧密钥可继续使用至宽限期结束,期间仍计入套餐的活跃密钥上限,且不可再次轮换。API Keys 页面默认使用 24 小时宽限期。
上述路由的错误请参阅错误:密钥管理。
身份验证错误
401 表示 API 完全不接受此凭据。403 表示 API 识别了您的身份,但拒绝执行请求。这些错误均采用 {"detail": "<code>"} 格式。
在浏览器中,如果请求因凭据或来源而被拒绝,响应将不包含 CORS 标头,因此页面看到的是 CORS 错误,而不是响应体。若请求是在后续权限范围或套餐检查阶段被拒绝,页面可以读取响应,SDK 会报告 kaleidr session exchange failed (403)。两种情况下,都应在浏览器开发者工具的 Network 选项卡中打开对应请求,查看错误代码。请参阅 CORS 与允许的来源。
| 状态码 | 错误代码 | 原因 | 解决方法 |
|---|---|---|---|
| 401 | Invalid or missing API key | 缺少凭据;密钥不存在、被撤销或过期;会话过期;关联密钥被撤销、失去该来源或产品的权限,或在套餐降级前颁发的会话;组织被暂停或没有套餐。 | 在 API Keys 页面检查密钥的值和状态。对于会话,请重新交换。 |
| 401 | publishable_requires_session | 可公开密钥被发送至运行时端点。 | 先交换为会话,或从后端使用服务器密钥调用。 |
| 403 | publishable_key_required | 用服务器密钥或旧版密钥调用会话交换。 | 交换时使用 kld_pk_… 密钥。 |
| 403 | origin_required | 会话交换请求没有 Origin 标头。 | 从浏览器网页发起请求。 |
| 403 | origin_not_allowed | 网页来源不在密钥的允许来源列表或已发布地图的允许域名列表中。 | 将准确的来源加入密钥,或将域名加入地图。 |
| 403 | product_not_allowed | 密钥允许的产品不包括本次产品:交换时指定的 product,或服务器/旧版密钥所调用端点归属的产品。 | 修改 allowed_products 或使用其他密钥。 |
| 403 | insufficient_scope | 密钥创建时未获得端点或产品需要的权限范围。 | 使用具备该权限范围的密钥。权限范围无法修改。 |
| 403 | tier_capability_not_allowed | 密钥有该权限范围或产品,但当前套餐不支持。 | 在 kaleidr.com/billing 更改套餐。 |
| 403 | server_key_in_browser | 服务器密钥随 Origin 标头一起发送。 | 将请求移至后端。如果密钥曾出现在网页源代码中,请轮换密钥。 |
| 403 | session_origin_mismatch | 会话令牌从不同于颁发来源的地址使用,或已发布地图会话在缺少 Origin 时使用。 | 在实际使用令牌的网页中重新交换会话。 |
| 403 | ip_not_allowed | 带有 IP 允许列表的服务器密钥或旧版密钥被未获准的地址使用。 | 从允许的地址发起调用,或更改 allowed_ips。 |
| 403 | chat_disabled | 已发布地图交换:地图的 Kaleidr AI 未开启所请求的功能。 | 在 Studio 中地图的 Kaleidr AI 磁贴里开启 Control Tower 或 Popup Window。 |
| 403 | owner_has_no_organization | 已发布地图交换:地图所有者没有组织。 | 所有者必须创建组织或加入组织。 |
| 404 | not_found | 已发布地图交换:找不到使用该 ID 的已发布地图或分享链接。 | 检查 ID,并确认地图已发布。 |
包括 429 和 5xx 响应在内的完整目录,请参阅错误。
相关文档
- 安全模型:凭据泄露后可能造成的影响。
- CORS 与允许的来源:如何实施允许来源列表。
- 端点:每个权限范围可调用的功能。
- 获取 API 密钥:如何在 API Keys 页面创建密钥。