Skip to content

Studio · Preview

Edit, run and debug suites in a native app.

A macOS app for the request files you already have. Edit YAML with live validation, run one request or a whole collection, and read every check, retry and timing.

Screenshots

  1. A finished collection run of the Payments API: 14 of 15 requests passed, one failed after 2 retries. The charges folder is expanded and shows each request with its status code, duration bar, checks and attempts.
    Run a whole collectionEvery request in the folder, grouped as on disk, with passed, failed and retried counts and a duration bar per request. Re-run only the failures, or export the report.
  2. The get-charge.yaml request open in the editor next to the inspector: 200 OK in 200 ms, the JSON response body, seven passing checks for status, content-type, body fields and response time, and a timing bar.
    Read the responseThe body, headers and timing of the last run, and each check from the expect block next to the YAML that asked for it.
  3. A failed Capture charge request: the editor marks the two failing expect lines, the Checks tab shows expected "succeeded" against actual "pending" and expected true against actual false, a diff of the response body, and a retry timeline with two 503 attempts followed by a 200.
    See why a check failedExpected against actual for each failed check, a diff of the response body, and every retry attempt with its status, duration and wait.
  4. The YAML editor with the key backof underlined as a warning. A popover reads: Unknown key backof (did you mean backoff?) and offers the quick fix Rename to "backoff". The Problems panel lists the same warning at line 13.
    Catch mistakes as you typeEverything curl-runner validate looks for is checked in the editor: problems are underlined as you type, and many come with a one-key quick fix.
  5. The Environments screen of the Payments API collection on the Staging tab: BASE_URL, ACCOUNT_ID and API_VERSION come from .env.staging, and SECRET_API_KEY is marked secret with its value masked.
    Environments from your .env filesEach environment is a .env file in the collection. SECRET_ values stay masked, and the ones you enter in the studio are kept in the macOS Keychain, not in the file.
  6. Run history of the Payments API: two collection runs, 14 of 15 and 15 of 15 passed. The latest is compared with the previous run: Capture charge is listed as fixed and the other 14 requests are unchanged.
    Compare with the last runRun history stays on your machine. Pick a run to see what it fixed, what it broke and what got slower than the run before it.

Plain YAML underneath

The studio reads and writes the same request files the CLI runs, so a suite you build here runs unchanged in CI.

charges/capture-charge.yaml
request:
  name: Capture charge
  url: ${BASE_URL}/charges/ch_1042/capture
  method: POST
  headers:
    Authorization: Bearer ${SECRET_API_KEY}
  retry:
    count: 2
    delay: 250
  expect:
    status: 200
    body:
      status: succeeded
      captured: true

Benefits

  • The files you already have

    Open a folder of YAML and it becomes a collection. The studio saves plain YAML back, so the CLI and CI run the same files.

  • Failures you can read

    Expected against actual for every check, a diff of the body and each retry attempt, next to the line that asked for it.

  • Local by default

    Run history stays on your machine, environments come from your .env files and secrets live in the macOS Keychain.

Good for

  1. Writing a new suite with validation as you type
  2. Debugging a failing check against a real response
  3. Comparing a run with the one before it
  4. Switching between local and staging environments