---
title: "CreateAIProviderKey"
method: POST
path: "/v1/namespaces/{tenant_meta.namespace}/ai-provider-keys"
tags: ["AIProviderKeyService"]
---

# CreateAIProviderKey

`POST /v1/namespaces/{tenant_meta.namespace}/ai-provider-keys`

## Request

- Base URL: `https://api.endorlabs.com`
- URL: `https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/ai-provider-keys`
- Auth: none declared

Creates a new AI provider key in the root namespace of a tenant. The
credential is validated, encrypted with a server-side key and stored;
read APIs never return it.

## Path parameters

- `tenant_meta.namespace` string, required

## Request body

- AIProviderKeyServiceCreateAIProviderKeyBody: AIProviderKey stores a customer-provided (bring-your-own-key) LLM credential and entry point for a specific AI provider. When one is configured and enabled, the platform routes the tenant's AI requests through the customer's own provider account instead of Endor-managed credentials.
  - `meta` V1Meta, required: Common fields for all Endor Labs resources.
    - `annotations` object: Annotations can be used to attach metadata to a resource message. Annotation values can be small or large, structured or unstructured, and may include characters not permitted by labels. The keys may contain alphanumerics, underscores (_), dots (.) and dashes (-). The values of an annotation must be 16384 bytes or smaller.
    - `create_time` string, date-time: Time the resource was created. Format: 2017-01-15T01:30:15.01Z RFC 3339: https://www.ietf.org/rfc/rfc3339.txt.
    - `created_by` string: Name and authentication source of the user who created the object, for example, ewok@endor.ai@google@api-key.
    - `description` string: Resource description. Must be less than 1024 bytes.
    - `index_data` V1IndexData: IndexData is used to index the resource for search. It's an internal object.
      - `data` string[]
      - `search_score` number, float: search_score is the score of the resource for search. Internal use only.
      - `tenant` string
      - `will_be_deleted_at` string, date-time: Time that the resource will be deleted.
    - `kind` string: Resource kind, for example, HelloResponse. Auto-generated using the protobuf message proto.MessageName().Name().
    - `name` string, required: Resource name. Must be 63 characters or less.
    - `parent_kind` string: Parent object resource kind, for example, Project.
    - `parent_uuid` string: Parent object UUID.
    - `references` object: Map of objects referenced in a query API.
    - `tags` string[]: List of tags attached to the resource. Tags can be used to select objects and to find collections of objects that satisfy certain conditions. A tag must be 255 characters or less.
    - `update_time` string, date-time: Time the resource was last updated. Note: Updated on all create/patch/delete operations. Format: 2017-01-15T01:30:15.01Z RFC 3339: https://www.ietf.org/rfc/rfc3339.txt.
    - `updated_by` string: Name and authentication source of the last user who updated the object, for example, vulnerabilityingestor@endor.ai@x509.
    - `upsert_time` string, date-time: Time the resource was last upserted. Note: create_time is only set the first time the resource is created. upsert_time is set every time the resource is upseted. Format: 2017-01-15T01:30:15.01Z RFC 3339: https://www.ietf.org/rfc/rfc3339.txt.
    - `version` string: Message version.
  - `spec` V1AIProviderKeySpec
    - `api_key` string: Credential used to call the provider: an API key for OpenAI-family and Gemini providers, or an express-mode API key for Vertex AI. Stored in the platform secret manager (secure annotation); read APIs return the redacted placeholder rather than the stored value.
    - `api_version` string: Azure OpenAI api-version query parameter to use. Defaults to the platform's version when unset; only meaningful for PROVIDER_AZURE_OPENAI.
    - `disabled` boolean: Pauses routing through this credential without deleting it.
    - `embedding_model_aliases` SpecEmbeddingModelAlias[]: Embedding models the credential serves and the names the customer's provider serves them under. Azure OpenAI takes the deployment name from the request body's model field, so a customer whose deployment is not named after the model must list it here or the request reaches a path that does not exist. Leave empty to make this key the provider's embedding catch-all, serving every embedding model under its own name; keys listing a model explicitly take precedence over the catch-all. Two enabled keys of one provider that both leave this empty are two catch-alls, whatever their model_aliases. The write does not check for this, but neither serves any embedding request, and a request no other key serves fails, until one of them lists its embedding models here.
      - `alias` string: Name the customer's provider serves the model under, e.g. an Azure OpenAI deployment name. Defaults to the model's own name when unset.
      - `model` 'EMBEDDING_MODEL_UNSPECIFIED' | 'EMBEDDING_MODEL_OPENAI_TEXT_EMBEDDING_ADA_002' | 'EMBEDDING_MODEL_OPENAI_TEXT_EMBEDDING_3_SMALL' | 'EMBEDDING_MODEL_GOOGLE_TEXT_EMBEDDING_LARGE' | 'EMBEDDING_MODEL_OPENAI_TEXT_EMBEDDING_3_LARGE', required: EmbeddingModel is the model of the embedding provider.
    - `endpoint` string: Entry point requests are sent to. Required for PROVIDER_AZURE_OPENAI (the Azure resource endpoint, e.g. https://<resource>.openai.azure.com), optional for PROVIDER_OPENAI (defaults to the OpenAI platform; set it to target an OpenAI-compatible gateway), optional for PROVIDER_VERTEX_AI (defaults to the global endpoint; set a regional endpoint, e.g. https://us-central1-aiplatform.googleapis.com, to pin a region) and unused for PROVIDER_GEMINI. Stored in the platform secret manager and redacted in read APIs.
    - `model_aliases` SpecModelAlias[]: Models the credential can serve and the names the customer's provider serves them under. Each listed model may be served by only one of the tenant's keys for the provider, and together the provider's keys must cover the models the platform requires. Leave empty to make this key the provider's single catch-all, serving every model under its own name; keys listing a model explicitly take precedence over the catch-all. Scoping a key here does not scope its embeddings: it still counts as the provider's embedding catch-all until embedding_model_aliases is set.
      - `alias` string: Name the customer's provider serves the model under, e.g. an Azure OpenAI deployment name. Defaults to the model's own name when unset.
      - `model` 'AVAILABLE_LLM_UNSPECIFIED' | 'AVAILABLE_LLM_OPENAI_GPT_5' | 'AVAILABLE_LLM_OPENAI_GPT_5_MINI' | 'AVAILABLE_LLM_OPENAI_GPT_5_NANO' | 'AVAILABLE_LLM_OPENAI_GPT_5_CHAT' | 'AVAILABLE_LLM_OPENAI_GPT_5_1' | 'AVAILABLE_LLM_OPENAI_GPT_5_1_CHAT' | 'AVAILABLE_LLM_OPENAI_GPT_5_1_CODEX' | 'AVAILABLE_LLM_OPENAI_GPT_5_1_CODEX_MINI' | 'AVAILABLE_LLM_OPENAI_GPT_5_2_CODEX' | 'AVAILABLE_LLM_OPENAI_GPT_5_2' | 'AVAILABLE_LLM_OPENAI_GPT_5_3_CODEX' | 'AVAILABLE_LLM_OPENAI_GPT_5_3_CHAT' | 'AVAILABLE_LLM_OPENAI_GPT_5_4_MINI' | 'AVAILABLE_LLM_OPENAI_GPT_5_4_NANO' | 'AVAILABLE_LLM_OPENAI_GPT_5_4' | 'AVAILABLE_LLM_OPENAI_GPT_5_5' | 'AVAILABLE_LLM_OPENAI_GPT_5_6_LUNA' | 'AVAILABLE_LLM_OPENAI_GPT_5_6_SOL' | 'AVAILABLE_LLM_OPENAI_GPT_5_6_TERRA' | 'AVAILABLE_LLM_OPENAI_GPT_6_SOL' | 'AVAILABLE_LLM_OPENAI_GPT_6_LUNA' | 'AVAILABLE_LLM_OPENAI_GPT_6_1_SOL' | 'AVAILABLE_LLM_OPENAI_GPT_6_1_TERRA' | 'AVAILABLE_LLM_OPENAI_GPT_4' | 'AVAILABLE_LLM_OPENAI_GPT_4O_MINI' | 'AVAILABLE_LLM_OPENAI_GPT_4_1' | 'AVAILABLE_LLM_OPENAI_GPT_4_1_MINI' | 'AVAILABLE_LLM_OPENAI_GPT_4_1_NANO' | 'AVAILABLE_LLM_OPENAI_O1' | 'AVAILABLE_LLM_OPENAI_O3' | 'AVAILABLE_LLM_OPENAI_GPT_4O' | 'AVAILABLE_LLM_OPENAI_O3_MINI' | 'AVAILABLE_LLM_OPENAI_O4_MINI' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_0' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_LATEST' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_PREVIEW' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_LITE' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_0_LITE' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_LITE_LATEST' | 'AVAILABLE_LLM_GOOGLE_GEMINI_2_5_PRO' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_PRO_PREVIEW' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_1_PRO_PREVIEW' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE_PREVIEW' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH_LITE' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_6_FLASH' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_7_FLASH' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_FLASH_PREVIEW' | 'AVAILABLE_LLM_ANTHROPIC_CLAUDE_3_5_SONNET' | 'AVAILABLE_LLM_ANTHROPIC_CLAUDE_4_5_SONNET' | 'AVAILABLE_LLM_ANTHROPIC_CLAUDE_4_5_HAIKU' | 'AVAILABLE_LLM_GROQ_LLAMA_3_2_90B' | 'AVAILABLE_LLM_GROQ_COMPOUND' | 'AVAILABLE_LLM_GROQ_COMPOUND_MINI' | 'AVAILABLE_LLM_GROQ_LLAMA_3_3_70B_VERSATILE' | 'AVAILABLE_LLM_GROQ_LLAMA_4_MAVERICK_17B' | 'AVAILABLE_LLM_GROQ_LLAMA_4_SCOUT_17B' | 'AVAILABLE_LLM_GROQ_OPENAI_GPT_OSS_20B' | 'AVAILABLE_LLM_GROQ_OPENAI_GPT_OSS_120B' | 'AVAILABLE_LLM_GROQ_OPENAI_GPT_OSS_SAFEGUARD_20B' | 'AVAILABLE_LLM_GROQ_QWEN_3_32B' | 'AVAILABLE_LLM_GROQ_LLAMA_PROMPT_GUARD_2_22M' | 'AVAILABLE_LLM_GROQ_LLAMA_PROMPT_GUARD_2_86M' | 'AVAILABLE_LLM_GROQ_LLAMA_GUARD_4_12B' | 'AVAILABLE_LLM_ENDOR_DEEPSEEK_R1' | 'AVAILABLE_LLM_ENDOR_QWEN_3_8_27B' | 'AVAILABLE_LLM_GOOGLE_GEMMA_4_26B_A4B_IT' | 'AVAILABLE_LLM_GOOGLE_GEMINI_R2D2_LATEST' | 'AVAILABLE_LLM_FIREWORKS_GPT_OSS_20B' | 'AVAILABLE_LLM_FIREWORKS_GPT_OSS_120B' | 'AVAILABLE_LLM_FIREWORKS_KIMI_K25' | 'AVAILABLE_LLM_FIREWORKS_MINIMAX_M27' | 'AVAILABLE_LLM_FIREWORKS_QWEN_3_6_PLUS', required: LLMs available to AgentConfig. - AVAILABLE_LLM_OPENAI_GPT_5_CHAT: GPT-5 chat is a variant of GPT-5 that is optimized for chat use cases and does not support reasoning. - AVAILABLE_LLM_OPENAI_GPT_5_6_LUNA: GPT-5.6 Luna is the cost-efficient GPT-5.6 tier. - AVAILABLE_LLM_OPENAI_GPT_5_6_SOL: GPT-5.6 Sol is the highest-capability GPT-5.6 tier. - AVAILABLE_LLM_OPENAI_GPT_5_6_TERRA: GPT-5.6 Terra balances GPT-5.6 cost and capability. - AVAILABLE_LLM_OPENAI_GPT_6_1_SOL: GPT-6.1 Sol provides reasoning through the OpenAI provider. - AVAILABLE_LLM_OPENAI_GPT_6_1_TERRA: GPT-6.1 Terra supports visual reasoning and computer use through OpenAI. - AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_PREVIEW: deprecated: use AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_LITE instead. - AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_LITE_LATEST: NEVER USE: use AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_LITE instead. - AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE_PREVIEW: deprecated: use AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE instead. - AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE: GA Gemini 3.1 Flash Lite; in the EU it is served from the eu.rep data-residency endpoint. - AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH_LITE: Generally available Gemini 3.5 Flash Lite model on Vertex AI: the high-throughput tier of the 3.5 generation. - AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH: Generally available Gemini 3.5 Flash model on Vertex AI. - AVAILABLE_LLM_GOOGLE_GEMINI_3_6_FLASH: Generally available Gemini 3.6 Flash model on Vertex AI: the successor to 3.5 Flash. - AVAILABLE_LLM_GOOGLE_GEMINI_3_7_FLASH: Generally available Gemini 3.7 Flash model on Vertex AI: the successor to 3.6 Flash.
    - `provider` 'PROVIDER_UNSPECIFIED' | 'PROVIDER_AZURE_OPENAI' | 'PROVIDER_OPENAI' | 'PROVIDER_VERTEX_AI' | 'PROVIDER_GEMINI', required: AI providers that support customer-supplied credentials. - PROVIDER_UNSPECIFIED: No provider selected. - PROVIDER_AZURE_OPENAI: OpenAI-family models served from the customer's Azure OpenAI resource. - PROVIDER_OPENAI: OpenAI platform (api.openai.com) or an OpenAI-compatible endpoint. - PROVIDER_VERTEX_AI: Gemini-family models served from the customer's GCP project through Vertex AI. - PROVIDER_GEMINI: Gemini API accessed with a Google AI Studio API key.
  - `tenant_meta` object, required: The tenant metadata restricts access to a specific tenant.
  - `uuid` string: The UUID of the AI provider key.

## Response `200`

A successful response.

- V1AIProviderKey: AIProviderKey stores a customer-provided (bring-your-own-key) LLM credential and entry point for a specific AI provider. When one is configured and enabled, the platform routes the tenant's AI requests through the customer's own provider account instead of Endor-managed credentials.
  - `meta` V1Meta, required: Common fields for all Endor Labs resources.
    - `annotations` object: Annotations can be used to attach metadata to a resource message. Annotation values can be small or large, structured or unstructured, and may include characters not permitted by labels. The keys may contain alphanumerics, underscores (_), dots (.) and dashes (-). The values of an annotation must be 16384 bytes or smaller.
    - `create_time` string, date-time: Time the resource was created. Format: 2017-01-15T01:30:15.01Z RFC 3339: https://www.ietf.org/rfc/rfc3339.txt.
    - `created_by` string: Name and authentication source of the user who created the object, for example, ewok@endor.ai@google@api-key.
    - `description` string: Resource description. Must be less than 1024 bytes.
    - `index_data` V1IndexData: IndexData is used to index the resource for search. It's an internal object.
      - `data` string[]
      - `search_score` number, float: search_score is the score of the resource for search. Internal use only.
      - `tenant` string
      - `will_be_deleted_at` string, date-time: Time that the resource will be deleted.
    - `kind` string: Resource kind, for example, HelloResponse. Auto-generated using the protobuf message proto.MessageName().Name().
    - `name` string, required: Resource name. Must be 63 characters or less.
    - `parent_kind` string: Parent object resource kind, for example, Project.
    - `parent_uuid` string: Parent object UUID.
    - `references` object: Map of objects referenced in a query API.
    - `tags` string[]: List of tags attached to the resource. Tags can be used to select objects and to find collections of objects that satisfy certain conditions. A tag must be 255 characters or less.
    - `update_time` string, date-time: Time the resource was last updated. Note: Updated on all create/patch/delete operations. Format: 2017-01-15T01:30:15.01Z RFC 3339: https://www.ietf.org/rfc/rfc3339.txt.
    - `updated_by` string: Name and authentication source of the last user who updated the object, for example, vulnerabilityingestor@endor.ai@x509.
    - `upsert_time` string, date-time: Time the resource was last upserted. Note: create_time is only set the first time the resource is created. upsert_time is set every time the resource is upseted. Format: 2017-01-15T01:30:15.01Z RFC 3339: https://www.ietf.org/rfc/rfc3339.txt.
    - `version` string: Message version.
  - `spec` V1AIProviderKeySpec
    - `api_key` string: Credential used to call the provider: an API key for OpenAI-family and Gemini providers, or an express-mode API key for Vertex AI. Stored in the platform secret manager (secure annotation); read APIs return the redacted placeholder rather than the stored value.
    - `api_version` string: Azure OpenAI api-version query parameter to use. Defaults to the platform's version when unset; only meaningful for PROVIDER_AZURE_OPENAI.
    - `disabled` boolean: Pauses routing through this credential without deleting it.
    - `embedding_model_aliases` SpecEmbeddingModelAlias[]: Embedding models the credential serves and the names the customer's provider serves them under. Azure OpenAI takes the deployment name from the request body's model field, so a customer whose deployment is not named after the model must list it here or the request reaches a path that does not exist. Leave empty to make this key the provider's embedding catch-all, serving every embedding model under its own name; keys listing a model explicitly take precedence over the catch-all. Two enabled keys of one provider that both leave this empty are two catch-alls, whatever their model_aliases. The write does not check for this, but neither serves any embedding request, and a request no other key serves fails, until one of them lists its embedding models here.
      - `alias` string: Name the customer's provider serves the model under, e.g. an Azure OpenAI deployment name. Defaults to the model's own name when unset.
      - `model` 'EMBEDDING_MODEL_UNSPECIFIED' | 'EMBEDDING_MODEL_OPENAI_TEXT_EMBEDDING_ADA_002' | 'EMBEDDING_MODEL_OPENAI_TEXT_EMBEDDING_3_SMALL' | 'EMBEDDING_MODEL_GOOGLE_TEXT_EMBEDDING_LARGE' | 'EMBEDDING_MODEL_OPENAI_TEXT_EMBEDDING_3_LARGE', required: EmbeddingModel is the model of the embedding provider.
    - `endpoint` string: Entry point requests are sent to. Required for PROVIDER_AZURE_OPENAI (the Azure resource endpoint, e.g. https://<resource>.openai.azure.com), optional for PROVIDER_OPENAI (defaults to the OpenAI platform; set it to target an OpenAI-compatible gateway), optional for PROVIDER_VERTEX_AI (defaults to the global endpoint; set a regional endpoint, e.g. https://us-central1-aiplatform.googleapis.com, to pin a region) and unused for PROVIDER_GEMINI. Stored in the platform secret manager and redacted in read APIs.
    - `model_aliases` SpecModelAlias[]: Models the credential can serve and the names the customer's provider serves them under. Each listed model may be served by only one of the tenant's keys for the provider, and together the provider's keys must cover the models the platform requires. Leave empty to make this key the provider's single catch-all, serving every model under its own name; keys listing a model explicitly take precedence over the catch-all. Scoping a key here does not scope its embeddings: it still counts as the provider's embedding catch-all until embedding_model_aliases is set.
      - `alias` string: Name the customer's provider serves the model under, e.g. an Azure OpenAI deployment name. Defaults to the model's own name when unset.
      - `model` 'AVAILABLE_LLM_UNSPECIFIED' | 'AVAILABLE_LLM_OPENAI_GPT_5' | 'AVAILABLE_LLM_OPENAI_GPT_5_MINI' | 'AVAILABLE_LLM_OPENAI_GPT_5_NANO' | 'AVAILABLE_LLM_OPENAI_GPT_5_CHAT' | 'AVAILABLE_LLM_OPENAI_GPT_5_1' | 'AVAILABLE_LLM_OPENAI_GPT_5_1_CHAT' | 'AVAILABLE_LLM_OPENAI_GPT_5_1_CODEX' | 'AVAILABLE_LLM_OPENAI_GPT_5_1_CODEX_MINI' | 'AVAILABLE_LLM_OPENAI_GPT_5_2_CODEX' | 'AVAILABLE_LLM_OPENAI_GPT_5_2' | 'AVAILABLE_LLM_OPENAI_GPT_5_3_CODEX' | 'AVAILABLE_LLM_OPENAI_GPT_5_3_CHAT' | 'AVAILABLE_LLM_OPENAI_GPT_5_4_MINI' | 'AVAILABLE_LLM_OPENAI_GPT_5_4_NANO' | 'AVAILABLE_LLM_OPENAI_GPT_5_4' | 'AVAILABLE_LLM_OPENAI_GPT_5_5' | 'AVAILABLE_LLM_OPENAI_GPT_5_6_LUNA' | 'AVAILABLE_LLM_OPENAI_GPT_5_6_SOL' | 'AVAILABLE_LLM_OPENAI_GPT_5_6_TERRA' | 'AVAILABLE_LLM_OPENAI_GPT_6_SOL' | 'AVAILABLE_LLM_OPENAI_GPT_6_LUNA' | 'AVAILABLE_LLM_OPENAI_GPT_6_1_SOL' | 'AVAILABLE_LLM_OPENAI_GPT_6_1_TERRA' | 'AVAILABLE_LLM_OPENAI_GPT_4' | 'AVAILABLE_LLM_OPENAI_GPT_4O_MINI' | 'AVAILABLE_LLM_OPENAI_GPT_4_1' | 'AVAILABLE_LLM_OPENAI_GPT_4_1_MINI' | 'AVAILABLE_LLM_OPENAI_GPT_4_1_NANO' | 'AVAILABLE_LLM_OPENAI_O1' | 'AVAILABLE_LLM_OPENAI_O3' | 'AVAILABLE_LLM_OPENAI_GPT_4O' | 'AVAILABLE_LLM_OPENAI_O3_MINI' | 'AVAILABLE_LLM_OPENAI_O4_MINI' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_0' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_LATEST' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_PREVIEW' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_LITE' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_0_LITE' | 'AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_LITE_LATEST' | 'AVAILABLE_LLM_GOOGLE_GEMINI_2_5_PRO' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_PRO_PREVIEW' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_1_PRO_PREVIEW' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE_PREVIEW' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH_LITE' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_6_FLASH' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_7_FLASH' | 'AVAILABLE_LLM_GOOGLE_GEMINI_3_FLASH_PREVIEW' | 'AVAILABLE_LLM_ANTHROPIC_CLAUDE_3_5_SONNET' | 'AVAILABLE_LLM_ANTHROPIC_CLAUDE_4_5_SONNET' | 'AVAILABLE_LLM_ANTHROPIC_CLAUDE_4_5_HAIKU' | 'AVAILABLE_LLM_GROQ_LLAMA_3_2_90B' | 'AVAILABLE_LLM_GROQ_COMPOUND' | 'AVAILABLE_LLM_GROQ_COMPOUND_MINI' | 'AVAILABLE_LLM_GROQ_LLAMA_3_3_70B_VERSATILE' | 'AVAILABLE_LLM_GROQ_LLAMA_4_MAVERICK_17B' | 'AVAILABLE_LLM_GROQ_LLAMA_4_SCOUT_17B' | 'AVAILABLE_LLM_GROQ_OPENAI_GPT_OSS_20B' | 'AVAILABLE_LLM_GROQ_OPENAI_GPT_OSS_120B' | 'AVAILABLE_LLM_GROQ_OPENAI_GPT_OSS_SAFEGUARD_20B' | 'AVAILABLE_LLM_GROQ_QWEN_3_32B' | 'AVAILABLE_LLM_GROQ_LLAMA_PROMPT_GUARD_2_22M' | 'AVAILABLE_LLM_GROQ_LLAMA_PROMPT_GUARD_2_86M' | 'AVAILABLE_LLM_GROQ_LLAMA_GUARD_4_12B' | 'AVAILABLE_LLM_ENDOR_DEEPSEEK_R1' | 'AVAILABLE_LLM_ENDOR_QWEN_3_8_27B' | 'AVAILABLE_LLM_GOOGLE_GEMMA_4_26B_A4B_IT' | 'AVAILABLE_LLM_GOOGLE_GEMINI_R2D2_LATEST' | 'AVAILABLE_LLM_FIREWORKS_GPT_OSS_20B' | 'AVAILABLE_LLM_FIREWORKS_GPT_OSS_120B' | 'AVAILABLE_LLM_FIREWORKS_KIMI_K25' | 'AVAILABLE_LLM_FIREWORKS_MINIMAX_M27' | 'AVAILABLE_LLM_FIREWORKS_QWEN_3_6_PLUS', required: LLMs available to AgentConfig. - AVAILABLE_LLM_OPENAI_GPT_5_CHAT: GPT-5 chat is a variant of GPT-5 that is optimized for chat use cases and does not support reasoning. - AVAILABLE_LLM_OPENAI_GPT_5_6_LUNA: GPT-5.6 Luna is the cost-efficient GPT-5.6 tier. - AVAILABLE_LLM_OPENAI_GPT_5_6_SOL: GPT-5.6 Sol is the highest-capability GPT-5.6 tier. - AVAILABLE_LLM_OPENAI_GPT_5_6_TERRA: GPT-5.6 Terra balances GPT-5.6 cost and capability. - AVAILABLE_LLM_OPENAI_GPT_6_1_SOL: GPT-6.1 Sol provides reasoning through the OpenAI provider. - AVAILABLE_LLM_OPENAI_GPT_6_1_TERRA: GPT-6.1 Terra supports visual reasoning and computer use through OpenAI. - AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_PREVIEW: deprecated: use AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_LITE instead. - AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_LITE_LATEST: NEVER USE: use AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_LITE instead. - AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE_PREVIEW: deprecated: use AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE instead. - AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE: GA Gemini 3.1 Flash Lite; in the EU it is served from the eu.rep data-residency endpoint. - AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH_LITE: Generally available Gemini 3.5 Flash Lite model on Vertex AI: the high-throughput tier of the 3.5 generation. - AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH: Generally available Gemini 3.5 Flash model on Vertex AI. - AVAILABLE_LLM_GOOGLE_GEMINI_3_6_FLASH: Generally available Gemini 3.6 Flash model on Vertex AI: the successor to 3.5 Flash. - AVAILABLE_LLM_GOOGLE_GEMINI_3_7_FLASH: Generally available Gemini 3.7 Flash model on Vertex AI: the successor to 3.6 Flash.
    - `provider` 'PROVIDER_UNSPECIFIED' | 'PROVIDER_AZURE_OPENAI' | 'PROVIDER_OPENAI' | 'PROVIDER_VERTEX_AI' | 'PROVIDER_GEMINI', required: AI providers that support customer-supplied credentials. - PROVIDER_UNSPECIFIED: No provider selected. - PROVIDER_AZURE_OPENAI: OpenAI-family models served from the customer's Azure OpenAI resource. - PROVIDER_OPENAI: OpenAI platform (api.openai.com) or an OpenAI-compatible endpoint. - PROVIDER_VERTEX_AI: Gemini-family models served from the customer's GCP project through Vertex AI. - PROVIDER_GEMINI: Gemini API accessed with a Google AI Studio API key.
  - `tenant_meta` V1TenantMeta, required: Tenant related data for the tenant containing the resource.
    - `namespace` string, required: Namespaces are a way to organize organizational units into virtual groupings of resources. Namespaces must be a fully qualified name, for example, the child namespace of namespace "endor.prod" called "app" is called "endor.prod.app".
  - `uuid` string: The UUID of the AI provider key.

## Other responses

- `default`: An unexpected error response.

## Changes

- **2026-11-03** `4acd9fe15140`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/endorlabs/apis/endor-labs-rest-api-reference/changes/v1/namespaces/:tenant_meta.namespace/ai-provider-keys/post.md)

---

[API](https://skmtc.dev/endorlabs/apis/endor-labs-rest-api-reference.md) - [All operations](https://skmtc.dev/endorlabs/apis/endor-labs-rest-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/endorlabs/apis/endor-labs-rest-api-reference/revisions/4acd9fe15140?raw)
