Guard issues universal gd-… keys. The gateway validates the key, selects the family from the exact model id, and deducts Claude, Kimi, GLM, Gemini, Muse, Composer, Grok, or Codex usage from the key's shared balance.
| Parameter | Value |
|---|---|
| Base URL | https://api.guardrelay.ai |
| API Key | gd-… from @guardapi |
| Account | app.guardrelay.ai/ |
gd-…https://api.guardrelay.ai/v1/messages/v1/chat/completions/v1/responsesmodelFor Claude, the gateway supports Anthropic- and OpenAI-compatible formats. Choose the endpoint your client expects.
| Endpoint | Format | Who uses it |
|---|---|---|
/v1/messages | Anthropic Messages | Claude Code, Anthropic SDK, curl |
/v1/chat/completions | OpenAI Chat | OpenAI SDK, most clients |
/v1/responses | OpenAI Responses | Codex (newer versions) |
| Function | Shared alias | Retained alias |
|---|---|---|
| Models | GET /v1/models | GET /codex/v1/models |
| Responses HTTP/SSE/WS | /v1/responses | /codex/v1/responses |
| Chat JSON/SSE | /v1/chat/completions | /codex/v1/chat/completions |
| Messages JSON/SSE | /v1/messages | /codex/v1/messages |
| Codex Files | not created | /codex/v1/files |
The key and the address are shared by every family. The gateway picks the family from the exact model id in the model field, so Kimi needs no separate key and no separate address.
| What you configure | Value for Kimi |
|---|---|
| OpenAI SDK Base URL | https://api.guardrelay.ai/v1 |
| Header | Authorization: Bearer gd-… |
| Surfaces | all three: plain POST /v1/chat/completions, the Anthropic Messages protocol and the Responses protocol |
| Models | k3, k3-256k, kimi-for-coding, kimi-for-coding-highspeed |
curl -X POST https://api.guardrelay.ai/v1/chat/completions \
-H "Authorization: Bearer gd-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "k3",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 128
}'- Key check: limit, validity, revocation.
- Route to Claude, Kimi, GLM, Gemini, Muse, Composer, Grok, or Codex from the exact model id.
- Deduct tokens from the shared key credit.
Run these commands, paste your key at the Guard API key prompt, and press Enter. Input is hidden and is not stored as part of a shell command in history.
{
export ANTHROPIC_BASE_URL="https://api.guardrelay.ai"
unset ANTHROPIC_AUTH_TOKEN
until [ -n "${ANTHROPIC_AUTH_TOKEN-}" ]; do printf "Guard API key: "; read -r -s ANTHROPIC_AUTH_TOKEN || break; printf "\n"; done
export ANTHROPIC_AUTH_TOKEN
claude
}$env:ANTHROPIC_BASE_URL = "https://api.guardrelay.ai"
$guardKey = Read-Host "Guard API key" -AsSecureString
$env:ANTHROPIC_AUTH_TOKEN = [System.Net.NetworkCredential]::new("", $guardKey).Password
claudeThese models answer on all three surfaces. The endpoint follows your client, the model follows the model field.
| Endpoint | Request fields |
|---|---|
/v1/messages | model, messages, system, max_tokens, stream, tools |
/v1/chat/completions | model, messages, max_tokens or max_completion_tokens, stream, tools |
/v1/responses | model, input, instructions, max_output_tokens, stream, tools |
The key and the address are the same as for Claude: these models need no separate signup and no separate address. The gateway picks the family from the exact id in the model field, and the key keeps one balance for every family.
curl -X POST https://api.guardrelay.ai/v1/chat/completions \
-H "Authorization: Bearer gd-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "cursor-grok-4.7-low",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 128
}'curl -X POST https://api.guardrelay.ai/v1/chat/completions \
-H "Authorization: Bearer gd-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "composer-2.5",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 128
}'Use the family Base URL for a dedicated GLM profile. If the application already uses the shared Guard endpoint, changing model to an exact GLM ID is enough.
| Purpose | Base URL / endpoint |
|---|---|
| OpenAI SDK / Chat / Responses | https://api.guardrelay.ai/glm/v1 |
| Anthropic SDK / Messages | https://api.guardrelay.ai/glm |
| Shared API | https://api.guardrelay.ai/v1 |
| GLM-only catalog | GET https://api.guardrelay.ai/glm/v1/models |
curl https://api.guardrelay.ai/glm/v1/models \
-H "Authorization: Bearer $GUARD_API_KEY"Both Base URLs use the same key and balance. The path changes the namespace, not the rate, model, or response shape.