---
title: "Update the AI Routing config of an AI API Proxy"
method: PUT
path: "/apiops/projects/{projectName}/apiProxies/{apiProxyName}/ai-routing/"
tags: ["ApiProxy"]
---

# Update the AI Routing config of an AI API Proxy

`PUT /apiops/projects/{projectName}/apiProxies/{apiProxyName}/ai-routing/`

## Request

- Base URL: `http://167.86.118.166:32080`
- URL: `http://167.86.118.166:32080/apiops/projects/{projectName}/apiProxies/{apiProxyName}/ai-routing/`
- Auth: none declared
- TypeScript: <https://skmtc.dev/apinizer/apis/apinizer-management-apis/docs/apiops/projects/:projectName/apiProxies/:apiProxyName/ai-routing/put.ts> (a function with typed inputs; its response is checked against the schema)

Permission: API_MANAGEMENT or AI_DEVELOPMENT × MANAGE. Replaces the AiRouting config of an AI proxy (name-based). Provider references may be given by name in all six provider slots: llmProviderRefName on the routing, semanticEmbeddingProviderRefName for the semantic-embedding provider, classifierProviderRefName for the LLM route classifier, and llmProviderRefName on the conditional-route variants, the N-primary pool entries and the failover entries — each resolved to an id within the project. When a name sidecar is blank the raw provider id in the body is preserved (null-safe). Deployed environments are marked redeploy-required.

## Path parameters

- `projectName` string, required
- `apiProxyName` string, required

## Request body

