CoreDash Agency API:跨账户管理项目并提取数据

从一个账户管理多个项目。一次性生成主密钥,通过 REST 创建和删除项目,并使用单一密钥提取所有项目中的 Core Web Vitals 数据。

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-05-29

Trusted by market leaders · Client results

nestlesaturnsnvcomparehappyhorizonaleteiaadevintavpnebaykpnwhowhatwearworkivanina careerasmusmcharvardfotocasamarktplaatsmy work featured on web.devmonarchperiondpg medialoopearplugs

使用单一密钥管理您账户下的所有项目

Agency API 专为管理多个项目的账户设计。代理机构、运营十几个品牌的内部团队、以及任何不想在每次新客户加入时都登录仪表板的人。一次性生成主密钥,然后即可通过该单一凭据创建项目、更新项目、删除项目,并读取所有这些项目中的 Core Web Vitals 数据。

在寻找按项目划分的 API 吗?CoreDash API 页面涵盖了使用项目作用域密钥的单个项目。相同的数据工具,更窄的作用域,更简单的设置。

Agency API 执行两项操作:

  1. 项目 CRUD:位于 /api/agency/projects 的小型 REST 接口,用于创建、列出、更新和删除项目。
  2. 跨项目数据读取:与单项目 API 相同的 JSON-RPC 工具(位于 /api/mcp 的 get_metrics、get_timeseries、get_histogram)。使用主密钥时,您可以通过在参数中传递 project_id 来选择所需项目。

两种类型的 API 密钥

CoreDash 提供两个层级的密钥。每个层级各有其职。

密钥前缀作用域功能
项目密钥cdk_单个项目通过 JSON-RPC 端点读取该项目的 RUM 数据。请参见 /api。
主密钥cdk_master_账户上的所有项目通过 REST 创建、列出、更新和删除项目。此外,还可通过在数据工具中传递 project_id 来读取账户上任何项目的数据。

主密钥仅适用于带有代理机构标记的账户。如果您没有看到下面描述的 Agency API 选项卡,请联系支持团队。

获取主密钥

主密钥是通过 web UI 生成的,而不是从 API 生成的。

  1. 在 app.coredash.app 登录。
  2. 打开 My Account 并点击 Agency API 选项卡。
  3. 点击 Generate master key,为其命名并复制其值。它仅显示一次。

密钥以 cdk_master_ 开头。它们允许持有者管理属于您用户账户的每个项目,并读取其中任何一个项目的数据。请像对待密码一样妥善保管它们。您可以从同一个选项卡中撤销任何主密钥。

身份验证

每个 Agency API 请求都需要在 Authorization 请求头中包含主密钥:

Authorization: Bearer cdk_master_YOUR_MASTER_KEY

相同的请求头适用于 REST 项目 CRUD 端点和 JSON-RPC 数据端点。其余一切保持不变。

项目 CRUD:REST 接口

用于项目管理的基础 URL:

https://app.coredash.app/api/agency/projects

这些是纯粹的 REST 调用。并非 JSON-RPC。

POST /api/agency/projects:创建项目

创建由主密钥所属用户拥有的新项目。默认情况下,项目以 10 天试用期启动。通过传递 agencyplan 可以让其在付费计划中启动,计费周期为 33 天。

字段类型是否必需描述
namestring是仪表板中显示的项目名称。
urlstring否项目追踪的网站 URL。
agencyplanstring否计划 id(例如 starter)。设置此项后,项目将以匹配的付费计划启动,而非试用计划。
curl -X POST https://app.coredash.app/api/agency/projects \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer cdk_master_YOUR_MASTER_KEY" \
  -d '{
    "name": "Acme client",
    "url": "https://acme.example",
    "agencyplan": "starter"
  }'

请求成功时的响应为 201:

{
  "status": 201,
  "project": {
    "_id": "655f1f77bcf86cd799439011",
    "name": "Acme client",
    "url": "https://acme.example",
    "status": "paid",
    "users": ["644..."],
    "expires": "2026-06-28T12:00:00.000Z",
    "alerts": { "ai": true },
    "created": { "date": "2026-05-26T12:00:00.000Z" }
  }
}

_id 即为您放置在客户端网站跟踪代码片段中的标识符。它也是您传递给下方数据工具的 project_id。

GET /api/agency/projects:列出项目

返回您用户拥有的项目,按创建日期排序(最新的排在前面)。通过 limit(最大 500,默认 100)和 offset 进行分页。

curl "https://app.coredash.app/api/agency/projects?limit=50" \
  -H "Authorization: Bearer cdk_master_YOUR_MASTER_KEY"
{
  "status": 200,
  "projects": [
    { "_id": "...", "name": "Acme client", "url": "https://acme.example", "status": "paid" },
    { "_id": "...", "name": "Beta client", "url": "https://beta.example", "status": "trial" }
  ]
}

