# 快速开始 (/docs/zh-CN/quickstart)

## 1. 获取 Key [#1-获取-key]

在 [API Key](https://www.ohmygpt.com/keys) 页面创建一个 Key，然后导出为环境变量：

```bash
export OHMYGPT_API_KEY="sk-..."
```

在[账单](https://www.ohmygpt.com/billing)页面完成首次充值后，Key 即可使用。

<Callout type="warn">
  Key 只放在你的服务器上。不要提交到代码仓库，也不要打包进浏览器或移动端应用。
</Callout>

## 2. 调用免费的测试模型 [#2-调用免费的测试模型]

`ohmygpt/mock` 不收费，所有端点都能应答，流式和非流式都支持。花钱之前，先用它确认 base URL、Key 和你的响应处理逻辑都没问题。

```bash
curl https://api.ohmygpt.com/v1/chat/completions \
  -H "Authorization: Bearer $OHMYGPT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "ohmygpt/mock", "messages": [{"role": "user", "content": "ping"}]}'
```

```json
{
  "id": "chatcmpl-ohmygpt-mock",
  "object": "chat.completion",
  "model": "mock",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "This is a mock reply from OhMyGPT. Your integration works; switch to a real model when ready."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 15, "completion_tokens": 17, "total_tokens": 32 }
}
```

工具调用也可以用它免费测试。如果请求里声明了工具，它会调用第一个工具（或 `tool_choice` 指定的那个），所有必填参数都填对应类型的零值；收到工具结果后，再回复一段文本。

## 3. 换成真实模型 [#3-换成真实模型]

只改模型 ID 即可，ID 从[模型列表](/docs/zh-CN/model-naming)里取。

```python tab="Python"
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.ohmygpt.com/v1",
    api_key=os.environ["OHMYGPT_API_KEY"],
)

completion = client.chat.completions.create(
    model="openai/gpt-5.4-nano",
    messages=[{"role": "user", "content": "Say hello in one word."}],
)
print(completion.choices[0].message.content)
```

```ts tab="TypeScript"
import OpenAI from 'openai'

const client = new OpenAI({
  baseURL: 'https://api.ohmygpt.com/v1',
  apiKey: process.env.OHMYGPT_API_KEY,
})

const completion = await client.chat.completions.create({
  model: 'openai/gpt-5.4-nano',
  messages: [{ role: 'user', content: 'Say hello in one word.' }],
})
console.log(completion.choices[0].message.content)
```

```bash tab="curl"
curl https://api.ohmygpt.com/v1/chat/completions \
  -H "Authorization: Bearer $OHMYGPT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "openai/gpt-5.4-nano", "messages": [{"role": "user", "content": "Say hello in one word."}]}'
```

想试别的模型，把 `model` 改成 `anthropic/claude-sonnet-5-5` 或 `zhipu/glm-5.3-flash` 就行，其他都不用动。同一个 Key 也能用于 Anthropic 和 Gemini 的 SDK，它们的 base URL 见[协议表](/docs/zh-CN#base-url-与协议)。

## 调用失败时 [#调用失败时]

错误信息会告诉你该怎么做。首次调用最常见的问题和解决办法：

| 状态码 | `code` | 解决办法 |
|---|---|---|
| 401 | `invalid_api_key` | 检查 `Authorization: Bearer` 请求头里的 Key。 |
| 402 | `insufficient_credits` | 到[账单](https://www.ohmygpt.com/billing)页面充值。 |
| 404 | `model_not_found` | 从 `GET /v1/models` 复制模型 ID。 |
| 404，响应体为 `404 page not found` | — | 检查请求路径。用 Anthropic SDK 时，去掉 base URL 末尾的 `/v1`。 |

所有状态码见[错误](/docs/zh-CN/errors)。

## 下一步 [#下一步]

<Cards>
  <Card title="模型 ID" href="/docs/zh-CN/model-naming" description="查询模型 ID、支持的端点与下线日期" />
  <Card title="费用" href="/docs/zh-CN/costs" description="查看每个请求的花费" />
  <Card title="流式输出" href="/docs/zh-CN/api/streaming" description="边生成边接收 token" />
  <Card title="工具调用" href="/docs/zh-CN/tool-calling" description="让模型调用你的函数" />
</Cards>
