What was the motivation behind creating HTTL?
Well, that’s actually a good question: why create a new language for something relatively simple, especially when so many good tools already exist? As usual, each tool has its own benefits and drawbacks, and after a long search for the one that best fit my needs, I decided to create my own.
Here are the main challenges that this new language aims to address:
- Simplicity: Each clause, operator, and language construct should be as streamlined as possible, allowing you to write less code.
For example, you don’t need to write something like
get {{baseUrl}}/api/user
. Instead, you can define the base url at the top of your file and simply useget /user
.
- Flexibility: There should be no limit to the number of requests that can be run at once.
For example, you can run multiple requests within a single file and use the results of one request in another—potentially applying data transformations in between, etc.
- Modularity: It’s hard to imagine any modern language without the ability to separate code into different files, right?
For example, it’s convenient to define the authentication logic in one file and then import it for use in other files.
- OpenAPI Integration: This is my favorite one — there should be an easy way to point to an OpenAPI specification and benefit from built-in type checking and IntelliSense.
- Testability: The language should support an easy way to test the output, without requiring any JavaScript inlining or other complex steps.
- Extensibility: The language should be easy to extend, allowing you to write your own plugins.
All of this led me to the idea of creating this language because I believe there’s no better tool than code that runs other code.
I’ve stopped using Postman since the beginning of 2025. :)