
Content Agent
Automate the work nobody wants to do
The AI agent built to run content operations at scale. Run bulk edits, content audits, and more through conversation, in minutes.

import {defineField, defineType} from 'sanity'
export default defineType({
name: 'hero',
title: 'Hero',
type: 'document',
fields: [
defineField({
name: 'eyebrow',
title: 'Eyebrow',
type: 'string',
}),
defineField({
name: 'title',
title: 'Title',
type: 'string',
validation: (Rule) => Rule.required(),
}),
defineField({
name: 'description',
title: 'Description',
type: 'text',
rows: 3,
}),
defineField({
name: 'image',
title: 'Image',
type: 'image',
options: {
hotspot: true,
},
fields: [
{
name: 'alt',
type: 'string',
title: 'Alternative text',
description: 'Important for SEO and accessibility.',
},
],
}),
],
preview: {
select: {
title: 'title',
subtitle: 'description',
media: 'image',
},
},
})The Headless CMS that bends to your needs
All-code content workspace for your data stored in the Content Lake, configured and customized by you to fit the needs of any team.
Sanity 101

A 60-second walkthrough of Sanity Studio's core features.
devs, rejoice

{
name: 'page',
title: 'Page',
type: 'document',
fields: [
{
name: 'title',
title: 'Title',
type: 'string',
validation: (Rule) => Rule.required(),
},
{
name: 'slug',
title: 'Slug',
type: 'slug',
options: {
source: 'title',
maxLength: 96,
},
validation: (Rule) => Rule.required(),
},
{
name: 'description',
title: 'Description',
type: 'text',
rows: 3,
},
{
name: 'image',
title: 'Image',
type: 'image',
options: {
hotspot: true,
},
fields: [
{
name: 'alt',
title: 'Alt Text',
type: 'string',
},
],
},
],
}Documents
Homepage
Your content model is TypeScript. Your workspace is React. Change either, see the result immediately.
No migrations.
No config files.
No waiting.
Make it yours
Your content model belongs in your repo
Content types in TypeScript. Version controlled. Type-safe. Deploys with CI/CD, not through an admin UI you can't roll back.
Editing views that fit the work
Add live previews, dashboards, or any React component to the editing interface. You're not limited to what we ship.
Organize content your way
Structure the sidebar by workflow, team, or project. Filtered views so editors find their content, not everyone's.
Build tools for specific workflows
Use the App SDK to build standalone content apps with real-time sync and full API access, right in the dashboard.
Work together
Multiplayer editing
Same document, multiple editors, character-level sync. No locking, no merge conflicts, no "someone else is editing this."
Comments and tasks
Assign reviews, give feedback, and resolve inline. The conversation happens where the content lives.
Version history
Every change tracked. Compare any two versions. Restore anything. Same safety net your code has.
Content Releases
Bundle changes across documents. Preview together. Publish on schedule or on demand.
AI included

Content Agent
Ask questions, draft copy, translate, audit, bulk edit. Schema-aware, so it works with your structure, not around it.
AI field assistance
Generate, translate, or improve content with context from related documents. Right in the editor.
Web research
Content Agent searches the web to fact-check or gather information while drafting. Less tab-switching.
Your governance
AI respects your permissions. Edits go through your approval workflow. Nothing publishes without sign-off.
Developer Experience
Git-native workflow
Schema in your repo. Content model changes go through PRs. Roll back like any code.
TypeScript all the way
Schema types, GROQ query types, component props. Catch errors before production, not after.
Portable Text
Rich content as structured data. Render anywhere. Customize the editor and the output independently.
Instant setup
npm create sanity@latest to a working Studio. Not hours of config. Minutes.
What you get
AE01
Click to edit on your live site. Works with Next.js, Nuxt, Svelte, Remix, and Astro.
AE02
Upload, organize, and transform images and files. Persistent URLs, signed URLs, video streaming, AI alt text.
AE03
AI writing tool with contextual notes. Ground suggestions in your research, style guides, and facts. Map to structured Studio fields.
AE04
Rich text as structured data. Customizable blocks, annotations, inline objects. Render to any format.
AE05
Duplicate content between documents. Complex structures, references, images. Keyboard shortcuts.
AE06
Field-level or document-level. Your choice of pattern. Works with AI translation.
AE07
Editorial UI in your team's own languages. More than 50+ language supported. Fully customizable.
SC01
Content types in TypeScript. Version controlled. Type-safe. Deploys with your CI/CD.
SC02
Replace any field with your own React component. From simple tweaks to full integrations.
SC03
Control sidebar navigation, document lists, filtered views. Organize by workflow or programmatically by content.
SC04
Required fields, min/max, regex, custom logic. Enforce content quality at the schema level.
SC05
Set focal points and crop regions per image. Responsive output. Works with any frontend framework.
SC06
Field-level or document-level. Your choice of pattern. Works with AI translation.
SC07
Customize the publish button. Add custom workflows, approval steps, or integrations. Triggered on any document action.
CO01
Same document, multiple editors, character-level sync. No locking. No merge conflicts.
CO02
Assign reviews, give feedback, resolve inline. Collaboration where the content lives.
CO03
Every change tracked. Compare versions side by side. Restore anything.
CO04
Schedule individual documents for future publication. Pauses automatically when edited.
CO05
Bundle changes across documents. Preview together. Publish on schedule or on demand.
CO06
Control who can read, edit, or publish. Custom roles. Field-level access control.
CO07
See exactly what changed before publishing. Field-by-field diff view. Catch mistakes before they go live.
AI01
Find, audit, translate, bulk edit content in conversation. Schema-aware. Human approval required.
AI02
Inline AI at the field level. Generate, translate, improve content with custom instructions.
AI03
Developer APIs for AI operations. Generate, Transform, Translate, Patch. Run from anywhere.
AI04
Generate and transform images with AI directly inside your documents.
AI05
Draft in freeform, then map to structured fields. AI-assisted writing with contextual notes, grounded in your research and style guides.
AI06
Connect Claude, Cursor, and any MCP-compatible AI tool directly to your content. Schema-aware. Read and write from any AI environment.
AI07
Teach any AI tool how to work with Sanity. Installable context packages for Claude, Cursor, Copilot, and more.
Start building for free, or talk to us about your setup
import {defineField, defineType} from 'sanity'
export default defineType({
name: 'hero',
title: 'Hero',
type: 'document',
fields: [
defineField({
name: 'eyebrow',
title: 'Eyebrow',
type: 'string',
}),
defineField({
name: 'title',
title: 'Title',
type: 'string',
validation: (Rule) => Rule.required(),
}),
defineField({
name: 'description',
title: 'Description',
type: 'text',
rows: 3,
}),
defineField({
name: 'image',
title: 'Image',
type: 'image',
options: {
hotspot: true,
},
fields: [
{
name: 'alt',
type: 'string',
title: 'Alternative text',
description: 'Important for SEO and accessibility.',
},
],
}),
],
preview: {
select: {
title: 'title',
subtitle: 'description',
media: 'image',
},
},
}){
name: 'page',
title: 'Page',
type: 'document',
fields: [
{
name: 'title',
title: 'Title',
type: 'string',
validation: (Rule) => Rule.required(),
},
{
name: 'slug',
title: 'Slug',
type: 'slug',
options: {
source: 'title',
maxLength: 96,
},
validation: (Rule) => Rule.required(),
},
{
name: 'description',
title: 'Description',
type: 'text',
rows: 3,
},
{
name: 'image',
title: 'Image',
type: 'image',
options: {
hotspot: true,
},
fields: [
{
name: 'alt',
title: 'Alt Text',
type: 'string',
},
],
},
],
}