Agentic Data Plane

Configure an LLM Provider

Create an LLM provider to give your applications a managed proxy URL. Redpanda handles the upstream API keys, forwards requests to the provider, and records usage for you. Create a provider for each upstream you use, whether that’s OpenAI, Anthropic, Google Gemini API, Amazon Bedrock, Gemini Enterprise Agent Platform (formerly Vertex AI), or an OpenAI-compatible endpoint.

After reading this page, you will be able to:

  • Create an LLM provider for OpenAI, Anthropic, Google Gemini API, Amazon Bedrock, Gemini Enterprise Agent Platform, or an OpenAI-compatible endpoint

  • Select the models you want to expose through the provider

  • Verify the provider is reachable using the built-in Test connection control

Prerequisites

  • An API key for the upstream provider you want to configure, AWS credentials for Bedrock, or a Google Cloud Platform (GCP) service account key for Gemini Enterprise Agent Platform.

  • Optional: Secrets already created in the Agentic Data Plane secret store for the provider’s credentials. The create form can also store a new API key inline, so you don’t have to prepare a secret first. Secret identifiers use UPPER_SNAKE_CASE. For example: OPENAI_API_KEY, ANTHROPIC_API_KEY, AWS_ACCESS_KEY_ID.

Open the Create LLM provider page

  1. Open LLM providers in the sidebar.

  2. Click Add provider.

Fill in the identity fields

The Identity section collects the provider’s name. Enter a Display name: a human-readable label shown in dashboards and model selectors, up to 253 characters.

Agentic Data Plane derives the provider’s resource ID from the display name in the background. The create form doesn’t show it. The resource ID is the machine identifier that rpk ai commands use. It starts with a lowercase letter, contains only lowercase letters, numbers, and hyphens, ends with a letter or number (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$), is at most 63 characters, and is immutable after creation. It appears in the proxy URL (/llm/v1/providers/<resource-id>/…​).

Choose a provider type

In the Provider type section, select the type that matches your upstream. Each tile carries the type’s name and icon and a one-line summary of what it reaches. Hover over a tile, or select it, to show a Docs link to the upstream’s own API documentation.

Type Use when

OpenAI

Proxy GPT, o-series, and embeddings through the OpenAI API. Best when you already hold an OpenAI API key or want the broadest GPT model catalog. With passthrough on, forwards each client’s own Authorization header to OpenAI instead of using a shared server-side key.

Anthropic

Call Claude Opus, Sonnet, and Haiku directly. Strong at coding, long-context reasoning, and tool use. With passthrough on, forwards each client’s own Authorization header to Anthropic instead of using a shared server-side key.

Google Gemini API

Reach Gemini models through the Gemini API, with an API key from Google AI Studio. Ideal for long-context workloads and image and video inputs.

Amazon Bedrock

Invoke foundation models (Claude, Llama, Titan, Nova, Mistral, AI21 Jamba, Gemma) hosted inside your AWS account. Requires an AWS region and credentials (static, STS-assumed role, or the default credential chain). Supports the native Bedrock APIs (InvokeModel, Converse) and an OpenAI-compatible Chat Completions endpoint for gpt-oss and Gemma models. See Set up Amazon Bedrock as an LLM provider for a step-by-step IAM and access-key walkthrough, and its Inference profiles and IAM section for picking the right model identifier.

OpenAI-compatible

Point at any OpenAI-compatible endpoint that ships /v1/chat/completions (vLLM, Ollama, LM Studio, LocalAI, Together, Groq, OpenRouter). Useful for self-hosted models and aggregator gateways. Requires a Base URL. Authentication is optional. Use a server-side key, turn on passthrough so each client sends its own, or leave both unset for an endpoint that needs no credential.

Gemini Enterprise Agent Platform

Run Gemini and Claude models through your own GCP project, which Google bills for them. Requires a GCP project ID, one location for all the provider’s models, and a service account key. Claude models also need setup in the project and organization first. See Set up Gemini Enterprise Agent Platform as an LLM provider for the GCP setup and a step-by-step walkthrough.

Selecting a type reveals the type-specific configuration fields.

Fill in the type-specific configuration

Each API key reference and credential field points at a secret-store entry, not the secret value itself. On the create form, the Credential section lists the keys already in the Agentic Data Plane secret store. Pick one, or select Bring a new API key reference to store a new key inline. Enter a Key name and the API key value, then click Save key. Agentic Data Plane encrypts the key and stores it in the secret store under an identifier derived from the key name, which appears under the field. You can’t view the value again after you save it.

The picker lists only the secrets AI Gateway can read, which are the ones held in the Agentic Data Plane secret store. A secret that lives in Redpanda Cloud for another product, such as a Redpanda Connect pipeline, isn’t listed, and a new Agentic Data Plane secret can’t reuse its name.

To change the key later, open the provider’s Settings tab. Its Credential section uses the same picker as the create form. Select another stored key, or bring a new one.

  • OpenAI

  • Anthropic

  • Google Gemini API

  • Amazon Bedrock

  • Gemini Enterprise Agent Platform

  • OpenAI-compatible

Field Notes

Base URL

