Pricing endpoints
5 endpoints at https://api.vaif.studio, generated from the API's OpenAPI document. The REST API page covers authentication, and All endpoints lists every group.
GET /pricing/plans
Response 200 (application/json)
{
plans: {
plan: "agency" | "enterprise" | "entry" | "entry_plus" | "free" | "pro" | "starter" | "studio_plus";
label: string;
description: string;
monthlyPrice: null | number;
yearlyPrice: null | number;
priceCents: null | number;
priceYearlyCents: null | number;
popular: boolean;
highlights: string[];
limits: {
postureNotes: {
[key: string]: string;
};
projectsMax: number;
environmentsMax: number;
teamMembersMax: number;
mauIncluded: number;
mauOveragePrice: number;
mauHardLimit: boolean;
apiRequestsMonthly: number;
storageGb: number;
databaseRowsMax: number;
realtimeEnabled: boolean;
realtimeMessagesMonthly: number;
realtimeConnectionsMax: number;
functionsEnabled: boolean;
functionInvocationsMonthly: number;
functionConcurrency: number;
aiEnabled: boolean;
aiPromptsEnabled: boolean;
aiCodeExportEnabled: boolean;
aiFunctionGenerationEnabled: boolean;
aiEndpointGenerationEnabled: boolean;
aiDocsGenerationEnabled: boolean;
aiCreditsMonthly: number;
aiMaxRequestTokens: number;
aiMaxOutputTokens: number;
aiOveragesEnabled: boolean;
aiOverageMultiplier: number;
aiSpendCapEnabled: boolean;
aiMaxConcurrentRequests: number;
aiCreditRolloverCap: number;
aiEnterpriseRoutingEnabled: boolean;
aiBringYourOwnKeysEnabled: boolean;
aiModelTier: "enterprise" | "free" | "paid";
aiMaxContextTokens: number;
aiMaxMonthlyTokens: number;
aiWorkspaceSessionsMax: number;
aiBackendGenerationEnabled: boolean;
aiClarificationEnabled: boolean;
aiReasoningDisplayEnabled: boolean;
teamRolesEnabled: boolean;
auditLogsEnabled: boolean;
auditLogRetentionDays: number;
ssoEnabled: boolean;
samlEnabled: boolean;
scimEnabled: boolean;
webhooksEnabled: boolean;
webhookDlqEnabled: boolean;
ciTokensEnabled: boolean;
customDomainsEnabled: boolean;
customDomainsMax: number;
templatesEnabled: boolean;
deploymentsEnabled: boolean;
branchDeploymentsEnabled: boolean;
branchDeploymentsMax: number;
observabilityHubEnabled: boolean;
advancedMetricsEnabled: boolean;
regionalRoutingEnabled: boolean;
dedicatedDbEnabled: boolean;
dedicatedDbTiers: any[];
dedicatedDbCustomSizing: boolean;
dedicatedDbMaxStorageGb: number;
dedicatedStackEnabled: boolean;
liveDeploymentsEnabled: boolean;
maxLiveDeployments: number;
liveDeploymentMemoryOptions: string[];
liveDeploymentCpuOptions: string[];
liveDeploymentMaxInstances: number;
includedAlwaysOn: number;
sitesMax: number;
staticSitesOnly: boolean;
dailyBuildsMax: number;
dedicatedDbFreeTier: null | "2xl" | "3xl" | "4xl" | "custom" | "high-memory-large" | "high-memory-medium" | "high-memory-xl" | "large" | "medium" | "micro" | "small" | "xl";
dedicatedDbFreeCount: number;
dedicatedDbIncludedTier: null | "2xl" | "3xl" | "4xl" | "custom" | "high-memory-large" | "high-memory-medium" | "high-memory-xl" | "large" | "medium" | "micro" | "small" | "xl";
haIncluded: boolean;
readReplicasPerDatabase: number;
oauthProvidersMax: number;
extensionsMax: number;
wrappersMax: number;
alertRulesMax: number;
slaSupportEnabled: boolean;
dedicatedSupportEnabled: boolean;
storageBytes: number;
realtimeConnections: number;
templatesPrivateEnabled: boolean;
};
aiFeatures: {
prompts: boolean;
codeExport: boolean;
functionGeneration: boolean;
endpointGeneration: boolean;
docsGeneration: boolean;
monthlyCredits: number;
bringYourOwnKeys: boolean;
};
}[];
enterprise: {
contactUrl: string;
salesEmail: string;
features: string[];
billingCycles: string[];
};
}GET /pricing/plans/{plan}
| Parameter | In | Type | Required |
|---|---|---|---|
plan | path | string | Yes |
Response 200 (application/json)
{
plan: {
plan: "agency" | "enterprise" | "entry" | "entry_plus" | "free" | "pro" | "starter" | "studio_plus";
label: string;
description: string;
monthlyPrice: null | number;
yearlyPrice: null | number;
priceCents: null | number;
priceYearlyCents: null | number;
popular: boolean;
highlights: string[];
limits: {
postureNotes: {
[key: string]: string;
};
projectsMax: number;
environmentsMax: number;
teamMembersMax: number;
mauIncluded: number;
mauOveragePrice: number;
mauHardLimit: boolean;
apiRequestsMonthly: number;
storageGb: number;
databaseRowsMax: number;
realtimeEnabled: boolean;
realtimeMessagesMonthly: number;
realtimeConnectionsMax: number;
functionsEnabled: boolean;
functionInvocationsMonthly: number;
functionConcurrency: number;
aiEnabled: boolean;
aiPromptsEnabled: boolean;
aiCodeExportEnabled: boolean;
aiFunctionGenerationEnabled: boolean;
aiEndpointGenerationEnabled: boolean;
aiDocsGenerationEnabled: boolean;
aiCreditsMonthly: number;
aiMaxRequestTokens: number;
aiMaxOutputTokens: number;
aiOveragesEnabled: boolean;
aiOverageMultiplier: number;
aiSpendCapEnabled: boolean;
aiMaxConcurrentRequests: number;
aiCreditRolloverCap: number;
aiEnterpriseRoutingEnabled: boolean;
aiBringYourOwnKeysEnabled: boolean;
aiModelTier: "enterprise" | "free" | "paid";
aiMaxContextTokens: number;
aiMaxMonthlyTokens: number;
aiWorkspaceSessionsMax: number;
aiBackendGenerationEnabled: boolean;
aiClarificationEnabled: boolean;
aiReasoningDisplayEnabled: boolean;
teamRolesEnabled: boolean;
auditLogsEnabled: boolean;
auditLogRetentionDays: number;
ssoEnabled: boolean;
samlEnabled: boolean;
scimEnabled: boolean;
webhooksEnabled: boolean;
webhookDlqEnabled: boolean;
ciTokensEnabled: boolean;
customDomainsEnabled: boolean;
customDomainsMax: number;
templatesEnabled: boolean;
deploymentsEnabled: boolean;
branchDeploymentsEnabled: boolean;
branchDeploymentsMax: number;
observabilityHubEnabled: boolean;
advancedMetricsEnabled: boolean;
regionalRoutingEnabled: boolean;
dedicatedDbEnabled: boolean;
dedicatedDbTiers: ("2xl" | "3xl" | "4xl" | "custom" | "high-memory-large" | "high-memory-medium" | "high-memory-xl" | "large" | "medium" | "micro" | "small" | "xl")[];
dedicatedDbCustomSizing: boolean;
dedicatedDbMaxStorageGb: number;
dedicatedStackEnabled: boolean;
liveDeploymentsEnabled: boolean;
maxLiveDeployments: number;
liveDeploymentMemoryOptions: string[];
liveDeploymentCpuOptions: string[];
liveDeploymentMaxInstances: number;
includedAlwaysOn: number;
sitesMax: number;
staticSitesOnly: boolean;
dailyBuildsMax: number;
dedicatedDbFreeTier: null | "2xl" | "3xl" | "4xl" | "custom" | "high-memory-large" | "high-memory-medium" | "high-memory-xl" | "large" | "medium" | "micro" | "small" | "xl";
dedicatedDbFreeCount: number;
dedicatedDbIncludedTier: null | "2xl" | "3xl" | "4xl" | "custom" | "high-memory-large" | "high-memory-medium" | "high-memory-xl" | "large" | "medium" | "micro" | "small" | "xl";
haIncluded: boolean;
readReplicasPerDatabase: number;
oauthProvidersMax: number;
extensionsMax: number;
wrappersMax: number;
alertRulesMax: number;
slaSupportEnabled: boolean;
dedicatedSupportEnabled: boolean;
storageBytes: number;
realtimeConnections: number;
templatesPrivateEnabled: boolean;
};
aiFeatures: {
prompts: boolean;
codeExport: boolean;
functionGeneration: boolean;
endpointGeneration: boolean;
docsGeneration: boolean;
monthlyCredits: number;
bringYourOwnKeys: boolean;
};
};
}GET /pricing/compare
Response 200 (application/json)
{
plans: {
plan: "agency" | "enterprise" | "entry" | "entry_plus" | "free" | "pro" | "starter" | "studio_plus";
label: string;
monthlyPrice: null | number;
yearlyPrice: null | number;
popular: boolean;
}[];
features: {
[key: string]: { [key: string]: any };
};
}GET /pricing/ai-features
Response 200 (application/json)
{
features: {
feature: string;
description: string;
availability: {
[key: string]: boolean;
};
}[];
credits: {
[key: string]: string;
};
}GET /pricing/enterprise
Response 200 (application/json)
{
title: string;
tagline: string;
description: string;
contact: {
salesEmail: string;
supportEmail: string;
inquiryEndpoint: string;
};
features: {
infrastructure: string[];
ai: string[];
security: string[];
support: string[];
};
billing: {
cycles: {
value: string;
label: string;
description: string;
}[];
paymentMethods: string[];
minimumCommitment: string;
};
cta: {
primary: {
label: string;
action: string;
endpoint: string;
};
secondary: {
label: string;
action: string;
calendlyUrl: string;
};
};
}