# Coding agent integration

> Part of the ChinaAPI documentation. HTML: https://dash.chinaapi.ai/docs/coding-agents/

Coding agents reach the gateway over the protocol they already speak: `/v1/messages` for Claude-style agents, `/v1/responses` for Codex, and `/v1/chat/completions` for everything else. Point the tool at ChinaAPI and its requests keep the same key, quota, logs, and billing as your own API traffic.

> [!NOTE]
> Base URL shape
>
> Claude Code appends `/v1/messages` to whatever you give it, so it takes the bare host `https://api.chinaapi.ai`. Every other tool on this page expects the `/v1` suffix spelled out. A doubled or missing `/v1` is the most common cause of 404s here.

## Hermes Agent

POST /v1/chat/completions

Point the `model` block of `~/.hermes/config.yaml` at the gateway, or run `hermes model` and pick **Custom endpoint** interactively. `base_url` carries the `/v1` suffix; Hermes appends `/chat/completions` itself.

**yaml · ~/.hermes/config.yaml**

```
model:
  default: kimi-k2.7-code
  provider: custom
  base_url: https://api.chinaapi.ai/v1
  api_key: <your ChinaAPI key>
```

## Claude Code

POST /v1/messages

Export the three environment variables and start `claude` as usual. The `ANTHROPIC_DEFAULT_*_MODEL` variables map Claude Code's internal model tiers onto ChinaAPI models, which is what lets you run Chinese models inside an unmodified Claude Code.

**shell · Claude Code**

```
export ANTHROPIC_BASE_URL=https://api.chinaapi.ai
export ANTHROPIC_AUTH_TOKEN=$CHINAAPI_KEY
export ANTHROPIC_DEFAULT_OPUS_MODEL=kimi-k3
export ANTHROPIC_DEFAULT_SONNET_MODEL=kimi-k2.7-code
export ANTHROPIC_DEFAULT_HAIKU_MODEL=glm-5-turbo

claude
```

## Codex

POST /v1/responses

Codex talks the Responses protocol, so `wire_api` must be `responses`; leaving it on the chat wire format breaks tool calls. Put your key in the environment variable named by `env_key`. `deepseek-v4-pro` speaks the same wire format, so swapping the model name is all it takes to trade cost for capability.

**toml · ~/.codex/config.toml**

```
model = "deepseek-v4-flash"
model_provider = "chinaapi"

[model_providers.chinaapi]
name = "ChinaAPI"
base_url = "https://api.chinaapi.ai/v1"
wire_api = "responses"
env_key = "CHINAAPI_KEY"
```

## Cline, Roo Code, Kilo Code

POST /v1/chat/completions

All three use the same **OpenAI Compatible** provider form, field for field. Enter the model ID exactly as it appears in **Console → Models**; these tools do not fetch a model list for custom providers.

**Settings → API Provider → OpenAI Compatible**

```
Base URL   https://api.chinaapi.ai/v1
API Key    <your ChinaAPI key>
Model ID   glm-5.2
```

## Cursor

POST /v1/chat/completions

Override the base URL under **Settings → Models → OpenAI API Key**. Add the ChinaAPI model name with **Add model** first, then leave only ChinaAPI models enabled, because Cursor otherwise sends its built-in model names to your override URL.

**Settings → Models → Override Base URL**

```
Base URL   https://api.chinaapi.ai/v1
API Key    <your ChinaAPI key>
Model      deepseek-v4-pro
```

## OpenClaw

POST /v1/messages

Declare ChinaAPI as a provider with `"api": "anthropic-messages"` and list the models you want selectable in the session picker.

**json · ~/.openclaw/openclaw.json**

```
{
  "models": {
    "providers": {
      "chinaapi": {
        "baseUrl": "https://api.chinaapi.ai",
        "apiKey": "<your ChinaAPI key>",
        "api": "anthropic-messages",
        "models": ["kimi-k3", "glm-5.2"]
      }
    }
  }
}
```

## Aider

POST /v1/chat/completions

Aider routes by model prefix, so keep the `openai/` prefix on the model name even though the model itself is a Chinese one.

**shell · Aider**

```
export OPENAI_API_BASE=https://api.chinaapi.ai/v1
export OPENAI_API_KEY=$CHINAAPI_KEY

aider --model openai/deepseek-v4-pro
```

**Choosing models:** the model names above are working examples, not a fixed list. Open **Console → Models** for the aliases enabled on your account. For agent work, prefer a coding-tuned model on the tier the agent uses most and a cheap fast model on its lightweight tier — Claude Code, for instance, sends background summarisation to its Haiku tier, so mapping that tier to a small model saves the most quota.