GET /api/agency/projects/:id:获取单个项目

返回单个项目文档。如果您用户不拥有该项目,则返回 404。我们故意不对“未找到”和“非您所有”进行区分,以防止跨账户枚举项目 ID。

curl https://app.coredash.app/api/agency/projects/655f1f77bcf86cd799439011 \
  -H "Authorization: Bearer cdk_master_YOUR_MASTER_KEY"

PATCH /api/agency/projects/:id:更新名称或 URL

更新 name 和/或 url。这两个字段都是可选的。未包含的字段将保持原样。请求体中的任何其他内容都将被忽略。状态、计费、到期时间和警报均通过仪表板进行管理。

curl -X PATCH https://app.coredash.app/api/agency/projects/655f1f77bcf86cd799439011 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer cdk_master_YOUR_MASTER_KEY" \
  -d '{ "name": "Acme client renamed" }'

DELETE /api/agency/projects/:id:硬删除项目

删除该项目以及附加到它的所有内容:Lighthouse 运行记录、CrUX 数据、警报、快照和快照配置。

此调用不会删除底层数据存储中的 RUM 数据。它仍然保留旧的 project ID 键值,但会成为孤立数据。该操作无恢复路径。项目 ID 将被停用。

curl -X DELETE https://app.coredash.app/api/agency/projects/655f1f77bcf86cd799439011 \
  -H "Authorization: Bearer cdk_master_YOUR_MASTER_KEY"
{ "status": 200, "deleted": true }

使用主密钥读取数据

如需为您其中一个项目提取 Core Web Vitals 数据,请请求与单项目 API 所使用的同一 JSON-RPC 端点:

https://app.coredash.app/api/mcp

三种工具保持不变:get_metrics、get_timeseries、get_histogram。与单项目流程相比,唯一的区别是您需要在 arguments 中传递 project_id,以便调用端知道要查询哪个项目。项目密钥不需要执行此操作,因为每个项目密钥已经作用于单个项目。主密钥覆盖多个项目,因此请求必须指定其中一个项目。

示例:获取特定项目的 get_metrics

curl -X POST https://app.coredash.app/api/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer cdk_master_YOUR_MASTER_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "get_metrics",
      "arguments": {
        "project_id": "655f1f77bcf86cd799439011",
        "metrics": "LCP,INP,CLS",
        "date": "-7d"
      }
    }
  }'

响应的 JSON-RPC 包装器与单项目 API 相同,解析后的 payload 位于 result.content[0].text 中。内部 JSON 的结构、distribution 对象、时间序列中的 summary 字段、直方图上的结构,所有这些行为与使用项目密钥时完全相同。唯一的额外要求就是 project_id 参数。

这同样适用于 get_timeseries 和 get_histogram。传递 project_id,然后传递常用的参数。

所有其他参数的作用方式均相同:filters、group、percentile、date、granularity 等。维度参考(d、cc、ff、lcpel、inpel 等所有项)、指标阈值以及百分位数语义均已记录在 CoreDash API 页面。如需了解完整的参数和维度接口,请查阅该页面。本页面仅涵盖使用主密钥进行身份验证时的不同之处。

接入新客户项目

代理机构添加新客户的典型流程:

  1. 在 My Account → Agency API 选项卡 一次性生成主密钥,并将其安全存储。
  2. 使用客户的名称和 URL 发起 POST /api/agency/projects 请求。响应中包含了新生成的 _id。
  3. 将带有该 _id 的跟踪代码片段嵌入到客户网站中。
  4. 通过 POST /api/mcp 请求,携带相同主密钥并在参数中添加 "project_id": "<the _id>",随时读取该项目的 RUM 数据。无需单独的项目密钥。

这就是整个接入循环。一个密钥,一次 POST 请求,一次代码片段嵌入,您就可以查询新项目的数据了。

错误处理

项目 CRUD 端点会返回标准的 REST 状态码:

状态含义
400创建时缺少必填字段,或计划 id 未知。
401主密钥缺失、错误或已被撤销。
404未找到该项目,或该项目非您用户所有。
500数据库错误。

在 /api/mcp 的数据读取将返回 JSON-RPC 错误对象,这与使用项目密钥时相同。错误代码对照表位于 CoreDash API 页面。如果您收到 -32001,请再次检查您的密钥是否以 cdk_master_ 开头,并确认您已在参数中包含了 project_id。

速率限制

当您读取数据时,按项目计算的每日限制依然适用:主密钥为项目 A 调用 get_metrics 会消耗项目 A 的每日配额,而为项目 B 进行调用则消耗项目 B 的配额。请参阅 CoreDash API 页面上的速率限制表。项目 CRUD 调用不受同等方式的速率限制。


CoreDash Agency API:跨账户管理项目并提取数据 Core Web Vitals CoreDash Agency API:跨账户管理项目并提取数据