Is Bruno Request-First? When You Need a Design-First Tool

Bruno is request-first by design. Here's when a design-first, OpenAPI-native workflow wins, and how Apidog Spec-First Mode delivers it.

Ashley Innocent

Ashley Innocent

2 June 2026

Is Bruno Request-First? When You Need a Design-First Tool

Apidog for Enterprise

On-Premises Deploy

SSO & RBAC

SOC 2 Compliant

Explore Apidog Enterprise

Is Bruno request-first? Yes. Bruno is built around composing, organizing, and sending HTTP requests. You create a collection, add requests, write them in its .bru files, run them, and version the whole thing in Git. That model is fast, Git-friendly, and a genuine pleasure when you’re exploring an API that already exists.

But “request-first” and “design-first” answer different questions. Request-first asks: how do I call this endpoint? Design-first asks: what should this endpoint be, before anyone writes code to serve it? The gap between those two questions is exactly where teams building new or shared APIs start to feel friction. This article walks through the Bruno request-first vs design-first trade-off honestly, then shows where an OpenAPI-native, design-first workflow earns its place.

button

Request-first vs design-first, quickly

The two approaches aren’t competitors so much as different starting points. Here’s the short version.

Dimension Request-first (Bruno) Design-first (OpenAPI-native)
Starting artifact A request you can send A contract (OpenAPI spec)
Best for Exploring and testing existing APIs Designing new/shared APIs before code
Source of truth The collection of requests The spec
Cross-team review After endpoints exist Before a line of server code
Visual design surface None by default Visual designer + schema editor
Drift risk Collection can lag the real API Spec stays the single contract
Git story Strong (plain-text .bru) Strong when the tool syncs spec to Git

Neither column is “wrong.” The right choice depends on whether your API already exists or whether you’re defining it now.

Bruno’s request-first model

Bruno does its job well, and it’s worth being precise about what that job is. It stores requests as plain-text .bru files in a folder you own. There’s no mandatory cloud account, no proprietary sync, no background telemetry you have to opt out of. For developers who want their API client to behave like the rest of their codebase, that’s a real advantage, and it’s the core of the Git-native API workflow many teams have adopted.

Where Bruno shines:

If your work is consuming and verifying APIs that already exist, request-first is often the most direct path. We’ve said as much before when comparing it to broader platforms in this Bruno alternative breakdown.

The cost of no design or contract layer

The trade-off shows up the moment the API doesn’t exist yet, or the moment more than one team has to agree on what it should look like.

No visual designer. Request-first tools express endpoints as requests, not as a model of resources, schemas, and responses. There’s no canvas where a product engineer, a backend lead, and a frontend developer can look at the same resource shape and agree on it before anyone writes a handler. Designing in requests means designing in examples, and examples don’t enforce structure.

Contract drift. When the collection is the source of truth, it only reflects what someone has already called. The real API can change, add a field, deprecate a parameter, tighten validation, and the collection quietly falls behind until a test fails. A spec-centric workflow inverts this: the contract is the reference, and the implementation is checked against it.

Harder cross-team review before code. Reviewing a folder of requests tells you how endpoints are being called today. It doesn’t give a reviewer a clean, declarative document to approve before implementation. For teams that gate API changes through design review, the absence of a first-class contract makes that review slower and more ad hoc.

None of this makes Bruno a poor tool. It makes Bruno a request-first tool used outside the job it’s request-first for.

When design-first wins

Design-first pays off in three situations in particular:

The common thread: design-first wins when the API is a shared interface that needs agreement before code, not just a service you’re poking at after it ships.

Apidog design-first plus Spec-First Mode

Apidog is built design-first, and the relevant point here is that you don’t have to give up the OpenAPI-native, Git-friendly experience to get it.

You can work two ways against the same project. Tvisual designer for defining endpoints, request and response schemas, and reusable components without hand-writing YAML, which is what most people picture when they hear “design-first.” And there’s Spec-First Mode, a code editor where you author the OpenAPI document directly, with the spec as the literal source of truth. The two stay in sync, so a backend engineer can live in raw OpenAPI while a product engineer works on the canvas, and they’re editing the same contract.

Spec-First Mode also supports two-way Git sync: the spec lives in your repository as a real file, changes flow in both directions, and your API design travels through the same pull requests and review as your code. That’s the Git-native property Bruno users value, applied to the contract rather than to a collection of requests. The full mechanics are in the Spec-First Mode documentation.

The result is one workflow that covers both questions, design the contract first when you need to, and still test against it like a request-first client when the endpoints are live. For a deeper look at where these models meet, see spec-first vs design-first in Apidog.

Choosing by team maturity

A simple way to decide: match the tool to where your API is in its life, not to a preference.

The honest read on Bruno request-first vs design-first is that maturity, not taste, usually decides. Teams tend to start request-first and grow into design-first as their APIs become contracts other people rely on.

FAQ

Is Bruno request-first or design-first?

Bruno is request-first. Its core model is composing, organizing, and sending requests stored as plain-text files, which is ideal for exploring and testing APIs that already exist. It doesn’t center on authoring an OpenAPI contract before the API is built.

Can I do design-first work in Bruno?

Not natively in the way a spec-centric tool does it. Bruno focuses on requests rather than on a visual designer or an OpenAPI document as the source of truth. If you need to define and review a contract before code, a design-first, OpenAPI-native tool fits that job better.

Do I have to give up Git-friendliness to go design-first?

No. The Git-native property, plain-text files in your repo, readable diffs, review through PRs, can apply to the spec itself. Apidog’s Spec-First Mode keeps the OpenAPI document in your repository with two-way sync, so design-first doesn’t mean leaving Git behind.

button

Explore more

What Does It Mean to Treat Your API Spec as Code?

What Does It Mean to Treat Your API Spec as Code?

Treat your API spec as code: version, diff, and review OpenAPI in Git. How spec-as-code makes the OpenAPI file your single source of truth.

2 June 2026

Spec-First or Design-First: Which Apidog Mode Should You Use?

Spec-First or Design-First: Which Apidog Mode Should You Use?

Spec-first or design-first? Compare Apidog's two API modes by Git workflow, editor, and team type, and learn when to switch between them.

2 June 2026

What Is Spec-First API Development?

What Is Spec-First API Development?

Spec-first API development, explained with a real OpenAPI example. Generate mocks, tests, and docs from one spec, and do it in Apidog.

2 June 2026

Practice API Design-first in Apidog

Discover an easier way to build and use APIs