Reference
Exhaustive tables for Model Router. For concepts and task guides, start from the overview.
Module
| Item | Value |
|---|
| Menu location | Main menu → Model Router, in the AI Modules & Agents group |
| Who can access | Organisation Administrators only (Technology Stack facilities). |
| Scope | Per facility (select the facility in the main toolbar) |
| Currency | USD |
Top-ups
| Setting | Value |
|---|
| Minimum top-up | $10 |
| Maximum single top-up | $5,000 |
| Presets | $25, $50, $100, $250, $500, $1000 |
| Payment method | The facility's stored billing card |
| Balance credit timing | Instant |
| Receipt | Receipt number + downloadable PDF per top-up; also emailed to the facility's billing contacts |
Auto top-up
| Setting | Value |
|---|
| Trigger | Balance falls below your When balance is below threshold |
| Recharge amount | Your Top up by amount (minimum $10) |
| Check cadence | Roughly every 15 minutes |
| Failure handling | Banner shown for: no card on file, card requires authentication, card declined |
Usage & reconciliation
| Item | Value |
|---|
| Usage reconciliation | Every 15 minutes against the prepaid balance; shown in Monthly usage, grouped by calendar month (UTC) |
| Available balance | Live: credited total minus live spend (not just the reconciled ledger) |
| Estimated runway | Average daily spend this month projected against the balance; shown as 0 days, 1 day, N days, 365+ days, or Not enough data |
Account spend limits
| Limit | Reset | Presets |
|---|
| Daily limit | Every day at midnight, facility local time | $25, $50, $100, $250 |
| Monthly limit | The 1st of each month, facility local time | $50, $100, $250, $500, $1000 |
| Total (hard cap) | Manual reset only (Reset hard cap — counter to $0, cap unchanged, closed period saved to the reset history) | — |
Any combination may be active. Limits apply across every API key and connected service combined; the prepaid balance still applies on top. Breaches block requests with a 402 budget_exceeded error until the window resets.
Per-key / per-service settings
| Setting | Default | Notes |
|---|
| Label | empty | Optional; used to attribute usage in Activity and Logs |
| Connection type (API keys only) | API key | API key stays in the API keys list; External agent appears under Connected Services |
| Daily spend limit | off | Resets at the start of each day, facility timezone |
| Monthly spend limit | off | Resets on the 1st of each month, facility timezone |
| Lifetime cap | off | Total spend over the lifetime of the key or service; never resets |
| Requests / min | Unlimited | Exceeding returns HTTP 429 |
| Tokens / min | Unlimited | Exceeding returns HTTP 429 |
| Restrict models | off (all facility-enabled models) | Only the selected models usable with this key or service |
| Override facility guardrails | off (inherits facility) | When on, the key's or service's own selection applies — including "none" |
API key statuses & actions
| Status | Meaning |
|---|
| Active | The key works. |
| Provisioning… | Briefly shown while a new key is being set up. |
| Disabled | The key is revoked (the row is dimmed); it can be re-activated. |
| Action | Reversible? | Effect |
|---|
| Edit | — | Change label, limits, models, guardrails. |
| Rotate | No | New secret issued (shown once); old secret stops working immediately. |
| Revoke | Yes (Re-activate) | Key disabled immediately. |
| Delete | No | Key permanently removed. |
Models
| Item | Value |
|---|
| Default | All catalog models enabled |
| Automatically enable new models | When on, models newly added to the catalog are turned on for the facility automatically |
| Constraint | "At least one model must stay enabled." |
| Quick presets | All models, Frontier, Western providers, Open weights, Budget (input price ≤ $1.00 / 1M tokens) |
| Filters | Status (Any/Enabled/Disabled), Region (United States/Europe/China), Capability (Vision, Audio, PDF input, Reasoning) |
| Sort | Recommended, Name, Price, Context size — ascending/descending |
| Per-model info | Context window, input & output price per 1M tokens, capability icons (text, image, audio, PDF), reasoning setting |
Auto Router
| Tier | Description |
|---|
| Simple | Short, straightforward prompts |
| Medium | Everyday tasks |
| Complex | Hard, multi-step work |
| Reasoning | Deep reasoning & analysis |
- Model ID:
auto; Usage-priced — billed at the rate of the model the router picks per request.
- Per-facility routing editable via Edit routing (only enabled models selectable; every tier must have a model); Reset to default restores the standard map.
- Logs/Activity show the resolved model; the request drawer shows
auto as Requested model.
Guardrails
| Guardrail | Action on match |
|---|
| PII masking | Masks personal data in the prompt; request continues |
| Secret redaction | Strips keys/tokens/secrets from the prompt; request continues |
| Prompt-injection shield | Blocks the request (403 content_policy_violation) |
| Template | Enables |
|---|
| None | Nothing (default) |
| PII protection | PII masking |
| Secret redaction | Secret redaction |
| Injection shield | Prompt-injection shield |
| Strict | All three |
Content filters
| Item | Value |
|---|
| Maximum filters per facility | 25 |
| Maximum pattern length | 300 characters |
| Actions | Redact (rewrite matches to [REDACTED]) or Block (reject with 403) |
| Pattern safety | Unsafe regular expressions (e.g. patterns prone to catastrophic backtracking) and patterns over 300 characters are dropped and not applied |
| Inheritance | Facility-wide; keys and services with the guardrail override use their own list |
Transaction history
The transaction history lists top-ups and balance adjustments only. Usage is summarised in Monthly usage.
| Type | Meaning |
|---|
| Top-up | Card charge crediting the balance |
| Refund | Refunded charge |
| Adjustment | Manual balance correction |
| Item | Value |
|---|
| Columns | Date, Type, Amount, Balance after, Receipt |
| Bulk receipts | Tick rows, then Download receipts (n) |
Monthly usage
| Item | Value |
|---|
| Grouping | Calendar month (UTC); the current month is marked Month to date |
| Reconciliation | Every 15 minutes against the prepaid balance |
| Columns | Month, Usage, Deductions, Downloads |
| Deduction type | Usage charge (reconciled inference spend), listed when you expand a month |
| Downloads per month | Download usage statement (PDF) and Download usage detail (CSV) |
| Status | Usage statements, not invoices; only card top-ups have receipts |
Activity & logs
| Item | Value |
|---|
| Activity views | Overview, Trends, Performance, Explore |
| Range presets | Last 24 hours, Last 7 days, Last 30 days, Last 90 days, Year, All time, Custom range |
| Logs range presets | Last 15 minutes, Last hour, Last 24 hours (default), Last 7 days, Last 30 days, custom; Live refresh Off / 10s / 30s (default) / 60s |
| Explore group-by options | Model, API key / agent, Source, Provider, Status |
| Raw CSV export cap | 25,000 rows |
| Export types | Raw requests; Summary by model / by key & agent / by source / by period (summaries cover whole days) |
| Content stored | Metadata only — never prompt or response content |
API error responses
Base URL: shown in Settings → Service Access & API Keys → Connecting to the API (e.g. https://app.performancehub.co/ai/v1). Errors use the OpenAI envelope { "error": { "message", "type", "code" } }.
| HTTP | type | code | Meaning |
|---|
| 401 | invalid_request_error | invalid_api_key | Missing API key, or invalid connected-service credentials |
| 401 | invalid_request_error | — | Unknown or revoked API key ("Invalid API key") |
| 402 | insufficient_quota | insufficient_credits | Prepaid balance depleted (or, for connected services, the facility is not enabled) |
| 402 | insufficient_quota | budget_exceeded | A spend limit reached (facility, key, or connected service); body includes window, resetsAt, timezone, docsUrl |
| 403 | invalid_request_error | — | "Model Router is not enabled for this facility" (API keys), or "Facility has no provisioned inference key" (the key has no backing inference key) |
| 403 | invalid_request_error | content_policy_violation | Blocked by a content filter or the prompt-injection shield |
| 429 | — | — | Requests/min or tokens/min rate limit exceeded |
| 502 | server_error | — | Upstream inference service unavailable (retry) |
An unexpected failure while checking the API key returns HTTP 500 "Something went wrong"; retry the request.
GET /v1/models remains available with a zero balance.