I think this is pretty common.
AWS, for example, has SDK's that do this - all the 3rd party ones and all the official ones all use different Agent headers, including the version number of the SDK.
Most of the SDK's I've built against REST services do similar. It's really nice on the back end, as you can tell where your traffic is coming from, identify versions and bugs, and generally extract quite a bit more telemetry.
Custom Headers are another option, but issues with proxies that strip headers and platforms that don't support custom headers quickly arise.
Now, I wouldn't do this for "Each API" as that seems like overkill.
Cheers,
Chris