Skip to main content

Inference API

LLM GATEWAY / INFERENCE V1

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.

Provider wire formats Guardrails on every call Routing and failover headers

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​

Base 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.

RegionBase URLregion value
USA 1 (US Central West) (default)https://guardrails-usa-1.quilr.aiguardrails-usa-1
USA 2 (US East)https://guardrails-usa-2.quilr.aiguardrails-usa-2
Europehttps://guardrails-europe-1.quilr.aiguardrails-europe-1
India 1 (Mumbai)https://guardrails-india-1.quilr.aiguardrails-india-1
India 2 (Mumbai)https://guardrails-india-2.quilr.aiguardrails-india-2
Japan (Tokyo)https://guardrails-jp-1.quilr.aiguardrails-jp-1
Globalhttps://guardrails.quilr.aiguardrails

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 Authorization is present it decides: a malformed value is rejected and no other header is tried. Otherwise the protocol header is read (for example api-key, x-api-key or x-goog-api-key), then apikey, ocp-apim-subscription-key and x-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-Protocol entry. Prefer a header: query strings can appear in proxy access logs.
HeaderAccepted onDetails
Authorization: BearerEvery familyAuthorization: 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 RuntimeAWS 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-keySpecification, Mistral, Azure OpenAI, OpenAI Assistants, OpenAI-compatible, OpenAI Realtime, OpenAI Responses, Rerank, Sarvam, TypeSafe System One, xAIAzure OpenAI style api-key with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT.
x-api-keyEvery familyx-api-key with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT.
apikeyEvery familyKong key-auth style apikey header with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT.
x-goog-api-keyGemini and Vertex AIGemini SDK style x-goog-api-key with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT.
ocp-apim-subscription-keyEvery familyAzure API Management style header with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT.
api-subscription-keySarvamSarvam SDK style api-subscription-key with a Quilr API key (sk-quilr-...) or a Quilr-verified JWT.
x-apikeyEvery familyApigee 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.

HeaderPurposeMore
X-User-EmailThe end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 identity_required). A verified JWT or a named self-service key carries its own identity, which this header never replaces.Identity and network trust
X-Conversation-IdGroups related requests into one conversation for logs, routing and session pinning. Required when the app enforces conversation ids (400 conversation_id_required).Conversation grouping
X-Provider-LabelSends the request to one provider configured on the app (by its label) instead of the app's routing. Also accepted as provider_label in the body. An explicitly selected provider is never moved by failover.Provider support
X-Provider-NameSends the request to the app's provider of this type (for example openai or bedrock) instead of the app's routing. Also accepted as provider in the body. X-Provider-Label wins when both are sent; never moved by failover.Provider support for provider type names
X-Prompt-VariablesJSON values for {{variable}} placeholders in stored prompts, keyed by prompt reference. Chat, Messages, Responses and generateContent.Prompt Store template variables

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.

RouteRequest guardrailsResponse guardrailsGuardianHallucinationAttachmentsModel accessRouting groupsContent routingFailoverLimitsToken savingPrompt StoreUniversal promptResponse 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-ID identifies the request in gateway logs. Quote it when you contact support.
  • Routing. X-Quilr-Route is the opaque id of the routing rule that chose the upstream (r_ and 16 hex characters, or default), and X-Quilr-Served-Model the model actually called. See routing and failover.
  • Retries and failover. X-Quilr-Attempts and X-Quilr-Failover report same-target retries and moves to another target. See failover.
  • Response cache. X-Quilr-Cache and Age mark a response served from the app's response cache.
  • Quotas and budgets. RateLimit-Policy and RateLimit (IETF format) describe the tightest quota, with X-Quilr-Quota-Remaining, X-Quilr-Quota-Reset, X-Quilr-Quota-Warning, X-Quilr-Budget-Overflow and X-Quilr-Quota-Scope. See rate, token and budget limits.
  • Errors. X-Quilr-Error-Source and X-Quilr-Error-Code say who raised an error and its code, Retry-After when to retry, and Link an administrator's help link. A 429 adds X-RateLimit-*, X-Quilr-Quota-Id, X-Quilr-Quota-Blocked-By and X-Should-Retry.
Browsers cannot read these headers

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.

HeaderSent onMeaning
AgeSuccessSeconds since the cached response was stored (cache hits only).
RateLimitSuccess and errorsIETF 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-PolicySuccess and errorsIETF 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-AfterErrorsSeconds to wait before retrying (quota and limit refusals, no available target, or relayed from the provider).
X-Quilr-AttemptsSuccess and errorsNumber of upstream sends made, same-target retries included. Only sent when greater than 1; also on errors.
X-Quilr-Budget-OverflowSuccesstrue when a quota admitted this request inside its overflow band (at or over its limit but under the hard stop).
X-Quilr-CacheSuccessHIT 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-CodeErrorsThe 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-SourceErrorsupstream when the provider failed (status and scrubbed reason relayed), gateway for the gateway's own routing refusals.
X-Quilr-FailoverSuccess and errorsFailover 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-ByErrorsComma-separated ids of every quota that refused the request (429).
X-Quilr-Quota-IdErrorsId of the primary exhausted quota (429 quota_exceeded).
X-Quilr-Quota-RemainingSuccess and errorsRemaining 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-ResetSuccess and errorsReset 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-ScopeSuccess and errorsnode: 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-WarningSuccessid=<quota id>; pct=<used percent>: the most-used quota at or past one of its alert thresholds.
X-Quilr-Request-IDSuccess and errorsGateway 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-RouteSuccessOpaque, 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-ModelSuccessUpstream 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-SourceSuccessestimate 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-LimitErrorsLimit of the exhausted quota or app limit (429).
X-RateLimit-RemainingErrorsRemaining allowance of the exhausted quota or app limit (429).
X-RateLimit-ResetErrorsUnix time (seconds) the exhausted quota or limit resets (429).
X-Should-RetryErrorsfalse when retrying cannot help (a budget is exhausted, a zero allowance, or the administrator chose so). OpenAI and Anthropic SDKs honour it.
x-amzn-ErrorTypeErrorsBedrock APIs: AWS exception name of the error, e.g. ThrottlingException.
x-amzn-RequestIdErrorsBedrock 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:

