Edit Workspace

Rename a workspace and update its description, color, icon, category, and other settings with the editWorkspace mutation.


Use the editWorkspace mutation to update an existing workspace. Despite the “rename” framing, this single mutation edits the full workspace surface — name, slug, description, color, icon, category, the record alias, time-tracking display, bulk-action toggles, the name formula, view types, and more. Pass only the fields you want to change; everything else is left untouched.

Workspaces are Workspace objects in the API.

Request

The minimal call renames a workspace. Only projectId is required.

mutation RenameWorkspace {
  editWorkspace(input: { projectId: "project_123", name: "Q2 Marketing Campaign" }) {
    id
    name
    slug
  }
}

Parameters

EditWorkspaceInput

ParameterTypeRequiredDescription
projectIdString!YesID of the workspace to edit.
nameStringNoNew display name.
slugStringNoNew URL slug. Lowercase letters, numbers, and hyphens only; must not contain a URL or collide with an existing organization or workspace slug.
descriptionStringNoWorkspace description. HTML is sanitized on save.
imageImageInputNoWorkspace cover image. Pass null to remove the current image.
colorStringNoHex color, e.g. #3B82F6.
iconStringNoIcon identifier.
categoryProjectCategoryNoWorkspace category. See the values below.
todoAliasStringNoCustom singular label for records in this workspace (e.g. Task, Deal).
hideRecordCountBooleanNoHide record counts in the UI.
showTimeSpentInTodoListBooleanNoShow time tracked per list.
showTimeSpentInProjectBooleanNoShow time tracked across the workspace.
duplicateDetectionBooleanNoWarn when a record looks like a duplicate.
compactCardsBooleanNoRender board cards in compact mode.
sequenceCustomFieldIdStringNoID of a custom field used to sequence records. Pass null to clear it.
nameFormulaJSONNoFormula configuration that auto-generates record titles. Pass null to clear it.
nameFormulaEnabledBooleanNoEnable or disable the name formula. Enabling requires a configured formula.
bulkActionCompleteBooleanNoAllow the bulk “complete” action.
bulkActionAssigneeBooleanNoAllow the bulk “assignee” action.
bulkActionTagBooleanNoAllow the bulk “tag” action.
bulkActionDueDateBooleanNoAllow the bulk “due date” action.
viewTypeSettings[ViewTypeSettingInput!]NoWhich view types are available and how they are labeled. At least one entry must be enabled.
todoFields[TodoFieldInput]NoOrdered field layout for records in this workspace.
features[ProjectFeatureInput]NoPer-feature toggles for the workspace.
coverConfigTodoCoverConfigInputNoHow record cover images are sourced and displayed.

ProjectCategory

ValueDescription
CRMCustomer relationship management
CROSS_FUNCTIONALCross-functional teams
CUSTOMER_SUCCESSCustomer success
DESIGNDesign and creative
ENGINEERINGEngineering and development
GENERALGeneral-purpose (default)
HRHuman resources
ITInformation technology
MARKETINGMarketing
OPERATIONSOperations and logistics
PRODUCTProduct management
SALESSales and business development

ViewTypeSettingInput

ParameterTypeRequiredDescription
typeSavedViewType!YesOne of BOARD, DATABASE, CALENDAR, TIMELINE, MAP.
enabledBoolean!YesWhether this view type is available in the workspace.
nameStringNoCustom label for the view (1–100 characters).

Response

{
  "data": {
    "editWorkspace": {
      "id": "clm4n8qwx000008l0g4oxdqn7",
      "name": "Q2 Marketing Campaign",
      "slug": "q2-marketing-campaign"
    }
  }
}

Returns

editWorkspace returns the updated Workspace (non-null).

FieldTypeDescription
idID!Workspace ID.
nameString!Workspace name.
slugString!URL slug.
descriptionStringWorkspace description.
colorStringHex color.
iconStringIcon identifier.
categoryProjectCategory!Workspace category.
todoAliasStringCustom singular record label.
hideRecordCountBooleanWhether record counts are hidden.
archivedBooleanWhether the workspace is archived.
nameFormulaEnabledBoolean!Whether the name formula is active.
createdAtDateTime!Creation timestamp.
updatedAtDateTime!Last update timestamp.

Full example

Update several settings at once. Categories and view types use enum values (no quotes).

mutation EditWorkspace {
  editWorkspace(
    input: {
      projectId: "project_123"
      name: "Q2 Marketing Campaign"
      description: "Campaign planning for the Q2 product launch."
      color: "#3B82F6"
      icon: "campaign"
      category: MARKETING
      todoAlias: "Task"
      hideRecordCount: false
      duplicateDetection: true
      compactCards: true
      viewTypeSettings: [
        { type: BOARD, enabled: true, name: "Pipeline" }
        { type: DATABASE, enabled: true }
        { type: CALENDAR, enabled: false }
      ]
    }
  ) {
    id
    name
    slug
    description
    color
    icon
    category
    todoAlias
    hideRecordCount
    updatedAt
  }
}

Errors

CodeWhen
FORBIDDENThe caller is not an OWNER or ADMIN of the workspace. Message: You are not authorized.
PROJECT_NOT_FOUNDNo workspace matches projectId.
PROJECT_URL_ALREADY_EXISTSThe requested slug collides with an existing organization or workspace slug.
BAD_USER_INPUTThe slug contains a URL or invalid characters, or a viewTypeSettings entry is invalid (none enabled, duplicate types, or an empty/over-100-character name).
CUSTOM_FIELD_NOT_FOUNDThe sequenceCustomFieldId does not reference a custom field in this workspace.
{
  "errors": [
    {
      "message": "You are not authorized.",
      "extensions": { "code": "FORBIDDEN" }
    }
  ]
}

Permissions

Editing a workspace requires the OWNER or ADMIN access level on that workspace. MEMBER, CLIENT, COMMENT_ONLY, and VIEW_ONLY members cannot call editWorkspace; the mutation throws FORBIDDEN.

Workspace access levelCan edit
OWNERYes
ADMINYes
MEMBERNo
CLIENTNo
COMMENT_ONLYNo
VIEW_ONLYNo

Notes

  • Renaming does not change the slug. The slug stays as-is unless you pass a new slug explicitly. Provide one if you want the URL to match the new name.
  • Slug rules. A slug must be lowercase letters, numbers, and hyphens, contain no URL, and not collide with an existing organization or workspace slug.
  • Partial updates. Every field except projectId is optional — send only the fields you want to change.
  • Descriptions are sanitized. HTML in description is stripped on save.
  • Removing the cover image. Pass image: null to delete the current cover image.