Skip to main content

virtual_model_configs

Creates, updates, deletes, gets or lists a virtual_model_configs resource.

Overview

Namevirtual_model_configs
TypeResource
Idvercel.ai_gateway.virtual_model_configs

Fields

The following fields are returned by SELECT queries:

Public response shape for virtual model configs. Used so OpenAPI generation can avoid ElectroDB's recursive EntityItem types.

NameDatatypeDescription
instance_idstringThe concrete model-provider instance this VMC resolves to. (wire: instanceId)
owner_idstringTeam (owner) that owns this VMC. (wire: ownerId)
display_namestringHuman-readable name for UI. (wire: displayName)
allow_fallback_from_fastbooleanAllow fallback from fast to standard providers on failure. (false, true) (wire: allowFallbackFromFast)
base_urlstringFor kind=relay: URL the gateway forwards requests to as a transparent proxy. (wire: baseUrl)
byok_credential_idsarrayBYOK credential IDs allowed for this VMC. (wire: byokCredentialIds)
cachingstringUse caching if available. (auto)
created_atnumberCreation timestamp (epoch ms). (wire: createdAt)
deletedbooleanWhether this VMC is soft-deleted. (false, true)
descriptionstringOptional description for UI.
disallow_prompt_trainingbooleanOnly use providers that will not train on your prompts. (false, true) (wire: disallowPromptTraining)
hasarrayLimit providers to those with these features.
hipaa_compliantbooleanOnly use HIPAA-compliant providers. (false, true) (wire: hipaaCompliant)
inference_regionobjectRegion pinned on the VMC for system-credential routing (alias/router only). (wire: inferenceRegion)
kindstringVMC kind: alias, relay, or router.
model_slugstringCanonical model slug this VMC maps to (e.g. "creator/model"). Not used by kind=router. (wire: modelSlug)
modelsarrayFor kind=router: ordered candidates, model slugs or router references. Otherwise: fallback models.
observability_tagsarrayObservability tags attached to requests through this VMC. (wire: observabilityTags)
provider_onlyarrayRestrict routing to only these providers. (wire: providerOnly)
provider_optionsobjectArbitrary per-provider AI SDK options, keyed by gateway provider slug. (wire: providerOptions)
provider_orderarrayOrdered list of providers to try as fallbacks on failure. (wire: providerOrder)
provider_timeoutsobjectPer-request provider timeouts in ms, keyed by provider slug for BYOK credentials. (wire: providerTimeouts)
requiresarrayFor kind=router: capability tags a candidate must have.
selectorstringFor kind=router: how to order candidates. (cost, priority, tps, ttft)
service_tierstringService tier for providers that support it. (fast, flex, priority) (wire: serviceTier)
sortstringRank eligible providers by an attribute. (cost, latency, price, throughput, tps, ttft)
speedstringOnly use fastest providers with short timeouts. (fast)
statusstringUI lifecycle status: draft, active, or archived.
updated_atnumberLast update timestamp (epoch ms). (wire: updatedAt)
updated_bystringUser id that last updated this VMC. (wire: updatedBy)
virtual_model_slugstringClient-facing alias used as the model slug in Gateway calls. (wire: virtualModelSlug)
visibilitystringVisibility in listings: public, internal, or stealth.
zero_data_retentionbooleanOnly use providers with zero data retention. (false, true) (wire: zeroDataRetention)

Methods

The following methods are available for this resource:

NameAccessible byRequired ParamsOptional ParamsDescription
get_by_slugselectvmc_slugowner_id, team_id, slugGet a virtual model config by path slug
listselectowner_id, limit, cursor, team_id, slugList virtual model configs. With ownerId, returns all of that team's VMCs. Without it, pages through VMCs across all teams (newest-first, limit/cursor).
createinsertteam_id, slugCreate a virtual model config (VMC)
update_by_slugupdatevmc_slugteam_id, slugUpdate a virtual model config by path slug
updateupdateteam_id, slugUpdate a virtual model config
delete_by_slugdeletevmc_slugowner_id, updated_by, acting_ip, acting_user_agent, team_id, slugDelete a virtual model config by path slug (soft delete)
deletedeletevirtual_model_slugowner_id, updated_by, acting_ip, acting_user_agent, team_id, slugDelete a virtual model config (soft delete)
get_by_queryexecownerId, virtualModelSlug, limit, cursor, teamId, slugGet a virtual model config

