# 查询动态 API 国家目录

公开动态 API 的认证、参数和响应字段说明。

查询动态 API 国家目录及当前可用稳定端口数量；令牌鉴权不代表提取已满足来源白名单和权益条件。

所有示例为合成数据与占位凭据，仅展示结构；接口合同不代表目标环境已开放。

## 接口与认证

`GET /openapi/v1/proxy/countries`

使用 HTTPS；api_key Query、X-API-Key 或 Authorization: Bearer 支持同值认证，冲突值拒绝。实际来源白名单仍须有效。

## 请求参数

| 字段 | 类型 | 必填 | 默认值 / 限制 | 说明 |
| --- | --- | --- | --- | --- |
| api_key | string | 否 | Query · 或认证请求头 | 账户 API 令牌，在受控服务端保存；示例使用占位符。 |

无请求体。

## 请求示例

```bash
curl --request GET \
  "https://api.zzhttp.com/openapi/v1/proxy/countries?api_key=${API_KEY}"
```

## 成功响应

响应不含内部字段或代理密码。提取 HTTP 200 / code 0 为成功；白名单及国家目录 code 200 为成功。POST 提取的错误使用 code/message 格式；国家目录成功响应没有 requestId。

HTTP 200 · JSON：成功或逐项批量结果，请同时核对业务码。

| 字段 | 类型 | 必填 | 默认值 / 限制 | 说明 |
| --- | --- | --- | --- | --- |
| code | integer | 是 | — | 成功为 200；白名单批量任一失败为 10431。 |
| message | string | 是 | — | 结果说明。 |
| data | object | 是 | — | 本接口业务数据。 |
| data.countryRouteId | integer | 是 | — | 公开国家路由 ID。 |
| data.countryCode | string | 是 | — | 国家代码，取此返回值用于地区提取；GLOBAL 表示全球。 |
| data.countryName | string | 是 | — | 国家展示名称。 |
| data.availableCount | integer | 是 | — | 当前可用稳定端口数量，不是代理出口库存。 |

```json
{
  "code": 200,
  "message": "查询成功",
  "data": [
    {
      "countryRouteId": 1,
      "countryCode": "USA",
      "countryName": "美国",
      "availableCount": 20
    }
  ]
}
```

## 错误与重试

国家目录读取遇到临时错误可有限重试，429 按 Retry-After 等待。

错误码、HTTP 状态及错误响应字段统一见[错误码与处理建议](/developers/errors/error-codes)。

html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}