Error schemaFamiliesWhere the gateway code goes
OpenAIErrorOpenAI-compatible, Responses, Azure OpenAI, Assistants, rerank, Mistral, xAI, Sarvam, TypeSafeerror.code, with error.type, error.source, error.help_url and, for quotas, error.quota / error.blocked_by
AnthropicErrorAnthropic Messageserror.code (guardrail blocks keep the code but not details)
BedrockErrorAWS Bedrock Runtimereason and X-Quilr-Error-Code, appended to the message as (reason: <code>); the type is in __type and x-amzn-ErrorType
GoogleErrorGemini and Vertex AIerror.details[].reason and X-Quilr-Error-Code
  • Who raised it. Read X-Quilr-Error-Source (upstream when the provider failed, gateway for the gateway's own routing refusals) or error.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 (source provider), each with its usual status.
  • Help text. Administrators may replace an error's message and attach a help link (help_url and the Link header). 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

CodeSourceStatusGroupDescription
missing_api_keygateway401authenticationNo gateway API key was sent.
invalid_api_keygateway401authenticationThe gateway API key is unknown or revoked, or its app is disabled. Also sent by providers: read X-Quilr-Error-Source.
expired_api_keygateway401authenticationThe self-service API key has expired.
jwt_auth_failedgateway401authenticationThe bearer token could not be verified.
self_service_identity_requiredgateway401authenticationA self-service app accepts only its own Quilr API keys.
missing_providergateway500configurationThe app has no provider configured.
missing_provider_keygateway500configurationThe provider has no credential configured.
unsupported_providergateway400configurationThe app's provider cannot serve this API.
provider_not_configuredgateway400configurationThe requested provider is not configured for this app.
sdk_mode_requiredgateway403configurationThis endpoint requires a Quilr SDK app key.
internal_errorgateway500configurationAn unexpected gateway error.
policy_access_deniedgateway403accessA Policy Engine rule denied the request.
policy_model_deniedgateway403accessThe model is on a rejected-models list.
policy_model_not_allowedgateway403accessThe model is outside the allowed-models list that applies.
model_access_deniedgateway403accessThe model is not enabled for this app.
policy_tool_access_deniedgateway403accessA Policy Engine rule denied a tool call.
source_ip_not_allowedgateway403accessThe client IP address is not allowed.
policy_source_ip_deniedgateway403accessA Policy Engine rule denied the client IP address.
policy_provider_unsupportedgateway403accessThe routed provider cannot serve this request.
policy_routing_group_wrong_surfacegateway403accessThe routing group cannot serve this API.
policy_routing_group_not_definedgateway403accessThe requested routing group is not defined.
policy_configuration_errorgateway500accessThe published policy cannot be applied.
policy_evaluation_errorgateway500accessThe policy could not be evaluated.
identity_check_failedgateway401identityThe user identity could not be verified.
identity_requiredgateway401identityThe app requires a user identity.
conversation_id_requiredgateway400identityThe app requires a conversation id.
system_prompt_not_from_storegateway400prompt_storeThe system prompt does not come from the Prompt Store.
prompt_store_not_configuredgateway400prompt_storeThe Prompt Store is not configured for this app.
prompt_store_errorgateway400prompt_storeThe Prompt Store prompt could not be used.
invalid_prompt_variablesgateway400prompt_storeThe Prompt Store variables are invalid.
invalid_jsongateway400requestThe request body is not valid JSON.
missing_required_parametergateway400requestA required request parameter is missing.
invalid_extra_bodygateway400requestThe extra_body parameter is invalid.
invalid_requestgateway400requestThe request is invalid for the provider adapter.
model_not_foundgateway404requestThe app does not offer the requested model. Also sent by providers: read X-Quilr-Error-Source.
rate_limit_exceededgateway429limitsThe app's request rate limit was reached. Also sent by providers: read X-Quilr-Error-Source.
concurrency_limit_exceededgateway429limitsThe app's concurrency limit was reached.
input_token_limit_exceededgateway429limitsThe app's input-token limit was reached.
output_token_limit_exceededgateway429limitsThe app's output-token limit was reached.
max_tokens_per_request_exceededgateway400limitsThe request asks for more tokens than one request may use.
max_tokens_exceededgateway400limitsThe request asks for more tokens than one request may use (Messages).
model_rate_limit_exceededgateway429limitsThe model's request rate limit was reached.
model_concurrency_limit_exceededgateway429limitsThe model's concurrency limit was reached.
model_input_token_limit_exceededgateway429limitsThe model's input-token limit was reached.
model_output_token_limit_exceededgateway429limitsThe model's output-token limit was reached.
model_max_tokens_per_request_exceededgateway400limitsThe request asks for more tokens than the model allows per request.
rate_or_token_limit_exceededgateway429limitsA rate or token limit was reached (Bedrock).
limit_exceededgateway429limitsA usage limit was reached.
quota_exceededgateway429quotaA usage quota or budget is exhausted.
quota_price_unavailablegateway403quotaThe model has no price for a spend budget.
quota_usage_unavailablegateway503quotaThe route cannot measure a quota's usage.
quota_accounting_errorgateway503quotaQuota usage could not be recorded.
sensitive_data_blockedgateway400guardrailsSensitive data was detected and blocked.
adversarial_content_blockedgateway400guardrailsAdversarial content (prompt attack) was blocked.
custom_intent_blockedgateway400guardrailsA custom intent was detected and blocked.
language_blockedgateway400guardrailsThe language of the content is blocked.
guardian_task_adherence_blockedgateway400guardrailsGuardian blocked a request outside the app's task.
hallucination_blockedgateway400guardrailsThe response was blocked as a likely hallucination.
all_targets_unavailablegateway503routingNo provider target could take the request.
embedding_dimension_mismatchgateway502routingA failover target returned embeddings of a different size.
routing_constraint_unsatisfiedgateway403routingNo allowed target satisfies the request's routing constraints.
routing_state_bound_conflictgateway409routingThe request's provider-bound state lives on a target its routing constraints exclude.
routing_constraint_check_unavailablegateway503routingA routing-constraint check could not be completed.
translation_unconvertible_requestgateway400translationThe request cannot be converted to the provider's API.
translation_unsupported_stategateway400translationThe request depends on state the provider cannot use.
upstream_api_unsupportedgateway400translationThe provider cannot serve this client API.
state_not_portablegateway400translationConversation state cannot move to this provider.
provider_not_conversationalgateway400translationThe provider does not serve conversational requests.
unsupported_client_apigateway400translationThe client API is not supported.
translation_internal_errorgateway500translationThe request could not be converted.
translation_response_failedgateway502translationThe provider's response could not be converted.
translation_target_configuration_errorgateway500translationThe translated provider target is misconfigured.
attachment_type_not_allowedgateway415attachmentsAn attachment's detected file type is not allowed.
attachment_too_largegateway413attachmentsAn attachment is larger than the allowed size.
attachment_request_too_largegateway413attachmentsThe request's attachments are larger in total than allowed.
attachment_too_manygateway413attachmentsThe request carries more new attachments than allowed.
attachment_too_many_pagesgateway413attachmentsA document has more pages than allowed.
attachment_unscannablegateway422attachmentsAn attachment is encrypted, unparseable or a remote reference, and the policy blocks unscannable files.
attachment_blockedgateway403attachmentsAn 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_requestprovider400upstreamThe provider rejected the request.
upstream_unauthorizedprovider401upstreamThe provider rejected the gateway's credentials. Failover class: auth.
upstream_forbiddenprovider403upstreamThe provider denied access. Failover class: auth.
upstream_not_foundprovider404upstreamThe provider did not find the model or resource. Failover class: model_not_found.
upstream_timeoutprovider504upstreamThe provider timed out. Failover class: timeout.
upstream_conflictprovider409upstreamThe provider rejected the request as a conflict.
upstream_request_too_largeprovider413upstreamThe provider rejected the request as too large.
upstream_rate_limitedprovider429upstreamThe provider rate-limited the request. Failover class: rate_limit.
upstream_overloadedprovider529upstreamThe provider is overloaded. Failover class: server_error.
upstream_errorprovider502upstreamThe provider returned an error.
upstream_unreachableprovider502upstreamThe provider could not be reached. Failover class: connection.
upstream_stream_truncatedprovider502upstreamThe provider's stream ended early.
upstream_stream_malformedprovider502upstreamThe provider's stream could not be read.
upstream_stream_errorprovider502upstreamThe provider's stream reported an error.
remote_connector_unreachableprovider503upstreamThe 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).

