Skip to content

Entitlements endpoints

2 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 /entitlements/org/{orgId}

ParameterInTypeRequired
orgIdpathstringYes
Response 200 (application/json)
{
  ok: boolean;
  plan: "agency" | "enterprise" | "entry" | "entry_plus" | "free" | "pro" | "starter" | "studio_plus";
  entitlements: {
    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;
    imageServicesEnabled: boolean;
  };
  usage: {
    apiRequestsMonthly: number;
    storageBytes: number;
    realtimeConnectionsPeak: number;
    projectCount: number;
    functionInvocations: number;
    databaseRows: number;
    mau: number;
  };
  mauData: {
    exceeded: boolean;
    current: number;
    limit: number;
    percentage: number;
  };
  upgradeHint: {
    suggestedPlan: string;
  };
}

POST /entitlements/org/{orgId}/check

ParameterInTypeRequired
orgIdpathstringYes
Request body (application/json)
{
  action: string;
}
Response 200 (application/json)
{
  ok: boolean;
  allowed: boolean;
  reason: any;
  suggestedPlan: any;
}