Apps & provider attachments
An app owns its gateway credentials, stored controls, routing, prompts and configuration history. Manage it by app name within the key's tenant. There is no app-delete API.
Naming and identity
Names are trimmed and compared case-insensitively. New names must be unique among enabled and disabled apps. A disabled app continues to reserve its name. If multiple legacy apps match a name, the API returns 409 ambiguous_app_name instead of choosing one silently.
Encode names as one URL path segment: Support Bot becomes Support%20Bot. Handling existing names containing slashes and Unicode still needs proxy/router verification before release. Renaming is not part of v1. Changing an individual credential does not change the canonical app or log attribution.
Creating an app
App creation validates configuration without contacting an upstream model. It does not publish QuilrQL or imply that a model is reachable.
Disable means the whole app
PATCH enabled:false to prevent newly admitted runtime traffic once the new configuration has propagated. Settings, provider references, keys, prompts and history remain available to management. Setting enabled:true resumes normal authentication, provider and policy checks.
Whole-app availability is independent of QuilrQL. Disabling an app does not become an inactive policy-governed setting, and re-enabling it does not resurrect expired/revoked keys. This is different from disabling just its primary provider.
Attachment and conversion rules
- Attach an existing enabled shared provider by label.
primary:falsepreserves the current primary;primary:truedeliberately promotes the attachment. provider_labelson an app PATCH replaces the entire ordered selection. Omission preserves it.- A detach is app-local. Reject unresolved routing/policy references and invalid primary/last-provider removal. Replace selection and routing together when needed.
- Legacy inline-provider apps can be read and receive non-provider edits. Provider changes require the explicit conversion endpoint first.
- Conversion supplies the complete shared-provider selection. It preserves the canonical app and its keys; it does not silently create shared providers or publish policy.
Endpoint reference
Expand Full request body specification for every field, including nested configuration. For a focused view, see the configuration schema.
/appsList apps
List enabled and disabled apps in the key's tenant. Credentials are never included.
readPath, query & header parameters 5
limit (query)integeroptionalItems per page.
cursor (query)stringoptionalOpaque cursor returned by this same collection and filters.
name (query)stringoptionalOptional name search.
tag (query)stringoptionalMatch a tag.
enabled (query)booleanoptionalOptional enabled-state filter.
No request body.
curl --request GET \
'https://management.example.com/llmgateway/management/v1/apps?limit=50' \
--header 'Authorization: Bearer <management-key>'
/appsCreate an app
Create a named app and exactly one initial gateway credential. Default key name is Default. Shared providers only. Does not call upstream or publish policy.
config:writecredentials:writePath, query & header parameters 1
Idempotency-Key (header)stringrequiredUnique operation key. Reuse only with the identical request; mismatch returns 409.
Full request body specification application/json
Defaults: enabled true; mode gateway; initial key named Default with no expiry. New omitted guardrail/control sections begin unset, and capability/schema metadata supplies runtime defaults. QuilrQL can independently govern requests.
namestringrequiredTrimmed display name. App lookup is case-insensitive within the authenticated tenant. Ambiguous legacy names return 409.
modestringoptional"gateway""sdk""copilot_studio"initial_keyobjectoptionalInitial key uses Default when omitted. Additional key creation requires a name.
Object fields
namestringoptionalTrimmed, case-insensitively unique among non-revoked keys of this app.
expires_atstring | nulloptionalOmit on create or send null for no expiry. On PATCH, omission preserves the current expiry and null removes it. Expired/revoked credentials cannot be resurrected.
Variant 1 string
stringFuture RFC 3339 timestamp with an explicit timezone.
Also accepts null.
Unknown fields are rejected in this object.
enabledbooleanoptionalWhole-app availability, independent of QuilrQL. Disabled apps retain keys/configuration.
tagsarray<string>optionalComplete replacement.
Array item specification
stringprovider_labelsarray<string>optionalOrdered complete provider selection, primary first. Mutating this field on an inline app requires explicit conversion.
Array item specification
stringExact, trimmed tenant-wide provider label. Immutable after creation.
detectionobjectoptionalStored detection controls. Catalogs validate IDs and action/scope compatibility. Governed updates remain inactive while QuilrQL owns enforcement.
Object fields
data_risk_actionstringoptionalAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
"monitor""partial-redact""redact""block"enabled_categoriesmap<string, boolean>optionalCatalog category/subcategory IDs mapped to enabled state. Unknown selectors are rejected.
Map value specification
booleancategory_actionsmap<string, string>optionalCategory ID to action.
Map value specification
stringAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
Values: "monitor""partial-redact""redact""block"
sub_category_actionsmap<string, map<string, string>>optionalCategory ID to subcategory name to action.
Map value specification
map<string, string>category_scopesmap<string, string>optionalMap value specification
stringValues: "request""response""both"
category_sensitivitiesmap<string, array<string>>optionalMap value specification
array<string>sub_category_sensitivitiesmap<string, map<string, array<string>>>optionalMap value specification
map<string, array<string>>edm_pattern_sensitivitiesmap<string, string>optionalMap value specification
stringValues: "low""medium""high"
custom_definitionsarray<object>optionalFull replacement of definition selections; [] removes selections. Does not delete definitions.
Array item specification
definition_idstringrequiredStable ID from GET /custom-definitions.
enabledbooleanoptionalactionstringoptionalAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
"monitor""partial-redact""redact""block"scopestringoptional"request""response""both"sensitivitystringoptional"low""medium""high"Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
routingobjectoptionalTargets reference attached shared providers and configured models. No inline credentials are accepted. Surface compatibility and sum-of-weights checks are mandatory.
Object fields
groupsarray<object>optionalComplete replacement; [] clears all named request/token groups.
Array item specification
namestringrequiredApp-scoped routing alias.
kindstringrequiredMust match the models and supported API surface.
"chat_completion""anthropic_messages""responses""realtime""vertex_ai""bedrock_runtime"modestringrequiredBalance by request count or token usage.
"requests""tokens"membersarray<object>requiredArray item specification
provider_labelstringrequiredExact, trimmed tenant-wide provider label. Immutable after creation.
modelstringrequiredExact configured model identifier; availability depends on the provider and deployment.
weightnumberrequiredPositive percentage. All members of a group must sum to 100.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
context_routesarray<object>optionalComplete replacement; [] clears custom context routes.
Array item specification
kindstringrequired"chat_completion""anthropic_messages""responses""vertex_ai""bedrock_runtime"contextstringrequiredOnly the supported low-context override is active in this v1 contract.
"low"enabledbooleanoptionaltargetsarray<object>requiredOrdered fallback targets.
Array item specification
provider_labelstringrequiredExact, trimmed tenant-wide provider label. Immutable after creation.
modelstringrequiredExact configured model identifier; availability depends on the provider and deployment.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
context_thresholdsobjectoptionalObject fields
low_max_wordsintegerrequiredmedium_max_wordsintegerrequiredMust be greater than or equal to low_max_words.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
limitsobjectoptionalObject fields
timeoutnumber | nulloptionalUpstream timeout in seconds; null clears the configured override.
Variant 1 number
numberUpstream timeout in seconds; null clears the configured override.
Also accepts null.
concurrency_per_minuteinteger | nulloptionalAdmission count over the existing 60-second window.
Variant 1 integer
integerAdmission count over the existing 60-second window.
Also accepts null.
rate_limitobject | nulloptionalNull clears the request limit.
RateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
token_limitsobject | nulloptionalTokenLimits object
max_per_requestinteger | nulloptionalMaximum input tokens per request; zero disables.
Variant 1 integer
integerMaximum input tokens per request; zero disables.
Also accepts null.
inputobject | nulloptionalRateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
outputobject | nulloptionalRateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
Unknown fields are rejected in this object.
Also accepts null.
model_rate_limitsarray<object>optionalFull replacement; [] removes all model overrides. App and model limits both apply.
Array item specification
provider_labelstringrequiredExact, trimmed tenant-wide provider label. Immutable after creation.
modelstringrequiredExact configured model identifier; availability depends on the provider and deployment.
timeoutnumber | nulloptionalSeconds.
Variant 1 number
numberSeconds.
Also accepts null.
concurrency_per_minuteinteger | nulloptionalRequest admissions per 60 seconds, following existing gateway semantics.
Variant 1 integer
integerRequest admissions per 60 seconds, following existing gateway semantics.
Also accepts null.
rate_limitobject | nulloptionalRateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
token_limitsobject | nulloptionalTokenLimits object
max_per_requestinteger | nulloptionalMaximum input tokens per request; zero disables.
Variant 1 integer
integerMaximum input tokens per request; zero disables.
Also accepts null.
inputobject | nulloptionalRateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
outputobject | nulloptionalRateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
Unknown fields are rejected in this object.
Also accepts null.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
identityobjectoptionalObject fields
jwt_authobject | nulloptionalJwtAuth object
enabledbooleanoptionalallowed_issuersarray<string>optionalArray item specification
stringallowed_client_idsarray<string>optionalArray item specification
stringjwks_urlstringoptionalHTTPS JWKS URL.
Unknown fields are rejected in this object.
Also accepts null.
identity_header_modebooleanoptionalidentity_token_headersarray<string>optionalArray item specification
stringAdditional forwarded identity header name.
identity_token_oid_fallbackbooleanoptionalenforce_identitybooleanoptionalenforce_conversation_idbooleanoptionalallowed_user_domainsarray<string>optionalArray item specification
stringEmail domain without @.
allowed_user_emailsarray<string>optionalArray item specification
stringallowed_source_ipsarray<string> | nulloptionalVariant 1 array<string>
array<string>Also accepts null.
Unknown fields are rejected in this object.
guardian_agentobject | nulloptionalNull removes the complete Guardian configuration.
Guardian object
enabledbooleanoptionalcoding_helpersobjectoptionalObject fields
enabledbooleanoptionaldependency_security_checkbooleanoptionallatest_version_suggestionsbooleanoptionalUnknown fields are rejected in this object.
task_adherenceobjectoptionalObject fields
enabledbooleanoptionalactionstringoptional"nudge""block"sensitivitystringoptional"low""medium""high"agent_purposestringoptionalguardian_agent_promptstringoptionalUnknown fields are rejected in this object.
Unknown fields are rejected in this object.
Also accepts null.
hallucinationobjectoptionalObject fields
enabledbooleanoptionalactionstringoptional"monitor""block"score_thresholdnumberoptionalConfidence threshold from 0 to 1.
risk_levelstringoptionalStored compatibility setting; does not independently select worker behavior.
"low""medium""high"Unknown fields are rejected in this object.
self_serviceobject | nulloptionalNull clears self-service configuration.
SelfService object
enabledbooleanoptionalEnable stored personal self-service credential mode.
access_controlobjectoptionalObject fields
version1requiredself_service_viewerobjectoptionalDeny rules win. A group reference never changes group membership.
Object fields
allow_allbooleanoptionalallow_emailsarray<string>optionalArray item specification
stringdeny_emailsarray<string>optionalArray item specification
stringallow_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
deny_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
Unknown fields are rejected in this object.
settings_update_requesterobjectoptionalDeny rules win. A group reference never changes group membership.
Object fields
allow_allbooleanoptionalallow_emailsarray<string>optionalArray item specification
stringdeny_emailsarray<string>optionalArray item specification
stringallow_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
deny_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
Unknown fields are rejected in this object.
settings_update_directobjectoptionalDeny rules win. A group reference never changes group membership.
Object fields
allow_allbooleanoptionalallow_emailsarray<string>optionalArray item specification
stringdeny_emailsarray<string>optionalArray item specification
stringallow_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
deny_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
Unknown fields are rejected in this object.
show_api_keyobjectoptionalDeny rules win. A group reference never changes group membership.
Object fields
allow_allbooleanoptionalallow_emailsarray<string>optionalArray item specification
stringdeny_emailsarray<string>optionalArray item specification
stringallow_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
deny_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
Unknown fields are rejected in this object.
show_logs_for_all_usersobjectoptionalDeny rules win. A group reference never changes group membership.
Object fields
allow_allbooleanoptionalallow_emailsarray<string>optionalArray item specification
stringdeny_emailsarray<string>optionalArray item specification
stringallow_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
deny_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Also accepts null.
smart_group_policiesarray<object>optionalComplete replacement of app-local overrides referencing existing groups.
Array item specification
group_namestringrequiredExisting smart-group name.
enabledbooleanoptionaldetectionobjectrequiredStored detection controls. Catalogs validate IDs and action/scope compatibility. Governed updates remain inactive while QuilrQL owns enforcement.
Object fields
data_risk_actionstringoptionalAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
"monitor""partial-redact""redact""block"enabled_categoriesmap<string, boolean>optionalCatalog category/subcategory IDs mapped to enabled state. Unknown selectors are rejected.
Map value specification
booleancategory_actionsmap<string, string>optionalCategory ID to action.
Map value specification
stringAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
Values: "monitor""partial-redact""redact""block"
sub_category_actionsmap<string, map<string, string>>optionalCategory ID to subcategory name to action.
Map value specification
map<string, string>category_scopesmap<string, string>optionalMap value specification
stringValues: "request""response""both"
category_sensitivitiesmap<string, array<string>>optionalMap value specification
array<string>sub_category_sensitivitiesmap<string, map<string, array<string>>>optionalMap value specification
map<string, array<string>>edm_pattern_sensitivitiesmap<string, string>optionalMap value specification
stringValues: "low""medium""high"
custom_definitionsarray<object>optionalFull replacement of definition selections; [] removes selections. Does not delete definitions.
Array item specification
definition_idstringrequiredStable ID from GET /custom-definitions.
enabledbooleanoptionalactionstringoptionalAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
"monitor""partial-redact""redact""block"scopestringoptional"request""response""both"sensitivitystringoptional"low""medium""high"Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
token_savingobjectoptionalObject fields
smart_json_compressionbooleanoptionalhtml_to_textbooleanoptionalmarkdown_to_textbooleanoptionaltext_compressionbooleanoptionalUnknown fields are rejected in this object.
prompt_storeobjectoptionalObject fields
require_system_from_storebooleanoptionalOnly enforcement is controlled here; use prompt endpoints for content.
Unknown fields are rejected in this object.
alertingobject | nulloptionalNull clears alert configuration.
Alerting object
app_levelobjectoptionalObject fields
enabledbooleanoptionalwindow_minutesintegeroptionalfailure_rate_thresholdnumberoptionalPercentage.
minimum_requestsintegeroptionalcooldown_minutesintegeroptionalnotify_on_recoverybooleanoptionalUnknown fields are rejected in this object.
provider_levelobjectoptionalObject fields
enabledbooleanoptionalwindow_minutesintegeroptionalfailure_rate_thresholdnumberoptionalPercentage.
minimum_requestsintegeroptionalcooldown_minutesintegeroptionalnotify_on_recoverybooleanoptionalUnknown fields are rejected in this object.
channelsobjectoptionalObject fields
emailsarray<string>optionalArray item specification
stringwebhooksarray<object>optionalArray item specification
idstringrequiredtypestringrequired"slack""generic"labelstringoptionalurlstringoptionalSecret webhook URL. Omission on an existing webhook preserves it.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Also accepts null.
Unknown fields are rejected in this object.
Conditional requirements
[
{
"if": {
"properties": {
"mode": {
"const": "gateway"
}
}
},
"then": {
"required": [
"provider_labels"
]
},
"else": {
"not": {
"required": [
"provider_labels"
]
}
}
}
]
curl --request POST \
'https://management.example.com/llmgateway/management/v1/apps' \
--header 'Authorization: Bearer <management-key>' \
--header 'Idempotency-Key: operation-001' \
--header 'Content-Type: application/json' \
--data '{
"name": "Support Bot",
"provider_labels": [
"Production OpenAI"
],
"tags": [
"production"
]
}'
/apps/{app_name}Read an app
Read stored configuration, provider references, version and policy authority. Governed settings are not a universal effective policy result.
readPath, query & header parameters 1
app_name (path)stringrequiredTrimmed display name. App lookup is case-insensitive within the authenticated tenant. Ambiguous legacy names return 409.
No request body.
curl --request GET \
'https://management.example.com/llmgateway/management/v1/apps/Support%20Bot' \
--header 'Authorization: Bearer <management-key>'
/apps/{app_name}Update or disable an app
Partial update; enabled false suspends the whole app. No app-delete operation. Governed fields save with an inactive_under_quilrql warning when authority is active.
config:writePath, query & header parameters 2
app_name (path)stringrequiredTrimmed display name. App lookup is case-insensitive within the authenticated tenant. Ambiguous legacy names return 409.
If-Match (header)stringrequiredExact quoted ETag from a current resource read.
Full request body specification application/json
Omitted fields are preserved. Objects merge declared fields, arrays replace, and null clears only explicitly nullable fields. All changes are validated together.
enabledbooleanoptionalWhole-app availability, independent of QuilrQL. Disabled apps retain keys/configuration.
tagsarray<string>optionalComplete replacement.
Array item specification
stringprovider_labelsarray<string>optionalOrdered complete provider selection, primary first. Mutating this field on an inline app requires explicit conversion.
Array item specification
stringExact, trimmed tenant-wide provider label. Immutable after creation.
detectionobjectoptionalStored detection controls. Catalogs validate IDs and action/scope compatibility. Governed updates remain inactive while QuilrQL owns enforcement.
Object fields
data_risk_actionstringoptionalAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
"monitor""partial-redact""redact""block"enabled_categoriesmap<string, boolean>optionalCatalog category/subcategory IDs mapped to enabled state. Unknown selectors are rejected.
Map value specification
booleancategory_actionsmap<string, string>optionalCategory ID to action.
Map value specification
stringAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
Values: "monitor""partial-redact""redact""block"
sub_category_actionsmap<string, map<string, string>>optionalCategory ID to subcategory name to action.
Map value specification
map<string, string>category_scopesmap<string, string>optionalMap value specification
stringValues: "request""response""both"
category_sensitivitiesmap<string, array<string>>optionalMap value specification
array<string>sub_category_sensitivitiesmap<string, map<string, array<string>>>optionalMap value specification
map<string, array<string>>edm_pattern_sensitivitiesmap<string, string>optionalMap value specification
stringValues: "low""medium""high"
custom_definitionsarray<object>optionalFull replacement of definition selections; [] removes selections. Does not delete definitions.
Array item specification
definition_idstringrequiredStable ID from GET /custom-definitions.
enabledbooleanoptionalactionstringoptionalAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
"monitor""partial-redact""redact""block"scopestringoptional"request""response""both"sensitivitystringoptional"low""medium""high"Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
routingobjectoptionalTargets reference attached shared providers and configured models. No inline credentials are accepted. Surface compatibility and sum-of-weights checks are mandatory.
Object fields
groupsarray<object>optionalComplete replacement; [] clears all named request/token groups.
Array item specification
namestringrequiredApp-scoped routing alias.
kindstringrequiredMust match the models and supported API surface.
"chat_completion""anthropic_messages""responses""realtime""vertex_ai""bedrock_runtime"modestringrequiredBalance by request count or token usage.
"requests""tokens"membersarray<object>requiredArray item specification
provider_labelstringrequiredExact, trimmed tenant-wide provider label. Immutable after creation.
modelstringrequiredExact configured model identifier; availability depends on the provider and deployment.
weightnumberrequiredPositive percentage. All members of a group must sum to 100.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
context_routesarray<object>optionalComplete replacement; [] clears custom context routes.
Array item specification
kindstringrequired"chat_completion""anthropic_messages""responses""vertex_ai""bedrock_runtime"contextstringrequiredOnly the supported low-context override is active in this v1 contract.
"low"enabledbooleanoptionaltargetsarray<object>requiredOrdered fallback targets.
Array item specification
provider_labelstringrequiredExact, trimmed tenant-wide provider label. Immutable after creation.
modelstringrequiredExact configured model identifier; availability depends on the provider and deployment.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
context_thresholdsobjectoptionalObject fields
low_max_wordsintegerrequiredmedium_max_wordsintegerrequiredMust be greater than or equal to low_max_words.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
limitsobjectoptionalObject fields
timeoutnumber | nulloptionalUpstream timeout in seconds; null clears the configured override.
Variant 1 number
numberUpstream timeout in seconds; null clears the configured override.
Also accepts null.
concurrency_per_minuteinteger | nulloptionalAdmission count over the existing 60-second window.
Variant 1 integer
integerAdmission count over the existing 60-second window.
Also accepts null.
rate_limitobject | nulloptionalNull clears the request limit.
RateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
token_limitsobject | nulloptionalTokenLimits object
max_per_requestinteger | nulloptionalMaximum input tokens per request; zero disables.
Variant 1 integer
integerMaximum input tokens per request; zero disables.
Also accepts null.
inputobject | nulloptionalRateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
outputobject | nulloptionalRateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
Unknown fields are rejected in this object.
Also accepts null.
model_rate_limitsarray<object>optionalFull replacement; [] removes all model overrides. App and model limits both apply.
Array item specification
provider_labelstringrequiredExact, trimmed tenant-wide provider label. Immutable after creation.
modelstringrequiredExact configured model identifier; availability depends on the provider and deployment.
timeoutnumber | nulloptionalSeconds.
Variant 1 number
numberSeconds.
Also accepts null.
concurrency_per_minuteinteger | nulloptionalRequest admissions per 60 seconds, following existing gateway semantics.
Variant 1 integer
integerRequest admissions per 60 seconds, following existing gateway semantics.
Also accepts null.
rate_limitobject | nulloptionalRateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
token_limitsobject | nulloptionalTokenLimits object
max_per_requestinteger | nulloptionalMaximum input tokens per request; zero disables.
Variant 1 integer
integerMaximum input tokens per request; zero disables.
Also accepts null.
inputobject | nulloptionalRateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
outputobject | nulloptionalRateLimit object
valueintegerrequiredMaximum events in the window; zero disables this limit.
durationstringrequired"minute""hour""day"Unknown fields are rejected in this object.
Also accepts null.
Unknown fields are rejected in this object.
Also accepts null.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
identityobjectoptionalObject fields
jwt_authobject | nulloptionalJwtAuth object
enabledbooleanoptionalallowed_issuersarray<string>optionalArray item specification
stringallowed_client_idsarray<string>optionalArray item specification
stringjwks_urlstringoptionalHTTPS JWKS URL.
Unknown fields are rejected in this object.
Also accepts null.
identity_header_modebooleanoptionalidentity_token_headersarray<string>optionalArray item specification
stringAdditional forwarded identity header name.
identity_token_oid_fallbackbooleanoptionalenforce_identitybooleanoptionalenforce_conversation_idbooleanoptionalallowed_user_domainsarray<string>optionalArray item specification
stringEmail domain without @.
allowed_user_emailsarray<string>optionalArray item specification
stringallowed_source_ipsarray<string> | nulloptionalVariant 1 array<string>
array<string>Also accepts null.
Unknown fields are rejected in this object.
guardian_agentobject | nulloptionalNull removes the complete Guardian configuration.
Guardian object
enabledbooleanoptionalcoding_helpersobjectoptionalObject fields
enabledbooleanoptionaldependency_security_checkbooleanoptionallatest_version_suggestionsbooleanoptionalUnknown fields are rejected in this object.
task_adherenceobjectoptionalObject fields
enabledbooleanoptionalactionstringoptional"nudge""block"sensitivitystringoptional"low""medium""high"agent_purposestringoptionalguardian_agent_promptstringoptionalUnknown fields are rejected in this object.
Unknown fields are rejected in this object.
Also accepts null.
hallucinationobjectoptionalObject fields
enabledbooleanoptionalactionstringoptional"monitor""block"score_thresholdnumberoptionalConfidence threshold from 0 to 1.
risk_levelstringoptionalStored compatibility setting; does not independently select worker behavior.
"low""medium""high"Unknown fields are rejected in this object.
self_serviceobject | nulloptionalNull clears self-service configuration.
SelfService object
enabledbooleanoptionalEnable stored personal self-service credential mode.
access_controlobjectoptionalObject fields
version1requiredself_service_viewerobjectoptionalDeny rules win. A group reference never changes group membership.
Object fields
allow_allbooleanoptionalallow_emailsarray<string>optionalArray item specification
stringdeny_emailsarray<string>optionalArray item specification
stringallow_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
deny_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
Unknown fields are rejected in this object.
settings_update_requesterobjectoptionalDeny rules win. A group reference never changes group membership.
Object fields
allow_allbooleanoptionalallow_emailsarray<string>optionalArray item specification
stringdeny_emailsarray<string>optionalArray item specification
stringallow_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
deny_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
Unknown fields are rejected in this object.
settings_update_directobjectoptionalDeny rules win. A group reference never changes group membership.
Object fields
allow_allbooleanoptionalallow_emailsarray<string>optionalArray item specification
stringdeny_emailsarray<string>optionalArray item specification
stringallow_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
deny_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
Unknown fields are rejected in this object.
show_api_keyobjectoptionalDeny rules win. A group reference never changes group membership.
Object fields
allow_allbooleanoptionalallow_emailsarray<string>optionalArray item specification
stringdeny_emailsarray<string>optionalArray item specification
stringallow_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
deny_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
Unknown fields are rejected in this object.
show_logs_for_all_usersobjectoptionalDeny rules win. A group reference never changes group membership.
Object fields
allow_allbooleanoptionalallow_emailsarray<string>optionalArray item specification
stringdeny_emailsarray<string>optionalArray item specification
stringallow_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
deny_smart_groupsarray<string>optionalArray item specification
stringExisting gateway smart-group name.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Also accepts null.
smart_group_policiesarray<object>optionalComplete replacement of app-local overrides referencing existing groups.
Array item specification
group_namestringrequiredExisting smart-group name.
enabledbooleanoptionaldetectionobjectrequiredStored detection controls. Catalogs validate IDs and action/scope compatibility. Governed updates remain inactive while QuilrQL owns enforcement.
Object fields
data_risk_actionstringoptionalAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
"monitor""partial-redact""redact""block"enabled_categoriesmap<string, boolean>optionalCatalog category/subcategory IDs mapped to enabled state. Unknown selectors are rejected.
Map value specification
booleancategory_actionsmap<string, string>optionalCategory ID to action.
Map value specification
stringAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
Values: "monitor""partial-redact""redact""block"
sub_category_actionsmap<string, map<string, string>>optionalCategory ID to subcategory name to action.
Map value specification
map<string, string>category_scopesmap<string, string>optionalMap value specification
stringValues: "request""response""both"
category_sensitivitiesmap<string, array<string>>optionalMap value specification
array<string>sub_category_sensitivitiesmap<string, map<string, array<string>>>optionalMap value specification
map<string, array<string>>edm_pattern_sensitivitiesmap<string, string>optionalMap value specification
stringValues: "low""medium""high"
custom_definitionsarray<object>optionalFull replacement of definition selections; [] removes selections. Does not delete definitions.
Array item specification
definition_idstringrequiredStable ID from GET /custom-definitions.
enabledbooleanoptionalactionstringoptionalAdversarial detections do not expose redactable spans; incompatible actions are rejected by catalog validation.
"monitor""partial-redact""redact""block"scopestringoptional"request""response""both"sensitivitystringoptional"low""medium""high"Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
token_savingobjectoptionalObject fields
smart_json_compressionbooleanoptionalhtml_to_textbooleanoptionalmarkdown_to_textbooleanoptionaltext_compressionbooleanoptionalUnknown fields are rejected in this object.
prompt_storeobjectoptionalObject fields
require_system_from_storebooleanoptionalOnly enforcement is controlled here; use prompt endpoints for content.
Unknown fields are rejected in this object.
alertingobject | nulloptionalNull clears alert configuration.
Alerting object
app_levelobjectoptionalObject fields
enabledbooleanoptionalwindow_minutesintegeroptionalfailure_rate_thresholdnumberoptionalPercentage.
minimum_requestsintegeroptionalcooldown_minutesintegeroptionalnotify_on_recoverybooleanoptionalUnknown fields are rejected in this object.
provider_levelobjectoptionalObject fields
enabledbooleanoptionalwindow_minutesintegeroptionalfailure_rate_thresholdnumberoptionalPercentage.
minimum_requestsintegeroptionalcooldown_minutesintegeroptionalnotify_on_recoverybooleanoptionalUnknown fields are rejected in this object.
channelsobjectoptionalObject fields
emailsarray<string>optionalArray item specification
stringwebhooksarray<object>optionalArray item specification
idstringrequiredtypestringrequired"slack""generic"labelstringoptionalurlstringoptionalSecret webhook URL. Omission on an existing webhook preserves it.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Also accepts null.
Unknown fields are rejected in this object.
curl --request PATCH \
'https://management.example.com/llmgateway/management/v1/apps/Support%20Bot' \
--header 'Authorization: Bearer <management-key>' \
--header 'If-Match: "resource-version"' \
--header 'Content-Type: application/json' \
--data '{
"enabled": false
}'
/apps/{app_name}/providersList app providers
Read ordered attachments and primary status, with no upstream secrets.
readPath, query & header parameters 1
app_name (path)stringrequiredTrimmed display name. App lookup is case-insensitive within the authenticated tenant. Ambiguous legacy names return 409.
No request body.
curl --request GET \
'https://management.example.com/llmgateway/management/v1/apps/Support%20Bot/providers' \
--header 'Authorization: Bearer <management-key>'
/apps/{app_name}/providers/{label}Attach a shared provider
Idempotently attach an existing enabled provider; preserve other attachments. primary true explicitly promotes it. Inline apps require conversion first.
config:writePath, query & header parameters 3
app_name (path)stringrequiredTrimmed display name. App lookup is case-insensitive within the authenticated tenant. Ambiguous legacy names return 409.
label (path)stringrequiredExact, trimmed tenant-wide provider label. Immutable after creation.
If-Match (header)stringrequiredExact quoted ETag from a current resource read.
Full request body specification application/json
primarybooleanoptionalMake this provider primary. false appends without changing the existing primary.
Unknown fields are rejected in this object.
curl --request PUT \
'https://management.example.com/llmgateway/management/v1/apps/Support%20Bot/providers/Production%20OpenAI' \
--header 'Authorization: Bearer <management-key>' \
--header 'If-Match: "resource-version"' \
--header 'Content-Type: application/json' \
--data '{
"primary": false
}'
/apps/{app_name}/providers/{label}Detach an app provider
Detach from this app only. Reject last-provider/primary and routing/policy dependency conflicts; use an app PATCH to supply a complete valid replacement selection and routes.
config:writePath, query & header parameters 3
app_name (path)stringrequiredTrimmed display name. App lookup is case-insensitive within the authenticated tenant. Ambiguous legacy names return 409.
label (path)stringrequiredExact, trimmed tenant-wide provider label. Immutable after creation.
If-Match (header)stringrequiredExact quoted ETag from a current resource read.
No request body.
curl --request DELETE \
'https://management.example.com/llmgateway/management/v1/apps/Support%20Bot/providers/Production%20OpenAI' \
--header 'Authorization: Bearer <management-key>' \
--header 'If-Match: "resource-version"'
/apps/{app_name}/provider-conversionConvert inline providers
Replace the complete inline selection with existing shared provider references. Preserve canonical app identity, keys and unrelated settings. No implicit provider creation.
config:writePath, query & header parameters 3
app_name (path)stringrequiredTrimmed display name. App lookup is case-insensitive within the authenticated tenant. Ambiguous legacy names return 409.
If-Match (header)stringrequiredExact quoted ETag from a current resource read.
Idempotency-Key (header)stringrequiredUnique operation key. Reuse only with the identical request; mismatch returns 409.
Full request body specification application/json
Explicitly replace inline providers with shared references. Supply matching route replacements when required. Preserves gateway keys and unrelated app state.
provider_labelsarray<string>requiredComplete desired provider selection, primary first.
Array item specification
stringExact, trimmed tenant-wide provider label. Immutable after creation.
routingobjectoptionalTargets reference attached shared providers and configured models. No inline credentials are accepted. Surface compatibility and sum-of-weights checks are mandatory.
Object fields
groupsarray<object>optionalComplete replacement; [] clears all named request/token groups.
Array item specification
namestringrequiredApp-scoped routing alias.
kindstringrequiredMust match the models and supported API surface.
"chat_completion""anthropic_messages""responses""realtime""vertex_ai""bedrock_runtime"modestringrequiredBalance by request count or token usage.
"requests""tokens"membersarray<object>requiredArray item specification
provider_labelstringrequiredExact, trimmed tenant-wide provider label. Immutable after creation.
modelstringrequiredExact configured model identifier; availability depends on the provider and deployment.
weightnumberrequiredPositive percentage. All members of a group must sum to 100.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
context_routesarray<object>optionalComplete replacement; [] clears custom context routes.
Array item specification
kindstringrequired"chat_completion""anthropic_messages""responses""vertex_ai""bedrock_runtime"contextstringrequiredOnly the supported low-context override is active in this v1 contract.
"low"enabledbooleanoptionaltargetsarray<object>requiredOrdered fallback targets.
Array item specification
provider_labelstringrequiredExact, trimmed tenant-wide provider label. Immutable after creation.
modelstringrequiredExact configured model identifier; availability depends on the provider and deployment.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
context_thresholdsobjectoptionalObject fields
low_max_wordsintegerrequiredmedium_max_wordsintegerrequiredMust be greater than or equal to low_max_words.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
Unknown fields are rejected in this object.
curl --request POST \
'https://management.example.com/llmgateway/management/v1/apps/Support%20Bot/provider-conversion' \
--header 'Authorization: Bearer <management-key>' \
--header 'If-Match: "resource-version"' \
--header 'Idempotency-Key: operation-001' \
--header 'Content-Type: application/json' \
--data '{
"provider_labels": [
"Production OpenAI"
],
"routing": {
"groups": [],
"context_routes": []
}
}'