CodeBlocked by
sensitive_data_blockedSensitive data. Details give only a count, never the detected values.
adversarial_content_blockedA prompt attack or other adversarial content.
custom_intent_blockedA custom intent detection.
language_blockedA language the app does not allow.
guardian_task_adherence_blockedThe Guardian agent's task adherence check.
hallucination_blockedThe hallucination check.
  • 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 X characters of the same length (text to speech uses REDACTED), 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 200 event stream early. A later failure then arrives as an in-stream error event with an added status_code field instead of an HTTP status.
  • Bedrock. Bedrock streams end with an exception frame (modelStreamErrorException or internalServerException) when the upstream stream is interrupted.
  • Realtime. Realtime operations upgrade to a WebSocket (101 Switching Protocols). Errors found after the upgrade arrive as one Realtime error event, 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-1 for Europe only). Combine it with ?family=<key> for one family. The route needs a Quilr API key or JWT, and an unknown region returns 400 unknown_region.
  • Or set the variable. In a downloaded file, set the region variable's default to your region (or edit servers to your gateway URL) before converting.

Pick a region and family to get the matching live URL:

Pinned to USA 1 (US Central West)
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
FamilyDownloadLive, pinned to guardrails-usa-1Paths
All familiesllm-gateway-inference-v1.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1239
OpenAI-compatiblellm-gateway-inference-v1-openai_compatible.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=openai_compatible61
OpenAI Responsesllm-gateway-inference-v1-openai_responses.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=openai_responses16
Azure OpenAIllm-gateway-inference-v1-azure_openai.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=azure_openai27
OpenAI Realtimellm-gateway-inference-v1-openai_realtime.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=openai_realtime6
OpenAI Assistantsllm-gateway-inference-v1-openai_assistants.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=openai_assistants69
Anthropic Messagesllm-gateway-inference-v1-anthropic_messages.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=anthropic_messages7
AWS Bedrock Runtimellm-gateway-inference-v1-bedrock_runtime.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=bedrock_runtime8
Gemini and Vertex AIllm-gateway-inference-v1-google_gemini.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=google_gemini15
Rerankllm-gateway-inference-v1-rerank.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=rerank3
Mistralllm-gateway-inference-v1-mistral.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=mistral2
xAIllm-gateway-inference-v1-xai.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=xai16
Sarvamllm-gateway-inference-v1-sarvam.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=sarvam6
TypeSafe System Onellm-gateway-inference-v1-typesafe.json/llmgateway_inference_apis/v1/openapi.json?region=guardrails-usa-1&family=typesafe2

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:

