Skip to content

Onboarding endpoints

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}

ParameterInTypeRequired
orgIdpathstringYes
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

ParameterInTypeRequired
orgIdpathstringYes
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

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