How do I make a patch request to a document to change its type? This is resulting in an error Cannot modify immutable attribut

11 replies
Last updated: Jan 28, 2026
How do I make a patch request to a document to change its type? This is resulting in an error
Cannot modify immutable attribute \\"_type\\""

{
  "mutations": [
    {
      "patch": {
        "id": "drafts.<document id>",
        "ifRevisionID": "<revision id>",
        "set": {
          "_type": "slidingBanner"
        },
        "unset": [
          "height"
        ]
      }
    }
  ]
}

AI Update

You're getting this error because _type is an immutable attribute in Sanity - it cannot be changed after a document is created. This is by design to maintain data integrity and ensure consistent relationships between documents and their schemas.

Unfortunately, you can't simply patch a document to change its type. Instead, you'll need to create a new document with the desired type and migrate the content from the old document. Here's how to approach this:

Option 1: Manual Migration via API

Create a new document with the correct type and copy over the fields:

import {createClient} from '@sanity/client'

const client = createClient({
  projectId: 'your-project-id',
  dataset: 'your-dataset',
  token: 'your-token',
  apiVersion: '2024-01-01'
})

// Fetch the original document
const originalDoc = await client.getDocument('drafts.<document-id>')

// Create a new document with the new type
const newDoc = {
  ...originalDoc,
  _type: 'slidingBanner', // new type
  _id: undefined, // let Sanity generate a new ID
  _rev: undefined,
  _createdAt: undefined,
  _updatedAt: undefined,
  // Remove fields that don't exist in new schema
  height: undefined
}

// Create the new document
const created = await client.create(newDoc)

// Optionally delete the old document
await client.delete('drafts.<document-id>')

Option 2: Migration Script

For bulk operations, use the @sanity/migration-toolkit which provides utilities for transforming documents at scale.

Important Considerations

  • References: If other documents reference the old document, you'll need to update those references to point to the new document ID
  • Published vs Draft: Handle both the draft and published versions if they exist
  • Schema compatibility: Ensure fields from the old type are compatible with the new type's schema
  • Asset references: These should carry over automatically if the field names match

The immutability of _type is a core design decision in Sanity to prevent schema inconsistencies, so a proper migration is always required when you need to change a document's type.

Show original thread
11 replies

Sanity – Build the way you think, not the way your CMS thinks

Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.

Was this answer helpful?