AreaWhat to do
Body validationDo not enable strict body validation (for example the request-validator plugin with unknown fields rejected). The schemas are permissive by design and the gateway forwards provider options it does not know.
StreamingTurn off response buffering (response_buffering: false on the route) for SSE and Bedrock eventstream paths, or streams arrive all at once at the end.
RealtimeRealtime paths are WebSocket upgrades. Give their routes the ws / wss protocols (or the http / https protocols your Kong edition passes upgrades through).
AliasesRoute every alias path. The converted config includes them; keep them if you hand-edit routes.
CredentialsThe gateway reads Authorization first, then the protocol header (api-key, x-api-key, x-goog-api-key, api-subscription-key), then apikey (Kong key-auth's default), ocp-apim-subscription-key and x-apikey. If you use key-auth, keep hide_credentials off when clients send their Quilr key in apikey, or inject the Quilr key upstream (for example Authorization: Bearer <key> with the request-transformer plugin).
Bedrock SigV4SigV4 signs the host, path and body. Set preserve_host: true on Bedrock routes and do not rewrite their path or body.
Gemini and Vertex AIPaths under /vertex_ai/ are a catch-all for Google's resource paths (including :generateContent-style suffixes). A prefix route on /vertex_ai/ with strip_path: false is simpler than the generated per-path routes.
Browser clientsThe gateway does not CORS-expose x-quilr-* response headers, so browser JavaScript cannot read them unless your API gateway's CORS configuration exposes them (for example exposed_headers on Kong's CORS plugin).

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)

