Open Specification for API Collections

2 min read Original article ↗

Version 0.1 Now Available

An open format for API collections

A modern, developer-first specification pioneered by Bruno for defining and sharing API collections. Designed for simplicity and collaboration.

Read the Spec Explore Schema

info:
  name: Get Orders
  type: http
  seq: 1

http:
  method: GET
  url: "https://echo.usebruno.com/orders"

settings:
  encodeUrl: true
  timeout: 0
  followRedirects: true
  maxRedirects: 5

One Spec, Many Possibilities

A clear, open spec you can build on, adapt, and integrate anywhere.

📄

Plain YAML format

No proprietary formats. No binary files. Just readable YAML that you can edit in any text editor, diff in git, and understand at a glance.

http:
  method: POST
  url: "https://echo.usebruno.com/users"
  headers:
    - name: "Authorization"
      value: "Bearer {{token}}"
  body:
    type: json
    data: |-
      
        "name": "John Doe",
        "email": "john.doe@example.com"
      

🔌

Works everywhere

Import into Bruno, execute via CLI, automate in CI/CD, generate docs, edit and run in VSCode - OpenCollection fits into every part of your workflow.

Bruno CLI CI/CD Docs VSCode

🔧

Variables

Define once, use everywhere. Switch between environments instantly. Keep secrets safe. Make your API collections truly portable.

{{baseUrl}}/api/v1/users

https://api.myapp.com/api/v1/users

Built-in testing

Write tests that actually run. Validate responses, check status codes, and ensure your APIs work as expected. CI/CD friendly out of the box.

Status code is 200

Response time < 500ms

Contains user data