---
title: "Update a channel"
method: PUT
path: "/settings/channels/{id}"
tags: ["Admin Settings: Channels"]
---

# Update a channel

`PUT /settings/channels/{id}`

## Request

- Base URL: `http://localhost:8000/api/admin`
- URL: `http://localhost:8000/api/admin/settings/channels/{id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/bagisto/apis/bagisto-admin-api/docs/settings/channels/:id/put.ts> (a function with typed inputs; its response is checked against the schema)

Code/hostname uniqueness excludes the current id. Use the `translations` map for locale-nested attributes (name, description, seo_*, maintenance_mode_text). Top-level scalar fields broadcast to every configured locale via the repository.

## Path parameters

- `id` integer, required

## Request body

- object

## Response `200`

Channel updated.

- AdminSettingsChannelAdminSettingsChannelRestDto: Admin Settings → Channels endpoints (Block B Wave 2; objectified 2026-06-22). Bare Eloquent `#[ApiResource]` parent. Nested data is field-selectable: GraphQL → `translations`/`locales`/`currencies`/`inventorySources` Relay connections + `homeSeo` typed object. REST → the same data as flat arrays of objects (no connections). REST shape stays flat via `output: AdminSettingsChannelRestDto`; GraphQL ops carry NO output so they return this Eloquent model → connections resolve. BREAKING (user-approved): the old scalar `localeIds`/`currencyIds`/ `inventorySourceIds` int arrays are REPLACED by the `locales`/`currencies`/ `inventorySources` object connections (GraphQL) / object arrays (REST). REST: GET /api/admin/settings/channels — datagrid-parity listing GET /api/admin/settings/channels/{id} — detail POST /api/admin/settings/channels — create PUT /api/admin/settings/channels/{id} — update (translatable via translations map) DELETE /api/admin/settings/channels/{id} — delete (guards: last channel, app.channel) GraphQL: adminSettingsChannels / adminSettingsChannel(id:) createAdminSettingsChannel / updateAdminSettingsChannel / deleteAdminSettingsChannel Mirrors Webkul\Admin\Http\Controllers\Settings\ChannelController 1:1. Image upload (logo/favicon) is not supported yet; an update keeps the current images.
  - `id` integer, nullable
  - `code` string, nullable
  - `name` string, nullable
  - `description` string, nullable
  - `hostname` string, nullable
  - `theme` string, nullable
  - `timezone` string, nullable
  - `defaultLocaleId` integer, nullable
  - `baseCurrencyId` integer, nullable
  - `rootCategoryId` integer, nullable
  - `isMaintenanceOn` boolean, nullable
  - `maintenanceModeText` string, nullable
  - `allowedIps` string[], nullable
  - `logo` string, nullable
  - `logoUrl` string, nullable
  - `favicon` string, nullable
  - `faviconUrl` string, nullable
  - `locales` object[], nullable
  - `currencies` object[], nullable
  - `inventorySources` object[], nullable
  - `homeSeo` object, nullable
  - `translations` object[], nullable
  - `createdAt` string, nullable
  - `updatedAt` string, nullable

## Other responses

- `400`: Invalid input
- `404`: Channel not found.
- `422`: Validation failure.

---

[API](https://skmtc.dev/bagisto/apis/bagisto-admin-api.md) - [All operations](https://skmtc.dev/bagisto/apis/bagisto-admin-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bagisto/apis/bagisto-admin-api/revisions/3198f11be70f?raw)
