开发者设置用于将 Exayard 与您自己的代码以及其他公司构建的应用对接。依次打开设置和开发者即可进入。只有公司管理员能在“设置”菜单中看到此项。成员打开此页面时只能查看,无法进行任何更改。
所有套餐(包括免费版)都提供应用、API 密钥、Webhook 和日志功能。只有 AI 任务会计费。
应用
应用是您的一个集成,例如“Acme 估算器”或“夜间同步”。每个 API 密钥都隶属于一个应用。应用是页面上的第一个部分。每位成员都可以查看。只有管理员可以创建或更改应用。
点击新建应用,填写其名称、描述、主页、支持邮箱和权限范围。权限范围按资源分为读和写两类,例如 read:projects 和 write:estimates。应用不能申请 admin:org 权限范围。每家公司最多可以拥有 25 个应用。
每个应用都会显示其创建时间和速率限制,例如“每家公司每分钟最多 60 次请求,总计最多 600 次”。应用的更多操作菜单包含:
编辑用于更改应用的详细信息和权限范围。
Webhook 用于设置唯一的接收地址,接收所有安装了该应用的公司发出的事件。
删除应用会移除该应用并撤销其所有密钥。所有安装了该应用的公司都会失去访问权限。
API 密钥
API 密钥可让您自己的代码调用 Exayard API。密钥位于应用内的密钥下。密钥在其所属应用的公司中有效,因此无需传递公司 ID。
要创建密钥,请在应用中点击新建密钥。为密钥填写名称,例如“生产环境”。在权限范围下,选择全部可授予该应用拥有的所有权限范围,选择指定可挑选其中一部分。如果密钥只用于短期任务,可以设置可选的到期时间。密钥在该日期当天结束前一直有效。点击创建。
Exayard 只会显示一次完整密钥。请在此时复制,因为之后将不会再次显示。Exayard 只保存经过加密处理的副本,因此丢失的密钥无法找回。请创建一个新密钥并撤销旧密钥。
密钥以 exa_live_ 开头。在沙盒中创建的密钥以 exa_test_ 开头。创建后,密钥会显示其名称、类似 exa_live_...AbCd 的预览,以及上次使用或从未使用。设置了到期日期的密钥会显示到期时间及其日期,已过期的密钥会显示已过期。
一个应用最多可以拥有 25 个有效密钥。已过期的密钥在您撤销之前仍会计入数量。要无缝切换密钥,请先创建第二个密钥,将您的服务器切换到新密钥,然后撤销第一个密钥。
打开密钥的密钥操作菜单,可以对其进行重命名或撤销。撤销操作不可恢复,密钥会在 30 秒内停止工作。
如果密钥出现在公开位置(例如公开的代码仓库),Exayard 会将其撤销,向您的管理员发送邮件,并将其保留在列表中,标记为公开泄露,已撤销。
当有其他公司安装了您的应用时,新建密钥对话框中还会显示适用范围。默认选项为仅限此公司。选择所有已安装该应用的公司会创建一个供您的服务器在每家安装公司中使用的密钥。此后每次调用都需要在 Exayard-Organization-Id 请求头中标明对应的公司。
同样的密钥也用于连接无代码工具。请参阅将 Exayard 连接到 Zapier、将 Exayard 连接到 Make 和将 Exayard 连接到 n8n。关于 AI 助手,请参阅将 Exa 连接到你的 AI 助手。
旧版密钥
在密钥归属于应用之前创建的密钥以 ak_ 开头。它们仍可继续使用,但无法再创建新的旧版密钥。只要还存在此类密钥,它们就会显示在页面底部的旧版密钥下。
每位管理员都能在此看到公司的所有密钥,无论由谁创建。由他人创建的密钥会显示创建者及其姓名。每个人还能看到自己的个人密钥。点击垃圾桶图标可撤销密钥。密钥会立即停止工作。
沙盒
沙盒是与您的公司关联的测试公司。您可以用它构建和测试集成,而不会影响您的真实项目。只有管理员能看到沙盒。
点击新建沙盒,为其填写名称,然后点击创建。每家公司最多可以拥有 5 个沙盒。点击打开即可切换到该沙盒,公司切换器会将其标记为沙盒。在沙盒中按常规方式创建应用和密钥。其密钥以 exa_test_ 开头。要正式上线,请在您的真实公司中创建相同的应用和密钥,然后在代码中替换密钥。
沙盒沿用您公司的套餐,其用量由您的公司付费。沙盒没有独立的计费,也没有自己的每月 AI 用量。Webhook 和集成的工作方式与在您的真实公司中相同。
沙盒不会向沙盒外的人员发送投标分享邮件或签署副本,也不会发送短信。这些内容会显示为“未发送,因为此公司是沙盒”。加入沙盒的邀请会照常发送。
沙盒中的工程量计算和文件读取会返回从我们的示例项目复制的结果,不收取任何费用。该工程量计算、其页面以及工程量计算完成时发送的 Webhook 都会标记为示例。估价单、投标报价、构件搜索和聊天同样以示例作答,不收取任何费用。
要删除沙盒,请点击其所在行的删除,然后点击删除沙盒。该沙盒会被关闭,其密钥会停止工作,其数据随后会被清除。
Webhook
Webhook 会在您的公司中发生特定事件时让 Exayard 通知您的服务器。每位成员都可以查看列表。只有管理员可以添加或更改 Webhook。
点击创建 Webhook,输入接收推送的 URL,并可选填描述。选择要发送的事件。选择全部可接收所有事件(包括今后新增的事件),选择指定可从列表中挑选。所有事件及其内容都列在 Webhook 事件目录中。
创建 Webhook 时,Exayard 会显示一次其签名密钥。请在此时复制,因为之后将不会再次显示。
打开 Webhook 的更多操作菜单可使用其余功能:
编辑用于更改 URL、描述和事件,并将其状态设置为已启用或已暂停。已暂停的 Webhook 不会接收任何推送。该对话框中还有轮换密钥。旧密钥会立即失效,因此请先更新您的服务器。
发送测试事件会发送一个您所选事件类型的事件。对话框会等待您服务器的响应,并显示结果和响应代码。测试事件带有
"test": true。推送记录列出最近 25 次推送,包括其事件、状态、响应代码和尝试次数。推送状态分为待处理、重试中、已送达或失败。管理员可以点击重新推送再次发送某次推送。
删除 Webhook 会停止向该 URL 进行的所有推送。
测试事件和重新推送只发送一次,从不重试。
保障 Webhook 推送安全
每次推送都带有 Exayard-Signature 请求头,格式为 t=<unix>,v1=<digest>。Exayard 将时间戳与请求正文拼接,然后使用您的 Webhook 密钥通过 HMAC-SHA256 进行签名,从而生成该签名。
每次推送还带有 Exayard-Event-Id、Exayard-Event-Type 和 Exayard-Organization-Id 请求头。JSON 正文中包含 organizationId 字段,用于标明事件来自哪家公司。请求头携带相同的 ID,因此您可以在读取正文之前就对推送进行路由。签名覆盖整个正文,包括 organizationId。
由于每次推送都会标明所属公司,同一个接收地址可以服务多家公司。在每家公司中注册相同的 URL,并按 organizationId 对每次推送进行路由。每个 Webhook 都有各自的密钥,因此请在验证之前先根据 Exayard-Organization-Id 选择对应的密钥。
要验证一次推送,请使用您的密钥重新计算签名,确认时间戳与当前时间相差不超过五分钟,然后比较两个摘要。
推送失败时,系统会在大约 80 小时内总共最多尝试 10 次,每次尝试之间的间隔逐渐延长。每次尝试都会发送相同的正文和相同的事件 ID。重定向也会被视为失败。
允许其他公司安装您的应用
您的应用一经创建即可在您自己的公司中使用。每个应用还有一个允许其他公司安装此应用部分。该部分显示应用的状态(已审核、已申请审核或未审核)、其登录地址、客户端 ID,以及可以安装它的公司数量。
管理员可以打开安装操作菜单使用以下功能:
编辑登录地址用于设置当您的应用让用户使用其 Exayard 账户登录后,Exayard 将用户返回到的地址。每行输入一个地址,最多 10 个。每个地址必须以
https://开头,测试期间也可以使用http://localhost。首次保存登录地址时,Exayard 会显示一次应用的客户端密钥。复制安装链接会复制一个可以发送给任何公司的链接。该链接会为该公司的管理员打开安装对话框。
申请审核会将应用提交给 Exayard 支持团队审核。
除您自己的公司外,新应用最多可以安装到 25 家公司,并且不会出现在查找应用中。客户账户下的公司不计入该限制。获得批准后,应用会显示已审核,安装数量限制也随之取消。使用在“查找应用”中显示可将其列入每家公司的应用目录,使用从“查找应用”中隐藏可将其撤下。已停用的应用在支持团队解除停用之前无法调用 Exayard,但其安装记录会被保留。
当您从应用中移除权限范围时,所有安装都会立即失去这些权限。当您添加权限范围时,每家公司都会保留其当前的访问权限,直到该公司的管理员批准新的权限范围。
应用 Webhook
打开应用的更多操作菜单并点击 Webhook。输入 URL 并点击创建,然后复制签名密钥,Exayard 只会显示一次。每家安装了该应用的公司都会发送其授予的权限范围所涵盖的事件。当有公司安装应用、批准更多访问权限或移除应用时,您的应用还会收到 app.installed、app.scopes_approved 和 app.uninstalled。这些推送会标明所属公司,并采用与其他 Webhook 相同的方式签名。
在同一对话框中,您还可以暂停和恢复推送、轮换密钥以及删除 Webhook。
已连接的应用
已连接的应用列出您公司中已安装的应用。每位成员都可以查看。只有管理员可以安装、移除或批准应用。
每一行显示应用的名称、是否已审核、构建该应用的公司、安装人和安装时间,以及授予它的权限范围。
安装应用
打开应用的安装链接,或在查找应用中点击其旁边的安装。对话框会显示应用的构建者、是否已审核以及它申请的权限范围。然后进行选择:
公司:您担任管理员的任意公司。已经安装该应用的公司会标有**(已安装)**。再次安装会保存您的新选择。
项目:选择所有项目,或选择仅限以下项目并勾选应用可以访问的项目,最多 500 个。应用无法访问公司中的其他任何项目。
每月 AI 上限:每个结算月中,该应用的 AI 任务最多可为您的公司产生的费用,以您的结算货币计。留空即为无上限。
点击安装。如果该应用需要您登录,Exayard 随后会引导您完成应用的登录。如果您是成员而非管理员,对话框会告诉您哪家公司的管理员可以安装它。点击复制链接即可发送给对方。
如需稍后更改项目,请再次打开安装链接,并按新的选择重新安装。
批准更多访问权限
当应用申请更多权限范围时,其所在行会显示请求更多访问权限以及新的权限范围。管理员点击批准即可授予。在此之前,应用将保留其原有的访问权限。
移除应用
打开应用的更多操作菜单,点击移除并确认。该应用会立即失去对您公司的访问权限,其 Webhook 也会停止。它已经开始的 AI 任务仍会完成。
查找应用
查找应用位于已连接的应用中。它列出构建者选择公开列出的已审核应用。您的公司已安装的应用会显示已安装。在其他任意应用上点击安装即可打开安装对话框。
您的个人连接
您的个人连接列出您连接到自己 Exayard 账户的 AI 工具和其他应用,例如 ChatGPT 或 Claude。它显示在已连接的应用顶部,并且只有您本人能看到自己的连接。个人连接以您的身份执行操作,因此可以访问您能访问的所有内容。
每个连接都会显示首次和最近一次使用的时间,以及使用过它的公司。要停用某个连接,请打开其更多操作菜单,点击移除并确认。它的下一次调用将被拒绝。该连接会以已移除状态保留在列表中,点击重新允许即可恢复其访问。要连接新工具,请参阅将 Exa 连接到你的 AI 助手。
客户账户
您的应用可以通过 API 为仅通过您的产品使用 Exayard 的客户创建 Exayard 公司。这些公司归您的公司所有,在其中进行的 AI 任务由您的公司付费。这些公司没有自己的成员,您的应用会自动安装到这些公司中。
客户账户向管理员列出这些公司,并显示每家公司的名称和创建时间。点击放弃并确认即可关闭该公司。其中的所有应用都会失去访问权限。
开始使用
快速入门卡片提供了一段现成的提示词,适用于 Claude 或 Cursor 等 AI 编辑器。点击复制提示词,然后将其粘贴到您的编辑器中。该提示词包含 API 基础 URL、身份验证格式、权限范围以及 Webhook 签名方案,AI 可以据此搭建可用的集成,并向您询问所需的详细信息。只有管理员能看到此卡片,因为它需要 API 密钥。
文档卡片通过打开文档链接到完整的开发者文档,还链接到描述每个路由和数据结构的 OpenAPI 规范。管理员还会看到连接到 Claude 或 Cursor,点击后会打开将 AI 助手连接到 Exayard 的设置。
日志
日志按时间从新到旧显示对 API 发起的请求。每一行显示方法、路径、状态、时间和延迟。点击底部的加载更多可查看更早的请求。
管理员可以看到所有请求。成员只能看到未通过应用发起的请求。
管理员可以按应用筛选,然后再按该应用的某个密钥筛选。任何人都可以输入最终用户,只查看该客户的请求。最终用户是您为自己的某位客户设定的 ID。您的代码会在每次请求的 Exayard-End-User 请求头中发送该 ID。切勿使用电子邮件地址作为 ID。
选择某一行可查看其完整详情,包括请求 ID、应用和最终用户,以及请求正文和响应正文。您可以通过日志确认调用是否成功,或排查集成出现故障的原因。
按密钥和最终用户统计支出
管理员可以在设置中用量下的按应用统计支出里查看每个应用本月的支出。您自己的应用也会列在其中。在每个应用下,按密钥显示每个密钥的支出,主要最终用户显示支出最多的五位最终用户。未关联到该应用任何密钥的支出会显示为其他。
每月 AI 上限
应用的每月 AI 上限是指每个结算月中,该应用的 AI 任务最多可为您的公司产生的费用。要进行设置,请在按应用统计支出下打开该应用的更多操作菜单,然后点击设置每月 AI 上限。以您的结算货币输入金额,然后点击保存。保存空白字段即可取消上限。
当应用达到上限后,在当前结算月的剩余时间内,其 AI 任务都会被拒绝,即使您的公司仍有剩余的 AI 用量。您公司自身的上限仍然适用。由用户自己发起的 AI 任务从不计入应用的上限。