POST
/anthropic_messages/v1/messagesCreate a message
POST
/anthropic_messages/v1/messages/count_tokensCount message tokens
GET
/anthropic_messages/v1/modelsList models+1 alias
GET
/anthropic_messages/v1/models/{model_id}Retrieve a model+1 alias
GET
/anthropic_messages/v1/quilr/usageGet the caller's quota usage
GET
/llmgateway_inference_apis/v1/openapi.jsonGet this OpenAPI document
POST
/mistral/v1/fim/completionsCreate a fill-in-the-middle completion
POST
/mistral/v1/ocrExtract text from a document
POST
/model/{model_id}/converseConverse+1 alias
POST
/model/{model_id}/converse-streamConverse with a response stream+1 alias
POST
/model/{model_id}/invokeInvoke a model+1 alias
POST
/model/{model_id}/invoke-with-response-streamInvoke a model with a response stream+1 alias
POST
/openai/deployments/{deployment}/audio/speechGenerate speech+2 aliases
POST
/openai/deployments/{deployment}/audio/transcriptionsTranscribe audio+2 aliases
POST
/openai/deployments/{deployment}/audio/translationsTranslate audio to English+2 aliases
POST
/openai/deployments/{deployment}/chat/completionsCreate a chat completion+2 aliases
POST
/openai/deployments/{deployment}/embeddingsCreate embeddings+2 aliases
POST
/openai/deployments/{deployment}/responsesCreate a model response+1 alias
DELETE
/openai/deployments/{deployment}/responses/{response_id}Delete a stored response+1 alias
GET
/openai/deployments/{deployment}/responses/{response_id}Retrieve a stored response+1 alias
POST
/openai/deployments/{deployment}/responses/{response_id}/cancelCancel a background response+1 alias
GET
/openai/deployments/{deployment}/responses/{response_id}/input_itemsList a response's input items+1 alias
GET
/openai_assistants/v1/assistantsList assistants+2 aliases
POST
/openai_assistants/v1/assistantsCreate an assistant+2 aliases
DELETE
/openai_assistants/v1/assistants/{assistant_id}Delete an assistant+2 aliases
GET
/openai_assistants/v1/assistants/{assistant_id}Retrieve an assistant+2 aliases
POST
/openai_assistants/v1/assistants/{assistant_id}Modify an assistant+2 aliases
POST
/openai_assistants/v1/threadsCreate a thread+2 aliases
POST
/openai_assistants/v1/threads/runsCreate a thread and run it+2 aliases
DELETE
/openai_assistants/v1/threads/{thread_id}Delete a thread+2 aliases
GET
/openai_assistants/v1/threads/{thread_id}Retrieve a thread+2 aliases
POST
/openai_assistants/v1/threads/{thread_id}Modify a thread+2 aliases
GET
/openai_assistants/v1/threads/{thread_id}/messagesList messages+2 aliases
POST
/openai_assistants/v1/threads/{thread_id}/messagesCreate a message+2 aliases
DELETE
/openai_assistants/v1/threads/{thread_id}/messages/{message_id}Delete a message+2 aliases
GET
/openai_assistants/v1/threads/{thread_id}/messages/{message_id}Retrieve a message+2 aliases
POST
/openai_assistants/v1/threads/{thread_id}/messages/{message_id}Modify a message+2 aliases
GET
/openai_assistants/v1/threads/{thread_id}/runsList runs+2 aliases
POST
/openai_assistants/v1/threads/{thread_id}/runsCreate a run+2 aliases
GET
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}Retrieve a run+2 aliases
POST
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}Modify a run+2 aliases
POST
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/cancelCancel a run+2 aliases
GET
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/stepsList run steps+2 aliases
GET
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/steps/{step_id}Retrieve a run step+2 aliases
POST
/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/submit_tool_outputsSubmit tool outputs+2 aliases
GET
/openai_compatible/openai/modelsList models+1 alias
POST
/openai_compatible/v1/audio/speechGenerate speech+1 alias
POST
/openai_compatible/v1/audio/transcriptionsTranscribe audio+1 alias
POST
/openai_compatible/v1/audio/translationsTranslate audio to English+1 alias
GET
/openai_compatible/v1/batchesList batches+1 alias
POST
/openai_compatible/v1/batchesCreate a batch+1 alias
GET
/openai_compatible/v1/batches/{batch_id}Retrieve a batch+1 alias
POST
/openai_compatible/v1/batches/{batch_id}/cancelCancel a batch+1 alias
GET
/openai_compatible/v1/batches/{batch_id}/resultsGet batch results+1 alias
POST
/openai_compatible/v1/chat/completionsCreate a chat completion+1 alias
POST
/openai_compatible/v1/completionsCreate a text completion+1 alias
POST
/openai_compatible/v1/decisionsAnswer decision questions
POST
/openai_compatible/v1/embeddingsCreate embeddings+1 alias
GET
/openai_compatible/v1/filesList files+1 alias
POST
/openai_compatible/v1/filesUpload a file+1 alias
DELETE
/openai_compatible/v1/files/{file_id}Delete a file+1 alias
GET
/openai_compatible/v1/files/{file_id}Retrieve a file+1 alias
GET
/openai_compatible/v1/files/{file_id}/contentDownload file content+1 alias
POST
/openai_compatible/v1/images/editsEdit images+1 alias
POST
/openai_compatible/v1/images/generationsGenerate images+1 alias
POST
/openai_compatible/v1/images/variationsCreate image variations+1 alias
GET
/openai_compatible/v1/modelsList models+1 alias
GET
/openai_compatible/v1/models/{model_id}Retrieve a model+1 alias
POST
/openai_compatible/v1/moderationsClassify content+1 alias
POST
/openai_compatible/v1/ocrExtract text from a document+1 alias
GET
/openai_compatible/v1/quilr/usageGet my quota usage+1 alias
GET
/openai_compatible/v1/videosList videos+1 alias
POST
/openai_compatible/v1/videosCreate a video+1 alias
POST
/openai_compatible/v1/videos/editsEdit a video+1 alias
DELETE
/openai_compatible/v1/videos/{video_id}Delete a video+1 alias
GET
/openai_compatible/v1/videos/{video_id}Retrieve a video job+1 alias
GET
/openai_compatible/v1/videos/{video_id}/contentDownload video content+1 alias
GET
/openai_realtime/v1/realtimeOpen a Realtime session (WebSocket)WebSocket+5 aliases
GET
/openai_responses/v1/quilr/usageRead the caller's quota usage
POST
/openai_responses/v1/responsesCreate a model response+2 aliases
DELETE
/openai_responses/v1/responses/{response_id}Delete a stored response+2 aliases
GET
/openai_responses/v1/responses/{response_id}Retrieve a stored response+2 aliases
POST
/openai_responses/v1/responses/{response_id}/cancelCancel a background response+2 aliases
GET
/openai_responses/v1/responses/{response_id}/input_itemsList a response's input items+2 aliases
POST
/rerank/v1/rerankRerank documents+2 aliases
POST
/sarvam/speech-to-textTranscribe speech
POST
/sarvam/speech-to-text-translateTranscribe and translate speech
POST
/sarvam/text-lidIdentify the language of text
POST
/sarvam/text-to-speechSynthesize speech
POST
/sarvam/translateTranslate text
POST
/sarvam/transliterateTransliterate text
GET
/typesafe/v1/modelsList decision models
POST
/typesafe/v1/systemoneAnswer System One decision questions
POST
/vertex_ai/{api_version}/models/{model}:batchEmbedContentsBatch embed contents (Gemini API path)
POST
/vertex_ai/{api_version}/models/{model}:countTokensCount tokens (Gemini API path)
POST
/vertex_ai/{api_version}/models/{model}:embedContentEmbed content (Gemini API path)
POST
/vertex_ai/{api_version}/models/{model}:generateContentGenerate content (Gemini API path)
POST
/vertex_ai/{api_version}/models/{model}:streamGenerateContentStream generated content (Gemini API path)
POST
/vertex_ai/{api_version}/projects/{project}/locations/{location}/endpoints/openapi/chat/completionsOpenAI-compatible chat completions on Vertex AI
POST
/vertex_ai/{api_version}/projects/{project}/locations/{location}/endpoints/{endpoint}:predictPredict on a Vertex AI endpoint
POST
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:countTokensCount tokens (Vertex AI path)
POST
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:embedContentEmbed content (Vertex AI path)
POST
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:generateContentGenerate content (Vertex AI path)
POST
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:predictPredict (publisher model)
POST
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:rawPredictRaw predict (publisher model)
POST
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:streamGenerateContentStream generated content (Vertex AI path)
POST
/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:streamRawPredictStream raw predict (publisher model)
POST
/vertexai/v1/generateContentGenerate content (model in the body)
GET
/xai/v1/batchesList batches
POST
/xai/v1/batchesCreate a batch
GET
/xai/v1/batches/{batch_id}Get a batch
GET
/xai/v1/batches/{batch_id}/requestsList batch requests
POST
/xai/v1/batches/{batch_id}/requestsAdd batch requests
GET
/xai/v1/batches/{batch_id}/resultsList batch results
POST
/xai/v1/batches/{batch_id}:cancelCancel a batch
POST
/xai/v1/images/editsEdit images
POST
/xai/v1/images/generationsGenerate images
POST
/xai/v1/responsesCreate a response
DELETE
/xai/v1/responses/{response_id}Delete a response
GET
/xai/v1/responses/{response_id}Get a response
POST
/xai/v1/videos/editsStart a video edit
POST
/xai/v1/videos/extensionsStart a video extension
POST
/xai/v1/videos/generationsStart a video generation
GET
/xai/v1/videos/{video_id}Get a video job

