The table below consists of a list of common user agent strings and the tools or libraries they are associated with.
The HTTP spec asks clients to identify themselves by providing a header called "User-Agent". This header's history is pretty chaotic, but the spec does a good job detailing how the header should actually work.
This document lists some of the more common user agent strings that an API might encounter. If you find any are missing, feel free to add them via pull request or create an issue!
By tracking the user agent headers received by your API you can get a sense for what languages and libraries are used by your developers. If one language or library is used by many different API consumers, it might be worth supporting that language with an official API library.
Note I do not plan on listing out every possible version number, so you will need to substitue out the version numbers for wildcards.
Source | Example User Agent String | Description | Can be overriden by a developer? |
---|---|---|---|
Guzzle | "Guzzle/4.0 curl/7.21.4 PHP/5.5.7", "Guzzle/4.0 PHP/5.5.7" | HTTP library for PHP. The first one uses curl bindings, and the second uses native PHP HTTP functionality | Yes |
Requests | python-requests/2.12.4 | HTTP library for Python | Yes |
Curl | curl/7.47.0 | An old, trusted HTTP request tool written in C. | Yes |
Insomnia REST client | insomnia/5.0.20 | Insomnia is a cross platform HTTP request tool intended to help with API development | Yes |
Postman | TBD | Postman is a popular cross platform HTTP request tool intended to help with API development | TBD |
Paw | TBD | A common mac-only HTTP request tool intended to help with API development | TBD |
Source | Description | Can be overriden by developer? |
---|---|---|
PHP Curl | PHP's standard curl bindings do not assign a default user agent | Yes |
Node HTTP(S) | Node's standard request library for HTTP and HTTPS requests do not assign a default user agent | Yes |
Libraries
- .Net
- Java
- Android
- iOS
- Go
Clients
- Postman
- Paw