Console

Inference keys

Inference keys authenticate calls to the LLM API. They are created per project and carry their own rate and spend limits.

Creating a key

Under Inference API → Keys, choose a project and create a key. The full secret is shown once at creation — copy it immediately into your secret manager. Afterwards only a masked prefix is visible. The same screen shows the base URL to call, https://llm.upgreat.ai/v1, with a link to the LLM quickstart.

Mint a key
curl -X POST https://api.upgreat.ai/v1/projects/{projectId}/inference/keys \
  -H "Authorization: Bearer <access-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "production-backend",
    "rpm": 600,
    "tpm": 200000,
    "token_limit": 5000000,
    "token_limit_period": "month",
    "allowed_models": ["qwen3.8-27b", "bge-m3"]
  }'

Scoping a key

Each key can be constrained so a leak or a runaway job is contained:

  • rpm — maximum requests per minute.
  • tpm — maximum tokens per minute.
  • token_limit with token_limit_period — a hard token budget per minute, hour, day, week or month.
  • allowed_models — restrict the key to specific model IDs. Omit to allow every model the project can access.
  • expires_at — an optional expiry timestamp, after which the key stops working.

Organization limits

Your organization can also have a list of models and limits of its own, set by UPGREAT for your plan. They apply on top of each key's settings, across all keys together: a key can narrow them down, never go beyond them. Contact us to change them.

One key per workload

Give each service or environment its own key. You get clean per-key usage attribution and can revoke one workload without disrupting the others.

Editing a key

A key's name, model allowlist, limits and expiry can be changed after creation, in the Console (the pencil on an active key) or with PATCH /v1/inference/keys/{keyId}. Changes reach the LLM API within seconds — no redeploy, and the secret in your service stays the same.

Tighten a key's limits
curl -X PATCH https://api.upgreat.ai/v1/inference/keys/{keyId} \
  -H "Authorization: Bearer <access-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "rpm": 120,
    "token_limit": 1000000,
    "token_limit_period": "day",
    "allowed_models": ["qwen3.8-27b"],
    "expires_at": null
  }'
  • Send only the fields you want to change; anything you omit is left as it is.
  • Send null for rpm, tpm, token_limit or expires_at to clear it (unlimited, or no expiry).
  • allowed_models: [] re-grants every model the project can access today. A model that was retired after you allowlisted it stays on the key until you remove it.
  • expires_at must be in the future. Only active keys can be edited; revoked keys are read-only.

The secret itself never changes

Editing never rotates or re-displays the secret — it was shown once at creation and is stored only as a hash. If you have lost it, mint a new key and revoke this one.

Using a key

Send the key to the LLM API as a bearer token. See the LLM quickstart for full examples.

bash
curl https://llm.upgreat.ai/v1/chat/completions \
  -H "Authorization: Bearer <inference-key>" \
  -H "Content-Type: application/json" \
  -d '{ "model": "qwen3.8-27b", "messages": [{"role": "user", "content": "Hi"}] }'

Rotating and revoking

To rotate, create a new key, deploy it, then revoke the old one with DELETE /v1/inference/keys/{keyId}. Revocation is immediate. A revoked key can be archived to hide it from the default list, and unarchived later if you need its history back.

Revoke leaked keys at once

If a key is exposed, revoke it immediately in the Console and issue a replacement. Inspect a key's recent activity under its usage view, or with GET /v1/inference/keys/{keyId}/usage.