Endpoint reference​

OpenAI-compatible​

Point the OpenAI SDK at <gateway>/openai_compatible/v1. Which providers serve each family beyond chat: endpoint families.

POST/openai_compatible/v1/audio/speech

Generate 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.

GATEWAYRequest guardrailsModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"
}'

AuthenticationErrors & error codes Try it in the playground

POST/openai_compatible/v1/audio/transcriptions

Transcribe 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>'

AuthenticationErrors & error codes

POST/openai_compatible/v1/audio/translations

Translate audio to English

Speech to English text from a multipart upload. Every form field is forwarded.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>'

AuthenticationErrors & error codes

GET/openai_compatible/v1/batches

List 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_compatible/v1/batches

Create 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}'

AuthenticationErrors & error codes

GET/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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_compatible/v1/batches/{batch_id}/cancel

Cancel 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/openai_compatible/v1/batches/{batch_id}/results

Get 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_compatible/v1/chat/completions

Create 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptResponse cache
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"
}'

AuthenticationErrors & error codes Try it in the playground

POST/openai_compatible/v1/completions

Create 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}'

AuthenticationErrors & error codes Try it in the playground

POST/openai_compatible/v1/decisions

Answer 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.

GATEWAYRequest guardrailsModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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>"
}
]
}'

AuthenticationErrors & error codes

POST/openai_compatible/v1/embeddings

Create embeddings

Embeds text with the app's embedding model. The input is scanned by the app's request guardrails.

GATEWAYRequest guardrailsModel access rulesFailoverLimits, quotas and budgetsResponse cache
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"
}'

AuthenticationErrors & error codes Try it in the playground

GET/openai_compatible/v1/files

List 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_compatible/v1/files

Upload 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>'

AuthenticationErrors & error codes

DELETE/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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/openai_compatible/v1/files/{file_id}/content

Download 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_compatible/v1/images/edits

Edit 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}'

AuthenticationErrors & error codes

POST/openai_compatible/v1/images/generations

Generate images

Creates images from a prompt.

Guardrails do not scan this route. Provider response headers are not relayed on this route.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}'

AuthenticationErrors & error codes Try it in the playground

POST/openai_compatible/v1/images/variations

Create 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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'

AuthenticationErrors & error codes

GET/openai_compatible/v1/models

List models

Models configured for the app that the caller may use. Makes no upstream call.

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/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.

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_compatible/v1/moderations

Classify 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"
}'

AuthenticationErrors & error codes Try it in the playground

POST/openai_compatible/v1/ocr

Extract 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}
}'

AuthenticationErrors & error codes Try it in the playground

GET/openai_compatible/v1/quilr/usage

Get 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).

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/openai_compatible/v1/videos

List 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_compatible/v1/videos

Create 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}'

AuthenticationErrors & error codes

POST/openai_compatible/v1/videos/edits

Edit 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}'

AuthenticationErrors & error codes

DELETE/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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/openai_compatible/v1/videos/{video_id}/content

Download 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

OpenAI Responses​

GET/openai_responses/v1/quilr/usage

Read 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.

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey

No 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"

AuthenticationErrors & error codes

POST/openai_responses/v1/responses

Create 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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 '{}'

AuthenticationErrors & error codes Try it in the playground

DELETE/openai_responses/v1/responses/{response_id}

Delete a stored response

Deletes a stored response at the upstream that created it.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_responses/v1/responses/{response_id}/cancel

Cancel a background response

Cancels a response created with background: true. No request body is needed.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/openai_responses/v1/responses/{response_id}/input_items

List a response's input items

Lists the input items of a stored response, paginated by the upstream.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

Azure OpenAI​

POST/openai/deployments/{deployment}/audio/speech

Generate 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.

GATEWAYRequest guardrailsModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"
}'

AuthenticationErrors & error codes

POST/openai/deployments/{deployment}/audio/transcriptions

Transcribe 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>'

AuthenticationErrors & error codes

POST/openai/deployments/{deployment}/audio/translations

Translate audio to English

Speech to English text for the form's model.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>'

AuthenticationErrors & error codes

POST/openai/deployments/{deployment}/chat/completions

Create 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).

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptResponse cache
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}
]
}'

AuthenticationErrors & error codes

POST/openai/deployments/{deployment}/embeddings

Create embeddings

Embeddings for the body's model (the Azure SDK sends the deployment name there).

GATEWAYRequest guardrailsModel access rulesFailoverLimits, quotas and budgetsResponse cache
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"
}'

AuthenticationErrors & error codes

POST/openai/deployments/{deployment}/responses

Create 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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 '{}'

AuthenticationErrors & error codes

DELETE/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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai/deployments/{deployment}/responses/{response_id}/cancel

Cancel 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/openai/deployments/{deployment}/responses/{response_id}/input_items

List 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/openai_compatible/openai/models

List 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.

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

OpenAI Realtime​

GET/openai_realtime/v1/realtime

Open 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.

GATEWAYModel access rulesRouting groupsLimits, quotas and budgets
ACCEPTSAuthorization: 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'

AuthenticationErrors & error codes

OpenAI Assistants​

GET/openai_assistants/v1/assistants

List assistants

Lists assistants.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_assistants/v1/assistants

Create an assistant

Creates an assistant.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}'

