Check base URL
Use https://api.tekiz.ai/v1 for hosted
OpenAI-compatible clients. Browser account UI lives on
https://app.tekiz.ai, not the API host.
API troubleshooting
Find your HTTP status below. Check your key, plan, or service status, then use a short test request to confirm the fix.
Hosted model traffic uses
https://api.tekiz.ai/v1, generated
sk_tekiz_* keys, and route profiles such as
tekizai/frontier.
Use https://api.tekiz.ai/v1 for hosted
OpenAI-compatible clients. Browser account UI lives on
https://app.tekiz.ai, not the API host.
Hosted model traffic requires an active generated
sk_tekiz_* key. Full keys are shown once and should
never be pasted into support.
Start with tekizai/auto. Use your key with
/v1/models to see which other profiles are available
to your account.
| Status | What it means | Useful response signals | Next action |
|---|---|---|---|
| 401 | The key is missing, revoked, inactive, malformed, or not a TEKIZ.AI generated key. |
WWW-Authenticate, JSON accountUrl,
accountSetupUrl, primaryActionUrl,
managedAccessUrl, keyRecoveryUrl,
pricingUrl, statusUrl,
openaiBaseUrl, apiKeyPrefix,
placeholder setupSnippet, and placeholder
codexSetupSnippet.
|
Confirm the client sends a generated
sk_tekiz_* key.
Create a new key
if needed, then test /v1/models. Replace the
placeholder in a copied setup snippet. Managed access needs
review.
|
| 402 | The account cannot route because payment is incomplete, the plan is inactive, or the quota is used up. |
X-Quota-Limit, X-Quota-Used,
X-Quota-Remaining, X-Quota-Period,
and account or pricing links in the JSON body.
|
Open Account to check free requests, plan status, and current usage. Finish checkout or wait for the quota period to reset if needed. Contact support if a manual payment was confirmed. |
| 429 | The request-per-minute limit or abuse control was reached. |
Retry-After, X-RateLimit-Limit,
X-RateLimit-Remaining,
X-RateLimit-Reset, and quota headers.
|
Reduce concurrency, retry after the indicated delay, batch less aggressively, or upgrade to a plan with a higher rate limit. |
| 403 / 1010 | Cloudflare blocked the request before it reached TEKIZ.AI. |
JSON body with error_code: 1010 or
browser_signature_banned; no
X-TEKIZAI-Router-* headers.
|
Use the OpenAI SDK, curl, or set a normal
User-Agent for raw urllib-style clients; then
retry /v1/models.
|
| 503 | No approved model is available to serve this request right now. | Status page health, selected upstream, backend health checks, and any safe request id or route profile name. | Check public status and retry after service returns. If you run a private router, check that its models are healthy. |
Safe probes
If raw Python urllib gets Cloudflare
403 / 1010, use a normal client
User-Agent so the request reaches the TEKIZ.AI
auth gate.
curl -i https://api.tekiz.ai/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "User-Agent: OpenAI-compatible-client/1.0"
curl -i https://api.tekiz.ai/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "User-Agent: OpenAI-compatible-client/1.0" \
-H "Content-Type: application/json" \
-d '{
"model": "tekizai/auto",
"messages": [{"role": "user", "content": "Return ok."}]
}'
Python urllib
The placeholder key should return 401 from
TEKIZ.AI. Replace it with a generated sk_tekiz_*
key and retry. A Cloudflare 1010 response means the
request did not reach the TEKIZ.AI API.
import urllib.error
import urllib.request
req = urllib.request.Request(
"https://api.tekiz.ai/v1/models",
headers={
"Authorization": "Bearer sk_tekiz_REPLACE_WITH_GENERATED_KEY",
"User-Agent": "OpenAI-compatible-client/1.0",
"Accept": "application/json",
},
)
try:
with urllib.request.urlopen(req, timeout=15) as response:
print(response.status, response.read().decode("utf-8", errors="replace"))
except urllib.error.HTTPError as exc:
print(exc.code, exc.read().decode("utf-8", errors="replace"))
401 setup snippet
Replace only the placeholder key after the account page creates
your generated sk_tekiz_* key. Keep real bearer tokens
out of support threads and screenshots.
# TEKIZ.AI hosted setup
export OPENAI_BASE_URL=https://api.tekiz.ai/v1
export OPENAI_API_KEY=sk_tekiz_REPLACE_WITH_GENERATED_KEY
curl "$OPENAI_BASE_URL/models" \
-H "Authorization: Bearer $OPENAI_API_KEY"
Codex 401 profile
A 401 response also includes codexProfile and a
placeholder codexSetupSnippet. Use them to restore
Codex or OpenClaw without guessing the provider, profile, model,
or API type.
# TEKIZ.AI hosted Codex setup
export TEKIZAI_API_KEY=sk_tekiz_REPLACE_WITH_GENERATED_KEY
mkdir -p ~/.codex
# Add this provider block once to ~/.codex/config.toml.
cat >> ~/.codex/config.toml <<'TOML'
[model_providers.tekizai]
name = "TEKIZ.AI Hosted"
base_url = "https://api.tekiz.ai/v1/"
env_key = "TEKIZAI_API_KEY"
wire_api = "responses"
TOML
# Create ~/.codex/tekizai-frontier.config.toml.
cat > ~/.codex/tekizai-frontier.config.toml <<'TOML'
model_provider = "tekizai"
model = "tekizai/frontier"
TOML
# Plain codex keeps using ChatGPT. TEKIZ.AI is explicit.
codex --profile tekizai-frontier
What to send support
Send the HTTP status, time with timezone, request ID if present, route profile, and the result of the Account key test. Leave out prompts, credentials, full keys, and customer data.
WWW-Authenticate,
Retry-After, X-RateLimit-Limit,
X-RateLimit-Remaining,
X-RateLimit-Reset, X-Quota-Limit,
X-Quota-Used, X-Quota-Remaining, and
X-Quota-Period.
accountUrl,
accountSetupUrl, primaryActionUrl,
managedAccessUrl, keyRecoveryUrl,
pricingUrl, statusUrl,
openaiBaseUrl, the non-secret
apiKeyPrefix, and placeholder
setupSnippet / codexSetupSnippet.
Remove full bearer tokens and prompt bodies.
Provider access
Hosted plans include inference on available hosted capacity, account management, API keys, usage limits, and request history. Use models available to your account. To use your own provider credentials, run a router you control. Managed model access is available after provider and plan approval.