A REST scripting language
I still dislike Postman. Heavy GUI tools for API testing always feel like they’re fighting against the developer’s workflow. You have to click through menus, manage collections in a proprietary format, and it’s a nightmare to version control.
And now, with the ubiquity of AI chat bots, developers want their coding agents to be able to handle all aspects of their projects. That means more documentation, configs, and resources living in your codebase.
I wanted something that:
To achieve these goals, I decided to make a programming language specialized for making HTTP requests. Simple script files can live in your codebase, alongside your project. For here, you and your coding assistant can easily read and edit it in your editor, run it from your terminal or a VSCode extension, and collaborate on it with git.
Cleaner than Postman. Clearer than cUrl.
I first started ideating on Bell back in 2024. The idea was to create a Domain Specific Language (DSL) that was as readable as a cURL command but as powerful as a full testing suite.
Now, with AI to help me with the more complex parts of the parser and runtime, I’ve brought that proof-of-concept to life.
Bell scripts are simple .bel files. You define your endpoint, headers, and body using a clean, declarative syntax.
url "https://api.example.com/v1/login"
body {
"username": "admin",
"password": "{env.ADMIN_PASSWORD}"
}
POST
That’s it!
In this MVP phase, it was important to build a little bit of every aspect of what this language could be. That meant in a monorepo we created:
core package for bell-langvscode package for the VSCode extensiondocs app that serves the website explaining belltest-app app for local testingI also included:
It was fun, but I don’t plan on pursuing this further.
There are plenty of other projects out there that do this same thing, like:
My new favorite of which is Bruno which also positions itself as a git-first api client. It works less like a language and more like config files, but the GUI makes exploratory testing easy.
Hurl is probably the most similar to what Bell does, in that Hurl files execute sequentially and store variables like a programming language.
I feel that with some support from other devs, Bell could become a viable option for testing APIs. It would come down to a matter of preference for how the language is shaped.