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}
| Parameter | In | Type | Required |
|---|
orgId | path | string | Yes |
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
| Parameter | In | Type | Required |
|---|
orgId | path | string | Yes |
Request body (application/json)
{
action: string;
}
Response 200 (application/json)
{
ok: boolean;
allowed: boolean;
reason: any;
suggestedPlan: any;
}