Skip to main content
Bruno provides multiple ways to create and manage API requests. This guide covers everything from basic request creation to advanced organization techniques.

Creating a New Request

There are several ways to create a new request in Bruno:

From the Sidebar

1

Right-click on a Collection or Folder

In the sidebar, right-click on the collection or folder where you want to create the request.
2

Select 'New Request'

Choose “New Request” from the context menu. You can also use the keyboard shortcut Cmd/Ctrl + N.
3

Enter Request Details

Provide a name for your request and select the request type (HTTP, GraphQL, gRPC, or WebSocket).

From the Collection Actions

Click the three-dot menu (IconDots) next to any folder and select “New Request” to create a request in that folder.

Quick Request Creation

Use the CreateUntitledRequest component to quickly create a temporary request for testing:
Untitled requests are transient and won’t be saved until you explicitly save them using Cmd/Ctrl + S.

Request Components

Each request in Bruno consists of several configurable components accessible through tabs in the HttpRequestPane:

Query URL

The QueryUrl component allows you to configure your endpoint:
https://api.example.com/users
Use double curly braces {{variable_name}} to reference environment variables or collection variables.

HTTP Methods

Bruno supports all standard HTTP methods:
  • GET: Retrieve resources
  • POST: Create new resources
  • PUT: Update entire resources
  • PATCH: Partially update resources
  • DELETE: Remove resources
  • HEAD: Retrieve headers only
  • OPTIONS: Get supported methods

Request Tabs

The HttpRequestPane component provides organized tabs for request configuration:

Params Tab

Configure query parameters using the QueryParams component:
key
string
Parameter name (e.g., page, limit, filter)
value
string
Parameter value. Supports variable interpolation with {{variable}}.
enabled
boolean
default:true
Toggle to enable/disable individual parameters without deleting them.
Example:
KeyValueEnabled
page1
limit
sortcreated_at

Body Tab

The RequestBody component supports multiple body types:
{
  "name": "{{user_name}}",
  "email": "[email protected]",
  "role": "admin"
}
Uses CodeMirror with application/ld+json mode for syntax highlighting.

Headers Tab

Configure HTTP headers using the RequestHeaders component:
Example Headers
Content-Type: application/json
Authorization: Bearer {{access_token}}
X-API-Key: {{api_key}}
User-Agent: Bruno/1.0
Headers configured at the collection or folder level are inherited by child requests. You can override them at the request level.

Other Tabs

The request pane includes additional tabs for advanced configuration:
  • Auth: Authentication configuration (see Authentication)
  • Vars: Request and response variables (see Vars component)
  • Script: Pre-request and post-response scripts (see Scripts)
  • Assert: Inline assertions using the Assertions component
  • Tests: JavaScript test suite (see Tests)
  • Docs: Markdown documentation for the request
  • Settings: Request-specific settings and tags

Organizing Requests

Folders

Organize related requests using folders:
1

Create a Folder

Right-click a collection, select “New Folder”, and name it (e.g., “Authentication”, “Users”, “Posts”).
2

Nest Folders

Folders can be nested to create hierarchical structures. The CollectionItem component handles rendering with proper indentation.
3

Inherit Settings

Configure auth, headers, scripts, and variables at the folder level to apply them to all child requests.

Drag and Drop

The CollectionItem component supports drag-and-drop:
  • Drag requests between folders
  • Reorder requests within a folder
  • Move requests to different collections
Bruno uses React DnD for drag-and-drop functionality. Items can be dropped “adjacent” (before/after) or “inside” folders.

Sequence Ordering

Requests are automatically assigned a seq (sequence) number for ordering. The sidebar uses sortByNameThenSequence() to display items.

Request Examples

For HTTP requests, you can create response examples to document different scenarios:
1

Create Example

Right-click a request and select “Create Example”. This uses the CreateExampleModal component.
2

Configure Example

Provide a name, description, and configure the expected response (status, headers, body).
3

View Examples

Examples appear as collapsible items under the request in the sidebar, rendered by ExampleItem component.
Example in .bru file
meta {
  name: Get User
  type: http
}

get {
  url: {{api_url}}/users/{{user_id}}
}

example:success {
  status: 200
  body: {
    "id": 123,
    "name": "John Doe",
    "email": "[email protected]"
  }
}

example:not-found {
  status: 404
  body: {
    "error": "User not found"
  }
}

Saving Requests

Cmd/Ctrl + S
The saveRequest action in providers/ReduxStore/slices/collections/actions handles saving requests to the filesystem.

Cloning Requests

Duplicate requests to create variations:
1

Right-click Request

Right-click the request you want to clone in the sidebar.
2

Select 'Clone'

The CloneCollectionItem modal will open, allowing you to name the cloned request.
3

Edit Clone

Modify the cloned request as needed. All configuration is copied from the original.

Running Requests

Send requests using multiple methods:
Click the “Send” button in the request pane.
The sendRequest action uses the Axios HTTP client to execute requests and displays results in the ResponsePane.

Best Practices

Name requests clearly (e.g., “Create User”, “Get Orders by Date”) to make collections self-documenting.
Group related requests in folders by feature or API resource (e.g., “Users”, “Products”, “Orders”).
Configure common auth, headers, and scripts at the collection or folder level to avoid duplication.
Parameterize URLs, tokens, and values using {{variables}} for flexibility across environments.
Create response examples to document expected API behavior for different scenarios.

Next Steps

Request Types

Learn about REST, GraphQL, gRPC, and WebSocket requests

Authentication

Configure authentication methods for your requests

Scripts

Automate workflows with pre-request and post-response scripts

Tests

Write test assertions to validate API responses

Build docs developers (and LLMs) love