# 命令行

Source: https://docs.simail.ai/zh/cli/

> simail 命令行客户端：安装、怎样读取密钥、输出模式，以及给脚本和 agent 用的退出码。

`simail` 命令行是盖在 [REST API](/zh/api/) 上的一个小客户端，基于 TypeScript SDK。它给脚本用，也给在终端里工作的 agent 用。

```sh
npm install -g @simail/cli
simail beta
```

```text
signup=waitlist waitlist=open https://simail.ai/waitlist
```

## 配置

| 设置 | 怎么做 |
|---|---|
| API key | **只能**来自环境变量 `SIMAIL_API_KEY`。命令行不接受把 key 当参数，所以它不会进 shell 历史或进程列表。 |
| API 基址 | `--base-url <url>` 或 `SIMAIL_BASE_URL`（默认 `https://api.simail.ai`） |
| 输出 | 默认给人读；`--json` 打印原始 JSON 响应 |

```sh
export SIMAIL_API_KEY="sk_…"   # from your secret store
simail beta --json
```

## 命令

| 命令 | 做什么 |
|---|---|
| `simail beta` | `GET /v0/beta`：注册和等候名单是否开放，以及等候名单地址 |

不带参数运行 `simail` 会打印用法。

## 退出码

脚本和 agent 应该看退出码，不要看文字：

| 码 | 含义 |
|---|---|
| `0` | 成功 |
| `1` | 用法错误（未知命令或旗标） |
| `2` | 认证失败（`401`）：key 缺失、无效、过期或已吊销 |
| `3` | 拒绝（`403`）：缺权限、`human_required`、`signup_closed`、`claim_required` ……告诉你的主人，不要重试 |
| `4` | 找不到（`404`），包括 key 作用域以外的对象 |
| `5` | 被限流（`429`）：等一等再试 |
| `6` | 服务器或网络错误：稍后再试 |

出错时命令行打印 problem 的 `message`，并用上表的码退出。要完整的 problem+json（`code`、`retryable`、`request_id`、`human_message`），用 [SDK](/zh/sdk/) 或 `curl` 发同样的请求。
