Inference API
Call any model with the SDK you already use.
One gateway, every provider format.
The client-facing model APIs of the LLM Gateway, in each provider's own wire format: OpenAI, Azure OpenAI, Anthropic, AWS Bedrock, Gemini and Vertex AI, and more. Browse every operation and what the gateway adds to it, or import the OpenAPI document into your API gateway.
The Inference API is the part of the LLM Gateway your applications call to reach models. Each API family speaks a provider's own wire format, so an existing SDK works by pointing its base URL at the gateway. Requests are logged and checked against the app's access rules and limits; which other gateway features run (guardrails, routing, failover, response cache and more) depends on the route. See Gateway features by route.
This page documents every operation in the OpenAPI 3.1 document and everything the gateway adds on top of the provider's API: credential headers, response headers, error codes and guardrail responses. To place the gateway behind your own API gateway, see Import into your API gateway (Kong). For how one client format reaches any provider, see any-to-any formats.
Choose an API family
Chat, completions, embeddings, audio, images, moderations, OCR, files, batches, videos, decisions and models.
31 operationsOpenAI ResponsesCreate, stream, retrieve, cancel and delete model responses.
6 operationsAzure OpenAIDeployment-style paths for the Azure OpenAI SDK.
11 operationsOpenAI RealtimeWebSocket sessions relayed to an OpenAI or Azure OpenAI realtime upstream.
1 operationOpenAI AssistantsAssistants v2: assistants, threads, messages, runs and run steps.
23 operationsAnthropic MessagesMessages, token counting and models for the Anthropic SDK and Claude Code.
5 operationsAWS Bedrock RuntimeConverse, ConverseStream, InvokeModel and InvokeModelWithResponseStream.
4 operationsGemini and Vertex AIgenerateContent, streaming, token counting, embeddings and predict.
15 operationsRerankCohere-compatible document reranking for every rerank provider.
1 operationMistralMistral's own OCR and fill-in-the-middle APIs.
2 operationsxAIImages, videos, batches and Responses with xAI server-side tools.
16 operationsSarvamSpeech to text, text to speech, translation, transliteration and language identification.
6 operationsTypeSafe System OneDecision models answering typed questions with probabilities.
2 operationsSpecificationFetch this OpenAPI document from the gateway.
1 operationBase URL
The spec has one server, https://{region}.quilr.ai, with the region as a variable. Combine the base URL with an operation's path, or set it as your SDK's base URL as described in the integration guide.
| Region | Base URL | region value |
|---|---|---|
| USA 1 (US Central West) (default) | https://guardrails-usa-1.quilr.ai | guardrails-usa-1 |
| USA 2 (US East) | https://guardrails-usa-2.quilr.ai | guardrails-usa-2 |
| Europe | https://guardrails-europe-1.quilr.ai | guardrails-europe-1 |
| India 1 (Mumbai) | https://guardrails-india-1.quilr.ai | guardrails-india-1 |
| India 2 (Mumbai) | https://guardrails-india-2.quilr.ai | guardrails-india-2 |
| Japan (Tokyo) | https://guardrails-jp-1.quilr.ai | guardrails-jp-1 |
| Global | https://guardrails.quilr.ai | guardrails |
Configuration, keys and limits apply per region: use the regional host your organization uses. For a dedicated or on-premises gateway, replace the URL with your gateway's. Your Quilr contact can provide a copy of the spec with your gateway URL as its server, or you can edit servers yourself.
Authentication
Send a Quilr API key (sk-quilr-...) or a Quilr-verified JWT. Every family accepts Authorization: Bearer, plus the header its provider's SDK uses and the key headers common API gateways use. Each operation lists the headers it accepts under ACCEPTS.
- Send one credential header. When
Authorizationis present it decides: a malformed value is rejected and no other header is tried. Otherwise the protocol header is read (for exampleapi-key,x-api-keyorx-goog-api-key), thenapikey,ocp-apim-subscription-keyandx-apikey. - Credentials are never forwarded. The gateway removes the credential header before calling the provider, which is authenticated with the credential configured on the app.
- Bedrock. AWS SDKs sign requests with Signature Version 4, using the Quilr API key as the access key id. A Bearer Quilr API key is accepted instead.
- Realtime. Browser clients that cannot set headers on a WebSocket handshake can send the key as a query parameter or a
Sec-WebSocket-Protocolentry. Prefer a header: query strings can appear in proxy access logs.
| Header | Accepted on | Details |
|---|---|---|
Authorization: Bearer | Every family | Authorization: Bearer with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT. When present, this header decides: a malformed value is rejected and no other header is tried. |
Authorization: AWS4-HMAC-SHA256 (SigV4) | AWS Bedrock Runtime | AWS Signature Version 4 (AWS4-HMAC-SHA256 ...) computed by an AWS SDK configured with the gateway as its endpoint; the access key id is the Quilr API key. A Bearer Quilr API key is accepted instead. |
api-key | Specification, Mistral, Azure OpenAI, OpenAI Assistants, OpenAI-compatible, OpenAI Realtime, OpenAI Responses, Rerank, Sarvam, TypeSafe System One, xAI | Azure OpenAI style api-key with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT. |
x-api-key | Every family | x-api-key with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT. |
apikey | Every family | Kong key-auth style apikey header with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT. |
x-goog-api-key | Gemini and Vertex AI | Gemini SDK style x-goog-api-key with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT. |
ocp-apim-subscription-key | Every family | Azure API Management style header with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT. |
api-subscription-key | Sarvam | Sarvam SDK style api-subscription-key with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT. |
x-apikey | Every family | Apigee style x-apikey header with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT. |
Identity, conversation, provider and prompt headers
Model-call operations also take these optional request headers. Each appears under the operation's parameters.
Gateway features by route
Each operation lists the gateway features that apply on its route under GATEWAY (from x-quilr-gateway-features in the spec). Endpoint-family routes (moderations, images, OCR, completions, files, batches, videos, and the Mistral and xAI media, batch and fill-in-the-middle routes) run no guardrails and no failover. For what each guardrail covers per endpoint, see security guardrails endpoint coverage.
| Route | Request guardrails | Response guardrails | Guardian | Hallucination | Attachments | Model access | Routing groups | Content routing | Failover | Limits | Token saving | Prompt Store | Universal prompt | Response cache |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| OpenAI Chat and Completions Create a chat completion | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenAI Chat and Completions Create a text completion | - | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| OpenAI Embeddings Create embeddings | ✓ | - | - | - | - | ✓ | - | - | ✓ | ✓ | - | - | - | ✓ |
| OpenAI Audio Generate speech | ✓ | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| OpenAI Audio Transcribe audio, Translate audio to English | ✓ | ✓ | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| OpenAI Images Edit images, Generate images, Create image variations | - | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| OpenAI Moderations and OCR Classify content, Extract text from a document | - | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| OpenAI Files List files, Upload a file and 3 more | - | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| OpenAI Batches List batches, Create a batch and 3 more | - | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| OpenAI Videos List videos, Create a video and 4 more | - | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| OpenAI Decisions Answer decision questions | ✓ | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| OpenAI Responses Create a model response, Delete a stored response and 3 more | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - |
| Azure OpenAI Generate speech | ✓ | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| Azure OpenAI Transcribe audio, Translate audio to English | ✓ | ✓ | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| Azure OpenAI Create a chat completion | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Azure OpenAI Create embeddings | ✓ | - | - | - | - | ✓ | - | - | ✓ | ✓ | - | - | - | ✓ |
| Azure OpenAI Create a model response, Delete a stored response and 3 more | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - |
| OpenAI Realtime Open a Realtime session (WebSocket) | - | - | - | - | - | ✓ | ✓ | - | - | ✓ | - | - | - | - |
| OpenAI Assistants List assistants, Create an assistant and 21 more | ✓ | ✓ | ✓ | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| Anthropic Messages Create a message | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| AWS Bedrock Runtime Converse, Converse with a response stream and 2 more | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | ✓ | - |
| Google Gemini and Vertex AI Batch embed contents (Gemini API path), Count tokens (Gemini API path) and 13 more | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - |
| Rerank Rerank documents | ✓ | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| Mistral Create a fill-in-the-middle completion, Extract text from a document | - | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| xAI Images and Videos Edit images, Generate images and 4 more | - | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| xAI Batches List batches, Create a batch and 5 more | - | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| xAI Responses Create a response, Delete a response, Get a response | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - |
| Sarvam Transcribe speech, Transcribe and translate speech and 3 more | ✓ | ✓ | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| Sarvam Synthesize speech | ✓ | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
| TypeSafe System One Answer System One decision questions | ✓ | - | - | - | - | ✓ | - | - | - | ✓ | - | - | - | - |
No gateway features (no model call): Anthropic Messages: Count message tokens, Anthropic Messages: List models, Anthropic Messages: Retrieve a model, Anthropic Messages: Get the caller's quota usage, Specification: Get this OpenAPI document, Azure OpenAI: List models, OpenAI Models: List models, OpenAI Models: Retrieve a model, OpenAI Quota Usage: Get my quota usage, OpenAI Responses: Read the caller's quota usage, TypeSafe System One: List decision models.
The OpenAI-compatible files, batches and videos routes are off by default and answer 404 endpoint_not_enabled until they are enabled for the gateway deployment. See endpoint families.
Request and response bodies
Request and response schemas document the main fields only and allow additional fields: the gateway forwards provider options it does not know, so a new provider parameter works without a gateway change. Do not enable strict body validation that rejects unknown fields, in your API gateway or in a client-side validator.
Gateway response headers
On most model routes, provider response headers pass through unchanged; endpoint-family routes do not relay them (the operation's description says so). On top of them, the gateway adds its own headers. A provider can never set an x-quilr-* header: they are removed from upstream responses, so any you receive came from the gateway.
- Correlation.
X-Quilr-Request-IDidentifies the request in gateway logs. Quote it when you contact support. - Routing.
X-Quilr-Routeis the opaque id of the routing rule that chose the upstream (r_and 16 hex characters, ordefault), andX-Quilr-Served-Modelthe model actually called. See routing and failover. - Retries and failover.
X-Quilr-AttemptsandX-Quilr-Failoverreport same-target retries and moves to another target. See failover. - Response cache.
X-Quilr-CacheandAgemark a response served from the app's response cache. - Quotas and budgets.
RateLimit-PolicyandRateLimit(IETF format) describe the tightest quota, withX-Quilr-Quota-Remaining,X-Quilr-Quota-Reset,X-Quilr-Quota-Warning,X-Quilr-Budget-OverflowandX-Quilr-Quota-Scope. See rate, token and budget limits. - Errors.
X-Quilr-Error-SourceandX-Quilr-Error-Codesay who raised an error and its code,Retry-Afterwhen to retry, andLinkan administrator's help link. A 429 addsX-RateLimit-*,X-Quilr-Quota-Id,X-Quilr-Quota-Blocked-ByandX-Should-Retry.
The gateway headers are not CORS-exposed, so cross-origin JavaScript in a browser cannot read them. Server-side clients can.
Every header, with its exact format and when it is sent. Each operation's Responses panel lists the headers of each status.
| Header | Sent on | Meaning |
|---|---|---|
Age | Success | Seconds since the cached response was stored (cache hits only). |
Link | Errors | <url>; rel="help": help link an administrator attached to this error (buffered responses only). |
RateLimit | Success and errors | IETF RateLimit for the tightest quota: limit=<n>, remaining=<n>, reset=<seconds> (reset omitted for lifetime windows). Present when a quota or budget applies to the request (on success, on later errors and on streams). Values are a snapshot taken before the upstream call: this request's request count is included, its tokens and spend are not. |
RateLimit-Policy | Success and errors | IETF RateLimit-Policy: one item per enforced quota, <limit>;w=<window seconds>;qu="<metric>";id="<quota id>" (w omitted for lifetime windows; spend in USD). Present when a quota or budget applies to the request (on success, on later errors and on streams). Values are a snapshot taken before the upstream call: this request's request count is included, its tokens and spend are not. |
Retry-After | Errors | Seconds to wait before retrying (quota and limit refusals, no available target, or relayed from the provider). |
X-Quilr-Attempts | Success and errors | Number of upstream sends made, same-target retries included. Only sent when greater than 1; also on errors. |
X-Quilr-Budget-Overflow | Success | true when a quota admitted this request inside its overflow band (at or over its limit but under the hard stop). |
X-Quilr-Cache | Success | HIT or MISS when the app's response cache is on and the request was eligible (non-streaming Chat Completions, Anthropic Messages, Embeddings). Absent on bypass. Send Cache-Control: no-cache to skip the lookup (the response is still stored) or no-store to skip both. |
X-Quilr-Error-Code | Errors | The error code (see x-quilr-error-codes). Sent on upstream failures, routing and translation errors, and Bedrock and Google-format errors that carry a gateway code; elsewhere the code is in the body. |
X-Quilr-Error-Source | Errors | upstream when the provider failed (status and scrubbed reason relayed), gateway for the gateway's own routing refusals. |
X-Quilr-Failover | Success and errors | Failover tier of the target that served, when it was not the first choice: route (another member of the route), fallback (an explicit fallback), same_model (the same model on another provider) or app (another target of the app). Also on errors. |
X-Quilr-Quota-Blocked-By | Errors | Comma-separated ids of every quota that refused the request (429). |
X-Quilr-Quota-Id | Errors | Id of the primary exhausted quota (429 quota_exceeded). |
X-Quilr-Quota-Remaining | Success and errors | Remaining allowance of the tightest quota (USD for spend). Present when a quota or budget applies to the request (on success, on later errors and on streams). Values are a snapshot taken before the upstream call: this request's request count is included, its tokens and spend are not. |
X-Quilr-Quota-Reset | Success and errors | Reset time of the tightest quota (ISO 8601 UTC); omitted for lifetime windows. Present when a quota or budget applies to the request (on success, on later errors and on streams). Values are a snapshot taken before the upstream call: this request's request count is included, its tokens and spend are not. |
X-Quilr-Quota-Scope | Success and errors | node: quota counters are kept per gateway node; shared: counters are shared by every gateway node in the region. Sent whenever any quota header is. |
X-Quilr-Quota-Warning | Success | id=<quota id>; pct=<used percent>: the most-used quota at or past one of its alert thresholds. |
X-Quilr-Request-ID | Success and errors | Gateway request id (UUID). Quote it to support. Sent on every response of Chat Completions, Anthropic Messages, Embeddings and Bedrock Runtime, and on streams the gateway had to commit early; on other APIs only on errors rewritten by an administrator's friendly-error rule. |
X-Quilr-Route | Success | Opaque, stable id of the routing rule that chose the upstream: r_ plus 16 hex digits, or default. Never a rule name; administrators map it to a rule in the routing summary. Sent on successful responses (status below 400) that reached routing, cached responses included. |
X-Quilr-Served-Model | Success | Upstream model id the gateway actually called (on a cache hit, the model of the cached response). Same condition as X-Quilr-Route; omitted when the deployment hides model identity, and on streams the gateway had to commit early. |
X-Quilr-Token-Count-Source | Success | estimate when the gateway counted tokens itself instead of the provider (the provider has no counting endpoint, or the model is served through another API). |
X-RateLimit-Limit | Errors | Limit of the exhausted quota or app limit (429). |
X-RateLimit-Remaining | Errors | Remaining allowance of the exhausted quota or app limit (429). |
X-RateLimit-Reset | Errors | Unix time (seconds) the exhausted quota or limit resets (429). |
X-Should-Retry | Errors | false when retrying cannot help (a budget is exhausted, a zero allowance, or the administrator chose so). OpenAI and Anthropic SDKs honour it. |
x-amzn-ErrorType | Errors | Bedrock APIs: AWS exception name of the error, e.g. ThrottlingException. |
x-amzn-RequestId | Errors | Bedrock APIs: request id (the gateway's on gateway errors, AWS's on success). |
Errors and error codes
Errors come back in the calling family's own format, so your SDK raises its usual exception. Each operation's Responses panel names the error schema it uses:
- Who raised it. Read
X-Quilr-Error-Source(upstreamwhen the provider failed,gatewayfor the gateway's own routing refusals) orerror.source(upstream). A code marked as also sent by providers does not by itself say who raised the error. - Stable codes. Codes are only ever added, never renamed. The catalog lists the gateway's own codes (source
gateway) and the gateway's names for provider failures (sourceprovider), each with its usual status. - Help text. Administrators may replace an error's message and attach a help link (
help_urland theLinkheader). Status, type and code never change. - Gateway response ids. Responses API ids starting
resp_qtx_were issued by the gateway for a translated provider and are valid only against the gateway.
The full catalog from x-quilr-error-codes in the spec:
94 of 94 codes
| Code | Source | Status | Group | Description |
|---|---|---|---|---|
missing_api_key | gateway | 401 | authentication | No gateway API key was sent. |
invalid_api_key | gateway | 401 | authentication | The gateway API key is unknown or revoked, or its app is disabled. Also sent by providers: read X-Quilr-Error-Source. |
expired_api_key | gateway | 401 | authentication | The self-service API key has expired. |
jwt_auth_failed | gateway | 401 | authentication | The bearer token could not be verified. |
self_service_identity_required | gateway | 401 | authentication | A self-service app accepts only its own Quilr API keys. |
missing_provider | gateway | 500 | configuration | The app has no provider configured. |
missing_provider_key | gateway | 500 | configuration | The provider has no credential configured. |
unsupported_provider | gateway | 400 | configuration | The app's provider cannot serve this API. |
provider_not_configured | gateway | 400 | configuration | The requested provider is not configured for this app. |
sdk_mode_required | gateway | 403 | configuration | This endpoint requires a Quilr SDK app key. |
internal_error | gateway | 500 | configuration | An unexpected gateway error. |
policy_access_denied | gateway | 403 | access | A Policy Engine rule denied the request. |
policy_model_denied | gateway | 403 | access | The model is on a rejected-models list. |
policy_model_not_allowed | gateway | 403 | access | The model is outside the allowed-models list that applies. |
model_access_denied | gateway | 403 | access | The model is not enabled for this app. |
policy_tool_access_denied | gateway | 403 | access | A Policy Engine rule denied a tool call. |
source_ip_not_allowed | gateway | 403 | access | The client IP address is not allowed. |
policy_source_ip_denied | gateway | 403 | access | A Policy Engine rule denied the client IP address. |
policy_provider_unsupported | gateway | 403 | access | The routed provider cannot serve this request. |
policy_routing_group_wrong_surface | gateway | 403 | access | The routing group cannot serve this API. |
policy_routing_group_not_defined | gateway | 403 | access | The requested routing group is not defined. |
policy_configuration_error | gateway | 500 | access | The published policy cannot be applied. |
policy_evaluation_error | gateway | 500 | access | The policy could not be evaluated. |
identity_check_failed | gateway | 401 | identity | The user identity could not be verified. |
identity_required | gateway | 401 | identity | The app requires a user identity. |
conversation_id_required | gateway | 400 | identity | The app requires a conversation id. |
system_prompt_not_from_store | gateway | 400 | prompt_store | The system prompt does not come from the Prompt Store. |
prompt_store_not_configured | gateway | 400 | prompt_store | The Prompt Store is not configured for this app. |
prompt_store_error | gateway | 400 | prompt_store | The Prompt Store prompt could not be used. |
invalid_prompt_variables | gateway | 400 | prompt_store | The Prompt Store variables are invalid. |
invalid_json | gateway | 400 | request | The request body is not valid JSON. |
missing_required_parameter | gateway | 400 | request | A required request parameter is missing. |
invalid_extra_body | gateway | 400 | request | The extra_body parameter is invalid. |
invalid_request | gateway | 400 | request | The request is invalid for the provider adapter. |
model_not_found | gateway | 404 | request | The app does not offer the requested model. Also sent by providers: read X-Quilr-Error-Source. |
rate_limit_exceeded | gateway | 429 | limits | The app's request rate limit was reached. Also sent by providers: read X-Quilr-Error-Source. |
concurrency_limit_exceeded | gateway | 429 | limits | The app's concurrency limit was reached. |
input_token_limit_exceeded | gateway | 429 | limits | The app's input-token limit was reached. |
output_token_limit_exceeded | gateway | 429 | limits | The app's output-token limit was reached. |
max_tokens_per_request_exceeded | gateway | 400 | limits | The request asks for more tokens than one request may use. |
max_tokens_exceeded | gateway | 400 | limits | The request asks for more tokens than one request may use (Messages). |
model_rate_limit_exceeded | gateway | 429 | limits | The model's request rate limit was reached. |
model_concurrency_limit_exceeded | gateway | 429 | limits | The model's concurrency limit was reached. |
model_input_token_limit_exceeded | gateway | 429 | limits | The model's input-token limit was reached. |
model_output_token_limit_exceeded | gateway | 429 | limits | The model's output-token limit was reached. |
model_max_tokens_per_request_exceeded | gateway | 400 | limits | The request asks for more tokens than the model allows per request. |
rate_or_token_limit_exceeded | gateway | 429 | limits | A rate or token limit was reached (Bedrock). |
limit_exceeded | gateway | 429 | limits | A usage limit was reached. |
quota_exceeded | gateway | 429 | quota | A usage quota or budget is exhausted. |
quota_price_unavailable | gateway | 403 | quota | The model has no price for a spend budget. |
quota_usage_unavailable | gateway | 503 | quota | The route cannot measure a quota's usage. |
quota_accounting_error | gateway | 503 | quota | Quota usage could not be recorded. |
sensitive_data_blocked | gateway | 400 | guardrails | Sensitive data was detected and blocked. |
adversarial_content_blocked | gateway | 400 | guardrails | Adversarial content (prompt attack) was blocked. |
custom_intent_blocked | gateway | 400 | guardrails | A custom intent was detected and blocked. |
language_blocked | gateway | 400 | guardrails | The language of the content is blocked. |
guardian_task_adherence_blocked | gateway | 400 | guardrails | Guardian blocked a request outside the app's task. |
hallucination_blocked | gateway | 400 | guardrails | The response was blocked as a likely hallucination. |
all_targets_unavailable | gateway | 503 | routing | No provider target could take the request. |
embedding_dimension_mismatch | gateway | 502 | routing | A failover target returned embeddings of a different size. |
routing_constraint_unsatisfied | gateway | 403 | routing | No allowed target satisfies the request's routing constraints. |
routing_state_bound_conflict | gateway | 409 | routing | The request's provider-bound state lives on a target its routing constraints exclude. |
routing_constraint_check_unavailable | gateway | 503 | routing | A routing-constraint check could not be completed. |
translation_unconvertible_request | gateway | 400 | translation | The request cannot be converted to the provider's API. |
translation_unsupported_state | gateway | 400 | translation | The request depends on state the provider cannot use. |
upstream_api_unsupported | gateway | 400 | translation | The provider cannot serve this client API. |
state_not_portable | gateway | 400 | translation | Conversation state cannot move to this provider. |
provider_not_conversational | gateway | 400 | translation | The provider does not serve conversational requests. |
unsupported_client_api | gateway | 400 | translation | The client API is not supported. |
translation_internal_error | gateway | 500 | translation | The request could not be converted. |
translation_response_failed | gateway | 502 | translation | The provider's response could not be converted. |
translation_target_configuration_error | gateway | 500 | translation | The translated provider target is misconfigured. |
attachment_type_not_allowed | gateway | 415 | attachments | An attachment's detected file type is not allowed. |
attachment_too_large | gateway | 413 | attachments | An attachment is larger than the allowed size. |
attachment_request_too_large | gateway | 413 | attachments | The request's attachments are larger in total than allowed. |
attachment_too_many | gateway | 413 | attachments | The request carries more new attachments than allowed. |
attachment_too_many_pages | gateway | 413 | attachments | A document has more pages than allowed. |
attachment_unscannable | gateway | 422 | attachments | An attachment is encrypted, unparseable or a remote reference, and the policy blocks unscannable files. |
attachment_blocked | gateway | 403 | attachments | An attachment was blocked: a DLP finding in its text (sent with the surface's DLP block status, 400) or macros / an attachment that cannot be removed (403). |
upstream_bad_request | provider | 400 | upstream | The provider rejected the request. |
upstream_unauthorized | provider | 401 | upstream | The provider rejected the gateway's credentials. Failover class: auth. |
upstream_forbidden | provider | 403 | upstream | The provider denied access. Failover class: auth. |
upstream_not_found | provider | 404 | upstream | The provider did not find the model or resource. Failover class: model_not_found. |
upstream_timeout | provider | 504 | upstream | The provider timed out. Failover class: timeout. |
upstream_conflict | provider | 409 | upstream | The provider rejected the request as a conflict. |
upstream_request_too_large | provider | 413 | upstream | The provider rejected the request as too large. |
upstream_rate_limited | provider | 429 | upstream | The provider rate-limited the request. Failover class: rate_limit. |
upstream_overloaded | provider | 529 | upstream | The provider is overloaded. Failover class: server_error. |
upstream_error | provider | 502 | upstream | The provider returned an error. |
upstream_unreachable | provider | 502 | upstream | The provider could not be reached. Failover class: connection. |
upstream_stream_truncated | provider | 502 | upstream | The provider's stream ended early. |
upstream_stream_malformed | provider | 502 | upstream | The provider's stream could not be read. |
upstream_stream_error | provider | 502 | upstream | The provider's stream reported an error. |
remote_connector_unreachable | provider | 503 | upstream | The provider could not be reached through its remote connector. Failover class: connection. |
Guardrail blocks and redaction
A request or response stopped by a guardrail returns 400 with error type content_policy_violation and one of these codes. Policy and access denials return 403 (policy_error).
- Anthropic-format errors keep the code but not
details. Bedrock and Google-format guardrail blocks carry no code. - Response checks run on non-streaming responses only.
- Redaction. When a guardrail redacts instead of blocking, detected values are masked in place: fully, with
Xcharacters of the same length (text to speech usesREDACTED), or partially, keeping the first and last characters. Request-side redaction changes what the model receives; response-side redaction (non-streaming) changes what the client receives. No field marks a redaction. - Advisories. When coding-helper checks are on, a non-streaming response may end with an appended paragraph starting
Guardian note:about dependency vulnerabilities or newer versions.
See security guardrails for what each check detects and how to configure it.
Streaming
Operations that stream return text/event-stream. Bedrock streaming operations return application/vnd.amazon.eventstream. Disable response buffering for these paths in any proxy in front of the gateway.
- Keep-alive. While a stream is idle for 15 seconds, the gateway writes SSE comment lines (
:prefix). SSE parsers ignore them. - Early start. If the gateway has not answered 15 seconds after admitting a request, it starts a
200event stream early. A later failure then arrives as an in-stream error event with an addedstatus_codefield instead of an HTTP status. - Bedrock. Bedrock streams end with an exception frame (
modelStreamErrorExceptionorinternalServerException) when the upstream stream is interrupted. - Realtime. Realtime operations upgrade to a WebSocket (
101 Switching Protocols). Errors found after the upgrade arrive as one Realtimeerrorevent, followed by a close with code 1008.
Aliases
Several paths are aliases of a canonical path (marked x-quilr-alias-of in the spec), kept so every SDK's base-URL convention resolves: for example /model/{model_id}/converse and /bedrock-runtime/model/{model_id}/converse, or the Anthropic paths with and without /v1. The reference below lists each operation once, with its aliases under Also served at. An alias takes the same inputs and returns the same responses. Route all of them in your API gateway.
Import into your API gateway (Kong)
The spec is ready to convert with decK. Use the combined document, or one document per family to give each family its own Kong service. To put the Management API behind Kong as well, see Management API behind Kong.
1. Choose your region
The spec has exactly one server, https://{region}.quilr.ai, because openapi2kong pools several servers into one load-balanced upstream. Import one region per Kong setup:
- Get a pinned copy. Add
?region=<value>to the live spec route,GET /llmgateway_inference_apis/v1/openapi.json, and the document lists that region's URL as its only server (for example?region=guardrails-europe-1for Europe only). Combine it with?family=<key>for one family. The route needs a Quilr API key or JWT, and an unknown region returns 400unknown_region. - Or set the variable. In a downloaded file, set the
regionvariable's default to your region (or editserversto your gateway URL) before converting.
Pick a region and family to get the matching live URL:
curl --header "Authorization: Bearer $QUILR_API_KEY" \
'https://guardrails-usa-1.quilr.ai/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=anthropic_messages' \
-o anthropic_messages.json
| Family | Download | Live, pinned to guardrails-usa-1 | Paths |
|---|---|---|---|
| All families | llm-gateway-inference-v1.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1 | 239 |
| OpenAI-compatible | llm-gateway-inference-v1-openai_compatible.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=openai_compatible | 61 |
| OpenAI Responses | llm-gateway-inference-v1-openai_responses.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=openai_responses | 16 |
| Azure OpenAI | llm-gateway-inference-v1-azure_openai.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=azure_openai | 27 |
| OpenAI Realtime | llm-gateway-inference-v1-openai_realtime.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=openai_realtime | 6 |
| OpenAI Assistants | llm-gateway-inference-v1-openai_assistants.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=openai_assistants | 69 |
| Anthropic Messages | llm-gateway-inference-v1-anthropic_messages.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=anthropic_messages | 7 |
| AWS Bedrock Runtime | llm-gateway-inference-v1-bedrock_runtime.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=bedrock_runtime | 8 |
| Gemini and Vertex AI | llm-gateway-inference-v1-google_gemini.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=google_gemini | 15 |
| Rerank | llm-gateway-inference-v1-rerank.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=rerank | 3 |
| Mistral | llm-gateway-inference-v1-mistral.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=mistral | 2 |
| xAI | llm-gateway-inference-v1-xai.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=xai | 16 |
| Sarvam | llm-gateway-inference-v1-sarvam.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=sarvam | 6 |
| TypeSafe System One | llm-gateway-inference-v1-typesafe.json | /llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=typesafe | 2 |
2. Convert and sync
# One family per Kong service: convert each per-family file, then merge.
deck file openapi2kong -s llm-gateway-inference-v1-openai_compatible.json -o openai_compatible.yaml
deck file openapi2kong -s llm-gateway-inference-v1-anthropic_messages.json -o anthropic_messages.yaml
deck file merge openai_compatible.yaml anthropic_messages.yaml -o kong.yaml
# Or the combined spec as one service:
deck file openapi2kong -s llm-gateway-inference-v1.json -o kong.yaml
deck gateway sync kong.yaml
3. Check route settings
Before you sync, check these settings:
Find an endpoint
Search by path, family, action or HTTP method. Open an endpoint to see the credentials it accepts, its parameters, request body, every response with its headers, and a cURL example. Operations the LLM Gateway Playground supports have a Try it in the playground link.
124 of 124 operations (plus 115 alias paths, listed under each operation)
/anthropic_messages/v1/messagesCreate a message/anthropic_messages/v1/messages/count_tokensCount message tokens/anthropic_messages/v1/modelsList models+1 alias/anthropic_messages/v1/models/{model_id}Retrieve a model+1 alias/anthropic_messages/v1/quilr/usageGet the caller's quota usage/llmgateway_inference_apis/v1/openapi.jsonGet this OpenAPI document/mistral/v1/fim/completionsCreate a fill-in-the-middle completion/mistral/v1/ocrExtract text from a document/model/{model_id}/converseConverse+1 alias/model/{model_id}/converse-streamConverse with a response stream+1 alias/model/{model_id}/invokeInvoke a model+1 alias/model/{model_id}/invoke-with-response-streamInvoke a model with a response stream+1 alias/openai/deployments/{deployment}/audio/speechGenerate speech+2 aliases/openai/deployments/{deployment}/audio/transcriptionsTranscribe audio+2 aliases/openai/deployments/{deployment}/audio/translationsTranslate audio to English+2 aliases/openai/deployments/{deployment}/chat/completionsCreate a chat completion+2 aliases/openai/deployments/{deployment}/embeddingsCreate embeddings+2 aliases/openai/deployments/{deployment}/responsesCreate a model response+1 alias/openai/deployments/{deployment}/responses/{response_id}Delete a stored response+1 alias/openai/deployments/{deployment}/responses/{response_id}Retrieve a stored response+1 alias/openai/deployments/{deployment}/responses/{response_id}/cancelCancel a background response+1 alias/openai/deployments/{deployment}/responses/{response_id}/input_itemsList a response's input items+1 alias/openai_assistants/v1/assistantsList assistants+2 aliases/openai_assistants/v1/assistantsCreate an assistant+2 aliases/openai_assistants/v1/assistants/{assistant_id}Delete an assistant+2 aliases/openai_assistants/v1/assistants/{assistant_id}Retrieve an assistant+2 aliases/openai_assistants/v1/assistants/{assistant_id}Modify an assistant+2 aliases/openai_assistants/v1/threadsCreate a thread+2 aliases/openai_assistants/v1/threads/runsCreate a thread and run it+2 aliases/openai_assistants/v1/threads/{thread_id}Delete a thread+2 aliases/openai_assistants/v1/threads/{thread_id}Retrieve a thread+2 aliases/openai_assistants/v1/threads/{thread_id}Modify a thread+2 aliases/openai_assistants/v1/threads/{thread_id}/messagesList messages+2 aliases/openai_assistants/v1/threads/{thread_id}/messagesCreate a message+2 aliases/openai_assistants/v1/threads/{thread_id}/messages/{message_id}Delete a message+2 aliases/openai_assistants/v1/threads/{thread_id}/messages/{message_id}Retrieve a message+2 aliases/openai_assistants/v1/threads/{thread_id}/messages/{message_id}Modify a message+2 aliases/openai_assistants/v1/threads/{thread_id}/runsList runs+2 aliases/openai_assistants/v1/threads/{thread_id}/runsCreate a run+2 aliases/openai_assistants/v1/threads/{thread_id}/runs/{run_id}Retrieve a run+2 aliases/openai_assistants/v1/threads/{thread_id}/runs/{run_id}Modify a run+2 aliases/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/cancelCancel a run+2 aliases/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/stepsList run steps+2 aliases/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/steps/{step_id}Retrieve a run step+2 aliases/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/submit_tool_outputsSubmit tool outputs+2 aliases/openai_compatible/openai/modelsList models+1 alias/openai_compatible/v1/audio/speechGenerate speech+1 alias/openai_compatible/v1/audio/transcriptionsTranscribe audio+1 alias/openai_compatible/v1/audio/translationsTranslate audio to English+1 alias/openai_compatible/v1/batchesList batches+1 alias/openai_compatible/v1/batchesCreate a batch+1 alias/openai_compatible/v1/batches/{batch_id}Retrieve a batch+1 alias/openai_compatible/v1/batches/{batch_id}/cancelCancel a batch+1 alias/openai_compatible/v1/batches/{batch_id}/resultsGet batch results+1 alias/openai_compatible/v1/chat/completionsCreate a chat completion+1 alias/openai_compatible/v1/completionsCreate a text completion+1 alias/openai_compatible/v1/decisionsAnswer decision questions/openai_compatible/v1/embeddingsCreate embeddings+1 alias/openai_compatible/v1/filesList files+1 alias/openai_compatible/v1/filesUpload a file+1 alias/openai_compatible/v1/files/{file_id}Delete a file+1 alias/openai_compatible/v1/files/{file_id}Retrieve a file+1 alias/openai_compatible/v1/files/{file_id}/contentDownload file content+1 alias/openai_compatible/v1/images/editsEdit images+1 alias/openai_compatible/v1/images/generationsGenerate images+1 alias/openai_compatible/v1/images/variationsCreate image variations+1 alias/openai_compatible/v1/modelsList models+1 alias/openai_compatible/v1/models/{model_id}Retrieve a model+1 alias/openai_compatible/v1/moderationsClassify content+1 alias/openai_compatible/v1/ocrExtract text from a document+1 alias/openai_compatible/v1/quilr/usageGet my quota usage+1 alias/openai_compatible/v1/videosList videos+1 alias/openai_compatible/v1/videosCreate a video+1 alias/openai_compatible/v1/videos/editsEdit a video+1 alias/openai_compatible/v1/videos/{video_id}Delete a video+1 alias/openai_compatible/v1/videos/{video_id}Retrieve a video job+1 alias/openai_compatible/v1/videos/{video_id}/contentDownload video content+1 alias/openai_realtime/v1/realtimeOpen a Realtime session (WebSocket)WebSocket+5 aliases/openai_responses/v1/quilr/usageRead the caller's quota usage/openai_responses/v1/responsesCreate a model response+2 aliases/openai_responses/v1/responses/{response_id}Delete a stored response+2 aliases/openai_responses/v1/responses/{response_id}Retrieve a stored response+2 aliases/openai_responses/v1/responses/{response_id}/cancelCancel a background response+2 aliases/openai_responses/v1/responses/{response_id}/input_itemsList a response's input items+2 aliases/rerank/v1/rerankRerank documents+2 aliases/sarvam/speech-to-textTranscribe speech/sarvam/speech-to-text-translateTranscribe and translate speech/sarvam/text-lidIdentify the language of text/sarvam/text-to-speechSynthesize speech/sarvam/translateTranslate text/sarvam/transliterateTransliterate text/typesafe/v1/modelsList decision models/typesafe/v1/systemoneAnswer System One decision questions/vertex_ai/{api_version}/models/{model}:batchEmbedContentsBatch embed contents (Gemini API path)/vertex_ai/{api_version}/models/{model}:countTokensCount tokens (Gemini API path)/vertex_ai/{api_version}/models/{model}:embedContentEmbed content (Gemini API path)/vertex_ai/{api_version}/models/{model}:generateContentGenerate content (Gemini API path)/vertex_ai/{api_version}/models/{model}:streamGenerateContentStream generated content (Gemini API path)/vertex_ai/{api_version}/projects/{project}/locations/{location}/endpoints/openapi/chat/completionsOpenAI-compatible chat completions on Vertex AI/vertex_ai/{api_version}/projects/{project}/locations/{location}/endpoints/{endpoint}:predictPredict on a Vertex AI endpoint/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:countTokensCount tokens (Vertex AI path)/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:embedContentEmbed content (Vertex AI path)/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:generateContentGenerate content (Vertex AI path)/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:predictPredict (publisher model)/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:rawPredictRaw predict (publisher model)/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:streamGenerateContentStream generated content (Vertex AI path)/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:streamRawPredictStream raw predict (publisher model)/vertexai/v1/generateContentGenerate content (model in the body)/xai/v1/batchesList batches/xai/v1/batchesCreate a batch/xai/v1/batches/{batch_id}Get a batch/xai/v1/batches/{batch_id}/requestsList batch requests/xai/v1/batches/{batch_id}/requestsAdd batch requests/xai/v1/batches/{batch_id}/resultsList batch results/xai/v1/batches/{batch_id}:cancelCancel a batch/xai/v1/images/editsEdit images/xai/v1/images/generationsGenerate images/xai/v1/responsesCreate a response/xai/v1/responses/{response_id}Delete a response/xai/v1/responses/{response_id}Get a response/xai/v1/videos/editsStart a video edit/xai/v1/videos/extensionsStart a video extension/xai/v1/videos/generationsStart a video generation/xai/v1/videos/{video_id}Get a video jobEndpoint reference
OpenAI-compatible
Point the OpenAI SDK at <gateway>/openai_compatible/v1. Which providers serve each family beyond chat: endpoint families.
/openai_compatible/v1/audio/speechGenerate speech
Text to speech. Returns audio bytes in response_format, or a server-sent event stream when stream_format is sse. Body fields and query parameters are forwarded to the provider as sent.
Request guardrailsModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/audio/speech
Path, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/audio/speech' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"input": "Hello"
}'
/openai_compatible/v1/audio/transcriptionsTranscribe audio
Speech to text from a multipart upload. Every form field is forwarded. stream=true returns a server-sent event stream when no response guardrail needs the full transcript.
Request guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/audio/transcriptions
Path, query & header parameters 4
Full request body specification multipart/form-data
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/audio/transcriptions' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--form 'file=@file' \
--form 'model=<model>'
/openai_compatible/v1/audio/translationsTranslate audio to English
Speech to English text from a multipart upload. Every form field is forwarded.
Request guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/audio/translations
Path, query & header parameters 4
Full request body specification multipart/form-data
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/audio/translations' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--form 'file=@file' \
--form 'model=<model>'
/openai_compatible/v1/batchesList batches
Lists the provider's batch jobs. Query parameters are forwarded to the provider.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/batches
Path, query & header parameters 4
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/batches' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/batchesCreate a batch
Starts a batch job from an uploaded input file (OpenAI, Azure OpenAI, Mistral or xAI). Responses use the OpenAI batch shape.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/batches
Path, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/batches' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"input_file_id": "<input_file_id>",
"endpoint": "<endpoint>",
"completion_window": "<completion_window>"
}'
/openai_compatible/v1/batches/{batch_id}Retrieve a batch
Returns a batch job's status.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/batches/{batch_id}
Path, query & header parameters 3
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/batches/<batch_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/batches/{batch_id}/cancelCancel a batch
Cancels a running batch job. No request body.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/batches/{batch_id}/cancel
Path, query & header parameters 6
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/batches/<batch_id>/cancel' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/batches/{batch_id}/resultsGet batch results
Returns a batch's per-request results. xAI providers only (xAI returns results through its API instead of an output file).
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/batches/{batch_id}/results
Path, query & header parameters 3
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/batches/<batch_id>/results' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/chat/completionsCreate a chat completion
OpenAI Chat Completions. Guardrails scan the request and the response; routing, failover, limits and quotas apply. Returns a server-sent event stream when stream is true.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptResponse cacheAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/chat/completions
Path, query & header parameters 5
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/chat/completions' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"content": "Hello",
"role": "user"
}
],
"model": "gpt-4o-mini"
}'
/openai_compatible/v1/completionsCreate a text completion
Legacy text completions, including fill in the middle with suffix on providers that support it. Returns a server-sent event stream when stream is true.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/completions
Path, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/completions' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'
/openai_compatible/v1/decisionsAnswer decision questions
OpenAI Decisions format for decision models (Microsoft-Decision-1 on Azure, TypeSafe). Text and JSON input only; images are refused. Request bodies may be gzip or deflate encoded; zstd is refused with 415. Unknown fields inside a question are rejected, as OpenAI does.
Request guardrailsModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/decisions' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"input": "Hello",
"questions": [
{
"type": "predicate",
"instructions": "<instructions>"
}
]
}'
/openai_compatible/v1/embeddingsCreate embeddings
Embeds text with the app's embedding model. The input is scanned by the app's request guardrails.
Request guardrailsModel access rulesFailoverLimits, quotas and budgetsResponse cacheAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/embeddings
Path, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/embeddings' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"input": "Hello"
}'
/openai_compatible/v1/filesList files
Lists the provider's files. Query parameters are forwarded to the provider.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/files
Path, query & header parameters 6
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/files' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/filesUpload a file
Uploads a file to the app's file provider (OpenAI, Azure OpenAI, Mistral or xAI).
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/files
Path, query & header parameters 4
Full request body specification multipart/form-data
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/files' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--form 'file=@file' \
--form 'purpose=<purpose>'
/openai_compatible/v1/files/{file_id}Delete a file
Deletes a file at the provider.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- DELETE
/openai_compatible/files/{file_id}
Path, query & header parameters 6
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request DELETE \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/files/<file_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/files/{file_id}Retrieve a file
Returns a file's metadata.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/files/{file_id}
Path, query & header parameters 3
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/files/<file_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/files/{file_id}/contentDownload file content
Streams the file's bytes from the provider unchanged, with the provider's content type.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/files/{file_id}/content
Path, query & header parameters 3
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/files/<file_id>/content' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/images/editsEdit images
Edits images from a prompt. Send multipart form data with image files, or JSON with image references; which one a provider accepts depends on the provider (Azure OpenAI takes multipart only, xAI JSON only).
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/images/edits
Path, query & header parameters 4
Full request body specification application/jsonalso multipart/form-data
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/images/edits' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"prompt": "<prompt>"
}'
/openai_compatible/v1/images/generationsGenerate images
Creates images from a prompt.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/images/generations
Path, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/images/generations' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"prompt": "<prompt>"
}'
/openai_compatible/v1/images/variationsCreate image variations
Creates variations of an uploaded image. OpenAI providers only.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/images/variations
Path, query & header parameters 4
Full request body specification multipart/form-data
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/images/variations' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--form 'image=@image'
/openai_compatible/v1/modelsList models
Models configured for the app that the caller may use. Makes no upstream call.
No gateway features (no model call)Authorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/models
No request body.
Responses 200 · 400 · 401 · 403 · 500
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/models' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/models/{model_id}Retrieve a model
One model from the app's configured models. 404 when the model is not enabled for the caller.
No gateway features (no model call)Authorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/models/{model_id}
Path, query & header parameters 1
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 500
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/models/<model_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/moderationsClassify content
Moderation in the OpenAI shape; Mistral moderation results are converted to it.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/moderations
Path, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/moderations' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"input": "Hello"
}'
/openai_compatible/v1/ocrExtract text from a document
Document OCR in Mistral's request and response shape. Mistral providers only.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/ocr
Path, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/ocr' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"document": {
"document_url": "<document_url>"
}
}'
/openai_compatible/v1/quilr/usageGet my quota usage
The caller's own quota buckets for this app: limit, used, remaining and reset time. Quotas grouped per person are shown only to a verified identity (a verified JWT or a self-service key).
No gateway features (no model call)Authorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/v1/quilr/usage
No request body.
Responses 200 · 401 · 403 · 500 · 503
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/quilr/usage' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/videosList videos
Lists video jobs. OpenAI providers only. Query parameters are forwarded to the provider.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/videos
Path, query & header parameters 5
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/videos' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/videosCreate a video
Starts a video generation job (OpenAI or xAI). Send JSON, or multipart form data with a reference image (OpenAI only).
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/videos
Path, query & header parameters 4
Full request body specification application/jsonalso multipart/form-data
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/videos' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"prompt": "<prompt>"
}'
/openai_compatible/v1/videos/editsEdit a video
Starts a video edit job. xAI providers only.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_compatible/videos/edits
Path, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/videos/edits' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"prompt": "<prompt>"
}'
/openai_compatible/v1/videos/{video_id}Delete a video
Deletes a video. OpenAI providers only.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- DELETE
/openai_compatible/videos/{video_id}
Path, query & header parameters 6
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request DELETE \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/videos/<video_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/videos/{video_id}Retrieve a video job
Returns a video job's status (OpenAI or xAI).
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/videos/{video_id}
Path, query & header parameters 3
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/videos/<video_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/v1/videos/{video_id}/contentDownload video content
Streams the generated video (or a thumbnail or spritesheet) from the provider unchanged. OpenAI providers only.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/videos/{video_id}/content
Path, query & header parameters 4
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/v1/videos/<video_id>/content' \
--header "Authorization: Bearer $QUILR_API_KEY"
OpenAI Responses
/openai_responses/v1/quilr/usageRead the caller's quota usage
Returns the quota buckets that apply to the caller's Responses requests: limit, used, remaining and reset time per bucket. Quotas grouped by user are shown only to a verified identity (a Quilr-verified JWT or a self-service key). Makes no upstream call.
No gateway features (no model call)Authorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyNo request body.
Responses 200 · 400 · 401 · 403 · 500 · 503
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_responses/v1/quilr/usage' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_responses/v1/responsesCreate a model response
Creates a model response. model selects the model among those configured for the app (the app's routing may choose the upstream). With stream: true the answer is a server-sent event stream of Responses events, ending with response.completed (or response.failed / response.incomplete). Guardrails can redact the input or output, or block it (400 with a guardrail code; policy and access denials are 403). Requests that depend on state held by one upstream (previous_response_id, conversation, stored prompts) stay on that upstream; when that is not possible the request fails with 400 or 409. Responses served by translation to a provider without a Responses API are not stored and cannot be retrieved later.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_responses/openai/responses - POST
/openai_responses/v1/openai/responses
Path, query & header parameters 5
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_responses/v1/responses' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/openai_responses/v1/responses/{response_id}Delete a stored response
Deletes a stored response at the upstream that created it.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- DELETE
/openai_responses/openai/responses/{response_id} - DELETE
/openai_responses/v1/openai/responses/{response_id}
Path, query & header parameters 5
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 500 · 502 · 503 · 504
curl --request DELETE \
'https://guardrails-usa-1.quilr.ai/openai_responses/v1/responses/<response_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_responses/v1/responses/{response_id}Retrieve a stored response
Returns a stored response from the upstream that created it. With stream=true the upstream's event stream is returned as text/event-stream.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_responses/openai/responses/{response_id} - GET
/openai_responses/v1/openai/responses/{response_id}
Path, query & header parameters 4
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_responses/v1/responses/<response_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_responses/v1/responses/{response_id}/cancelCancel a background response
Cancels a response created with background: true. No request body is needed.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_responses/openai/responses/{response_id}/cancel - POST
/openai_responses/v1/openai/responses/{response_id}/cancel
Path, query & header parameters 5
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_responses/v1/responses/<response_id>/cancel' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_responses/v1/responses/{response_id}/input_itemsList a response's input items
Lists the input items of a stored response, paginated by the upstream.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_responses/openai/responses/{response_id}/input_items - GET
/openai_responses/v1/openai/responses/{response_id}/input_items
Path, query & header parameters 6
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_responses/v1/responses/<response_id>/input_items' \
--header "Authorization: Bearer $QUILR_API_KEY"
Azure OpenAI
/openai/deployments/{deployment}/audio/speechGenerate speech
Text to speech for the body's model. Returns audio bytes in response_format; with stream_format: sse, server-sent audio events as they arrive.
Request guardrailsModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_compatible/openai/deployments/{deployment}/audio/speech - POST
/openai_compatible/v1/openai/deployments/{deployment}/audio/speech
Path, query & header parameters 6
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 409 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai/deployments/<deployment>/audio/speech' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"input": "Hello"
}'
/openai/deployments/{deployment}/audio/transcriptionsTranscribe audio
Speech to text for the form's model. With stream=true the transcript is streamed as server-sent events, unless the app scans the transcript before delivery, in which case it is returned when complete.
Request guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_compatible/openai/deployments/{deployment}/audio/transcriptions - POST
/openai_compatible/v1/openai/deployments/{deployment}/audio/transcriptions
Path, query & header parameters 6
Full request body specification multipart/form-data
Responses 200 · 400 · 401 · 403 · 404 · 409 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai/deployments/<deployment>/audio/transcriptions' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--form 'file=@file' \
--form 'model=<model>'
/openai/deployments/{deployment}/audio/translationsTranslate audio to English
Speech to English text for the form's model.
Request guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_compatible/openai/deployments/{deployment}/audio/translations - POST
/openai_compatible/v1/openai/deployments/{deployment}/audio/translations
Path, query & header parameters 6
Full request body specification multipart/form-data
Responses 200 · 400 · 401 · 403 · 404 · 409 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai/deployments/<deployment>/audio/translations' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--form 'file=@file' \
--form 'model=<model>'
/openai/deployments/{deployment}/chat/completionsCreate a chat completion
Chat completions for a deployment. The deployment name is the model when the body has no model. With stream: true the answer is a server-sent event stream of chunks ending with data: [DONE]. Guardrails can redact, or block (400 with a guardrail code; policy and access denials are 403).
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptResponse cacheAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_compatible/openai/deployments/{deployment}/chat/completions - POST
/openai_compatible/v1/openai/deployments/{deployment}/chat/completions
Path, query & header parameters 7
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai/deployments/<deployment>/chat/completions' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"role": "<role>"
}
]
}'
/openai/deployments/{deployment}/embeddingsCreate embeddings
Embeddings for the body's model (the Azure SDK sends the deployment name there).
Request guardrailsModel access rulesFailoverLimits, quotas and budgetsResponse cacheAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_compatible/openai/deployments/{deployment}/embeddings - POST
/openai_compatible/v1/openai/deployments/{deployment}/embeddings
Path, query & header parameters 6
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 409 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai/deployments/<deployment>/embeddings' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"input": "Hello"
}'
/openai/deployments/{deployment}/responsesCreate a model response
Creates a model response. model selects the model among those configured for the app (the app's routing may choose the upstream). With stream: true the answer is a server-sent event stream of Responses events, ending with response.completed (or response.failed / response.incomplete). Guardrails can redact the input or output, or block it (400 with a guardrail code; policy and access denials are 403). Requests that depend on state held by one upstream (previous_response_id, conversation, stored prompts) stay on that upstream; when that is not possible the request fails with 400 or 409. Responses served by translation to a provider without a Responses API are not stored and cannot be retrieved later. Deployment-style path built by older Azure OpenAI SDKs; for create, the deployment name is the model when the body has none, and it is otherwise ignored.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_responses/openai/deployments/{deployment}/responses
Path, query & header parameters 7
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai/deployments/<deployment>/responses' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/openai/deployments/{deployment}/responses/{response_id}Delete a stored response
Deletes a stored response at the upstream that created it. Deployment-style path built by older Azure OpenAI SDKs; for create, the deployment name is the model when the body has none, and it is otherwise ignored.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- DELETE
/openai_responses/openai/deployments/{deployment}/responses/{response_id}
Path, query & header parameters 7
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 500 · 502 · 503 · 504
curl --request DELETE \
'https://guardrails-usa-1.quilr.ai/openai/deployments/<deployment>/responses/<response_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai/deployments/{deployment}/responses/{response_id}Retrieve a stored response
Returns a stored response from the upstream that created it. With stream=true the upstream's event stream is returned as text/event-stream. Deployment-style path built by older Azure OpenAI SDKs; for create, the deployment name is the model when the body has none, and it is otherwise ignored.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_responses/openai/deployments/{deployment}/responses/{response_id}
Path, query & header parameters 6
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai/deployments/<deployment>/responses/<response_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai/deployments/{deployment}/responses/{response_id}/cancelCancel a background response
Cancels a response created with background: true. No request body is needed. Deployment-style path built by older Azure OpenAI SDKs; for create, the deployment name is the model when the body has none, and it is otherwise ignored.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/openai_responses/openai/deployments/{deployment}/responses/{response_id}/cancel
Path, query & header parameters 7
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai/deployments/<deployment>/responses/<response_id>/cancel' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai/deployments/{deployment}/responses/{response_id}/input_itemsList a response's input items
Lists the input items of a stored response, paginated by the upstream. Deployment-style path built by older Azure OpenAI SDKs; for create, the deployment name is the model when the body has none, and it is otherwise ignored.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_responses/openai/deployments/{deployment}/responses/{response_id}/input_items
Path, query & header parameters 8
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 500 · 502 · 503 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai/deployments/<deployment>/responses/<response_id>/input_items' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_compatible/openai/modelsList models
Models configured for the app and visible to the caller, as the Azure OpenAI SDK's models.list() requests them (not deployment-scoped). Makes no upstream call.
No gateway features (no model call)Authorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/openai_compatible/v1/openai/models
Path, query & header parameters 1
No request body.
Responses 200 · 400 · 401 · 403 · 500
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_compatible/openai/models' \
--header "Authorization: Bearer $QUILR_API_KEY"
OpenAI Realtime
/openai_realtime/v1/realtimeOpen a Realtime session (WebSocket)
Upgrades to a WebSocket and relays Realtime client and server events between the caller and the upstream session. model (or the Azure preview deployment) selects the model among those configured for the app; a transcription session (intent=transcription) may omit it and set its model in the session configuration. Other query parameters are forwarded upstream.
Credentials. A credential header is read first: Authorization: Bearer, api-key, x-api-key, then the API-gateway key headers. Only when the handshake carries none of them, the gateway also accepts the key in the api-key, api_key or authorization query parameter, or in a Sec-WebSocket-Protocol entry openai-insecure-api-key.<key> (browser clients). Credentials are never forwarded upstream. Prefer a header: query-string credentials can appear in proxy access logs.
Subprotocols. openai-beta.realtime-v1 and realtime are accepted when offered.
Guardrails do not scan this route.
Model access rulesRouting groupsLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPROTOCOLWebSocket (101)Also served at 5 alias paths
- GET
/openai/realtime - GET
/openai/v1/realtime - GET
/openai_realtime/openai/realtime - GET
/openai_realtime/openai/v1/realtime - GET
/openai_realtime/v1/openai/realtime
Path, query & header parameters 10
No request body.
Responses 101 · 400 · 401 · 403 · 429 · 500 · 502 · 504
# WebSocket upgrade (any client that sends headers on the handshake)
websocat \
--header "Authorization: Bearer $QUILR_API_KEY" \
'wss://guardrails-usa-1.quilr.ai/openai_realtime/v1/realtime?model=%3Cmodel%3E'
OpenAI Assistants
/openai_assistants/v1/assistantsList assistants
Lists assistants.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_assistants/openai/assistants - GET
/openai_assistants/v1/openai/assistants
Path, query & header parameters 5
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/assistants' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/assistantsCreate an assistant
Creates an assistant.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/assistants - POST
/openai_assistants/v1/openai/assistants
Path, query & header parameters 5
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/assistants' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>"
}'
/openai_assistants/v1/assistants/{assistant_id}Delete an assistant
Deletes an assistant.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- DELETE
/openai_assistants/openai/assistants/{assistant_id} - DELETE
/openai_assistants/v1/openai/assistants/{assistant_id}
Path, query & header parameters 6
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request DELETE \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/assistants/<assistant_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/assistants/{assistant_id}Retrieve an assistant
Retrieves an assistant.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_assistants/openai/assistants/{assistant_id} - GET
/openai_assistants/v1/openai/assistants/{assistant_id}
Path, query & header parameters 2
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/assistants/<assistant_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/assistants/{assistant_id}Modify an assistant
Modifies an assistant.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/assistants/{assistant_id} - POST
/openai_assistants/v1/openai/assistants/{assistant_id}
Path, query & header parameters 6
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/assistants/<assistant_id>' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/openai_assistants/v1/threadsCreate a thread
Creates a thread, optionally with initial messages. Message contents are scanned by guardrails before forwarding.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/threads - POST
/openai_assistants/v1/openai/threads
Path, query & header parameters 5
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/openai_assistants/v1/threads/runsCreate a thread and run it
Creates a thread and starts a run on it in one request. Message contents are scanned by guardrails before forwarding. With stream: true the response is a server-sent event stream. The streamed model output is scanned when the stream ends; the stored messages are scanned when read.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/threads/runs - POST
/openai_assistants/v1/openai/threads/runs
Path, query & header parameters 5
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/runs' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"assistant_id": "<assistant_id>"
}'
/openai_assistants/v1/threads/{thread_id}Delete a thread
Deletes a thread.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- DELETE
/openai_assistants/openai/threads/{thread_id} - DELETE
/openai_assistants/v1/openai/threads/{thread_id}
Path, query & header parameters 6
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request DELETE \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/threads/{thread_id}Retrieve a thread
Retrieves a thread.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_assistants/openai/threads/{thread_id} - GET
/openai_assistants/v1/openai/threads/{thread_id}
Path, query & header parameters 2
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/threads/{thread_id}Modify a thread
Modifies a thread's metadata or tool resources.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/threads/{thread_id} - POST
/openai_assistants/v1/openai/threads/{thread_id}
Path, query & header parameters 6
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/openai_assistants/v1/threads/{thread_id}/messagesList messages
Lists a thread's messages. Message contents are scanned by guardrails before they are returned.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_assistants/openai/threads/{thread_id}/messages - GET
/openai_assistants/v1/openai/threads/{thread_id}/messages
Path, query & header parameters 7
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/messages' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/threads/{thread_id}/messagesCreate a message
Adds a message to a thread. The content is scanned by guardrails before forwarding.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/threads/{thread_id}/messages - POST
/openai_assistants/v1/openai/threads/{thread_id}/messages
Path, query & header parameters 6
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/messages' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"role": "user",
"content": "Hello"
}'
/openai_assistants/v1/threads/{thread_id}/messages/{message_id}Delete a message
Deletes a message.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- DELETE
/openai_assistants/openai/threads/{thread_id}/messages/{message_id} - DELETE
/openai_assistants/v1/openai/threads/{thread_id}/messages/{message_id}
Path, query & header parameters 7
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request DELETE \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/messages/<message_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/threads/{thread_id}/messages/{message_id}Retrieve a message
Retrieves a message. Its content is scanned by guardrails before it is returned.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_assistants/openai/threads/{thread_id}/messages/{message_id} - GET
/openai_assistants/v1/openai/threads/{thread_id}/messages/{message_id}
Path, query & header parameters 3
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/messages/<message_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/threads/{thread_id}/messages/{message_id}Modify a message
Modifies a message's metadata.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/threads/{thread_id}/messages/{message_id} - POST
/openai_assistants/v1/openai/threads/{thread_id}/messages/{message_id}
Path, query & header parameters 7
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/messages/<message_id>' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/openai_assistants/v1/threads/{thread_id}/runsList runs
Lists a thread's runs. Tool-call arguments of runs awaiting tool outputs are scanned by guardrails before they are returned.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_assistants/openai/threads/{thread_id}/runs - GET
/openai_assistants/v1/openai/threads/{thread_id}/runs
Path, query & header parameters 6
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/runs' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/threads/{thread_id}/runsCreate a run
Starts a run of an assistant on a thread. additional_messages contents are scanned by guardrails before forwarding. With stream: true the response is a server-sent event stream. The streamed model output is scanned when the stream ends; the stored messages are scanned when read.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/threads/{thread_id}/runs - POST
/openai_assistants/v1/openai/threads/{thread_id}/runs
Path, query & header parameters 7
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/runs' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"assistant_id": "<assistant_id>"
}'
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}Retrieve a run
Retrieves a run. Tool-call arguments of a run awaiting tool outputs are scanned by guardrails before they are returned.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_assistants/openai/threads/{thread_id}/runs/{run_id} - GET
/openai_assistants/v1/openai/threads/{thread_id}/runs/{run_id}
Path, query & header parameters 3
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/runs/<run_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}Modify a run
Modifies a run's metadata.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/threads/{thread_id}/runs/{run_id} - POST
/openai_assistants/v1/openai/threads/{thread_id}/runs/{run_id}
Path, query & header parameters 7
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/runs/<run_id>' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/cancelCancel a run
Cancels an in-progress run. No request body.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/threads/{thread_id}/runs/{run_id}/cancel - POST
/openai_assistants/v1/openai/threads/{thread_id}/runs/{run_id}/cancel
Path, query & header parameters 7
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/runs/<run_id>/cancel' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/stepsList run steps
Lists a run's steps. Tool-call inputs and outputs are scanned by guardrails before they are returned.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_assistants/openai/threads/{thread_id}/runs/{run_id}/steps - GET
/openai_assistants/v1/openai/threads/{thread_id}/runs/{run_id}/steps
Path, query & header parameters 8
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/runs/<run_id>/steps' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/steps/{step_id}Retrieve a run step
Retrieves a run step. Tool-call inputs and outputs are scanned by guardrails before they are returned.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- GET
/openai_assistants/openai/threads/{thread_id}/runs/{run_id}/steps/{step_id} - GET
/openai_assistants/v1/openai/threads/{thread_id}/runs/{run_id}/steps/{step_id}
Path, query & header parameters 5
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/runs/<run_id>/steps/<step_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/submit_tool_outputsSubmit tool outputs
Submits function tool outputs to a run awaiting them. The outputs are scanned by guardrails before forwarding. With stream: true the response is a server-sent event stream. The streamed model output is scanned when the stream ends; the stored messages are scanned when read.
Request guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/openai_assistants/openai/threads/{thread_id}/runs/{run_id}/submit_tool_outputs - POST
/openai_assistants/v1/openai/threads/{thread_id}/runs/{run_id}/submit_tool_outputs
Path, query & header parameters 7
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/openai_assistants/v1/threads/<thread_id>/runs/<run_id>/submit_tool_outputs' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"tool_outputs": [
{
"output": "<output>"
}
]
}'
Anthropic Messages
/anthropic_messages/v1/messagesCreate a message
Anthropic Messages API. Runs the app's guardrails, routing, failover and limits, then calls the provider serving model. With stream: true the response is a server-sent event stream in Anthropic's event format. Other client headers are forwarded to the provider.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptResponse cacheAuthorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 7
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/anthropic_messages/v1/messages' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'anthropic-version: 2023-06-01' \
--header 'Content-Type: application/json' \
--data '{
"max_tokens": 1024,
"messages": [
{
"content": "Hello",
"role": "user"
}
],
"model": "claude-sonnet-4-5"
}'
/anthropic_messages/v1/messages/count_tokensCount message tokens
Counts input tokens with the provider serving model. Provider errors are returned as the provider sent them. When the provider has no counting endpoint the gateway returns a local estimate and sets the response header x-quilr-token-count-source: estimate.
No gateway features (no model call)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/anthropic_messages/v1/messages/count_tokens' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'anthropic-version: 2023-06-01' \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"messages": [
{
"role": "user",
"content": "Hello"
}
]
}'
/anthropic_messages/v1/modelsList models
Models enabled for the app on its Anthropic-family providers, in Anthropic's list format. Makes no upstream call. Models the app hides from listings are left out but stay callable.
No gateway features (no model call)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/anthropic_messages/models
Path, query & header parameters 5
No request body.
Responses 200 · 400 · 401 · 403 · 500
curl --request GET \
'https://guardrails-usa-1.quilr.ai/anthropic_messages/v1/models' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'anthropic-version: 2023-06-01'
/anthropic_messages/v1/models/{model_id}Retrieve a model
One model enabled for the app on its Anthropic-family providers. Makes no upstream call.
No gateway features (no model call)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- GET
/anthropic_messages/models/{model_id}
Path, query & header parameters 3
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 500
curl --request GET \
'https://guardrails-usa-1.quilr.ai/anthropic_messages/v1/models/<model_id>' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'anthropic-version: 2023-06-01'
/anthropic_messages/v1/quilr/usageGet the caller's quota usage
The caller's own quota buckets for this app: limit, used, remaining and reset time. Quotas grouped per person are included only when the caller's identity is verified (a Quilr-verified JWT or a per-user key). Makes no upstream call.
No gateway features (no model call)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikeyNo request body.
Responses 200 · 401 · 403 · 500
curl --request GET \
'https://guardrails-usa-1.quilr.ai/anthropic_messages/v1/quilr/usage' \
--header "Authorization: Bearer $QUILR_API_KEY"
AWS Bedrock Runtime
/model/{model_id}/converseConverse
Bedrock Converse. Runs the app's guardrails, routing, failover and limits, then calls the model. The app may serve the request from another provider in Converse format.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsUniversal system promptAuthorization: AWS4-HMAC-SHA256 (SigV4)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/bedrock-runtime/model/{model_id}/converse
Path, query & header parameters 8
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 408 · 409 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/model/<model_id>/converse' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"inferenceConfig": {
"maxTokens": 512
},
"messages": [
{
"content": [
{
"text": "Hello"
}
],
"role": "user"
}
]
}'
/model/{model_id}/converse-streamConverse with a response stream
Bedrock ConverseStream. Same request as Converse; the response is an AWS event stream (messageStart, contentBlockDelta, contentBlockStop, messageStop, metadata, and exception events). Errors before the stream starts are JSON.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsUniversal system promptAuthorization: AWS4-HMAC-SHA256 (SigV4)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/bedrock-runtime/model/{model_id}/converse-stream
Path, query & header parameters 8
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 408 · 409 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST --no-buffer \
'https://guardrails-usa-1.quilr.ai/model/<model_id>/converse-stream' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"role": "user",
"content": [
{
"text": "Hello"
}
]
}
]
}'
/model/{model_id}/invokeInvoke a model
Bedrock InvokeModel with the model's own request body. Recognisable text is checked by the app's guardrails; the body is otherwise forwarded unchanged, as are X-Amzn-Bedrock-* headers. Content-Type (default application/json) and Accept are forwarded to the model.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsUniversal system promptAuthorization: AWS4-HMAC-SHA256 (SigV4)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/bedrock-runtime/model/{model_id}/invoke
Path, query & header parameters 13
Full request body specification application/jsonalso */*
Responses 200 · 400 · 401 · 403 · 404 · 408 · 409 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/model/<model_id>/invoke' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/model/{model_id}/invoke-with-response-streamInvoke a model with a response stream
Bedrock InvokeModelWithResponseStream. The response is an AWS event stream of chunk events whose bytes carry the model's own streaming payload. Errors before the stream starts are JSON.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsUniversal system promptAuthorization: AWS4-HMAC-SHA256 (SigV4)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 1 alias path
- POST
/bedrock-runtime/model/{model_id}/invoke-with-response-stream
Path, query & header parameters 14
Full request body specification application/jsonalso */*
Responses 200 · 400 · 401 · 403 · 404 · 408 · 409 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST --no-buffer \
'https://guardrails-usa-1.quilr.ai/model/<model_id>/invoke-with-response-stream' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
Gemini and Vertex AI
/vertex_ai/{api_version}/models/{model}:batchEmbedContentsBatch embed contents (Gemini API path)
Gemini API batchEmbedContents, forwarded to the provider.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 6
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/models/<model>:batchEmbedContents' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"requests": [
{
"content": {
"parts": [
{}
]
}
}
]
}'
/vertex_ai/{api_version}/models/{model}:countTokensCount tokens (Gemini API path)
Gemini API countTokens, forwarded to the provider. Makes no generation call.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 6
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/models/<model>:countTokens' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/vertex_ai/{api_version}/models/{model}:embedContentEmbed content (Gemini API path)
Gemini API embedContent, forwarded to the provider.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 6
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/models/<model>:embedContent' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/vertex_ai/{api_version}/models/{model}:generateContentGenerate content (Gemini API path)
Gemini API generateContent. Runs the app's guardrails, routing and failover, then calls the provider serving the model. Query parameters other than credentials are forwarded.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 7
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/models/<model>:generateContent' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"contents": [
{
"parts": [
{
"text": "Hello"
}
],
"role": "user"
}
]
}'
/vertex_ai/{api_version}/models/{model}:streamGenerateContentStream generated content (Gemini API path)
Gemini API streamGenerateContent. Runs the app's guardrails, routing and failover, then calls the provider serving the model. Query parameters other than credentials are forwarded. Send alt=sse for server-sent events.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 8
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/models/<model>:streamGenerateContent' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"contents": [
{
"parts": [
{
"text": "Hello"
}
]
}
]
}'
/vertex_ai/{api_version}/projects/{project}/locations/{location}/endpoints/openapi/chat/completionsOpenAI-compatible chat completions on Vertex AI
Vertex AI's OpenAI-compatible chat completions endpoint. The body is an OpenAI chat completions request whose model (for example google/gemini-2.5-flash) is checked against the app's models. Forwarded to the provider; with stream: true the provider's event stream is returned unchanged.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 8
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/projects/<project>/locations/<location>/endpoints/openapi/chat/completions' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"messages": [
{}
]
}'
/vertex_ai/{api_version}/projects/{project}/locations/{location}/endpoints/{endpoint}:predictPredict on a Vertex AI endpoint
Vertex AI endpoint predict. The model is the one the app maps to this endpoint. Forwarded to the provider; the response comes back unchanged.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 8
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/projects/<project>/locations/<location>/endpoints/<endpoint>:predict' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:countTokensCount tokens (Vertex AI path)
Vertex AI countTokens, forwarded to the provider. Makes no generation call.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 9
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/projects/<project>/locations/<location>/publishers/google/models/<model>:countTokens' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:embedContentEmbed content (Vertex AI path)
Vertex AI embedContent, forwarded to the provider.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 9
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/projects/<project>/locations/<location>/publishers/google/models/<model>:embedContent' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:generateContentGenerate content (Vertex AI path)
Vertex AI generateContent. Runs the app's guardrails, routing and failover, then calls the provider serving the model. Query parameters other than credentials are forwarded.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 10
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/projects/<project>/locations/<location>/publishers/google/models/<model>:generateContent' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"contents": [
{
"parts": [
{
"text": "Hello"
}
],
"role": "user"
}
]
}'
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:predictPredict (publisher model)
Vertex AI predict (for example text embedding and image models). Forwarded to the provider with the app's access rules and limits.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 9
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/projects/<project>/locations/<location>/publishers/google/models/<model>:predict' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:rawPredictRaw predict (publisher model)
Vertex AI rawPredict with the publisher's own body (for example Anthropic Messages for Claude on Vertex AI). Forwarded to the provider with the app's access rules and limits.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 9
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/projects/<project>/locations/<location>/publishers/google/models/<model>:rawPredict' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:streamGenerateContentStream generated content (Vertex AI path)
Vertex AI streamGenerateContent. Runs the app's guardrails, routing and failover, then calls the provider serving the model. Query parameters other than credentials are forwarded. Send alt=sse for server-sent events.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 11
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/projects/<project>/locations/<location>/publishers/google/models/<model>:streamGenerateContent' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"contents": [
{
"parts": [
{
"text": "Hello"
}
]
}
]
}'
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:streamRawPredictStream raw predict (publisher model)
Vertex AI streamRawPredict with the publisher's own body; the provider's stream is returned unchanged. Forwarded to the provider with the app's access rules and limits.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 9
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertex_ai/v1/projects/<project>/locations/<location>/publishers/google/models/<model>:streamRawPredict' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/vertexai/v1/generateContentGenerate content (model in the body)
Gemini generateContent with model in the body instead of the path. Runs the app's guardrails, routing and failover, then calls the provider serving the model. Query parameters other than credentials are forwarded. With stream: true the response is server-sent events of GenerateContentResponse objects.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 5
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/vertexai/v1/generateContent' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"contents": [
{
"parts": [
{
"text": "Hello"
}
],
"role": "user"
}
],
"model": "gemini-2.5-flash"
}'
Rerank
/rerank/v1/rerankRerank documents
Orders documents by relevance to query. /rerank/rerank and /rerank/v2/rerank accept the same body and return the same response. Provider errors are returned as the provider sent them.
Request guardrailsModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyAlso served at 2 alias paths
- POST
/rerank/rerank - POST
/rerank/v2/rerank
Path, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/rerank/v1/rerank' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"documents": [
"Paris is the capital of France.",
"Berlin is in Germany."
],
"model": "rerank-v3.5",
"query": "What is the capital of France?",
"top_n": 1
}'
Mistral
/mistral/v1/fim/completionsCreate a fill-in-the-middle completion
Completes code between prompt and suffix. With stream: true the response is a server-sent event stream of Mistral completion chunks ending with data: [DONE].
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/mistral/v1/fim/completions' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "codestral-latest",
"prompt": "def fib(n):",
"suffix": "\nprint(fib(10))"
}'
/mistral/v1/ocrExtract text from a document
Runs Mistral OCR on a document or image and returns each page as Markdown.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/mistral/v1/ocr' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"document": {
"document_url": "https://example.com/invoice.pdf",
"type": "document_url"
},
"model": "mistral-ocr-latest"
}'
xAI
/xai/v1/batchesList batches
Lists batch jobs, a page at a time.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/xai/v1/batches' \
--header "Authorization: Bearer $QUILR_API_KEY"
/xai/v1/batchesCreate a batch
Creates a batch job. Add requests with the add batch requests operation, or pass an uploaded input_file_id.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 5
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/xai/v1/batches' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
/xai/v1/batches/{batch_id}Get a batch
Returns a batch job and its request counters.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 3
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/xai/v1/batches/<batch_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/xai/v1/batches/{batch_id}/requestsList batch requests
Returns a page of a batch's requests and their states.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 5
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/xai/v1/batches/<batch_id>/requests' \
--header "Authorization: Bearer $QUILR_API_KEY"
/xai/v1/batches/{batch_id}/requestsAdd batch requests
Adds requests to a batch job.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 6
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/xai/v1/batches/<batch_id>/requests' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"batch_requests": [
{
"batch_request": {}
}
]
}'
/xai/v1/batches/{batch_id}/resultsList batch results
Returns a page of a batch's completed results.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 5
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/xai/v1/batches/<batch_id>/results' \
--header "Authorization: Bearer $QUILR_API_KEY"
/xai/v1/batches/{batch_id}:cancelCancel a batch
Cancels a batch job's pending requests. The path ends in the literal :cancel. No request body.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 6
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/xai/v1/batches/<batch_id>:cancel' \
--header "Authorization: Bearer $QUILR_API_KEY"
/xai/v1/images/editsEdit images
Edits one or more images from a prompt. JSON bodies only, with images given by URL or data: URI.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/xai/v1/images/edits' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'
/xai/v1/images/generationsGenerate images
Generates images from a prompt.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/xai/v1/images/generations' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'
/xai/v1/responsesCreate a response
Creates a model response with xAI's Responses API, including xAI server-side tools. Input is scanned by guardrails before forwarding. With stream: true the response is a server-sent event stream of Responses events.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 409 · 413 · 415 · 422 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/xai/v1/responses' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-4",
"input": "Hello"
}'
/xai/v1/responses/{response_id}Delete a response
Deletes a stored response.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 5
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 504
curl --request DELETE \
'https://guardrails-usa-1.quilr.ai/xai/v1/responses/<response_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/xai/v1/responses/{response_id}Get a response
Retrieves a stored response.
Request guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 1
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 422 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/xai/v1/responses/<response_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
/xai/v1/videos/editsStart a video edit
Starts an asynchronous edit of a video and returns its request_id.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/xai/v1/videos/edits' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'
/xai/v1/videos/extensionsStart a video extension
Starts an asynchronous extension of a video and returns its request_id.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/xai/v1/videos/extensions' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'
/xai/v1/videos/generationsStart a video generation
Starts an asynchronous video generation job and returns its request_id.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/xai/v1/videos/generations' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'
/xai/v1/videos/{video_id}Get a video job
Returns a video job's status and, when done, the video URL.
Guardrails do not scan this route. Provider response headers are not relayed on this route.
Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 3
No request body.
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 504
curl --request GET \
'https://guardrails-usa-1.quilr.ai/xai/v1/videos/<video_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"
Sarvam
/sarvam/speech-to-textTranscribe speech
Transcribes an uploaded audio file (multipart/form-data). Every form field is forwarded to Sarvam; the transcript is scanned by guardrails before it is returned.
Request guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification multipart/form-data
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/sarvam/speech-to-text' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--form 'file=@file'
/sarvam/speech-to-text-translateTranscribe and translate speech
Transcribes an uploaded audio file (multipart/form-data) and translates it to English. The transcript is scanned by guardrails before it is returned.
Request guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification multipart/form-data
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/sarvam/speech-to-text-translate' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--form 'file=@file'
/sarvam/text-lidIdentify the language of text
Returns the language and script of input. The input is scanned by guardrails before forwarding.
Request guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/sarvam/text-lid' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"input": "Hello"
}'
/sarvam/text-to-speechSynthesize speech
Converts text to speech and returns Sarvam's JSON with base64 audio. The text is scanned by guardrails before forwarding.
Request guardrailsModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/sarvam/text-to-speech' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"text": "Hello",
"target_language_code": "<target_language_code>"
}'
/sarvam/translateTranslate text
Translates input between languages. The input and the translation are scanned by guardrails.
Request guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/sarvam/translate' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"input": "Hello",
"source_language_code": "<source_language_code>",
"target_language_code": "<target_language_code>"
}'
/sarvam/transliterateTransliterate text
Converts input to another script. The input and the result are scanned by guardrails.
Request guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/sarvam/transliterate' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"input": "Hello",
"source_language_code": "<source_language_code>",
"target_language_code": "<target_language_code>"
}'
TypeSafe System One
/typesafe/v1/modelsList decision models
Decision models configured for the app and allowed for the caller. Makes no upstream call.
No gateway features (no model call)Authorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyNo request body.
Responses 200 · 401 · 403 · 500
curl --request GET \
'https://guardrails-usa-1.quilr.ai/typesafe/v1/models' \
--header "Authorization: Bearer $QUILR_API_KEY"
/typesafe/v1/systemoneAnswer System One decision questions
Answers typed questions about state with probabilities. Text and JSON input only. Request bodies may be gzip or deflate encoded; zstd is refused with 415.
Request guardrailsModel access rulesLimits, quotas and budgetsAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 4
Full request body specification application/json
Responses 200 · 400 · 401 · 403 · 404 · 413 · 415 · 429 · 500 · 502 · 503 · 504
curl --request POST \
'https://guardrails-usa-1.quilr.ai/typesafe/v1/systemone' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"state": "<state>",
"questions": {}
}'
Specification
/llmgateway_inference_apis/v1/openapi.jsonGet this OpenAPI document
Returns the inference OpenAPI document. Pass family for one API family only.
No gateway features (no model call)Authorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikeyPath, query & header parameters 2
No request body.
Responses 200 · 400 · 401
curl --request GET \
'https://guardrails-usa-1.quilr.ai/llmgateway_inference_apis/v1/openapi.json' \
--header "Authorization: Bearer $QUILR_API_KEY"
Related
- Integration guide: base URLs and SDK examples for each format
- Any-to-any formats: call any provider from any client format
- Endpoint families: moderations, images, completions, files, batches, videos and vendor routes
- Routing and failover: what
X-Quilr-Route,X-Quilr-AttemptsandX-Quilr-Failoverreport - Management API: configure apps, providers and controls from scripts