---
title: update-an-organization
product: vercel
url: /docs/rest-api/organizations/update-an-organization
canonical_url: "https://vercel.com/docs/rest-api/organizations/update-an-organization"
last_updated: 2026-10-16
type: reference
prerequisites:
  []
related:
  - /docs/rest-api
summary: Learn about update-an-organization on Vercel.
install_vercel_plugin: npx plugins add vercel/vercel-plugin
---

# Update an Organization

```http
PATCH /v1/organizations/{organizationId}
```

Update an organization's slug, name, or avatar. Upload avatar images through the existing files API before setting their hash. The organization avatar is independent of the root team's avatar. This endpoint is in private beta. Contact your Vercel account team for access.

## Authentication

**bearerToken**: HTTP bearer

## Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `organizationId` | string | Yes | The ID of the organization to update. |


## Request body

Required: No

Content-Type: `application/json`

```json
{
  "type": "object",
  "properties": {
    "avatar": {
      "type": "string",
      "description": "The hash value of an uploaded image, or `null` to clear the organization avatar. Omit to leave it unchanged.",
      "pattern": "^[0-9a-f]+$",
      "maxLength": 40,
      "nullable": true
    },
    "name": {
      "type": "string",
      "description": "The new display name for the organization.",
      "maxLength": 256
    },
    "slug": {
      "type": "string",
      "description": "The new slug for the organization.",
      "pattern": "^(?!-)(?:[a-z0-9-]{1,48})(?<!-)$",
      "maxLength": 48
    }
  }
}
```

## Example request

### TypeScript

```typescript
const response = await fetch('https://api.vercel.com/v1/organizations/organizationId', {
  method: 'PATCH',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "avatar": "string",
    "name": "Example Name",
    "slug": "string"
  }),
});

const data = await response.json();
console.log(data);
```

### Next.js

```typescript
'use server';

export async function callEndpoint() {
  const response = await fetch('https://api.vercel.com/v1/organizations/organizationId', {
    method: 'PATCH',
    headers: {
      'Authorization': `Bearer ${process.env.VERCEL_ACCESS_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      "avatar": "string",
      "name": "Example Name",
      "slug": "string"
    }),
    next: { revalidate: 3600 }
  });

  if (!response.ok) {
    throw new Error('Request failed');
  }

  return response.json();
}
```

### cURL

```bash
curl -X PATCH 'https://api.vercel.com/v1/organizations/organizationId' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d "{
    \"avatar\": \"string\",
    \"name\": \"Example Name\",
    \"slug\": \"string\"
  }"
```

## Example response

```json
{
  "avatar": "string",
  "createdAt": "string",
  "name": "Example Name",
  "organizationId": "example_id",
  "ownerId": "example_id",
  "slug": "string",
  "teamCount": "123",
  "teamId": "example_id",
  "updatedAt": "string",
  "userRole": "string"
}
```

## Responses

### 200: No description

Content-Type: `application/json`

```json
{
  "type": "object",
  "required": [
    "avatar",
    "createdAt",
    "organizationId",
    "ownerId",
    "slug",
    "teamCount",
    "teamId",
    "updatedAt"
  ],
  "properties": {
    "avatar": {
      "type": "string",
      "nullable": true
    },
    "createdAt": {
      "type": "string"
    },
    "name": {
      "type": "string",
      "description": "The organization's display name. Optional: organizations created before the name attribute existed have no stored value. New orgs always get one (provided or slug-derived) via the service layer."
    },
    "organizationId": {
      "type": "string"
    },
    "ownerId": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "teamCount": {
      "type": "number"
    },
    "teamId": {
      "type": "string"
    },
    "updatedAt": {
      "type": "string"
    },
    "userRole": {
      "type": "string",
      "description": "The authenticated user's role in the organization. Present on read endpoints when the user holds an organization role."
    }
  }
}
```

### 400: One of the provided values in the request body is invalid.
One of the provided values in the request query is invalid.

### 401: The request is not authorized.

### 403: You do not have permission to access this resource.

### 404: No description

### 409: No description

### 410: No description

---

## Related

- [organizations endpoints](/docs/rest-api#organizations)

- [REST API overview](/docs/rest-api)

- [OpenAPI spec](https://vercel.com/openapi.json) (machine-readable, all endpoints)

---

[View full sitemap](/docs/sitemap)