- AiRouting
  - `connectTimeoutSeconds` integer
  - `streamTimeoutSeconds` integer
  - `maxResponseBytes` integer
  - `maxChunks` integer
  - `retryCount` integer
  - `connectionPoolManagementType` 'GENERAL' | 'CUSTOM' | 'NONE'
  - `customConnectionPoolSize` integer
  - `idleConnectionTimeout` integer
  - `llmProviderRef` string
  - `llmProviderRefName` string
  - `modelId` string
  - `timeoutSeconds` integer
  - `streaming` boolean
  - `clientStreamPresentBehavior` 'USE_CLIENT' | 'OVERWRITE'
  - `clientModelPresentBehavior` 'USE_CLIENT' | 'OVERWRITE' | 'ERROR'
  - `clientModelAbsentBehavior` 'KEEP_ABSENT' | 'ADD_ROUTING_MODEL' | 'ERROR'
  - `contextWindowAction` 'REJECT' | 'TRUNCATE' | 'PASS'
  - `contextKeepTurns` integer
  - `contextRagAction` 'KEEP' | 'TRIM_END'
  - `contextLastUserMessageAction` 'KEEP' | 'TRIM_MIDDLE'
  - `conditionalRoutes` ConditionalRouteVariant[]
    - `name` string
    - `condition` PolicyCondition
      - `conditionRuleList` ConditionRule[]
        - `conditionCriteria` 'VALUE' | 'NOT' | 'AND' | 'OR'
        - `firstVariable` Variable
          - `id` string
          - `projectId` string
          - `projectName` string
          - `name` string
          - `description` string
          - `type` 'HEADER' | 'PARAMETER' | 'BODY' | 'CONTEXT_VALUES' | 'CUSTOM'
          - `headerName` string
          - `paramType` 'QUERY' | 'PATH' | 'FORM'
          - `paramName` string
          - `paramPath` string
          - `formName` string
          - `xpathValue` string
          - `jsonPathValue` string
          - `messageContentType` 'XML' | 'JSON' | 'ALL_BODY'
          - `contextValue` 'REQUEST_REMOTE_ADDRESS' | 'REQUEST_HTTP_METHOD' | 'REQUEST_CONTENT_TYPE' | 'REQUEST_PATH_INFO' | 'REQUEST_CONTEXT_PATH' | 'REQUEST_QUERY_STRING' | 'REQUEST_REMOTE_USER' | 'REQUEST_USERNAME_KEY' | 'REQUEST_REQUESTED_SESSION_ID' | 'REQUEST_REQUEST_URI' | 'REQUEST_CHARACTER_ENCODING' | 'REQUEST_CHARSET' | 'REQUEST_CONTENT_LENGTH' | 'REQUEST_PROTOCOL' | 'REQUEST_SCHEME' | 'REQUEST_SERVER_NAME' | 'REQUEST_SERVER_PORT' | 'REQUEST_REMOTE_HOST' | 'REQUEST_REMOTE_PORT' | 'REQUEST_LOCAL_NAME' | 'REQUEST_LOCAL_ADDR' | 'REQUEST_LOCAL_PORT' | 'REQUEST_XFORWARDED_FOR' | 'REQUEST_ESTIMATED_TOKEN_COUNT' | 'REQUEST_MCP_TOOL_NAME' | 'REQUEST_OAUTH_CLIENT_ID' | 'REQUEST_IS_SOAP_TO_REST' | 'REQUEST_IS_APIPROXY' | 'REQUEST_IS_APIPROXYGROUP' | 'REQUEST_IS_XWWW_FORM_URL_ENCODED' | 'REQUEST_IS_FORM_DATA' | 'REQUEST_IS_BYTE_ARRAY' | 'REQUEST_HAS_ATTACHMENT' | 'REQUEST_GZIP' | 'REQUEST_DEFLATE' | 'REQUEST_BR' | 'REQUEST_ZSTD' | 'REQUEST_IDENTITY' | 'REQUEST_COMPRESS' | 'REQUEST_HTTP_SERVLET' | 'RESPONSE_IS_BYTE_ARRAY' | 'RESPONSE_GZIP' | 'RESPONSE_DEFLATE' | 'RESPONSE_BR' | 'RESPONSE_ZSTD' | 'RESPONSE_IDENTITY' | 'RESPONSE_COMPRESS' | 'RESPONSE_BACKEND_CONTENT_ENCODING' | 'RESPONSE_CHARSET' | 'RESPONSE_STATUS_CODE' | 'RESPONSE_HTTP_SERVLET' | 'ERROR_CATEGORY' | 'ERROR_TYPE' | 'ERROR_PARENT' | 'ERROR_RESULT_TYPE' | 'ERROR_MESSAGE' | 'ERROR_CODE' | 'ERROR_HTTP_CODE' | 'MESSAGE_CORRELATION_ID' | 'MESSAGE_CACHE_HIT' | 'ENVIRONMENT_ID' | 'ENVIRONMENT_NAME' | 'ENVIRONMENT_CERTIFICATE' | 'ENVIRONMENT_PRIVATEKEY' | 'ENVIRONMENT_PUBLICKEY' | 'ENVIRONMENT_SECRETKEY' | 'ENVIRONMENT_KEYSTORE' | 'ENVIRONMENT_JWK' | 'APIPROXYGROUP_ID' | 'APIPROXYGROUP_NAME' | 'APIPROXY_ID' | 'APIPROXY_NAME' | 'APIPROXY_RELATIVE_PATH' | 'APIMETHOD_ID' | 'APIMETHOD_NAME' | 'APIMETHOD_SOAP_ACTION' | 'APIMETHOD_HTTPMETHOD' | 'APIMETHOD_ENDPOINT' | 'APIMETHOD_BACKEND_HTTPMETHOD' | 'APIMETHOD_BACKEND_ENDPOINT' | 'DATETIME_YEAR' | 'DATETIME_MONTH' | 'DATETIME_DAY_OF_WEEK' | 'DATETIME_DAY_OF_MONTH' | 'DATETIME_HOUR' | 'DATETIME_MINUTE' | 'DATETIME_SECOND' | 'DATETIME_EPOCH_MILLIS' | 'DATETIME_FORMATTED_TEXT' | 'DATE_FORMATTED_TEXT' | 'TIME_FORMATTED_TEXT' | 'CREDENTIAL_USERNAME' | 'CREDENTIAL_EMAIL' | 'CREDENTIAL_FULLNAME' | 'CREDENTIAL_SECRETKEY' | 'CREDENTIAL_CERTIFICATE' | 'CREDENTIAL_PUBLICKEY' | 'CREDENTIAL_PRIVATEKEY' | 'CREDENTIAL_KEYSTORE' | 'CREDENTIAL_TRUSTSTORE' | 'CREDENTIAL_JWK_SIGNANDVALIDATION' | 'CREDENTIAL_JWK_ENCRYPTIONANDDECRYPTION'
          - `zoneId` string
          - `initWithScript` boolean
          - `scriptLanguage` 'GROOVY' | 'JAVASCRIPT'
          - `scriptBody` string
        - `variableDataType` 'NUMERIC' | 'STRING' | 'DATE'
        - `dateFormat` string
        - `valueComparisonOperator` 'LT' | 'LE' | 'GT' | 'GE' | 'EQ' | 'NE' | 'EQ_IGNORE_CASE' | 'NE_IGNORE_CASE' | 'STARTS_WITH' | 'NOT_STARTS_WITH' | 'STARTS_WITH_IGNORE_CASE' | 'NOT_STARTS_WITH_IGNORE_CASE' | 'ENDS_WITH' | 'NOT_ENDS_WITH' | 'ENDS_WITH_IGNORE_CASE' | 'NOT_ENDS_WITH_IGNORE_CASE' | 'CONTAINS' | 'NOT_CONTAINS' | 'CONTAINS_IGNORE_CASE' | 'NOT_CONTAINS_IGNORE_CASE' | 'IS_EMPTY' | 'IS_NOT_EMPTY' | 'EXISTS_AND_EMPTY' | 'IS_EXISTS' | 'IS_NOT_EXISTS' | 'IN' | 'NOT_IN' | 'IN_IGNORE_CASE' | 'NOT_IN_IGNORE_CASE'
        - `secondValueSource` 'VALUE' | 'VARIABLE'
        - `secondValue` string
        - `secondVariable` Variable
          - `id` string
          - `projectId` string
          - `projectName` string
          - `name` string
          - `description` string
          - `type` 'HEADER' | 'PARAMETER' | 'BODY' | 'CONTEXT_VALUES' | 'CUSTOM'
          - `headerName` string
          - `paramType` 'QUERY' | 'PATH' | 'FORM'
          - `paramName` string
          - `paramPath` string
          - `formName` string
          - `xpathValue` string
          - `jsonPathValue` string
          - `messageContentType` 'XML' | 'JSON' | 'ALL_BODY'
          - `contextValue` 'REQUEST_REMOTE_ADDRESS' | 'REQUEST_HTTP_METHOD' | 'REQUEST_CONTENT_TYPE' | 'REQUEST_PATH_INFO' | 'REQUEST_CONTEXT_PATH' | 'REQUEST_QUERY_STRING' | 'REQUEST_REMOTE_USER' | 'REQUEST_USERNAME_KEY' | 'REQUEST_REQUESTED_SESSION_ID' | 'REQUEST_REQUEST_URI' | 'REQUEST_CHARACTER_ENCODING' | 'REQUEST_CHARSET' | 'REQUEST_CONTENT_LENGTH' | 'REQUEST_PROTOCOL' | 'REQUEST_SCHEME' | 'REQUEST_SERVER_NAME' | 'REQUEST_SERVER_PORT' | 'REQUEST_REMOTE_HOST' | 'REQUEST_REMOTE_PORT' | 'REQUEST_LOCAL_NAME' | 'REQUEST_LOCAL_ADDR' | 'REQUEST_LOCAL_PORT' | 'REQUEST_XFORWARDED_FOR' | 'REQUEST_ESTIMATED_TOKEN_COUNT' | 'REQUEST_MCP_TOOL_NAME' | 'REQUEST_OAUTH_CLIENT_ID' | 'REQUEST_IS_SOAP_TO_REST' | 'REQUEST_IS_APIPROXY' | 'REQUEST_IS_APIPROXYGROUP' | 'REQUEST_IS_XWWW_FORM_URL_ENCODED' | 'REQUEST_IS_FORM_DATA' | 'REQUEST_IS_BYTE_ARRAY' | 'REQUEST_HAS_ATTACHMENT' | 'REQUEST_GZIP' | 'REQUEST_DEFLATE' | 'REQUEST_BR' | 'REQUEST_ZSTD' | 'REQUEST_IDENTITY' | 'REQUEST_COMPRESS' | 'REQUEST_HTTP_SERVLET' | 'RESPONSE_IS_BYTE_ARRAY' | 'RESPONSE_GZIP' | 'RESPONSE_DEFLATE' | 'RESPONSE_BR' | 'RESPONSE_ZSTD' | 'RESPONSE_IDENTITY' | 'RESPONSE_COMPRESS' | 'RESPONSE_BACKEND_CONTENT_ENCODING' | 'RESPONSE_CHARSET' | 'RESPONSE_STATUS_CODE' | 'RESPONSE_HTTP_SERVLET' | 'ERROR_CATEGORY' | 'ERROR_TYPE' | 'ERROR_PARENT' | 'ERROR_RESULT_TYPE' | 'ERROR_MESSAGE' | 'ERROR_CODE' | 'ERROR_HTTP_CODE' | 'MESSAGE_CORRELATION_ID' | 'MESSAGE_CACHE_HIT' | 'ENVIRONMENT_ID' | 'ENVIRONMENT_NAME' | 'ENVIRONMENT_CERTIFICATE' | 'ENVIRONMENT_PRIVATEKEY' | 'ENVIRONMENT_PUBLICKEY' | 'ENVIRONMENT_SECRETKEY' | 'ENVIRONMENT_KEYSTORE' | 'ENVIRONMENT_JWK' | 'APIPROXYGROUP_ID' | 'APIPROXYGROUP_NAME' | 'APIPROXY_ID' | 'APIPROXY_NAME' | 'APIPROXY_RELATIVE_PATH' | 'APIMETHOD_ID' | 'APIMETHOD_NAME' | 'APIMETHOD_SOAP_ACTION' | 'APIMETHOD_HTTPMETHOD' | 'APIMETHOD_ENDPOINT' | 'APIMETHOD_BACKEND_HTTPMETHOD' | 'APIMETHOD_BACKEND_ENDPOINT' | 'DATETIME_YEAR' | 'DATETIME_MONTH' | 'DATETIME_DAY_OF_WEEK' | 'DATETIME_DAY_OF_MONTH' | 'DATETIME_HOUR' | 'DATETIME_MINUTE' | 'DATETIME_SECOND' | 'DATETIME_EPOCH_MILLIS' | 'DATETIME_FORMATTED_TEXT' | 'DATE_FORMATTED_TEXT' | 'TIME_FORMATTED_TEXT' | 'CREDENTIAL_USERNAME' | 'CREDENTIAL_EMAIL' | 'CREDENTIAL_FULLNAME' | 'CREDENTIAL_SECRETKEY' | 'CREDENTIAL_CERTIFICATE' | 'CREDENTIAL_PUBLICKEY' | 'CREDENTIAL_PRIVATEKEY' | 'CREDENTIAL_KEYSTORE' | 'CREDENTIAL_TRUSTSTORE' | 'CREDENTIAL_JWK_SIGNANDVALIDATION' | 'CREDENTIAL_JWK_ENCRYPTIONANDDECRYPTION'
          - `zoneId` string
          - `initWithScript` boolean
          - `scriptLanguage` 'GROOVY' | 'JAVASCRIPT'
          - `scriptBody` string
    - `llmProviderRef` string
    - `llmProviderRefName` string
    - `modelId` string
    - `semanticUtterances` string[]
    - `semanticThreshold` number, double
    - `classifierLabel` string
    - `classifierDescription` string
    - `targetPool` AiPrimaryEntry[]
      - `llmProviderRef` string
      - `llmProviderRefName` string
      - `modelId` string
      - `weight` integer
      - `displayName` string
      - `connectionPoolSize` integer
      - `idleConnectionTimeout` integer
    - `enumAiRoutingAlgorithm` 'ROUND_ROBIN' | 'WEIGHTED' | 'RANDOM' | 'LRU' | 'LEAST_COST' | 'LEAST_LATENCY' | 'PREFIX_AFFINITY'
    - `affinityKeyHeader` string
    - `affinityLoadFactor` number, double
    - `connectionPoolSize` integer
    - `idleConnectionTimeout` integer
  - `providerFailoverChain` AiFailoverEntry[]
    - `llmProviderRef` string
    - `llmProviderRefName` string
    - `modelId` string
    - `timeoutMs` integer
    - `orderIndex` integer
    - `displayName` string
    - `maxCostUsd` number
    - `weight` integer
    - `connectionPoolSize` integer
    - `idleConnectionTimeout` integer
  - `failoverStrategy` 'SEQUENTIAL' | 'CONDITIONAL' | 'PRIORITY_STRICT' | 'ROUND_ROBIN'
  - `primaryPool` AiPrimaryEntry[]
    - `llmProviderRef` string
    - `llmProviderRefName` string
    - `modelId` string
    - `weight` integer
    - `displayName` string
    - `connectionPoolSize` integer
    - `idleConnectionTimeout` integer
  - `enumAiRoutingAlgorithm` 'ROUND_ROBIN' | 'WEIGHTED' | 'RANDOM' | 'LRU' | 'LEAST_COST' | 'LEAST_LATENCY' | 'PREFIX_AFFINITY'
  - `leastCostOutputRatio` number, double
  - `affinityKeyHeader` string
  - `affinityLoadFactor` number, double
  - `semanticEmbeddingProviderRef` string
  - `semanticEmbeddingProviderRefName` string
  - `semanticEmbeddingModelId` string
  - `classifierProviderRef` string
  - `classifierProviderRefName` string
  - `classifierModelId` string
  - `classifierTimeoutMs` integer
  - `classifierDecisionMode` 'STANDARD' | 'REASONING'
  - `classifierReasoningBudget` integer
  - `classifierMaxInputChars` integer
  - `classifierInstructions` string
  - `retryDelayType` 'NO_DELAY' | 'FIXED' | 'EXPONENTIAL'
  - `retryFixedDelayMs` integer
  - `retryInitialDelayMs` integer
  - `retryMaxDelayMs` integer
  - `retryBackoffMultiplier` number, double
  - `failoverStatusCodeList` integer[]
  - `failoverRetryCount` integer
  - `trySiblingPoolTargets` boolean
  - `circuitBreakerEnabled` boolean
  - `errorWindow` integer
  - `errorThresholdValue` integer
  - `enumErrorThresholdType` 'COUNT' | 'PERCENT'
  - `sleepWindow` integer
  - `halfOpenEnabled` boolean
  - `conditionalLatencyThresholdMs` integer
  - `traceMode` 'NONE' | 'LIVE_TRACE'
  - `enableAiTrace` boolean
  - `aiTraceStartTime` string, date-time
  - `aiTraceStopTime` string, date-time
  - `aiTraceEnvironmentName` string
  - `aiTraceCustomQueryId` string
  - `aiTraceCustomQuery` CustomQuery
    - `id` string
    - `name` string
    - `description` string
    - `projectId` string
    - `criteriaList` CustomQueryCriteria[]
      - `id` string
      - `conditionType` 'VALUE' | 'NOT' | 'AND' | 'OR'
      - `criteriaType` 'API_PROXY_NAME' | 'API_TYPE' | 'CACHE_HIT' | 'CLIENT_IP' | 'ERROR_TYPE' | 'HTTP_METHOD' | 'KEYWORD' | 'SIZE' | 'STATUS_CODE' | 'TIME' | 'USERNAME_APIKEY' | 'RESULT_TYPE' | 'ENDPOINT' | 'CORRELATION_ID' | 'ROUTING_ADDRESS' | 'ROUTING_RETRY_COUNT' | 'ROUTING_FAILOVER_COUNT' | 'BACKEND_STATUS_CODE' | 'ROUTING_FAILURE_REASON' | 'API_PROXY_GROUP' | 'CANARY_REQUEST' | 'CANARY_STATUS' | 'MIRROR_TRAFFIC' | 'AI_PROVIDER' | 'AI_MODEL' | 'AI_INPUT_TOKENS' | 'AI_OUTPUT_TOKENS' | 'AI_CACHED_TOKENS' | 'AI_COST' | 'AI_TTFT' | 'AI_TPOT' | 'AI_TOTAL_LATENCY' | 'AI_DEPLOYMENT_TYPE' | 'AI_FAILOVER' | 'AI_FINISH_REASON' | 'AI_STREAMING' | 'AI_SEMANTIC_CACHE' | 'AI_GUARDRAIL' | 'AI_GUARDRAIL_CATEGORY' | 'AI_GUARDRAIL_VERDICT' | 'AI_PII' | 'MCP_TOOL_NAME' | 'MCP_RESULT_CLASS' | 'MCP_TOOL_CALL_COUNT_OUT' | 'MCP_JSONRPC_ID' | 'A2A_AGENT_CALL_COUNT_OUT' | 'A2A_TASK_STATE' | 'A2A_TASK_ID' | 'A2A_CONTEXT_ID'
      - `messageLocation` 'REQUEST' | 'RESPONSE' | 'ANY'
      - `messagePart` 'ANY' | 'REQ_PRM_FROM_CLIENT' | 'REQ_HDR_FROM_CLIENT' | 'REQ_BODY_FROM_CLIENT' | 'REQ_PRM_TO_BACKEND' | 'REQ_HDR_TO_BACKEND' | 'REQ_BODY_TO_BACKEND' | 'RESP_HDR_FROM_BACKEND' | 'RESP_BODY_FROM_BACKEND' | 'RESP_HDR_TO_CLIENT' | 'RESP_BODY_TO_CLIENT'
      - `timePart` 'REQUEST_PIPELINE' | 'RESPONSE_PIPELINE' | 'ROUTING' | 'ALL'
      - `parentErrorType` 'API_PROXY' | 'APICREATOR' | 'FAKE_API' | 'KPS_API' | 'CONDITION_ERR' | 'CONDITION_EX' | 'POLICY_GROUP' | 'POLICY_AUTHENTICATION' | 'POLICY_OIDC' | 'POLICY_AUTHORIZATION' | 'POLICY_API_AUTHENTICATION' | 'POLICY_THROTTLING_PER_CLIENT' | 'POLICY_APIBASEDTHROTTLING' | 'POLICY_ENDPOINTRATELIMIT' | 'POLICY_APIBASEDQUOTA' | 'POLICY_CLIENTBASEDTHROTTLING' | 'POLICY_CLIENTBASEDQUOTA' | 'POLICY_CLIENTBANNER' | 'POLICY_QUOTA_PER_CLIENT' | 'POLICY_SCRIPT' | 'POLICY_OAUTH2' | 'POLICY_SAML' | 'POLICY_JOSE_IMPLEMENTATION' | 'POLICY_JOSE_VALIDATION' | 'POLICY_MTLS_AUTHENTICATION' | 'POLICY_CONTENTFILTER' | 'POLICY_IPWHITE' | 'POLICY_IPBLACK' | 'POLICY_ALLOWEDHOUR' | 'POLICY_MINMESSAGESIZE' | 'POLICY_MAXMESSAGESIZE' | 'POLICY_JSONSCHEMAVALIDATION' | 'POLICY_XMLSCHEMAVALIDATION' | 'POLICY_JSONTRANSFORMATION' | 'POLICY_XMLTRANSFORMATION' | 'POLICY_JSONRESPONSEMESSAGETRANS' | 'POLICY_XMLRESPONSEMESSAGETRANS' | 'POLICY_REST2SOAP_TRANSFORMATION' | 'POLICY_CACHE' | 'POLICY_ROUTING' | 'POLICY_REDACTION' | 'POLICY_CORS' | 'POLICY_ENCRYPTION' | 'POLICY_DECRYPTION' | 'POLICY_ROLE_GROUP' | 'POLICY_DIGITALSIGN' | 'POLICY_DIGITALSIGNVALIDATION' | 'POLICY_RESTAPI' | 'POLICY_WSSECURITY' | 'POLICY_WSSECURITY_ENCRYPT' | 'POLICY_WSSECURITY_DECRYPT' | 'POLICY_WSSECURITY_USERNAME' | 'POLICY_WSSECURITY_TIMESTAMP' | 'POLICY_WSSECURITY_SIGN' | 'POLICY_WSSECURITY_SIGN_VALIDATION' | 'POLICY_WSSECURITY_STSTOKEN' | 'POLICY_BUSINESS_RULE' | 'POLICY_MESSAGE_BUILDER' | 'POLICY_LOG' | 'POLICY_AI_PII_MASK' | 'POLICY_AI_PROMPT_GUARD' | 'POLICY_AI_TOKEN_RATE_LIMIT' | 'POLICY_AI_SEMANTIC_CACHE' | 'POLICY_AI_MCP_TOOL_CALL' | 'POLICY_AI_A2A_AGENT_CALL' | 'POLICY_AI_RAG_INJECTION' | 'POLICY_AI_DLP_GUARD' | 'POLICY_AI_LOOP_GUARD' | 'POLICY_AI_TOPIC_GUARD' | 'POLICY_AI_CONTEXT_INTEGRITY' | 'POLICY_AI_ROUTING' | 'POLICY_AI_A2A_AGENT_INVOKE' | 'POLICY_AI_MCP_TOOL_INVOKE' | 'POLICY_AI_PROMPT_DECORATOR' | 'POLICY_AI_PROMPT_TEMPLATE' | 'POLICY_AI_GROUNDEDNESS_GUARD' | 'LICENSE'
      - `operator` 'LT' | 'LE' | 'GT' | 'GE' | 'EQ' | 'NE' | 'STARTS_WITH' | 'ENDS_WITH' | 'BETWEEN' | 'CONTAINS' | 'NOT_CONTAINS' | 'IS_EMPTY' | 'IS_NOT_EMPTY' | 'IS_EXISTS' | 'IS_NOT_EXISTS' | 'IN' | 'NOT_IN' | 'CONTAINS_WORD'
      - `httpMethod` 'GET' | 'POST' | 'PUT' | 'HEAD' | 'OPTIONS' | 'DELETE' | 'PATCH' | 'TRACE' | 'ALL' | 'QUERY'
      - `firstValue` integer
      - `secondValue` integer
      - `messagePartKeyValue` string
      - `textValue` string
      - `apiProxyIds` string[]
      - `apiTypes` string[]
    - `filterList` CustomQueryFilter[]
      - `id` string
      - `projectId` string
      - `name` string
      - `description` string
      - `proxyList` ProxyFilter[]
        - `name` string
        - `id` string
        - `description` string
      - `fromDate` string
      - `toDate` string
      - `resultTypeList` string[]
      - `orderList` OrderFilter[]
        - `property` string
        - `sortOrder` string
    - `visibility` 'PERSONAL' | 'PROJECT'
    - `ownerUsername` string
    - `notEmptyCriteriaList` boolean
  - `aiTraceMaxDurationSeconds` integer
  - `disableSslValidation` boolean
  - `proxyEnabled` boolean
  - `proxyHost` string
  - `proxyPort` integer
  - `proxyAuthorizationNeeded` boolean
  - `proxyUsername` string
  - `proxyPassword` string
  - `blockAnonymousRequests` boolean
  - `failoverRetryCountRaw` integer
  - `connectTimeoutSecondsRaw` integer
  - `streamTimeoutSecondsRaw` integer
  - `retryCountRaw` integer
  - `mTLSSettings` RoutingMTLSSettings
    - `enabled` boolean
    - `skipSslVerification` boolean
    - `keyStoreId` string
    - `trustStoreId` string
    - `certificateId` string
    - `supportedProtocolList` string[]
    - `hostnameVerifierType` 'NOOP' | 'DEFAULT' | 'STRICT' | 'BROWSER_COMPAT'

