Convert WSDL to Bruno Collection
Bruno supports importing WSDL (Web Services Description Language) files to automatically generate SOAP API collections. This feature is particularly useful when working with legacy SOAP-based web services, as it eliminates the need for manual configuration of SOAP requests.
What Gets Generated
When you import a WSDL file, Bruno automatically:
- Parses the WSDL structure and extracts all available service operations
- Creates a structured collection with operations organized as individual
.brurequests - Generates SOAP envelope templates for each operation based on the XML schema definitions
- Pre-configures required headers including
Content-Type: text/xmlandSOAPAction - Includes XML schema documentation as comments within the request body
Import WSDL via UI
Step 1: Access Import Collection
- Click on the three-dot menu next to any collection in the sidebar
- Select Import Collection from the dropdown menu

Step 2: Choose WSDL Option
- In the Import Collection dialog, select the WSDL option

- You can either:
- Click the upload area to browse for a local
.wsdlfile - Drag and drop a WSDL file directly into the dialog
Step 3: Import and Review
- After selecting your WSDL file, Bruno will parse it and generate the collection
- A new folder will be created containing all the SOAP operations
- Each operation will be a separate request with a pre-configured SOAP envelope
Import WSDL via CLI
You can also import WSDL files using the Bruno CLI, which is useful for automation and CI/CD workflows.
Basic Command
bru import wsdl path/to/service.wsdl --output ./my-collection
Example
# Import a WSDL file
bru import wsdl ./services/calculator.wsdl --output ./calculator-collection
# Import with nested directory structure
bru import wsdl ./wsdl-files/user-service.wsdl --output ./collections/soap/users
Programmatic Conversion
For advanced use cases, you can use the @usebruno/converters package to programmatically convert WSDL to Bruno collections.
Installation
npm install @usebruno/converters
Basic Usage
const { wsdlToBruno } = require('@usebruno/converters');
const { readFile, writeFile } = require('fs/promises');
async function convertWsdlToBruno(wsdlFile, outputFile) {
try {
// Read the WSDL file
const wsdlContent = await readFile(wsdlFile, 'utf8');
// Convert to Bruno collection
const brunoCollection = await wsdlToBruno(wsdlContent);
// Write the output
await writeFile(outputFile, JSON.stringify(brunoCollection, null, 2));
console.log('WSDL conversion successful!');
} catch (error) {
console.error('Error during WSDL conversion:', error.message);
}
}
// Convert WSDL to Bruno
convertWsdlToBruno('path/to/service.wsdl', 'path/to/bruno-collection.json');
Generated Request Structure
Each SOAP operation in the imported collection will have the following structure:
Request Headers
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://example.com/ServiceName/OperationName"
Request Body
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<!-- Optional header elements -->
</soap:Header>
<soap:Body>
<OperationName xmlns="http://example.com/namespace">
<!-- Parameters based on WSDL schema -->
<Parameter1>value</Parameter1>
<Parameter2>value</Parameter2>
</OperationName>
</soap:Body>
</soap:Envelope>