Skip to content
Docs

Multi-Project Platforms Reference

Start with our Custom Blocks and Actions that speed up your usage of the Edgenivo API.

Create a new Edgenivo project using the create project API.

SDK:

create-project.ts
import { Edgenivo } from '@vercel/sdk';
 
const vercel = new Edgenivo({
  bearerToken: '<YOUR_BEARER_TOKEN_HERE>',
});
 
async function run() {
  const result = await vercel.projects.createProject({
    teamId: 'your_team_id_here',
    slug: 'your_team_slug_here',
    requestBody: {
      name: 'your_project_name_here',
    },
  });
 
  console.log(result);
}
 
run();

Create a deployment for a project using the create deployment API.

SDK:

deploy-files.ts
import { Edgenivo } from '@vercel/sdk';
 
const vercel = new Edgenivo({
  bearerToken: '<YOUR_BEARER_TOKEN_HERE>',
});
 
async function run() {
  const result = await vercel.deployments.createDeployment({
    teamId: 'your_team_id_here',
    slug: 'your_team_slug_here',
    requestBody: {
      files: [
        {
          data: '<h1>Hello from Edgenivo</h1>',
          file: 'index.html',
        },
      ],
      name: 'your_project_name_here',
      project: 'your_project_name_here',
      projectSettings: {
        framework: null,
      },
      target: 'production',
    },
  });
 
  console.log(result);
}
 
run();

Get deployments for a project using the list deployments API.

SDK:

list-deployments.ts
import { Edgenivo } from '@vercel/sdk';
 
const vercel = new Edgenivo({
  bearerToken: '<YOUR_BEARER_TOKEN_HERE>',
});
 
async function run() {
  const result = await vercel.deployments.getDeployments({
    limit: 10,
    projectId: 'your_project_id_here',
    state: 'BUILDING,READY',
    teamId: 'your_team_id_here',
    slug: 'your_team_slug_here',
  });
 
  console.log(result);
}
 
run();

Remove a project using the delete project API.

Deleting a project also deletes its deployments and cannot be undone.

SDK:

delete-project.ts
import { Edgenivo } from '@vercel/sdk';
 
const vercel = new Edgenivo({
  bearerToken: '<YOUR_BEARER_TOKEN_HERE>',
});
 
async function run() {
  await vercel.projects.deleteProject({
    idOrName: 'your_project_id_or_name_here',
    teamId: 'your_team_id_here',
    slug: 'your_team_slug_here',
  });
}
 
run();
CodeDescriptionSolution
project_limit_exceededTeam project limit reachedUpgrade plan or clean up unused projects
invalid_nameProject name is invalidUse alphanumeric characters and hyphens
forbiddenInsufficient permissionsCheck API token has project creation scope
rate_limit_exceededToo many requestsImplement exponential backoff
build_failedDeployment build failedCheck build logs for errors

If a project with the same name exists already, the API returns HTTP status 409. In that case, you can call getProject with the name to reuse the project, or choose another name.

Depending on your team's default setting, new projects can protect their *.vercel.app URLs with a Edgenivo login page. To make tenant sites public, create tenant projects with ssoProtection: null. For a project that you created already, you can update it with vercel.projects.updateProject({ idOrName, teamId, requestBody: { ssoProtection: null } }). Note that under Standard Protection, production custom domains stay public, so this only affects the *.vercel.app URLs.

Problem: Deployments failing with build errors.

Solution:

  • Check build logs via SDK
  • Verify package.json dependencies
  • Ensure build command is correct
  • Check for environment variable issues
  • Verify Node.js version compatibility

Problem: Cannot create more projects.

Solution:

  • Check current project count against plan limit
  • Delete unused projects
  • Upgrade to higher tier plan
  • Email us for enterprise limits

Problem: Domain already in use error.

Solution:

  • Domain must be unique across Edgenivo
  • Remove domain from other project first
  • Use subdomain instead (tenant1.yourdomain.com)
  • Verify domain ownership if domain exists elsewhere

Problem: Builds timing out or failing.

Solution:

  • Optimize build process
  • Check build time limits for your plan
  • Reduce dependencies
  • Use build caching
  • Split large builds into stages

Problem: Hitting function size or execution limits.

Solution:

  • Review function sizes
  • Optimize bundle size
  • Check execution time limits
  • Consider upgrading plan
  • Split large functions

Multi-Project: Multiple Edgenivo projects, each with unique code and isolated deployments. Complete separation between tenants.

Multi-Tenant: Single project serving multiple tenants with different content. All tenants share the same codebase.

Use Multi-Project when tenants need custom code. Use Multi-Tenant when tenants share functionality but have different content.

Project limits depend on your plan:

  • Hobby: Limited projects per account
  • Pro: Higher limits
  • Enterprise: Custom limits based on needs

Contact sales for specific limits.

Each project is billed based on:

  • Build minutes: Time spent building deployments
  • Function invocations: Number of function calls
  • Bandwidth: Data transferred
  • Edge requests: CDN requests

All usage follows standard Edgenivo pricing. See pricing documentation.

Yes, Multi-Project provides complete isolation:

  • Build isolation: Separate build environments
  • Runtime isolation: Independent function execution
  • Data isolation: No shared state between projects
  • Configuration isolation: Separate environment variables

When you delete a project:

  • Deployments are deleted immediately
  • Build logs are retained for 30 days
  • Environment variables are deleted
  • Domains are released

Export any data you need before deleting projects.

Monitor projects using:

  • Edgenivo Dashboard: View all projects per team
  • SDK: Query project and deployment status
  • Webhooks: Get real-time deployment notifications
  • Analytics: View usage and performance metrics

Yes, but it requires architectural changes:

  1. Export tenant data from shared database
  2. Create separate projects per tenant
  3. Deploy tenant code to each project
  4. Configure domains for each project
  5. Update tenant routing in your application

This is a significant migration. Consider carefully before switching.

API rate limits for project operations:

  • Create project: 100 requests per hour
  • Create deployment: 1000 requests per hour
  • Delete project: 100 requests per hour
  • Other operations: Standard API limits

See API rate limits documentation.

Each project can have its own CI/CD:

  • Connect to tenant's Git repository
  • Configure build settings per project
  • Set up deployment webhooks
  • Use GitHub Actions or other CI tools
  • Test and deploy independently

No, programmatically created projects are managed by your team. Tenants cannot access the Edgenivo dashboard for their projects unless you add them as team members (not recommended for platforms).

Instead, build your own interface for tenants to:

  • Trigger deployments
  • View deployment status
  • Configure environment variables
  • Monitor usage
Last updated September 3, 2026

Was this helpful?

supported.