> ## 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)。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.