Skip to content
duxt

The request client

Off until a site turns it on, and pointed only at what the site declared public.

A request page is static until a base URL is declared. That is the decision, not a gap: a Bruno collection is written against whatever its author could reach — routinely a staging host behind a VPN, or a localhost port — so a send button aimed at it offers the reader a failure the page cannot explain, and a site that guessed a public host would be inventing one.

{
  type: 'bruno',
  path: 'api',
  label: 'API',
  options: {
    tryIt: {
      baseUrl: 'https://api.example.com',
      variables: { tenant: 'demo' }
    }
  }
}

With that, a request whose URL is {{baseUrl}}/{{tenant}}/orders gets a client pointed at https://api.example.com/demo/orders.

When the API is served by the documentation site itself, write baseUrl: '/'. The request then goes to whatever origin served the page — the deployed host in production, localhost in development — and never becomes a cross-origin request that the browser refuses before it is sent.

Only what the site declared

variables is an allow-list and nothing else is guessed. A URL still holding a variable the site said nothing about gets no client at all — half a resolved URL is a request to the wrong place.

Bruno's own path parameters are different and always work: :reference in a URL becomes an editable box, prefilled with whatever params:path committed.

Where the credentials go

The client is the same one the OpenAPI reference uses, so the answer is the same one: everything typed into it lives in the component's own state and nowhere else. It is never written to storage, never sent to the site serving the page, and never proxied — the request goes from the reader's browser straight at the API.

A header duxt withheld still gets a box, and the box opens empty. Prefilling it would put the collection author's live token into every reader's form, which is the leak the withholding exists to stop arriving by the other door.

Was this page helpful?