## Response `200`

successful operation!

- ApiOpsResponseSuccess
  - `status` 'SUCCESS' | 'FAILURE'
  - `resultMessage` string
  - `resultList` string[]
  - `resultCount` integer
  - `deploymentResult` DeploymentResult
    - `envName` string
    - `podName` string
    - `podIp` string
    - `success` boolean
    - `detail` string
    - `responseTime` integer
    - `detailList` unknown[]
      - unknown
    - `firstFromApiResultList` unknown
  - `unresolvedReferences` string[]
  - `advisories` ApiOpsAdvisoryDTO[]
    - `level` string
    - `key` string
    - `params` object

## Other responses

- `401`: not authorized for this operation!
- `500`: internal error!

## Changes

- **2026-10-28** `e083046b24cd`: 47 info
  - added the new optional request property `aiTraceCustomQuery/ownerUsername`
  - added the new optional request property `aiTraceCustomQuery/visibility`
  - added the new optional request property `conditionalRoutes/items/affinityKeyHeader`
  - added the new optional request property `conditionalRoutes/items/affinityLoadFactor`
  - …43 more
- **2026-08-11** `9ae232e55479`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/apinizer/apis/apinizer-management-apis/changes/apiops/projects/:projectName/apiProxies/:apiProxyName/ai-routing/put.md)

---

[API](https://skmtc.dev/apinizer/apis/apinizer-management-apis.md) - [All operations](https://skmtc.dev/apinizer/apis/apinizer-management-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/apinizer/apis/apinizer-management-apis/revisions/e083046b24cd?raw)
