Skip to content

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}

ParameterInTypeRequired
planpathstringYes
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;
    };
  };
}