Different results querying Sanity via curl vs JavaScript client
Good question! Since both methods are using API v1 (your curl explicitly uses /v1/ and the JavaScript client defaults to v1 when no apiVersion is specified), they should actually return the same results. Here are the most likely reasons you're seeing differences:
1. Missing apiVersion Parameter (Best Practice Issue)
While both default to v1, you should always explicitly set the apiVersion in your client to ensure consistent behavior and avoid surprises when defaults change:
const sanityClient = sanity({
projectId: 'xuaf19yr',
dataset: 'production',
useCdn: false,
apiVersion: '2024-01-01', // Add this!
})2. CDN vs API Endpoint
Your JavaScript client has useCdn: false, which should hit the API directly. Double-check that your curl is also using the API endpoint (not the CDN):
- API:
https://xuaf19yr.api.sanity.io✓ (what you're using) - CDN:
https://xuaf19yr.apicdn.sanity.io
If one were accidentally hitting the CDN, you might see cached data up to 10 minutes old.
3. Authentication Differences
If your JavaScript client has any authentication token configured (like a token parameter), it would have access to different data than your unauthenticated curl request. Make sure both requests have the same authentication status.
4. URL Encoding or Query Differences
Your curl shows URL-encoded parameters. Verify the actual query string being sent is identical. Try logging the network request from your JavaScript client to compare.
Debugging Steps
- Check what's different: Are you getting different numbers of documents, or different content within the documents?
- Add explicit
apiVersionto rule out any version-related issues - Log the actual requests from both methods to compare headers and query strings
- Check for draft documents: If you have documents with IDs starting with
drafts., both methods should return them since v1 uses therawperspective by default
Note: The default perspective only changed from raw to published in API version v2025-02-19, not in v1, so both your methods should be using the same raw perspective and returning all documents including drafts.
What specific differences are you seeing in the results? That would help narrow down the exact cause!
Show original thread8 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.