AuthenticationErrors & error codes

DELETE/openai_assistants/v1/assistants/{assistant_id}

Delete an assistant

Deletes an assistant.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/openai_assistants/v1/assistants/{assistant_id}

Retrieve an assistant

Retrieves an assistant.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_assistants/v1/assistants/{assistant_id}

Modify an assistant

Modifies an assistant.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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 '{}'

AuthenticationErrors & error codes

POST/openai_assistants/v1/threads

Create a thread

Creates a thread, optionally with initial messages. Message contents are scanned by guardrails before forwarding.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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 '{}'

AuthenticationErrors & error codes

POST/openai_assistants/v1/threads/runs

Create 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}'

AuthenticationErrors & error codes

DELETE/openai_assistants/v1/threads/{thread_id}

Delete a thread

Deletes a thread.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/openai_assistants/v1/threads/{thread_id}

Retrieve a thread

Retrieves a thread.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_assistants/v1/threads/{thread_id}

Modify a thread

Modifies a thread's metadata or tool resources.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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 '{}'

AuthenticationErrors & error codes

GET/openai_assistants/v1/threads/{thread_id}/messages

List messages

Lists a thread's messages. Message contents are scanned by guardrails before they are returned.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_assistants/v1/threads/{thread_id}/messages

Create a message

Adds a message to a thread. The content is scanned by guardrails before forwarding.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"
}'

AuthenticationErrors & error codes

DELETE/openai_assistants/v1/threads/{thread_id}/messages/{message_id}

Delete a message

Deletes a message.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_assistants/v1/threads/{thread_id}/messages/{message_id}

Modify a message

Modifies a message's metadata.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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 '{}'

AuthenticationErrors & error codes

GET/openai_assistants/v1/threads/{thread_id}/runs

List runs

Lists a thread's runs. Tool-call arguments of runs awaiting tool outputs are scanned by guardrails before they are returned.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_assistants/v1/threads/{thread_id}/runs

Create 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}'

AuthenticationErrors & error codes Try it in the playground

GET/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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_assistants/v1/threads/{thread_id}/runs/{run_id}

Modify a run

Modifies a run's metadata.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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 '{}'

AuthenticationErrors & error codes

POST/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/cancel

Cancel a run

Cancels an in-progress run. No request body.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/steps

List run steps

Lists a run's steps. Tool-call inputs and outputs are scanned by guardrails before they are returned.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

GET/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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"

AuthenticationErrors & error codes

POST/openai_assistants/v1/threads/{thread_id}/runs/{run_id}/submit_tool_outputs

Submit 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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>"
}
]
}'

AuthenticationErrors & error codes

Anthropic Messages​

POST/anthropic_messages/v1/messages

Create 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system promptResponse cache
ACCEPTSAuthorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/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"
}'

AuthenticationErrors & error codes Try it in the playground

POST/anthropic_messages/v1/messages/count_tokens

Count 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.

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/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"
}
]
}'

AuthenticationErrors & error codes

GET/anthropic_messages/v1/models

List 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.

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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'

AuthenticationErrors & error codes

GET/anthropic_messages/v1/models/{model_id}

Retrieve a model

One model enabled for the app on its Anthropic-family providers. Makes no upstream call.

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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'

AuthenticationErrors & error codes

GET/anthropic_messages/v1/quilr/usage

Get 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.

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikey

No 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"

AuthenticationErrors & error codes

AWS Bedrock Runtime​

POST/model/{model_id}/converse

Converse

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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsUniversal system prompt
ACCEPTSAuthorization: AWS4-HMAC-SHA256 (SigV4)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"
}
]
}'

AuthenticationErrors & error codes

POST/model/{model_id}/converse-stream

Converse 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsUniversal system prompt
ACCEPTSAuthorization: AWS4-HMAC-SHA256 (SigV4)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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"
}
]
}
]
}'

AuthenticationErrors & error codes

POST/model/{model_id}/invoke

Invoke 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsUniversal system prompt
ACCEPTSAuthorization: AWS4-HMAC-SHA256 (SigV4)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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 '{}'

AuthenticationErrors & error codes

POST/model/{model_id}/invoke-with-response-stream

Invoke 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsUniversal system prompt
ACCEPTSAuthorization: AWS4-HMAC-SHA256 (SigV4)Authorization: Bearerx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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 '{}'

AuthenticationErrors & error codes

Gemini and Vertex AI​

POST/vertex_ai/{api_version}/models/{model}:batchEmbedContents

Batch embed contents (Gemini API path)

Gemini API batchEmbedContents, forwarded to the provider.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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": [
{}
]
}
}
]
}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/models/{model}:countTokens

Count tokens (Gemini API path)

Gemini API countTokens, forwarded to the provider. Makes no generation call.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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 '{}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/models/{model}:embedContent

Embed content (Gemini API path)

Gemini API embedContent, forwarded to the provider.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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 '{}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/models/{model}:generateContent

Generate 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"
}
]
}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/models/{model}:streamGenerateContent

Stream 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"
}
]
}
]
}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/projects/{project}/locations/{location}/endpoints/openapi/chat/completions

OpenAI-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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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": [
{}
]
}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/projects/{project}/locations/{location}/endpoints/{endpoint}:predict

Predict 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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 '{}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:countTokens

Count tokens (Vertex AI path)

Vertex AI countTokens, forwarded to the provider. Makes no generation call.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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 '{}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:embedContent

Embed content (Vertex AI path)

Vertex AI embedContent, forwarded to the provider.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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 '{}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:generateContent

Generate 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"
}
]
}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:predict

Predict (publisher model)

Vertex AI predict (for example text embedding and image models). Forwarded to the provider with the app's access rules and limits.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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 '{}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:rawPredict