Optional. Filled in with the standard OpenAI API (https://api.openai.com/v1). Override for Azure OpenAI or other hosted OpenAI-compatible endpoints. To let clients authenticate with their own Codex subscription, set it to https://chatgpt.com/backend-api/codex and turn on Authorization passthrough. A Codex subscription requires this base URL.

API key reference

Required unless Authorization passthrough is on. Secret-store reference for the OpenAI API key. Must be UPPER_SNAKE_CASE, for example OPENAI_API_KEY.

Authorization passthrough

Optional toggle. When on, AI Gateway forwards each client’s own Authorization header to the upstream provider unchanged instead of sending a server-side API key, so every client authenticates with its own OpenAI credentials. It also forwards ChatGPT-Account-ID when the client sends one, which selects a Codex workspace. No other caller header reaches the upstream. Turning the toggle on clears the API key reference and hides the credential picker. The form requires one or the other, and a provider that has both is rejected. With passthrough on, each client must also authenticate to AI Gateway with an API key in the X-Redpanda-Api-Key header, because its Authorization header now carries the upstream credential. AI Gateway rejects a passthrough request that doesn’t authenticate with an API key with HTTP 400 before contacting the upstream. It also rejects an upstream redirect with HTTP 502 instead of following it, so a redirected response never carries a client’s credentials to another host.

Field Notes

Base URL

Optional. Filled in with the standard Anthropic API (https://api.anthropic.com).

API key reference

Required unless Authorization passthrough is on. UPPER_SNAKE_CASE, for example ANTHROPIC_API_KEY.

Authorization passthrough

Optional toggle. When on, AI Gateway forwards each client’s own Authorization header to Anthropic unchanged instead of sending a server-side API key, so every client authenticates with its own Anthropic credentials. Leave the API key reference empty when passthrough is on. The form requires one or the other. With passthrough on, each client authenticates to AI Gateway with an API key in the X-Redpanda-Api-Key header, and AI Gateway rejects a request that authenticates with a gateway token, or that has no Authorization header, with HTTP 400. Test connection has no server-side credential to check, so it reports that the first real request verifies upstream access. The saved provider’s Overview tab shows the passthrough state on the Connection card.

Field Notes

Base URL

Optional. Filled in with the standard Google Gemini API endpoint (https://generativelanguage.googleapis.com).

API key reference

Required. Secret-store reference for the Google Gemini API key. UPPER_SNAKE_CASE, for example GOOGLE_AI_API_KEY.

Google’s SDKs send their API key as x-goog-api-key, and AI Gateway doesn’t accept a Google API key in that header as gateway authentication. Clients authenticate with an API key, which they can send in x-goog-api-key or X-Redpanda-Api-Key, or with a gateway token in the X-Redpanda-Cloud-Token header. AI Gateway sets x-goog-api-key to the provider’s stored key when it calls Google. See Connect your app to AI Gateway.

Field Notes

Region

Required. The AWS region name where the Bedrock endpoint is deployed, such as us-east-1, us-gov-west-1, or cn-north-1. AI Gateway builds the upstream hostname from this value, so it rejects anything that isn’t shaped like a region name.

Base URL

Optional. Override the default regional Bedrock endpoint with another Amazon Bedrock runtime endpoint, such as a FIPS or VPC endpoint. Leave it empty to use the standard regional endpoint. The URL has to use https:// on port 443, carry no user information, query string, or fragment, and name an Amazon Bedrock runtime host: bedrock-runtime.<region>.amazonaws.com, its FIPS form bedrock-runtime-fips.<region>.amazonaws.com, bedrock-mantle.<region>.api.aws, or a VPC interface endpoint for one of those services. Each amazonaws.com host is also accepted under amazonaws.com.cn. AI Gateway refuses any other host, because the base URL receives the credentials it signs each request with. With a custom base URL, AI Gateway sends every request to that URL, so models that Bedrock serves only on its separate bedrock-mantle endpoint, such as the Gemma 4 family and OpenAI gpt-5.x models, aren’t reachable through this provider unless the base URL is itself a bedrock-mantle endpoint.

Credential type

How AI Gateway authenticates to Bedrock: Bedrock API key, Default chain, Static keys, or Assume IAM role. Rows that name a mode apply only to that mode.

Bedrock API key reference

Bedrock API key only. Required. Secret-store reference for an Amazon Bedrock API key, UPPER_SNAKE_CASE (for example, BEDROCK_API_KEY). The secret holds the key on its own, with no Bearer prefix and no quotes.

Access key ID reference

Static keys only. Secret-store reference for the AWS access key ID, UPPER_SNAKE_CASE (typically AWS_ACCESS_KEY_ID).

Secret access key reference

Static keys only. Secret-store reference for the AWS secret access key, UPPER_SNAKE_CASE (typically AWS_SECRET_ACCESS_KEY).

Role ARN

Assume IAM role only. Required. ARN of the IAM role AI Gateway assumes through AWS STS, for example arn:aws:iam::123456789012:role/BedrockRole.

External ID

Assume IAM role only. Optional. External ID for cross-account role assumption. Set it only when the role’s trust policy mandates an external ID.

Session name

Assume IAM role only. Optional. Session name that appears in AWS CloudTrail audit logs, for example redpanda-adp.

Guardrail

Optional. Name of a guardrail to attach to this provider, or empty for none. The UI shows this field on Bedrock providers only. For other provider types, set it with the --guardrail flag on rpk ai llm-provider create or rpk ai llm-provider update. AI Gateway validates the name when you save. It rejects a guardrail that doesn’t exist or is being deleted, so set the field to an existing guardrail or leave it empty. See Create a guardrail.

Select a Credential type to control how AI Gateway authenticates to Bedrock:

  • Bedrock API key: An Amazon Bedrock API key stored in the secret store, which AI Gateway sends as a bearer token instead of signing requests with SigV4. Use this when you want a single credential and no IAM key pair. Generate the key in the Amazon Bedrock console, and store the key value on its own. The identity behind the key needs the bedrock:CallWithBearerToken permission, plus bedrock:ListFoundationModels for Test connection and the invoke permissions for the models you call. AI Gateway never generates or renews a Bedrock API key, so an expired or revoked key fails every call until you update the secret. A short-term key expires within 12 hours and works only in the region it was generated for, so a provider that uses one stops working when the key expires unless you update the secret first. See Generate Amazon Bedrock API keys for how to create a key and which permissions it carries.

  • Default chain (default): Leave the credentials unset to use the AWS SDK’s default provider chain (environment variables, shared config, EKS Pod Identity, IRSA, or instance profile). Use this when the gateway already runs with an AWS identity. An Agentic Data Plane environment hosted on a cloud other than AWS has no such identity, so this mode can’t obtain credentials there.

  • Static keys: An IAM access key pair stored in the secret store. Use this when no ambient AWS identity is available, including on an environment hosted on a cloud other than AWS. This is the path the Bedrock setup guide walks through. This mode takes an IAM access key pair only. A Bedrock API key belongs in Bedrock API key, and a temporary access key that needs a session token belongs in Assume IAM role or Default chain.

  • Assume IAM role: AI Gateway assumes an IAM role through AWS STS. Use this for cross-account access or when your security policy requires short-lived credentials. The role ARN names the role to assume. AI Gateway still authenticates the AssumeRole call through the default chain, so this mode also needs an ambient AWS identity. A provider carries one credential type, so you can’t pair a role ARN with an access key pair. See Bedrock troubleshooting for the error a provider reports when it has no reachable AWS identity.

For how Bedrock model identifiers and IAM ARNs map to these fields, see Inference profiles and IAM.

Field Notes

Service account key

Required. Secret-store reference for a GCP service account key in JSON format, for example VERTEX_SERVICE_ACCOUNT_KEY. The form checks that the value is a service account key: a JSON object whose type is service_account, with a client_email and an RSA private_key. A service account key is the only credential this type accepts.

Project ID

Required. The ID of the GCP project that hosts the models and is billed for them, for example my-gcp-project. Use the project ID, not the numeric project number.

Location

Required. The location that serves every model on this provider, such as global, us, eu, or a named region such as us-east5. The list shows how many models each location serves. To use models from two locations, create a provider for each. See Choose a location.

Base URL

Optional. Leave it empty to use the location’s endpoint. If you set it, it must start with https://.

The service account needs the roles/aiplatform.user role, and Claude models need setup in your GCP project and organization before they answer. See Set up Gemini Enterprise Agent Platform as an LLM provider.

Field Notes

Base URL

Required. URL of your OpenAI-compatible endpoint, for example http://vllm.internal:8000/v1, http://ollama.local:11434/v1, or an aggregator like Together / Groq / OpenRouter.

API key reference

Optional. Leave empty for endpoints with no authentication (common for local runtimes), or when Authorization passthrough is on. UPPER_SNAKE_CASE if set.

Authorization passthrough

Optional toggle. Behaves as it does on an OpenAI provider. AI Gateway forwards each client’s own Authorization header, and its ChatGPT-Account-ID header when present, to the upstream endpoint instead of sending a server-side API key. Unlike the OpenAI type, this type also accepts having neither, which is the configuration for an endpoint that needs no credential. It rejects both together.

OpenAI-compatible endpoints can serve any model. Enter the exact model identifiers your upstream server exposes (for example, meta-llama/Llama-3.3-70B-Instruct or qwen3:8b).

Save-time validation checks the credential reference itself, not the secret behind it. The Google Gemini API type rejects a create or update with a missing or empty API key reference. The OpenAI and Anthropic types require exactly one of an API key reference and Authorization passthrough, so a provider with neither, or with both, is rejected. Whether the referenced secret actually exists isn’t checked until the first proxied call. A reference to a nonexistent secret saves fine and fails at first call. The Gemini Enterprise Agent Platform type requires a service account key reference, a project ID, and a location, and rejects a create, or an update that changes the models or the location, when a selected model isn’t served at that location. The OpenAI-compatible type requires no credential reference, so it can be created with no authentication for local runtimes such as Ollama or vLLM, but it still rejects a key and passthrough together.

Select models

Models you select on this form become the catalog the provider exposes.

For OpenAI, Anthropic, Google Gemini API, and Amazon Bedrock, the form shows a picker backed by the provider’s catalog, with the full catalog selected by default. Keep the default, or deselect models to narrow what the provider exposes. Each model in the picker shows its input and output price per million tokens. Select from the list, or type a model identifier the catalog doesn’t show. For OpenAI-compatible, the form takes a freeform list. Type the exact identifiers your upstream serves.

For Gemini Enterprise Agent Platform, the picker lists only the models served at the provider’s location, so choose the location first. The form preselects the Gemini models there, and Claude models start unselected. Select only the Claude models you enabled in your GCP project. If you change the location, the selection resets to that location’s Gemini models.

Redpanda maintains the catalog of available models in the picker. When an upstream provider publishes a new model, it usually appears in the picker within a day or two. Admins don’t have to wait for a Redpanda release. New models aren’t enabled automatically. An admin still selects the model in the catalog to make it callable through this provider. A model the upstream provider has retired drops out of the picker list, though you can still type its identifier. A provider that already has it selected keeps serving it, its recorded spend keeps pricing at the catalog rates, and agents using it keep working.

For Bedrock, the picker lists inference-profile IDs for models that Bedrock serves only through a profile, such as Claude, and the bare model ID for models invoked in-region, such as Mistral Large 3. See Inference profiles and IAM.

The Bedrock picker groups models under the vendor that publishes them, such as Anthropic, Amazon, Google, Meta, Mistral, and OpenAI.

Redpanda stores models as structured ProviderModel entries (one entry per model, with the model name as the only required field). Each model can carry custom pricing overrides that replace the catalog rates for that model in cost reporting. See Override per-model pricing. The legacy flat models field still works on writes for backward compatibility.

Beyond pricing, the catalog carries each model’s capabilities and context-window limits: max_input_tokens (the largest context the model accepts) and max_output_tokens (the most it can generate in a single response). Both are read-only catalog metadata. A limit the catalog doesn’t declare stays unset rather than reported as zero. To see a model’s limits, run rpk ai model get <model>. The context-window indicator on an agent’s Playground tab uses them to show how full the agent’s context window is.

Override per-model pricing

Cost reporting prices each call at the catalog rates for the model. If your organization negotiates non-standard rates, or you track spend against an internal chargeback rate, override the rates per model on this provider.

Each model you select in the model picker, and each enabled model on a saved provider’s Models tab, carries a pencil icon (Override pricing). Click it to open the pricing dialog for that model. A model the catalog doesn’t price has the same dialog, with empty fields and no default rate to fall back on, so you can set every rate yourself.

The dialog lists one field per billing bucket, in the same order as the provider’s published rate card:

Bucket What it bills

Input

Per 1M input tokens. Tool-use input also bills at this rate.

Output

Per 1M output tokens. Reasoning tokens also bill at this rate.

Cached input

Per 1M tokens read from prompt cache.

Cache write (5-minute TTL)

Per 1M tokens written to a 5-minute prompt cache.

Cache write (1-hour TTL)

Per 1M tokens written to a 1-hour prompt cache.

Enter rates in dollars per million tokens. Each field is independent:

  • Leave a field blank to keep the catalog rate for that bucket. The catalog rate shows as the field’s placeholder.

  • Enter a positive value to replace the catalog rate for that bucket only.

  • Enter 0 to make that bucket explicitly free, which is different from leaving it blank.

Cache writes with an unknown TTL always bill at the catalog rate. They have no override field.

Click Reset on a field to clear a single override, or click Reset all to clear every field at once. Saving with every field empty drops all overrides for the model and returns it to the catalog rates. Overrides are scoped to this provider and model, and they change what Agentic Data Plane’s cost reporting computes, not what the upstream provider actually charges you.

A rate you enter is the model’s standard, default-speed rate, which is what most calls bill at. Agentic Data Plane derives the model’s other rates from it:

  • A call that ran at a faster or cheaper service tier, or in a provider’s fast mode, bills at the same multiple of your rate that the catalog tier is of the catalog standard rate. A discounted tier stays discounted and a premium tier stays at a premium, both relative to the rate you negotiated. See Per-request pricing variations.

  • A region-specific rate is replaced by the rate you enter, with no regional premium added, because a negotiated rate is already region-specific.

  • A rate that applies only above a context-length threshold keeps its catalog value, as does any bucket you leave blank.

If saving fails, the dialog stays open with your values and reports the reason, so you can fix the problem and retry without retyping the rates.

To see at a glance which models carry an override, look for the dollar-sign badge. On the Models tab it sits beside the model name, and in the model picker it ends the price line. It appears on every enabled model that has a pricing override, and its tooltip confirms that the model uses custom pricing instead of the catalog default. In the model picker’s price line, an overridden bucket’s rate is highlighted too, so you can tell an overridden input rate from an overridden output rate. Enabled models are listed first on the Models tab, which keeps the models you price where you can find them.

You can set the same overrides from the CLI instead of the pricing dialog. The repeatable --pricing flag on rpk ai llm-provider create and rpk ai llm-provider update takes one entry per model, written as comma-separated key=value pairs with rates in dollars per million tokens:

rpk ai llm-provider update openai \
  --pricing "model=gpt-4o,input=2.50,output=10.00,cached=1.25" \
  --pricing "model=gpt-4o-mini,input=0.15,output=0.60"

Each entry names the model with model, which is required, then sets one rate key per billing bucket: input, output, cached, cache_write_5m, and cache_write_1h. As in the dialog, an omitted rate keeps the catalog rate and 0 sets an explicit free rate. Set at least one rate per model. On update, --pricing sets the provider’s full model list, so include every model you want the provider to keep, either as its own --pricing entry or through --provider-models.

Tag the provider (optional)

The Tags section, last on the create form, takes key/value pairs that organize and filter providers and that access policies can read in their conditions. Enter a tag key and a tag value, then press Enter or click the add (+) button.

To change tags after you create the provider, use the Tags section on its Settings tab. A tagged provider shows its tags on the connection card of its detail page and in the Tags column of the LLM providers list.

For the limits and rules that apply to tags on every resource, see Tag Resources.

Explore the provider detail page

After you create the provider, its detail page organizes everything about it into tabs: Overview, Models, Connect, Playground (when enabled for your organization), and Settings. The page header carries the provider’s logo, its display name with an Enabled or Disabled badge beside it, its resource identifier, and its description if it has one.

Overview

The Overview tab reports over a single time range, which you select with the tab’s range selector. The range covers everything on the tab: the metric cards, the Gateway traffic chart, Who calls what, and the Callers table. It opens on the last seven days, and you can pick a preset or an exact window of your own.

Three metric cards give total spend, requests, and tokens over that range. Each card gives the total, how it changed against the range of the same length just before it, a trend line, and a breakdown of the figure by cost type, request outcome, or token type. The token card also reports what share of prompt tokens came from cache. Click View more on a card to open a detail panel for that metric, where you can group and filter the figure.

A Gateway traffic chart plots token volume as bars and spend as a line, with the totals for the range in its header. Drag across the chart, or pinch it, to zoom into a narrower window, which then becomes the range for the whole tab. Click View all to open the Cost and usage page with this provider charted against the gateway total over the same range. The Connection card lists the provider type, the authentication passthrough state, and any attached guardrail, then the endpoint values with a copy control each: the proxy URL, the upstream base URL, the API key secret reference, and, for an Amazon Bedrock provider, the region and its credential references.

A Who calls what card then draws the caller-to-model traffic for that range. Hover over a node in that graph to isolate its connections, which the graph’s hint reminds you of on a machine with a mouse.

A Callers table lists, over the same range, each agent or user that called the provider, with its request count, the models it used, its error count, spend, and when it was last seen. Sort the table by requests, errors, spend, or last seen. It opens on the busiest caller first. Search the table by caller name, slug, or email. Select an agent’s row to open the Activity tab of the Cost and usage page for that agent, or a user’s row to open that page with this provider charted against the gateway total. For analysis across providers, see View cost and usage.

Investigate failed calls

When a caller has failed requests in the selected range, Who calls what shows a warning counting the callers that need attention, and says so when some callers aren’t shown. Expand it to see each failing caller with its count of failed requests, then click Inspect to open the details. An affected caller’s node in the graph and a caller’s error count in the Callers table open the same details.

The Failed provider calls panel lists that caller’s failed calls over the range, newest first. Each entry carries a label for what went wrong, such as Rate limited, Authentication failed, Permission denied, Resource not found, Timed out, Provider unavailable, Safety policy blocked, Request too large, Invalid request, Provider internal error, or Provider error, along with when the call started, a summary of the error, the model, and the latency. When the provider reported no specific cause, the summary says so. Click Diagnostics on an entry to see its trace ID, span ID, and response ID, each with a copy control. An entry that recorded none of the three has no Diagnostics control. Click Load more to page through a longer list. The panel reports what the gateway recorded about the call itself, not the prompt or the model’s output.

Each entry offers the next steps that fit its failure:

  • Open transcript opens the conversation for a call an agent made.

  • Review usage breaks down what hit the rate limit, and Manage budgets opens the budgets page.

  • Review models opens the model list for a model the provider no longer serves.

  • Review connection opens the credential and endpoint settings behind an authentication or permission failure.

  • A link to the upstream provider’s own status page appears when that provider timed out, was unavailable, or reported an internal error.

  • Review guardrail appears for a call the safety policy blocked, on a provider with an attached guardrail.

  • Review provider settings appears for a provider error, an invalid or oversized request, or a provider outage when neither Test in Playground nor a status page link is offered, and for a safety policy block on a provider with no attached guardrail.

  • Test in Playground appears when the Playground is enabled for your organization.

Models

The Models tab lists the chat models available on this provider. Each row shows the model’s name and identifier, icons for the capabilities it supports (such as vision, tools, JSON, or reasoning), its context-window limit, and its input and output prices per million tokens. Hover over a capability icon to read what that capability means. Use the toggle on a row to enable or disable that model on the provider. Select a model to open its detail page (see View a model’s detail page).

Enabled models sort first. Use the search box to find a model by display name or identifier, and the Status and Capability filters to narrow the list.

AI Gateway rejects a request for a model that isn’t enabled on the provider with HTTP 403 and the error type model_not_allowed. This applies to every provider type.

On an Amazon Bedrock provider, disabling a model also affects agents. Agentic Data Plane rejects an agent that references a disabled model, at agent creation or when the model reference changes. Agents that already reference a model you disable stay saveable until someone edits their model. See Create an Agent.

Connect

The Connect tab generates ready-made configuration for this provider, with the provider’s proxy URL already filled in. It offers two paths:

  • Configure an application: Select a client and follow its guide. Where an rpk ai run command can launch the client, the guide leads with that command, which creates or reuses an API key for you. The manual setup that follows starts with an API key step and then configures the client.

  • Use the API directly: Choose HTTP and provider SDKs for curl, Python, TypeScript, Go, and Java examples, or Agent SDKs for agent framework recipes, then pick a model. Each example starts with an API key step, and you can download it as a small project.

For a Bedrock provider, the Claude Code guide runs against the gateway without local AWS credentials, because the gateway signs the upstream AWS requests for you, and the HTTP example uses the Bedrock Converse API. For a Gemini Enterprise Agent Platform provider, the Claude Code guide needs a Claude model that the provider allows. See Run Claude Code for that path. See Connect your app to AI Gateway for the underlying flow.

Which client guides appear depends on the provider type and on the models the provider allows:

Provider type Client guides

OpenAI

Codex, OpenCode, Cline, Cursor

OpenAI-compatible

Cline, Cursor, OpenCode

Anthropic

Claude Code, Cline, OpenCode (only Claude Code when authorization passthrough is on)

Google Gemini API

Antigravity CLI, Cline, OpenCode

Gemini Enterprise Agent Platform

Claude Code for a Claude model, and Antigravity CLI and OpenCode for a Gemini model

Amazon Bedrock

Claude Code, when the provider allows a Claude model

With authorization passthrough on, each client sends its own upstream credential in the Authorization header and its API key in the X-Redpanda-Api-Key header. These are separate credentials. The API key authenticates to AI Gateway, not to your upstream account. The tab adjusts its guides to match:

  • On an OpenAI or OpenAI-compatible provider whose base URL is the Codex endpoint, Configure an application shows a passthrough guide with a Codex launch command that keeps your ChatGPT sign-in from codex login and reads your API key from the REDPANDA_ADP_API_KEY environment variable. Use that manual setup rather than rpk ai run codex. This provider has no direct code examples.

  • On any other OpenAI or OpenAI-compatible passthrough provider, no client guide can carry both credentials, so the tab points you to the HTTP and provider SDK examples instead.

  • Agent SDK recipes aren’t offered for any passthrough provider.

Playground

When the Playground tab is available, use it to test one of the provider’s models before you connect application code. Choose a model, send a prompt, and optionally adjust response controls such as reasoning effort and maximum output tokens. The response streams into the conversation while the Playground shows the request, response events, status, and timing. Playground conversations are ephemeral.

On a Gemini Enterprise Agent Platform provider, the Playground can send requests to Google and Anthropic models. It tells them apart by the publisher the model catalog records for each one. It refuses a model from any other publisher, or one the catalog has no entry for. In that case it explains why and offers no cURL command. To set up the provider, see Set up Gemini Enterprise Agent Platform as an LLM provider.

LLM Playground test loop. A user selects a model, writes a prompt, and chooses response controls. AI Gateway translates and sends the request to the configured provider, streams the response back, and exposes request details, response events, status, and timing in the Playground.
Figure 1. Playground turns a model test into an inspectable gateway request

Settings

The Settings tab is where you edit the provider after you create it. It is organized into sections:

  • General: Edit the display name. The provider type and resource ID are fixed after creation and shown read-only.

  • Credential: Change how the gateway authenticates to the upstream provider. To rotate a stored key’s value for every provider that uses it, follow the link to Provider keys in the Secret Store.

  • Connection: The read-only proxy URL, the editable upstream base URL, and Test connection, which checks the saved provider against the upstream service. Save or discard any unsaved changes first, because the check tests the saved configuration.

  • Models: Choose which models this provider exposes to agents and developers.

  • Transcripts: Turn message-body recording on or off (see Configure message recording).

  • Tags: Add or remove the provider’s key/value tags (see Tag the provider).

When you change a field, a save bar appears with Save changes and Discard. An enable/disable control on the tab stops or resumes routing without deleting anything, and a Delete this provider danger zone permanently removes the provider after you confirm.

View a model’s detail page

From the Models tab, select a model to open its detail page. The page gathers what the catalog knows about that model on this provider in one place:

  • An overview strip with the model’s context window (largest input it accepts), maximum output (most it can generate in a single response), and price (input and output rates per million tokens). Each value appears only when the catalog declares it.

  • Model details: The model ID and the provider’s proxy URL, each with a copy control.

  • Pricing: A read-only rate card of the model’s effective per-bucket rates, that is, the catalog rates with any per-model overrides applied (see Override per-model pricing). This section appears only when rates are known, and links to the upstream provider’s pricing reference.

  • Capabilities: The model’s capabilities from the catalog, with a link to the upstream provider’s capabilities reference. This section appears only when the catalog declares capabilities.

  • Usage: Spend, Requests, and Tokens cards for traffic routed to this model through this provider over the last seven days. Click View more on a card to open a metric detail drawer.

Configure message recording

The Transcripts section controls whether AI Gateway records the message bodies this provider proxies. It appears on the create form and on the provider’s Settings tab, and it has two independent toggles:

Toggle What it captures

Record inputs

Captures the full request body (prompt content and tool-call arguments) on observability traces.

Record outputs

Captures the full response body (completion content and tool-call results) on observability traces.

When you create a provider, recording starts on, so a new provider records message bodies from its first request. This holds on every create path. The Create provider form starts with both toggles on, and a create with rpk ai llm-provider create that doesn’t mention transcripts gets the same default. The bodies land on the AI Gateway’s own trace data for the calls it proxies. They don’t feed agent transcripts, which a managed agent records under its own transcript recording mode. Turn either toggle off, on the create form or later on the Settings tab, for workloads where the message body must not be retained, such as regulated PII or customer secrets. To keep that content out of agent transcripts too, set each agent’s recording mode to Metadata only or Off.

Two cases don’t get that default:

  • An existing provider keeps whatever it was saved with. The default applies at create time and doesn’t change any provider you already had.

  • A create that explicitly disables recording stays off. From the CLI, pass --transcripts.record-input-messages=false --transcripts.record-output-messages=false. Set both flags together, or neither. If a create sets only one of them, the other starts off instead of taking the default.

These are per-provider settings, not per-request. Applications can’t opt in or out at call time. To split sensitive from non-sensitive traffic, create one provider with recording on and another with it off, and route each application to whichever proxy URL matches its data class.

These toggles govern only the message bodies the AI Gateway records for the calls it proxies. An agent’s Transcripts tab is assembled from spans the agent exports itself. A managed agent’s transcript recording mode, or a self-managed agent’s own instrumentation capture settings, controls the text those transcripts show, not these toggles. See Transcript recording and Message content capture.

Recording settings do not affect cost and usage telemetry. Token counts, latency, and provider/model attribution are always recorded, so the Cost and usage page reports spend for traffic on the provider regardless of these toggles. Only the message bodies are withheld when the toggles are off.

Changing a toggle takes effect for new requests. Message bodies already recorded under the previous setting are not retroactively redacted. Delete or rotate the provider if you need to purge historical content.

Save and verify

Before you click Create provider, check the Transcripts section. Both toggles arrive on, so the provider starts recording prompts and responses with its first request, and what it captures is not retroactively redacted. See Configure message recording.

  1. Optional: Click Test connection in the Verify connection box in the Models section to check the credential and endpoint you entered before you commit to them. The check creates nothing, so a failure costs you only the retry. It needs a provider key (for the types that require one) and a base URL that starts with http:// or https://. For an OpenAI-compatible provider, the base URL is required. For other provider types, it’s checked only if you set one.

  2. Click Create provider. Until the form is complete, the button stays disabled and its hint tells you what’s still needed (for example, saving the new key).

  3. After create, you land on the provider’s Connect tab, with client setup instructions and code examples that already include the proxy URL. To copy the proxy URL on its own, open the Overview tab and use the copy control on the Connection card. The proxy URL is where your applications point.

  4. To confirm the saved provider is reachable, open the Settings tab and click Test connection in the Test saved configuration box of the Connection section. The result appears as an alert in the same box. Save any pending changes first, because the test stays disabled until you do.

  5. To wire up an application, use the Connect tab or follow Connect your app to AI Gateway.

What a successful result proves depends on the provider type, and the panel says so before you run it:

  • For most types, the check lists the models the upstream service offers, using the credential and endpoint you configured. It sends no model request, so it confirms authentication and the network path rather than access to any one model.

  • For Gemini Enterprise Agent Platform, the check sends a one-token request to each selected model, which Google bills to your GCP project. It can send a model more than one request when a request fails or is slow to answer. If no model is selected, it checks one model served at the location. The result lists the models that didn’t answer, grouped under the cause they share, so it confirms access to each model, not only the credential. See Causes a connection check reports.

  • For Amazon Bedrock, the check confirms the AWS credentials in the configured region. It doesn’t verify access to a model, which IAM grants separately (see Inference profiles and IAM).

  • For a Bedrock provider that authenticates with a Bedrock API key, the check lists the foundation models in the region, so the key’s identity needs bedrock:ListFoundationModels as well as bedrock:CallWithBearerToken. AWS answers a rejected key and a key that lacks a permission the same way, so the check reports both as an authentication failure, and it names the cause when AWS’s response does, such as an expired key. As with the other Bedrock credential types, a check that passes doesn’t confirm that the key can invoke a model or use a guardrail.

  • For any provider with authorization passthrough on, there’s no server-side credential to test. The first real request is what verifies upstream access, because each client authenticates with its own key.

If the check fails, see Troubleshooting.

Browse providers in the list view

The LLM providers list page is the at-a-glance home for every provider in your Agentic Data Plane environment. Open it from the sidebar’s LLM providers entry.

Column What it shows

Provider

The provider-type icon (OpenAI, Anthropic, Google Gemini API, Gemini Enterprise Agent Platform, Amazon Bedrock, or OpenAI-compatible), the display name, and the resource identifier. Click the provider name to open its detail page.

Status

Enabled or Disabled. A disabled provider rejects requests to its proxy URL until you enable it again.

Models

How many models are configured on the provider. Select the count to read the full list. A provider with no models configured shows a dash.

Tags

The provider’s tags, as badges. An untagged provider shows nothing, and a narrow window hides this column first.

24h requests

Request count over the last 24 hours.

30d spend

Spend over the last 30 days. For longer-range or cross-provider analysis, use the Cost and usage page (see View cost and usage).

Click the 24h requests or 30d spend column header to order the list by that figure. A metric sort replaces any other column’s sort. Use the search box to find a provider by name, and the Filter button to narrow the list by provider type, model, or status. The Add provider button opens the create flow described in Open the Create LLM provider page. Each row’s actions menu can enable or disable the provider, copy its proxy URL, or delete it, and offers to copy the upstream base URL for an OpenAI or OpenAI-compatible provider. Disabling asks you to confirm, and deleting asks you to type the provider’s display name. The list paginates, with a rows-per-page selector in the footer.

View cost and usage

The Cost and usage page reports spend, requests, and tokens for a time window against the period before it, breaks spend down by agent, model, provider, user, or tag, charts any one of them against the gateway total, and exports CSV. See Analyze Cost and Usage.

Edit, disable, or delete a provider

  • Edit: Open the Settings tab and change any field except the provider type and resource ID, which are immutable after creation. The display name, credential reference, base URL, and model list can all change. When you edit a field, a save bar appears. Click Save changes to apply your edits.

  • Disable: On the Settings tab, click Disable provider and confirm. The provider remains in the list, but requests to its proxy URL are rejected until you enable it again. Use this when you want to pause traffic without losing configuration.

  • Delete: On the Settings tab, use the Delete this provider danger zone, click Delete provider, and type delete to confirm. The action is permanent. In-flight requests fail and downstream clients receive errors until reconfigured.

Troubleshooting

Symptom What to check

secret "<NAME>" not found

Confirm the secret exists in the Agentic Data Plane secret store and the reference in the provider configuration is spelled identically (UPPER_SNAKE_CASE, no typos).

Test connection fails with connection refused, DNS lookup failed for <host>, or no answer within 10s

The check reached no HTTP response at all, so the credential was never tried. Check the Base URL for a typo, and check that your network allows egress to that host. A check that reports no answer within 10s timed out, so retry it before you change anything.

Bedrock returns AccessDenied, ValidationException, an on-demand throughput error, or a geography restriction error

These come from the provider’s AWS region, its IAM policy, or the model identifier you called. See Bedrock troubleshooting.

A Gemini Enterprise Agent Platform provider returns 404 NOT_FOUND, 403 PERMISSION_DENIED, 400 FAILED_PRECONDITION, or 429

These come from the GCP project’s setup: the service account role, the Claude models enabled in Model Garden, the organization policy, or the location. See Gemini Enterprise Agent Platform troubleshooting.

The upstream provider returns 401 when passthrough is enabled

Confirm the client is sending its own Authorization header and the API key reference field on the provider is empty. On an OpenAI provider, also confirm the base URL matches the credential your clients send. A Codex subscription requires the Codex base URL.

A passthrough request fails with HTTP 400 and authorization passthrough requires verified ADP API-key authentication

With passthrough on, the Authorization header carries the client’s upstream credential, so the client must authenticate to AI Gateway with an API key in the X-Redpanda-Api-Key header. A gateway token doesn’t work with passthrough. Create a key, send it in that header, and remove any X-Redpanda-Cloud-Token header. The passthrough guide on the provider’s Connect tab shows the two headers together.

A passthrough request to an Anthropic provider fails with HTTP 400 and authorization passthrough requires separate upstream authorization

The request carried no Authorization header, so there’s no upstream credential to forward. Send your Anthropic credential in Authorization and your API key in X-Redpanda-Api-Key.

A passthrough request fails with HTTP 502 and upstream redirects are not allowed with authorization passthrough

The upstream endpoint answered with a redirect, which AI Gateway refuses to follow when passthrough is on so that a client’s credentials never travel to another host. Point the provider’s Base URL at the endpoint’s final address. For a Codex subscription, that is https://chatgpt.com/backend-api/codex.

Gemini returns 401

The client didn’t send its gateway token in a header AI Gateway reads. Send it in X-Redpanda-Cloud-Token. The Google SDKs put their API key in x-goog-api-key, which AI Gateway reads only for an Agentic Data Plane API key, not a Google API key. See Connect your app to AI Gateway.

Requests fail with HTTP 403 and model_not_allowed

The requested model isn’t enabled on the provider. Enable it on the provider’s Models tab, or request a model that is enabled.

Provider list empty or 403

Confirm your account can act on LLM providers. Listing them needs Action::"LLMProvider.list" and creating one needs Action::"LLMProvider.create". Outside the Admin role, both come from an access policy. See LLM provider permissions.

Limitations

AI Gateway does not provide these capabilities. For current status, see the Agentic Data Plane release notes.

  • Multi-provider routing, failover, and retries across providers. A synthetic provider that fans requests to multiple upstreams is not part of AI Gateway.

  • Rate limits. Requests-per-second, per-minute, or per-day limits are not available. To cap spend rather than request rate, use budgets, which enforce a per-agent hard cap.