Hey Ryan,
By default, we use the API version set on the Stripe account associated with the API key you use when making the request. You can then override this API version globally when you load our library in Ruby by setting `Stripe.api_version` [1]. This would apply to all API requests made with the library while it's loaded.
Sometimes though you want to set a specific API version for one request without impacting the rest of your code. This is common when you're working on upgrading your integration based on the recent API changes [2] but want to do this one API request at time. In that case, you need to pass the `stripe_version` in the second hash along with your API key (assuming it's not set globally).
To confirm that it works, you can choose a specific API change and then check the response based on what we return. For example, the API version 2015-10-12 [3] shipped a major change that returned an error if you passed invalid parameters in the `card` hash when creating a card token. This means that if you use a recent API version you get an error with the extra parameter but if you force an earlier API version such as 2015-10-01 [4] then no error would be returned.
When using Stripe Connect, the logic is the same. The API key you use here is not the account's API key. It's an access token which represents an API key specific to both your platform and this account. The API version used in that case is always the platform's API version. This means that no matter which API version a connected account is on, your integration will always work as expected as it will be based on your own API version.
For the second question, It is not possible to know which API version you're currently using by looking simply at the response from the API. It's not something we surface. Usually, your account is pinned to an API version and you only upgrade when you need a new feature. I often recommend that you explicitly set an API version in your code though, either globally on per request. This ensure that if you upgrade by mistake in the dashboard, it doesn't impact your Live integration and lets you upgrade in smaller chunks too.
One thing to note is that Events generated on your account and sent to your webhook endpoint are always generated based on the API version on the account. The API version you force via the API won't affect the payload of the event and it will always follow the account's API version at the time of its generation.
Hope this helps!
Remi