Raw 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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 '{}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:streamGenerateContent

Stream 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"
}
]
}
]
}'

AuthenticationErrors & error codes

POST/vertex_ai/{api_version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:streamRawPredict

Stream 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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 '{}'

AuthenticationErrors & error codes

POST/vertexai/v1/generateContent

Generate 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerx-api-keyx-goog-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"
}'

AuthenticationErrors & error codes

Rerank​

POST/rerank/v1/rerank

Rerank 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.

GATEWAYRequest guardrailsModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Also 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
}'

AuthenticationErrors & error codes Try it in the playground

Mistral​

POST/mistral/v1/fim/completions

Create 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/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))"
}'

AuthenticationErrors & error codes

POST/mistral/v1/ocr

Extract 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/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"
}'

AuthenticationErrors & error codes

xAI​

GET/xai/v1/batches

List batches

Lists batch jobs, a page at a time.

Guardrails do not scan this route. Provider response headers are not relayed on this route.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"

AuthenticationErrors & error codes

POST/xai/v1/batches

Create 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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 '{}'

AuthenticationErrors & error codes

GET/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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/xai/v1/batches/<batch_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"

AuthenticationErrors & error codes

GET/xai/v1/batches/{batch_id}/requests

List 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/xai/v1/batches/<batch_id>/requests' \
--header "Authorization: Bearer $QUILR_API_KEY"

AuthenticationErrors & error codes

POST/xai/v1/batches/{batch_id}/requests

Add batch requests

Adds requests to a batch job.

Guardrails do not scan this route. Provider response headers are not relayed on this route.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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": {}
}
]
}'

AuthenticationErrors & error codes

GET/xai/v1/batches/{batch_id}/results

List 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/xai/v1/batches/<batch_id>/results' \
--header "Authorization: Bearer $QUILR_API_KEY"

AuthenticationErrors & error codes

POST/xai/v1/batches/{batch_id}:cancel

Cancel 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"

AuthenticationErrors & error codes

POST/xai/v1/images/edits

Edit 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/xai/v1/images/edits' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'

AuthenticationErrors & error codes

POST/xai/v1/images/generations

Generate images

Generates images from a prompt.

Guardrails do not scan this route. Provider response headers are not relayed on this route.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/xai/v1/images/generations' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'

AuthenticationErrors & error codes

POST/xai/v1/responses

Create 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"
}'

AuthenticationErrors & error codes

DELETE/xai/v1/responses/{response_id}

Delete a response

Deletes a stored response.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"

AuthenticationErrors & error codes

GET/xai/v1/responses/{response_id}

Get a response

Retrieves a stored response.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Guardian checksHallucination check (non-streaming)Attachment scanningModel access rulesRouting groupsContent routingFailoverLimits, quotas and budgetsToken savingPrompt StoreUniversal system prompt
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"

AuthenticationErrors & error codes

POST/xai/v1/videos/edits

Start 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/xai/v1/videos/edits' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'

AuthenticationErrors & error codes

POST/xai/v1/videos/extensions

Start 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/xai/v1/videos/extensions' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'

AuthenticationErrors & error codes

POST/xai/v1/videos/generations

Start 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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/xai/v1/videos/generations' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "<model>",
"prompt": "<prompt>"
}'

AuthenticationErrors & error codes

GET/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.

GATEWAYModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
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/xai/v1/videos/<video_id>' \
--header "Authorization: Bearer $QUILR_API_KEY"

AuthenticationErrors & error codes

Sarvam​

POST/sarvam/speech-to-text

Transcribe 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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'

AuthenticationErrors & error codes

POST/sarvam/speech-to-text-translate

Transcribe 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.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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'

AuthenticationErrors & error codes

POST/sarvam/text-lid

Identify the language of text

Returns the language and script of input. The input is scanned by guardrails before forwarding.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikey
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/sarvam/text-lid' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"input": "Hello"
}'

AuthenticationErrors & error codes

POST/sarvam/text-to-speech

Synthesize speech

Converts text to speech and returns Sarvam's JSON with base64 audio. The text is scanned by guardrails before forwarding.

GATEWAYRequest guardrailsModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikey
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/sarvam/text-to-speech' \
--header "Authorization: Bearer $QUILR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"text": "Hello",
"target_language_code": "<target_language_code>"
}'

AuthenticationErrors & error codes

POST/sarvam/translate

Translate text

Translates input between languages. The input and the translation are scanned by guardrails.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikey
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/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>"
}'

AuthenticationErrors & error codes

POST/sarvam/transliterate

Transliterate text

Converts input to another script. The input and the result are scanned by guardrails.

GATEWAYRequest guardrailsResponse guardrails (non-streaming)Model access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapi-subscription-keyapikeyocp-apim-subscription-keyx-apikey
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/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>"
}'

AuthenticationErrors & error codes

TypeSafe System One​

GET/typesafe/v1/models

List decision models

Decision models configured for the app and allowed for the caller. Makes no upstream call.

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey

No 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"

AuthenticationErrors & error codes

POST/typesafe/v1/systemone

Answer 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.

GATEWAYRequest guardrailsModel access rulesLimits, quotas and budgets
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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": {}
}'

AuthenticationErrors & error codes

Specification​

GET/llmgateway_inference_apis/v1/openapi.json

Get this OpenAPI document

Returns the inference OpenAPI document. Pass family for one API family only.

GATEWAYNo gateway features (no model call)
ACCEPTSAuthorization: Bearerapi-keyx-api-keyapikeyocp-apim-subscription-keyx-apikey
Path, 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"

AuthenticationErrors & error codes