# Update a tab row

URL: /en/docs/api/v1/tabs/id/patch
Last Updated: 2026-07-30T21:15:30.311Z

## Description
No description available.

## Available Actions
- Execute PATCH request
- View request parameters
- View response schema
- Get code examples
- Navigate to related topics
- View step-by-step instructions
- Get best practices

## Content
### PATCH /api/v1/tabs/{id}

**Update a tab row**

Update the order or enabled state for a tab row owned by the authenticated tenant. Use this endpoint for drag-and-drop ordering and visibility toggles. Legacy synthetic custom tab IDs such as `custom-*` are rejected; pass the Directus tab row ID returned by `GET /api/v1/tabs`.

**Authentication:** Bearer token (`Authorization: Bearer <token>`)

**Path parameters:**

| Name | Type | Required | Description |
|---|---|---|---|
| `id` | string (uuid) | Yes | Directus tab row ID. |

**Request body** (`application/json`) - required:

- `order` (integer)
- `enabled` (boolean)

Example (Reorder a row):

```json
{
  "order": 3
}
```

Example (Disable a row):

```json
{
  "enabled": false
}
```

**Responses:**

- `200` - Tab row updated.
  - `success` (boolean, required)
  - `data` (object, required)
    - `tab` (Tab (object), required)
      - `id` (string, required)
      - `tenant` (object, required)
      - `kind` (TabKind (enum: system | custom), required)
      - `system_tab` (object)
      - `custom_tab` (object)
      - `order` (integer, required)
      - `enabled` (boolean, required)

  Example (success):
  
  ```json
  {
  "success": true,
  "data": {
    "tab": {
      "id": "3f8b1f4e-7b2a-4f68-8b1b-8d5c3d1e9f42",
      "tenant": "tenant-123",
      "kind": "custom",
      "system_tab": null,
      "custom_tab": "tab-vendor-assurance",
      "order": 3,
      "enabled": false
    }
  }
}
  ```
- `400` - Invalid row ID or no update fields were provided.
  - `error` (string, required)
  - `code` (string)
  - `message` (string)
  - `details` (string)

  Example (invalidId):
  
  ```json
  {
  "error": "Invalid tab row ID"
}
  ```

  Example (noChanges):
  
  ```json
  {
  "error": "No tab row changes provided"
}
  ```
- `401` - Authentication failed or the access token is missing.
  - `error` (string, required)
  - `code` (string)
  - `message` (string)
  - `details` (string)
- `403` - The access token lacks permission to update the tab row.
  - `error` (string, required)
  - `code` (string)
  - `message` (string)
  - `details` (string)
- `404` - Tab row not found for the authenticated tenant.
  - `error` (string, required)
  - `code` (string)
  - `message` (string)
  - `details` (string)

  Example (notFound):
  
  ```json
  {
  "error": "Tab row not found"
}
  ```
- `500` - Directus or server failure while updating the tab row.
  - `error` (string, required)
  - `code` (string)
  - `message` (string)
  - `details` (string)

**Code samples:**

cURL:

```bash
curl -X PATCH "https://app.orbiqhq.com/api/v1/tabs/3f8b1f4e-7b2a-4f68-8b1b-8d5c3d1e9f42" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "order": 3, "enabled": false }'

```

JavaScript (fetch):

```javascript
const tabId = "3f8b1f4e-7b2a-4f68-8b1b-8d5c3d1e9f42";
const response = await fetch(`https://app.orbiqhq.com/api/v1/tabs/${tabId}`, {
  method: "PATCH",
  headers: {
    Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ order: 3, enabled: false }),
});

if (!response.ok) {
  throw new Error(await response.text());
}

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

```

