3 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 /onboarding/org/{orgId}
| Parameter | In | Type | Required |
|---|
orgId | path | string | Yes |
Response 200 (application/json)
{
orgId: string;
completed: boolean;
steps: {
key: string;
done: boolean;
}[];
} | {
id: string;
orgId: string;
projectId: null | string;
completed: boolean;
steps: any;
createProjectDoneAt: null | string (date-time);
addTablesDoneAt: null | string (date-time);
connectAppDoneAt: null | string (date-time);
enableRealtimeDoneAt: null | string (date-time);
deployFunctionDoneAt: null | string (date-time);
createdAt: string (date-time);
updatedAt: string (date-time);
}
POST /onboarding/org/{orgId}/complete-step
| Parameter | In | Type | Required |
|---|
orgId | path | string | Yes |
Request body (application/json)
{
stepKey: "apply_first_schema" | "create_first_project" | "deploy_first_function" | "enable_realtime" | "first_api_call";
}
Response 200 (application/json)
{
ok: boolean;
steps: {
key: string;
done: boolean;
completedAt?: string;
}[];
}
POST /onboarding/org/{orgId}/auto-setup
| Parameter | In | Type | Required |
|---|
orgId | path | string | Yes |
Request body (application/json)
{
projectName: string;
templateSlug?: string;
enableRealtime?: boolean;
frontend?: "backend_only" | "bolt" | "cursor_claude_code" | "hand_written" | "lovable" | "not_yet" | "v0";
}
Response 200 (application/json)
{
ok: boolean;
project: {
createdAt: string (date-time);
deactivatedAt: null | string (date-time);
deactivationReason: null | string;
defaultEnvironment: null | string;
deletedAt: null | string (date-time);
description: null | string;
features: any;
frontendAnswer: null | "backend_only" | "bolt" | "cursor_claude_code" | "hand_written" | "lovable" | "not_yet" | "v0";
frontendAnsweredAt: null | string (date-time);
frontendPromptedAt: null | string (date-time);
id: string;
lastActivityAt: string (date-time);
name: string;
orgId: string;
promotionOrder: string[];
regionKey: null | string;
sleepWarningSentAt: null | string (date-time);
sleptAt: null | string (date-time);
slug: string;
timezone: null | string;
updatedAt: string (date-time);
};
apiKey: string;
keys: {
anon: string;
service_role: string;
};
quickstart: string;
}