Developer Guide
For developers who have been granted self-service access. This page covers signing in, getting a key, reading your own logs and findings, and requesting settings changes.
Want the concepts first? See the Overview. Setting self-service up for your org? See the Admin Guide. New to the gateway itself? The Quick Start and the Integration Guide cover endpoints, base URLs, and SDK examples.
Signing In
Sign in with your work account. If you have self-service access, you land in the Self-Service portal instead of the full admin dashboard.
You only see the apps an admin granted you. If the portal is empty, nobody has given you access to an app yet - ask your QuilrAI platform admin.
Your Apps
Each app you can access appears as a card:
A card tells you:
The Three Tabs
Open an app to get to its tabs:
Settings
Shows the credential mode and app details: provider, models, routing groups, and estimated cost. In Named User API Keys mode this is also where you manage your keys. If you have Settings Request Access, a Request settings change action appears here.
The routing groups listed here are the names you can pass as a model to load balance or fail over across providers - see Request Routing. Which providers, endpoints, and API shapes the app can reach is covered in Provider Support.
Logs
The app's request logs. You see your own activity only, unless an admin granted you All Logs Visibility for this app.
Logs get considerably more useful when your requests carry context. Pass a conversation ID to group a multi-turn exchange into one thread (Conversation Grouping), or send standard tracing or agent headers so each call is tied to the agent run that produced it (Agent Monitoring). To pull the same records into your own tooling, ask an admin for a log export key and use the Log Export API.
Findings
Guardrail activity for the app - blocked, monitored, redacted and normal requests - with per-request detail. Scoped to your own activity under the same rule as Logs.
This is where you check why a request was blocked or came back redacted: the finding names the category that fired and the action that was applied. Security Guardrails explains the categories, risk levels, and actions behind those results.
Getting Your Key
What you get depends on the app's credential mode.
Shared Parent Key mode
The app already has a key. Copy it from the Settings tab and use it as-is. If the app shows API key hidden, an admin has turned off key visibility for you - ask them for the value.
Named User API Keys mode
You create your own key:
-
Open the app's Settings tab.
-
Create a key and give it a name that says where it will live, for example
Alice local devoralice-ci-runner. -
Copy the full value. It looks like the app key with a self-service payload appended:
sk-quilr-<app-key>:ss1.<encoded-identity>.<random> -
Use the whole string anywhere you'd normally use an
sk-quilr-…key:from openai import OpenAI
client = OpenAI(
base_url='https://guardrails-usa-2.quilr.ai/openai_compatible/',
api_key='sk-quilr-xxx:ss1.a1b2c3.d4e5f6' # your named self-service key
)
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Hello!'}]
)
You can hold several keys for the same app - one per machine or environment is a good habit, since you can then revoke one without breaking the others. Your active keys are listed with their created and last-used times, and you can revoke any of them yourself.
Every request made with your key is attributed to you, so your logs, usage, and findings are your own. That attribution is the same per-user identity described in Identity Aware.
In Named User API Keys mode the gateway only accepts a valid named self-service key. The parent sk-quilr-… key on its own, a JWT, or an X-User-Email header alone are rejected.
Using the Key
The key is an ordinary gateway credential, so everything in the main gateway docs applies:
Requesting a Settings Change
If you have Settings Request Access, use Request settings change on the Settings tab. You get the app's full settings editor and submit your edits as a request:
Nothing you edit here is live. The footer says it plainly: submitted changes require admin approval before they apply. Choose Submit Request to send it for review.
Track your submissions under My Change Requests in the portal. Each request shows one of these statuses:
Admins review requests from the app's Audit Log tab - see Audit Log. A stale status means the app's config changed after you submitted; approval re-checks against the config your request was based on, so open the editor again and resubmit.
The self-service configuration itself, including credential mode and who has access, is admin-only and does not appear in the portal's settings editor.
If you have Direct Settings Update
Some users are granted Direct Settings Update instead. In that case your saves apply to the live app immediately, with no approval step. There is no undo in the portal, but every change is versioned in the app's config history and an admin can roll it back - see Audit Log.
Checking a Change Worked
Once a request is approved (or saved directly), the change is live on the next request. To confirm it:
- Send a request with your key.
- Open the Findings tab to see which guardrails fired and what action was applied - the categories and actions are explained in Security Guardrails.
- Open the Logs tab for the request itself, including token counts, which show the effect of Token Saving and of the model your routing group picked.
If your admin runs an LLM Intelligence Assessment against the app, those results are a broader check on the same guardrail configuration.
Troubleshooting
Related
Self-service
- Overview - concepts, credential modes, and the key format.
- Admin Guide - how access is configured on the admin side.
- Audit Log - how change requests are reviewed and rolled back.
Calling the gateway
- Quick Start - the four steps to a working call.
- Integration Guide - endpoint URLs and code examples per SDK.
- Provider Support - providers, endpoints, and API formats.
- Unified Completions - one request format across providers.
- SDK Mode - scan content from your code without proxying an LLM call.
Settings you can request
- Security Guardrails - categories, risk levels, actions and defaults.
- Custom Detections - your own regex and intent detections.
- Guardian Agent - dependency checks and task adherence.
- Token Saving - the compression transforms and what they save.
- Rate and Token Limits - timeouts, concurrency, request and token limits.
- Request Routing - routing groups, load balancing, and failover.
- Prompt Store - stored system prompts referenced by ID.
- Identity Aware - identifying the users of the app you build.
Logs and monitoring
- Conversation Grouping - group multi-turn requests into one thread.
- Agent Monitoring - tie calls to the agent run that produced them.
- Log Export API - read request logs from your own tooling.