Organizations
An organization groups multiple Edgenivo teams under a single entity. It's built for enterprises that run more than one team and want consolidated billing and central management without configuring each team by hand.
Organizations are available in Private Beta to Enterprise plans with Flexible Commitment (Flex) billing. Contact your account team to request access.
Use an organization when you run more than one Edgenivo team and want to bill and manage them together. Organizations support two setups:
- Multi-tenant platforms: You build a platform, such as a vibe coding product, and create a child team for each tenant. Each child team keeps its tenant's projects, members, and usage isolated. Edgenivo aggregates each team's usage to the organization at the end of the team's billing cycle, for example monthly. These teams use the
platformbilling plan. - Internal company structure: You mirror your company's structure with a team for each department, such as engineering, design, and marketing. These teams draw down the organization's Flex commit in real time and use the
enterprisebilling plan. An organization supports up to 200enterprisechild teams.
An organization groups your existing teams. Each team in it is a member team, including the team that stores billing:
- Member teams: Each team keeps its own projects, members, and settings.
- Root team: The Enterprise team you create the organization from. It stores the organization's billing configuration, and you can't remove it from the organization.
- Billing roll-up: Member teams don't pay their own bills. Edgenivo consolidates every team's usage onto the root team's Enterprise invoice.
A team can belong to only one organization, and teams can't move between organizations.
You can manage an organization from the Edgenivo dashboard as well as the API. To open the organization dashboard, select your organization in the team switcher. The organization dashboard has these pages:
- Usage: Compare usage and spend across the organization's teams, set a budget for each team, and download usage as a CSV file.
- Teams: List the organization's teams. To create a team, click Create Team and choose
enterpriseorplatformas its billing plan. - Admins: Grant or remove Organization Admin access for members of the root team.
- Billing: Review the organization's billing information and organization-wide budget.
- Invoices: Review the organization's current and upcoming invoices.
- Settings: Configure the organization's details, identity and access, Enterprise Managed Users, Deployment Protection defaults, and audit log export.
An organization lets you configure Single Sign-On, Directory Sync, Enterprise Managed Users, and Deployment Protection one time for all of its teams. To change these settings, open the organization dashboard and navigate to Settings.
An organization can have one SAML Single Sign-On connection that every team in the organization can use for sign-in. In the Identity & Access section, click Configure next to Single Sign-On to connect your identity provider. To require SAML sign-in for members of every team that uses the connection, turn on SAML Enforcement.
Organization Directory Sync maps groups in your identity provider to roles on your teams, so access on Edgenivo follows group membership in your directory. Configure it in the Identity & Access section. For each directory group, you can grant Organization access and choose a Default access role, which the group's members get on every team in the organization, including teams created later. To give the group a different role on a specific team, set a team-level role. That role overrides the default for that team only.
You must be an Organization Admin to configure organization Directory Sync. Edgenivo doesn't start syncing the directory until at least one directory group has the Organization Admin permission. Until then, the Directory Sync row shows Setup Required and notes that syncing starts once a group has Organization Admin.
To grant the Organization Admin permission to a directory group:
- Open the organization's Settings page and go to the Identity & Access section.
- In the Directory Sync row, select Configure and complete the walkthrough to connect a directory from your identity provider.
- In the Directory Sync row, open the actions menu and select Manage.
- Select a directory group from the list.
- In the Organization access dropdown, select Organization Admin.
- Select Save.
After at least one group has Organization Admin, Edgenivo begins syncing the directory and applies each group's Default access role and any team-level overrides.
Enterprise Managed Users (EMU) lets your organization own and manage the Edgenivo accounts of its members. In the Enterprise Managed Users section, add the Verified Domains that your organization owns, then click Review Teams to choose which teams use EMU.
Organization Directory Sync converts synced members to managed accounts only after the organization meets these requirements:
- An Enterprise plan
- SAML Single Sign-On that is configured and enforced
- An active Directory Sync connection
Organization Deployment Protection defaults control access to deployments for new projects across the organization's teams. In the Deployment Protection Defaults section, you can configure these settings:
- Edgenivo Authentication: Require visitors to log in to Edgenivo and belong to a team in your organization before they can view deployments. Choose Standard Protection to protect all deployments except production custom domains, or All Deployments to protect all domains.
- Who Can Change Protection: Require the Owner role to change or disable Edgenivo Authentication in projects.
You can also manage organizations through the Edgenivo REST API. Authenticate each request with a Edgenivo access token that has access to the teams involved.
The API supports these operations:
| Action | Endpoint |
|---|---|
| Create an organization | POST /v1/organizations |
| List your organizations | GET /v1/organizations |
| Get an organization | GET /v1/organizations/{organizationId} |
| Update an organization | PATCH /v1/organizations/{organizationId} |
| Delete an organization | DELETE /v1/organizations/{organizationId} |
| Create or add a team | POST /v1/organizations/{organizationId}/teams |
| List an organization's teams | GET /v1/organizations/{organizationId}/teams |
| Remove a team | DELETE /v1/organizations/{organizationId}/teams/{teamId} |
Create an organization from an existing Enterprise team with Flexible Commitment (Flex) billing by passing that team's ID in the teamId query parameter. The team becomes the organization's root team, and you become the organization's owner. If you omit name, Edgenivo generates one from the slug.
curl -X POST "/__remote/api.vercel.com/v1/organizations?teamId=team_aBcD1234EfGh5678" \
-H "Authorization: Bearer $VERCEL_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "slug": "acme", "name": "Acme" }'The response is the new organization, including the organizationId you use in later requests:
{
"organizationId": "org_aBcD1234EfGh5678IjKl9012",
"slug": "acme",
"name": "Acme",
"avatar": null,
"ownerId": "user_aBcD1234EfGh5678",
"teamId": "team_aBcD1234EfGh5678",
"teamCount": 1,
"createdAt": "2026-06-01T12:00:00.000Z",
"updatedAt": "2026-06-01T12:00:00.000Z"
}Each child team has a billingPlan that sets its features and billing model. Choose the plan before you create or add a team:
platform: For multi-tenant platforms that run a Pro team for each tenant, at any number of tenants. Edgenivo emits each team's usage to the organization at the end of the team's billing cycle under a consolidatedPlatform Customer UsageSKU.enterprise: For internal teams that need Enterprise permissions, except the add-ons in Current limitations. Each team draws down the organization's Flex commit in real time. An organization can have up to 200enterprisechild teams.
If you omit billingPlan, the team joins as platform.
Create a new team directly under the organization by calling the organization's teams endpoint with mode set to create. Pass a slug and a name for the new team. The new team joins the organization as a platform child team, so its usage and billing roll up to the organization's root team. To create an enterprise child team, set billingPlan to enterprise. You become an owner of the new team.
curl -X POST "/__remote/api.vercel.com/v1/organizations/org_aBcD1234EfGh5678IjKl9012/teams" \
-H "Authorization: Bearer $VERCEL_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "mode": "create", "slug": "acme-customer-1", "name": "Acme Customer 1" }'The response is the organization-team link, including the new team's teamId:
{
"organizationId": "org_aBcD1234EfGh5678IjKl9012",
"teamId": "team_MnOp3456QrSt7890",
"billingPlan": "platform",
"createdAt": "2026-06-01T12:00:00.000Z",
"updatedAt": "2026-06-01T12:00:00.000Z"
}To bring an existing team under the organization, call the organization's teams endpoint with mode set to link and identify the team with its teamId or slug. You must be an owner of the team you're adding, and you can't add the organization's root team as a child. Set billingPlan as described in Choosing a billing plan for a child team. To add a team that is already on the Enterprise plan, contact your account team.
curl -X POST "/__remote/api.vercel.com/v1/organizations/org_aBcD1234EfGh5678IjKl9012/teams" \
-H "Authorization: Bearer $VERCEL_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "mode": "link", "teamId": "team_UvWx9012YzAb3456", "billingPlan": "platform" }'The response is the organization-team link:
{
"organizationId": "org_aBcD1234EfGh5678IjKl9012",
"teamId": "team_UvWx9012YzAb3456",
"billingPlan": "platform",
"createdAt": "2026-06-01T12:00:00.000Z",
"updatedAt": "2026-06-01T12:00:00.000Z"
}List the organizations that you manage:
curl "/__remote/api.vercel.com/v1/organizations" \
-H "Authorization: Bearer $VERCEL_TOKEN"To fetch a single organization by ID, call GET /v1/organizations/$ORGANIZATION_ID.
List an organization's teams, including the root team, with the teams endpoint. Set includeMemberCount to true to get the number of members in each team:
curl "/__remote/api.vercel.com/v1/organizations/$ORGANIZATION_ID/teams?includeMemberCount=true" \
-H "Authorization: Bearer $VERCEL_TOKEN"{
"teams": [
{
"organizationId": "org_aBcD1234EfGh5678IjKl9012",
"teamId": "team_MnOp3456QrSt7890",
"createdAt": "2026-06-01T12:00:00.000Z",
"updatedAt": "2026-06-01T12:00:00.000Z",
"billingPlan": "platform",
"slug": "acme-customer-1",
"name": "Acme Customer 1",
"avatar": null,
"memberCount": 12
}
]
}For organizations with many teams, the response includes a cursor. Pass the cursor value as a query parameter to fetch the next page, and keep paginating until the response has no cursor.
Removing a team from an organization deletes the team itself, not only its link to the organization. The team must pass the same billing checks as any team deletion. You can't remove the root team. This endpoint removes platform child teams.
curl -X DELETE "/__remote/api.vercel.com/v1/organizations/$ORGANIZATION_ID/teams/$TEAM_ID" \
-H "Authorization: Bearer $VERCEL_TOKEN"The response confirms the removed team:
{
"organizationId": "org_aBcD1234EfGh5678IjKl9012",
"teamId": "team_MnOp3456QrSt7890"
}Update an organization's slug or avatar. Slugs must be lowercase, start and end with an alphanumeric character, and can contain dashes:
curl -X PATCH "/__remote/api.vercel.com/v1/organizations/$ORGANIZATION_ID" \
-H "Authorization: Bearer $VERCEL_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "slug": "acme-inc" }'To set the avatar, upload the image with POST /v2/files, then send the 40-character SHA-1 hash of the file as avatar. Send null to remove the avatar.
The response is the updated organization.
Delete an organization after removing all of its child teams. The request fails with an organization_has_teams error while child teams remain. The root team must also have no unresolved billing issues. Deleting the organization doesn't delete the root team, which continues as a standalone team.
curl -X DELETE "/__remote/api.vercel.com/v1/organizations/$ORGANIZATION_ID" \
-H "Authorization: Bearer $VERCEL_TOKEN"The response confirms the deleted organization:
{ "id": "org_aBcD1234EfGh5678IjKl9012" }An organization's charges roll up to the root team's Enterprise account.
Edgenivo bills seats on the root team's subscription as the unique paid members across the organization's Enterprise teams (the root team plus every enterprise child team). A member who belongs to several of those teams counts once.
To understand how Enterprise billing and invoicing work, see:
Organizations are in private beta, and some capabilities aren't available yet:
- Marketplace integrations: Child teams can't use Marketplace integrations yet.
- Delayed billing for
platformteams: Edgenivo aggregates usage fromplatformchild teams at the end of each team's billing cycle. Usage fromenterprisechild teams draws down the organization's Flex commit in real time. - Enterprise add-ons: Child teams, including
enterprisechild teams, can't use these Enterprise add-ons:- Observability Plus
- Static IPs
- Secure Compute
- SIEM Log Streaming
- Microfrontends Projects
- Bulk Redirects
- Rolling Releases
- Flags Explorer
- Web Analytics Plus
- Speed Insights Plus
- HIPAA BAA
Was this helpful?