Parameters

Parameters can be passed in the WHERE clause of a query. Check the Methods section to see which parameters are required or optional for each operation.

NameDatatypeDescription
virtual_model_slugstring (wire: virtualModelSlug)
vmc_slugstring
acting_ipstring (wire: actingIp)
acting_user_agentstring (wire: actingUserAgent)
cursorstring
limitinteger
ownerIdstring
owner_idstring (wire: ownerId)
slugstringThe Team slug to perform the request on behalf of.
teamIdstringThe Team identifier to perform the request on behalf of.
team_idstringThe Team identifier to perform the request on behalf of. (wire: teamId)
updated_bystring (wire: updatedBy)
virtualModelSlugstring

SELECT examples

Get a virtual model config by path slug

SELECT
instance_id,
owner_id,
display_name,
allow_fallback_from_fast,
base_url,
byok_credential_ids,
caching,
created_at,
deleted,
description,
disallow_prompt_training,
has,
hipaa_compliant,
inference_region,
kind,
model_slug,
models,
observability_tags,
provider_only,
provider_options,
provider_order,
provider_timeouts,
requires,
selector,
service_tier,
sort,
speed,
status,
updated_at,
updated_by,
virtual_model_slug,
visibility,
zero_data_retention
FROM vercel.ai_gateway.virtual_model_configs
WHERE vmc_slug = '{{ vmc_slug }}' -- required
AND owner_id = '{{ owner_id }}'
AND team_id = '{{ team_id }}'
AND slug = '{{ slug }}'
;

INSERT examples

Create a virtual model config (VMC)

INSERT INTO vercel.ai_gateway.virtual_model_configs (
team_id,
slug
)
SELECT
'{{ team_id }}',
'{{ slug }}'
RETURNING
instance_id,
owner_id,
display_name,
allow_fallback_from_fast,
base_url,
byok_credential_ids,
caching,
created_at,
deleted,
description,
disallow_prompt_training,
has,
hipaa_compliant,
inference_region,
kind,
model_slug,
models,
observability_tags,
provider_only,
provider_options,
provider_order,
provider_timeouts,
requires,
selector,
service_tier,
sort,
speed,
status,
updated_at,
updated_by,
virtual_model_slug,
visibility,
zero_data_retention
;

UPDATE examples

Update a virtual model config by path slug

UPDATE vercel.ai_gateway.virtual_model_configs
SET
-- No updatable properties
WHERE
vmc_slug = '{{ vmc_slug }}' --required
AND team_id = '{{ team_id}}'
AND slug = '{{ slug}}'
RETURNING
instance_id,
owner_id,
display_name,
allow_fallback_from_fast,
base_url,
byok_credential_ids,
caching,
created_at,
deleted,
description,
disallow_prompt_training,
has,
hipaa_compliant,
inference_region,
kind,
model_slug,
models,
observability_tags,
provider_only,
provider_options,
provider_order,
provider_timeouts,
requires,
selector,
service_tier,
sort,
speed,
status,
updated_at,
updated_by,
virtual_model_slug,
visibility,
zero_data_retention;

DELETE examples

Delete a virtual model config by path slug (soft delete)

DELETE FROM vercel.ai_gateway.virtual_model_configs
WHERE vmc_slug = '{{ vmc_slug }}' --required
AND owner_id = '{{ owner_id }}'
AND updated_by = '{{ updated_by }}'
AND acting_ip = '{{ acting_ip }}'
AND acting_user_agent = '{{ acting_user_agent }}'
AND team_id = '{{ team_id }}'
AND slug = '{{ slug }}'
;

Lifecycle Methods

EXEC variables use wire (API) names.

Get a virtual model config

EXEC vercel.ai_gateway.virtual_model_configs.get_by_query
@ownerId='{{ ownerId }}',
@virtualModelSlug='{{ virtualModelSlug }}',
@limit='{{ limit }}',
@cursor='{{ cursor }}',
@teamId='{{ teamId }}',
@slug='{{ slug }}'
;