Skip to main content
curl -X POST https://api.usenaive.ai/v1/apps \
  -H "Authorization: Bearer nv_sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Landing Page",
    "type": "frontend_only",
    "description": "Company marketing site"
  }'
{
  "id": "ca7a1b8c-a4d4-4824-b92d-89d5b297eb62",
  "name": "My Landing Page",
  "type": "frontend_only",
  "status": "active",
  "companyId": "company-uuid",
  "description": "Company marketing site",
  "workspacePath": "agents/agent-uuid",
  "agentId": "agent-uuid",
  "vercel": {
    "vercelProjectId": "prj_5B9xCYfqFR15VTfvARu2ZgaXuA4u",
    "vercelProjectName": "naive-my-landing-page-ca7a1b",
    "productionDomain": "naive-my-landing-page-ca7a1b.vercel.app",
    "latestDeploymentUrl": null,
    "latestDeploymentId": null,
    "latestDeploymentStatus": null
  },
  "supabase": null,
  "template": {
    "repoUrl": "https://github.com/usenaive/app-dev-templates",
    "path": "frontend_only/dark-premium",
    "variant": "dark-premium",
    "cloneCommand": "git clone https://github.com/usenaive/app-dev-templates naive-app && cd naive-app/frontend_only/dark-premium"
  },
  "workspaceMode": "local",
  "secrets": [
    { "id": "secret-uuid-1", "key": "NEXT_PUBLIC_APP_URL", "target": "preview", "createdAt": "2026-01-15T10:00:02Z" },
    { "id": "secret-uuid-2", "key": "NEXT_PUBLIC_APP_URL", "target": "production", "createdAt": "2026-01-15T10:00:03Z" }
  ],
  "domains": [],
  "deployments": []
}

Request Body

FieldTypeRequiredDescription
namestringYesApp display name
typestringYesfrontend_only or fullstack
descriptionstringNoShort description
variantstringNoStarter template variant: dark-premium, clean-minimal, bold-energetic, warm-human

Behavior

Create works standalone — no agent container or orchestration required.
  • A Vercel project is created (Next.js framework), named naive-{slug}-{shortId}, with a default production domain of {projectName}.vercel.app.
  • The response’s template block tells you what to clone to start building (templates). workspaceMode is "local" (direct mode) or "container".
  • NEXT_PUBLIC_APP_URL is set automatically for both preview and production.
  • When the company has an agent container (workspaceMode: "container"): a dedicated engineer agent is provisioned and the starter template is scaffolded into its workspace. Without one, the agent is registered as pending and orchestration adopts the app later.
  • fullstack only: a Supabase project is provisioned asynchronously in the background. Once healthy, NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY are injected automatically, and the supabase object appears on GET /v1/apps/:id.
If Supabase provisioning fails, use POST /v1/apps/:id/retry.

Errors

400
{
  "error": {
    "code": "invalid_input",
    "message": "type must be 'frontend_only' or 'fullstack'"
  }
}
502
{
  "error": {
    "code": "provider_error",
    "message": "Vercel project creation failed: 409"
  }
}