
Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag storeI understand your concern - those overage costs can definitely add up quickly! The good news is there are several proven strategies to dramatically reduce your Sanity API requests and bandwidth usage. Let me break down the most effective approaches:
The most modern solution is Sanity's Live Content API, which is specifically designed to reduce API requests while keeping content fresh. It handles fetching, rendering, caching, and cache invalidation automatically - this is now the recommended approach for Next.js applications and can significantly reduce your API call volume since it intelligently manages caching for you without complex setup.
Since you're on Next.js with high traffic, proper caching is crucial:
Use Incremental Static Regeneration (ISR):
revalidate times based on how often your content actually changesrevalidate: 3600 (1 hour) or even longer for older postsExample:
const posts = await sanityFetch({
query: POSTS_QUERY,
revalidate: 3600, // Revalidate every hour instead of on every request
})For App Router:
force-static for pages that don't change oftenThis can have a huge impact on bandwidth:
Use projections to only fetch the fields you need:
// Bad - fetches everything
*[_type == "post"]
// Good - only fetches what you need
*[_type == "post"] {
title,
slug,
publishedAt,
"imageUrl": image.asset->url
}Avoid deep reference resolution when not necessary - each -> traversal adds to your query cost and response size. Read more about query optimization techniques in Sanity's documentation.
Images often account for the majority of bandwidth:
next/image which automatically optimizes imagesauto=format to serve WebP/AVIF to supported browsersExample:
import imageUrlBuilder from '@sanity/image-url'
const builder = imageUrlBuilder(client)
// Request appropriately sized images
const imageUrl = builder
.image(post.image)
.width(800)
.auto('format')
.url()Next.js Link components prefetch by default, which generates API requests even for links users never click:
prefetch={false} on individual links that don't need itReview your Sanity project's usage dashboard to identify:
useCdn: false) only for preview/draft contexts, not productionIf you're loading large lists of posts, implement efficient pagination strategies rather than fetching all posts at once.
The combination of proper caching strategy + query optimization should reduce your usage by 80-95% in most cases. Start with implementing ISR or the Live Content API with appropriate revalidation times, then optimize your queries and images. Monitor your usage dashboard to see which changes have the biggest impact for your specific use case.
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.
Content operations
Content backend


The only platform powering content operations
By Industry


Tecovas strengthens their customer connections
Build and Share

Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag store