specification: API Commons Plans specificationVersion: '0.1' schema: https://raw.githubusercontent.com/api-evangelist/interface-research/main/schema/api-commons.yml#/$defs/Plans provider: Sanity providerId: sanity created: '2026-05-04' # Provenance stamped 2026-08-11: this artifact was written by the API Evangelist # bulk sweep dated 2026-05-04, not harvested from the provider. See roadmap#35. method: generated modified: '2026-05-05' reconciled: true tags: - Headless CMS - Content Management - GROQ - Real-Time - Structured Content - Developer Platform description: Sanity is priced as a tiered SaaS with per-seat subscriptions plus included monthly quotas for API CDN requests, direct API requests, assets, and bandwidth. Overages bill per fixed bucket. Free is generous for prototyping; Growth is per-seat at $15/seat/month with paid add-ons (SAML SSO, dedicated support, increased quota). Enterprise is custom. sources: - https://www.sanity.io/pricing plans: - id: sanity-free name: Free type: freemium description: Free forever tier with up to 20 seats, 2 public datasets, 10K documents, and capped monthly quotas across CDN, direct API, assets, and bandwidth. entries: - label: Seats name: seats type: quota metric: seat limit: 20 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false - label: Datasets (public only) name: datasets type: quota metric: dataset limit: 2 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false - label: Documents name: documents type: quota metric: document limit: 10000 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false - label: API CDN Requests name: api_cdn_requests type: quota metric: request limit: 1000000 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false - label: API Requests (direct) name: api_requests type: quota metric: request limit: 250000 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false - label: Asset Storage name: assets type: quota metric: gb limit: 100 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false - label: Bandwidth name: bandwidth type: quota metric: gb limit: 100 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false elements: - name: Sanity Studio - name: Sanity Query API (GROQ) - name: Sanity Mutation API - name: Sanity Assets API - name: Sanity Webhooks API - name: Sanity Listen API (real-time) - name: Community Support - id: sanity-growth name: Growth type: subscription description: Per-seat subscription at $15/seat/month (up to 50 seats) with private datasets, larger document cap, and metered overages on all included quotas. entries: - label: Seat subscription name: seat_subscription type: subscription metric: seat limit: 50 timeFrame: month geo: global unit: 1 price: '$15' userMultiplied: true - label: Datasets (public or private) name: datasets type: quota metric: dataset limit: 2 timeFrame: month geo: global unit: 1 price: included userMultiplied: false - label: Documents name: documents type: quota metric: document limit: 25000 timeFrame: month geo: global unit: 1 price: included userMultiplied: false - label: API CDN Requests included name: api_cdn_requests type: quota metric: request limit: 1000000 timeFrame: month geo: global unit: 1 price: included userMultiplied: false - label: API CDN Requests overage name: api_cdn_requests_overage type: metered metric: request limit: -1 timeFrame: usage geo: global unit: 250000 price: '$1' userMultiplied: false - label: API Requests (direct) included name: api_requests type: quota metric: request limit: 250000 timeFrame: month geo: global unit: 1 price: included userMultiplied: false - label: API Requests overage name: api_requests_overage type: metered metric: request limit: -1 timeFrame: usage geo: global unit: 25000 price: '$1' userMultiplied: false - label: Asset Storage included name: assets type: quota metric: gb limit: 100 timeFrame: month geo: global unit: 1 price: included userMultiplied: false - label: Asset Storage overage name: assets_overage type: metered metric: gb limit: -1 timeFrame: usage geo: global unit: 1 price: '$0.50' userMultiplied: false - label: Bandwidth included name: bandwidth type: quota metric: gb limit: 100 timeFrame: month geo: global unit: 1 price: included userMultiplied: false - label: Bandwidth overage name: bandwidth_overage type: metered metric: gb limit: -1 timeFrame: usage geo: global unit: 1 price: '$0.30' userMultiplied: false - label: SAML SSO add-on name: addon_saml_sso type: subscription metric: month limit: 1 timeFrame: month geo: global unit: 1 price: '$1399' userMultiplied: false - label: Dedicated Support add-on name: addon_dedicated_support type: subscription metric: month limit: 1 timeFrame: month geo: global unit: 1 price: '$799' userMultiplied: false - label: Increased Quota add-on name: addon_increased_quota type: subscription metric: month limit: 1 timeFrame: month geo: global unit: 1 price: '$299' userMultiplied: false - label: Extra Dataset add-on name: addon_extra_dataset type: subscription metric: dataset limit: -1 timeFrame: month geo: global unit: 1 price: '$999' userMultiplied: false elements: - name: Private Datasets - name: Sanity Studio - name: Sanity Query API (GROQ) - name: Sanity Mutation API - name: Sanity Assets API - name: Sanity Webhooks API - name: Sanity Listen API (real-time) - name: Sanity Scheduling API - name: Email Support - id: sanity-enterprise name: Enterprise type: enterprise description: Custom-negotiated tier with customizable seats, roles, datasets, quotas, and dedicated support. Pricing on request. entries: - label: Custom contract name: custom type: subscription metric: varies limit: -1 timeFrame: year geo: configurable unit: 1 price: contact sales userMultiplied: false elements: - name: Customizable Seats - name: Custom Roles - name: Custom Datasets - name: Custom Quotas - name: Dedicated Support - name: SAML SSO - name: Priority SLA - name: Sanity Embeddings Index API maintainers: - FN: Kin Lane email: kin@apievangelist.com x-canonical: generated: '2026-10-08' vocabulary: all/0-working/economics/plans-canonical.yml models: - free - subscription units: - data - negotiated - object - period - request - seat plans: - name: Free access: freemium model: free model_how: derived units: - data - object - request - seat periods: - month - name: Growth access: other model: subscription model_how: stated units: - data - object - period - request - seat periods: - month - per-use - name: Enterprise access: enterprise model: subscription model_how: derived units: - negotiated periods: - year