ClavueClavue
AI platform · IDE · agents · models

Enterprise API

Enterprise is an overlay on the shared Clavue account — not a billed SKU and not a second login. Commercial auto-approves so other products can connect immediately. Enterprise waits for ops review, then uses the same OpenAI-compatible API.

Apply & console

Sign in at /account, then open /enterprise/apply. After approval, manage keys and IPs at /enterprise/console. /enterprise/login only returns you to the shared account with next=/enterprise/console.

  • Commercial — auto-approved, mint cv_ent_ immediately
  • Enterprise — pending until ops approve or reject
  • Rejected orgs can apply again
  • Personal cv_live_ keys stay on /api-keys

Connection

Point any OpenAI-compatible client at api.clavue.com. Use the org key as the Bearer token. Other Clavue products (CLI, GUI, Chat, your own servers) use the same base URL.

export OPENAI_BASE_URL=https://api.clavue.com/v1
export OPENAI_API_KEY=cv_ent_…

curl -s $OPENAI_BASE_URL/models \
  -H "Authorization: Bearer $OPENAI_API_KEY"

curl -s $OPENAI_BASE_URL/chat/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"clavue-2.1","messages":[{"role":"user","content":"Hello"}]}'

OpenAI SDK

Same pattern as personal keys. Swap the token prefix from cv_live_ to cv_ent_.

from openai import OpenAI

client = OpenAI(
    api_key="cv_ent_...",
    base_url="https://api.clavue.com/v1",
)

r = client.chat.completions.create(
    model="clavue-2.1",
    messages=[{"role": "user", "content": "Hello"}],
)
print(r.choices[0].message.content)

Connecting server IPs

Every successful API-key auth records the connecting server IP (x-forwarded-for / x-real-ip), last path, user-agent, first/last seen, and request count. Owners see their org table on /enterprise/console. Ops see every key IP on the membership admin Enterprise tab.

Next