> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meoo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API 文档

Meoo Open API 帮助你的产品接入 Meoo 的项目创建、AI 应用生成、云服务管理和应用发布能力。

普通资源接口接受 OAuth Access Token、用户 API Key，或团队 AK/SK 为 Owner/虚拟成员签发的短期 Token；团队系统集成的成员管理接口接受团队 AK/SK HMAC。系统集成统一推荐团队版短期 Token，用户 API Key 仅推荐个人测试和临时调试。

生产环境基础地址：

```text theme={null}
https://meoo.com/open/v1
```

除 OAuth 授权相关端点外，所有请求都需要携带 OAuth Access Token 或用户 API Key：

```text theme={null}
Authorization: Bearer <access_token_or_meoo_ak>
```

## 按资源查看

| 资源     | 你可以做什么                                | 详细文档                                                                                                                                                                                                                           |
| :----- | :------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 用户与项目  | 获取已授权用户信息、创建项目、查找项目、删除项目              | [用户与项目 API](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/f3816128-f4fc-4211-a338-71e061d71ced)                                                                                                                 |
| 团队成员   | 创建、查询、冻结或删除托管成员，签发成员临时 Token          | [团队成员 API](https://alidocs.dingtalk.com/i/nodes/G1DKw2zgV2KnvL4kFvOdLmKwJB5r9YAn) · [集成指南](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/c0ca3603-79ca-40fa-aa93-0b6bc8be9ff9)                                  |
| Agent  | 发起 Run、接收实时进度、处理交互、继续会话               | [Agent OpenAPI](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/0cacadf2-712b-4a08-9c29-550e056ef249) · [接入指南](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/902f9879-a028-41dc-829e-6ad2525780a3) |
| Skills | 上传私有 Skill，并在 Agent Run 中选择使用         | [Skills API](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/7b25c37b-1a42-40e8-8ae8-6196a592c345)                                                                                                                |
| 云服务    | 查询数据库、存储、云函数和 Secret，执行 SQL，维护 Secret | [云服务 API](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/8115dc55-965b-4f6c-9fb0-a32cd25fecf3)                                                                                                                   |
| 源码     | 将项目当前源码导出为 ZIP，并获取短期下载链接              | [源码导出 API](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/e4dd5cf4-2d37-40db-8e8a-b5fd5c8c36aa)                                                                                                                  |
| 源码导入   | 上传 ZIP 创建新 Web 项目，可选 AI 适配；导入与发布分开执行  | [源码导入 API](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/91f543e7-3294-43b9-9690-d60c1e5c1aa5) · [项目导入与发布](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/2c3751d3-8fbe-4d53-a71b-f992e96c7044)   |
| 发布     | 发布项目、接收发布进度、查询当前版本和历史记录               | [发布 API](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/b31b1b0b-7d62-41df-a2f9-3643354ac937)                                                                                                                    |

## 接口一览

### 用户与项目

| 方法     | 路径                                                 | 权限                             |
| :----- | :------------------------------------------------- | :----------------------------- |
| `GET`  | `/user`                                            | `user.read`                    |
| `GET`  | `/projects`                                        | `project.read`                 |
| `POST` | `/projects`                                        | `project.write`                |
| `POST` | `/projects/{project&amp;#95;id}/tokens`            | `project.token.write`（仅 OAuth） |
| `GET`  | `/projects/{project&amp;#95;id}/watermark-removal` | `project.read`                 |
| `PUT`  | `/projects/{project&amp;#95;id}/watermark-removal` | `project.write`                |
| DELETE | /projects/\{project\_id}                           | project.write                  |

### 团队成员（AK/SK HMAC）

| 方法       | 路径                                         | 权限                        |
| :------- | :----------------------------------------- | :------------------------ |
| `POST`   | `/team/members/`                           | `team.member.create`      |
| `GET`    | `/team/members/`                           | `team.member.read`        |
| `GET`    | `/team/members/{member&amp;#95;id}`        | `team.member.read`        |
| `PATCH`  | `/team/members/{member&amp;#95;id}`        | `team.member.update`      |
| `DELETE` | `/team/members/{member&amp;#95;id}`        | `team.member.delete`      |
| `POST`   | `/team/members/{member&amp;#95;id}/tokens` | `team.member.token.issue` |

### Agent

| 方法     | 路径                                                                                      | 权限           |
| :----- | :-------------------------------------------------------------------------------------- | :----------- |
| `POST` | `/projects/{project&amp;#95;id}/agent/runs`                                             | `agent.run`  |
| `POST` | `/projects/{project&amp;#95;id}/agent/uploads`                                          | `agent.run`  |
| `GET`  | `/projects/{project&amp;#95;id}/agent/runs/current`                                     | `agent.read` |
| `GET`  | `/projects/{project&amp;#95;id}/agent/runs/{run&amp;#95;id}/events`                     | `agent.read` |
| `POST` | `/projects/{project&amp;#95;id}/agent/runs/{run&amp;#95;id}/cancellations`              | `agent.run`  |
| `POST` | `/projects/{project&amp;#95;id}/agent/action-responses`                                 | `agent.run`  |
| `GET`  | `/projects/{project&amp;#95;id}/agent/conversations`                                    | `agent.read` |
| `GET`  | `/projects/{project&amp;#95;id}/agent/conversations/{conversation&amp;#95;id}/messages` | `agent.read` |

### Skills

| 方法     | 路径        | 权限            |
| :----- | :-------- | :------------ |
| `POST` | `/skills` | `skill.write` |

### 云服务

| 方法       | 路径                                                                                   | 权限                         |
| :------- | :----------------------------------------------------------------------------------- | :------------------------- |
| `GET`    | `/projects/{project&amp;#95;id}/cloud/database/status`                               | `cloud.database.read`      |
| `GET`    | `/projects/{project&amp;#95;id}/cloud/database/tables`                               | `cloud.database.read`      |
| `POST`   | `/projects/{project&amp;#95;id}/cloud/database/queries`                              | `cloud.database.write`     |
| `GET`    | `/projects/{project&amp;#95;id}/cloud/storage/buckets`                               | `cloud.storage.read`       |
| `GET`    | `/projects/{project&amp;#95;id}/cloud/storage/buckets/{bucket&amp;#95;name}/objects` | `cloud.storage.read`       |
| `GET`    | `/projects/{project&amp;#95;id}/cloud/functions`                                     | `cloud.function.read`      |
| `GET`    | `/projects/{project&amp;#95;id}/cloud/functions/{function&amp;#95;name}/logs`        | `cloud.function.logs.read` |
| `GET`    | `/projects/{project&amp;#95;id}/cloud/secrets`                                       | `cloud.secret.read`        |
| `PUT`    | `/projects/{project&amp;#95;id}/cloud/secrets/{secret&amp;#95;name}`                 | `cloud.secret.write`       |
| `DELETE` | `/projects/{project&amp;#95;id}/cloud/secrets/{secret&amp;#95;name}`                 | `cloud.secret.write`       |

### 源码导入

| 方法     | 路径                 | 权限                                                |
| :----- | :----------------- | :------------------------------------------------ |
| `POST` | `/projects/import` | `project.write source.write`；开启 AI 另需 `agent.run` |

仅支持新建 Web 项目；multipart 上传单个 ZIP，最大 100 MiB。读取 SSE 终态 `import.completed` 后再发布；开启 AI 时还需通过已有 Agent API 等待 Run 完成。具体限制、幂等重试及错误处理见[源码导入 API](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/91f543e7-3294-43b9-9690-d60c1e5c1aa5)。

### 源码

| 方法     | 路径                                              | 权限            |
| :----- | :---------------------------------------------- | :------------ |
| `POST` | `/projects/{project&amp;#95;id}/source-exports` | `source.read` |

### 发布

当前只支持 `web` 项目的默认 Web 发布，不提供 App 安装包或小程序平台发布。

| 方法     | 路径                                                  | 权限              |
| :----- | :-------------------------------------------------- | :-------------- |
| `POST` | `/projects/{project&amp;#95;id}/releases`           | `release.write` |
| `POST` | `/projects/{project&amp;#95;id}/releases/prepare`   | `release.write` |
| `POST` | `/projects/{project&amp;#95;id}/releases/complete`  | `release.write` |
| `POST` | `/projects/{project&amp;#95;id}/releases/unpublish` | `release.write` |
| `GET`  | `/projects/{project&amp;#95;id}/releases/current`   | `release.read`  |
| `GET`  | `/projects/{project&amp;#95;id}/releases`           | `release.read`  |

## 通用请求约定

### 项目标识

源码导入返回的 `project_id` 已是公开项目标识，可以直接用于后续接口路径，不需要内部项目 ID 或 Git 提交 ID。

项目相关接口的路径参数 `{project_id}` 使用项目接口返回的 `url_id` 字段值。请将它作为字符串保存和传递，不要尝试解析其结构。

### 分页

支持分页的接口使用以下参数：

**参数说明**

* `page_size`（integer，可选）：每页数量，默认 20，最大 100
* `page_token`（string，可选）：上一页响应中的 `next_page_token`

还有下一页时，响应会包含 `next_page_token`。下一次请求原样传回即可；不要解析、修改或跨接口复用。

### 时间与大整数

* 所有时间字段均为 Unix 毫秒时间戳。
* 可能超出 JavaScript 安全整数范围的 ID、文件大小和数据库统计值使用十进制字符串返回。
* 客户端应忽略暂时不认识的响应字段和枚举值，以便兼容后续扩展。

### 请求追踪

响应头中的 `X-Meoo-Trace-Id` 是请求的排查编号。反馈问题时请提供接口路径、请求时间、HTTP 状态码、错误码和该编号，不要提供 Token、API Key 或 Secret。

## 错误响应

JSON 接口使用 `application/problem+json` 返回错误：

```text theme={null}
{
  "type": "about:blank",
  "title": "Bad Request",
  "status": 400,
  "detail": "page_size 必须是非负整数",
  "code": "invalid_request",
  "trace_id": "01JEXAMPLETRACEID"
}
```

| HTTP 状态               | 含义               | 建议处理                                   |
| :-------------------- | :--------------- | :------------------------------------- |
| `400`                 | 请求参数或格式不正确       | 根据 `code` 和 `detail` 修正请求              |
| `401`                 | 凭证缺失、失效或过期       | 更新 Access Token，或检查 API Key            |
| `403`                 | 缺少所需权限，或当前操作不被允许 | 申请所需 Scope，或提示用户处理账号/项目状态              |
| `404`                 | 资源不存在或当前用户不能访问   | 检查资源 ID；不要持续重试                         |
| `409`                 | 当前资源状态与操作冲突      | 根据错误码等待、恢复或重新发起操作                      |
| `413`                 | 请求或响应结果超过限制      | 缩小 SQL 查询结果或请求内容                       |
| `429`                 | 请求过于频繁           | 按 `Retry-After` 等待后重试                  |
| `500` / `502` / `503` | 服务暂时不可用          | 对可安全重试的请求使用指数退避，并保留 `trace&amp;#95;id` |

Agent 事件流当前使用 60 秒固定限频窗口；其 `Retry-After: 60` 是固定窗口的安全等待上界，不是剩余 TTL。客户端应等待后增加少量随机抖动再重连，避免集中重试。

完整的分页、错误、幂等和 SSE 规则见 [通用协议](https://app.mintlify.com/alibaba-b47c397f/alibaba-b47c397f/~/de50f6a7-356b-405b-9dbe-374db0e46b3e)。
