Showing results for 
Search instead for 
Did you mean: 

Push Subscription 400 error

Mt. Kenya

Trying to create a push subscription in basic php for authorised users but getting HTTP 400 error


Connection #0 to host left intact HTTP Status Code: 400 Error Response Body: Array ( [message] => Bad Request [errors] => Array ( [0] => Array ( [resource] => PushSubscription [field] => bad [code] => request ) ) ) Strava API Response: {"message":"Bad Request","errors":[{"resource":"PushSubscription","field":"bad","code":"request"}]} HTTP Status Code: 400 Error Response Body: Array ( [message] => Bad Request [errors] => Array ( [0] => Array ( [resource] => PushSubscription [field] => bad [code] => request ) ) )


Mt. Kenya


new day... new attempts... and finally! I managed to solve the problem!

What I changed:

1. On the website, the Example Validation Request I was receiving didn't look like this:


but like this:



hub.verify_token -> hub_verify_token

hub.challenge -> hub_challenge

hub.mode -> hub_mode

2. This is important because during the Subscription Creation Request execution, the Strava server immediately validates my webhook using the Subscription Validation Request, and I hadn't implemented handling for that yet (yesterday).

3. In response to the Subscription Validation Request, even though I received the hub_challenge parameter, I still have to return a JSON response:


{"hub.challenge": "XXXXXXXXXXXXXXXXX"}


where XXXXXXXXXXXXXXXXX is the string sent by the Strava server via the Subscription Validation Request in the GET parameter hub_challenge.

All of the above changes resulted in success, as I received a Webhook ID from the Strava server, indicating the successful registration of my webhook in Strava.

I hope my notes will help other people who encounter a similar issue. Thanks for your attention, my mistake is resolved.

Best regards!

Mt. Kenya

Hi, I have the same issue, it seems like an error on Strava's side because I'm executing the command (in the terminal of my website server) exactly the same as on the documentation page



curl -X POST \
      -F client_id=XXXXXX \
      -F callback_url=ZZZZZZZZZZZZZ \
      -F verify_token=STRAVA


XXXXXX - Client ID of my application from
YYYYYYYYYYYYYYYYYYYYYYYY - Client Secret of my application from
ZZZZZZZZZZZZZ - callback URL of my website domain provided in the Authorization Callback Domain field during the editing of my application on

The response I get is:


{"message":"Bad Request","errors":[{"resource":"PushSubscription","field":"bad","code":"request"}]}


I would greatly appreciate your assistance, Strava Developers.

Thank you!