---
title: "Save the org navigation customization (org.navigation.manage; ADMIN+ default)"
method: PUT
path: "/organizations/{id}/navigation"
tags: ["organizations"]
---

# Save the org navigation customization (org.navigation.manage; ADMIN+ default)

`PUT /organizations/{id}/navigation`

## Request

- Base URL: `https://api.onplana.com/api`
- URL: `https://api.onplana.com/api/organizations/{id}/navigation`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `version` 1, required
  - `groups` object[]: Ordered groups with optional label overrides
  - `items` object[], required: builtin{key,label?,hidden?} or link{id,label,url,group,hidden?}; <=60 items, <=20 links, label 1-40
  - `updatedAt` string: Echo the loaded value for optimistic concurrency; mismatch -> 409 NAV_CONFLICT

## Response `200`

Stamped NavCustomization

## Other responses

- `400`: Validation error
- `401`: Unauthorized - missing or invalid JWT
- `402`: Plan gate - feature not available on current plan
- `403`: Forbidden - insufficient role

---

[API](https://skmtc.dev/onplana/apis/onplana-api.md) · [All operations](https://skmtc.dev/onplana/apis/onplana-api/llms.txt) · [OpenAPI document](https://skmtc.dev/onplana/apis/onplana-api/revisions/c3d6c89e9dc8?raw)
