The rest api stopped returning Calls Left (http_x_shopify_shop_api_call_limit is empty) sometime today. Causing major issues!
Am I crazy or did it just switch from http_x_shopify_shop_api_call_limit to x-shopify-shop-api-call-limit sometime today??
Could you share more details about the REST API you’re making in particular?
What endpoint/data shape is it?
What’s the behavior you’re expecting? What’s the response you’re seeing?
I switched from accessing this header:
http_x_shopify_shop_api_call_limit
to
x-shopify-shop-api-call-limit
and it works now. Was using the first header name for years, and it just spontaneously disappeared today.
Non-standard HTTP request headers customarily begin with the x
prefix, words are separated by a -
.
So, for example:
x-shopify-api-version: 2025-04
Depending on your tech stack, this may have been exposed to you as something else, for example HTTP_X_SHOPIFY_API_VERSION
, or any other format decided upon by the language and/or framework you are using.
In case you experienced a change, chances are, some component of your tech stack was updated, and now uses a different format to present request headers to you?
In case you experienced a change, chances are, some component of your tech stack was updated, and now uses a different format to present request headers to you?
No.
Hey @jason_engage!
I’m looking in to this for you. I do notice that our REST docs mention the non http version:
All REST API responses include the
X-Shopify-Shop-Api-Call-Limit
header, which shows how many requests the client has made, and the total number allowed per minute.
Looking back at some of my own past tests though, I do see both returned so I can definitely see where the confusion is. This is from a request I made last April:
I’ll follow up here again as soon as I know what happened/changed
Hey @jason_engage,
Following up here, I can confirm that the reason this was removed was to clean up the duplicate headers. We are aware now that this has affected some partners that were relying on it so thank you so much for letting us know. I’m not sure if it will be re-instated, so going forward using the non-http version for checking rate limits is the recommended way to go.
Since you’ve already made the change you should be good to go from here on out.
I think many of us have old code and this type of header is something thats buried in some modules that we wouldn’t update frequently. I guess just a 24-48 hours heads up email would have been the friendliest approach.
thanks for the follow up. Cheers