Skip to main content
FEATURE 03 / 11

API workflows that run inside the docs — Arazzo included.

A scenario is a declarative sequence of requests: create a pet, place an order, check the order — with values chained from one response to the next request. It ships with your documentation and runs in the reader’s browser, in the same try-it console the rest of the docs use.

demo.apiglow.dev/#/scenarios/order-a-pet · petstore.yaml
The Order-a-pet scenario after Run all: three steps each marked passed with status code and timing, values chained from one response to the next request. The Order-a-pet scenario after Run all: three steps each marked passed with status code and timing, values chained from one response to the next request.

REAL SCREENSHOT, SHOWN AT 1:1

Declarative, never scripted.

The industry answers “chain requests” with JavaScript. ApiGlow answers “click the response”: a scenario is data, not code, and there is no scripting surface anywhere in the product — by security design, not just taste. What a scenario can express is exactly what you can point at.

Built by capture, chained by click.

Nobody hand-writes scenario JSON. Send a request in the try-it console — or pick one from history — and add it as a step. Click a key of the observed response to extract it: {{petId}} ← /id, done. Assertions come from the observed response or from the declared schema, one click each; a step missing a variable suggests the extraction that would provide it.

Before the first send, a prerequisites panel answers “why will this fail” — the environment, variables and auth the scenario needs, checked upfront.

Step 2 of a scenario: the petId variable extracted in step 1, and the passing 200 response. Step 2 of a scenario: the petId variable extracted in step 1, and the passing 200 response.
[02]A VARIABLE EXTRACTED FROM THE STEP BEFORE

A report for machines, a tutorial for humans.

“Run all” executes the sequence and produces a per-step report: status, assertions, extracted values. Step-by-step mode is the differentiator — each step opens in the real try-it console, pre-filled, for the reader to inspect and send themselves. An authored scenario becomes an interactive tutorial; your onboarding flow is no longer a wall of prose.
The scenario toolbar: Run all, Step by step, Export and Duplicate. The scenario toolbar: Run all, Step by step, Export and Duplicate.
[03]RUN ALL, OR STEP BY STEP

Share without surprises.

A scenario travels as a JSON file or a link. The receiver sees a preview before importing, nothing ever runs automatically, and no sensitive value is ever inside — credentials stay in each reader’s own environments.

Arazzo, both directions — and shipped with the docs.

Scenarios speak Arazzo, the OpenAPI Initiative’s workflow format — imports accept 1.0 and 1.1 documents, exports write 1.1.0. As of August 2026, every other Arazzo runner lives in a CLI or a CI pipeline — no other documentation product executes Arazzo in the browser.

Declared in the config, scenarios ship with the documentation itself: readers find them in the nav, and pinned: true features one on the home page — typically the auth flow you want at hand on arrival. An entry can even be the Arazzo file your CI already runs, declared as it stands. features.scenarios: false removes the entire feature for installs that don’t want it.

A scenario shipped with the docs
{
  "scenarios": [
    {
      "id": "onboarding",
      "title": "Onboarding",
      "url": "/scenarios/onboarding.json",
      "pinned": true
    },
    { "id": "payments", "url": "/workflows/payments.arazzo.yaml" }
  ]
}

One workflow, three readers.

The same document renders as an interactive tutorial, publishes as an agent recipe — and comes back as a pipeline job. An “Automate this scenario” panel on every scenario page generates a ready-to-commit CI job that runs the scenario’s Arazzo document through a third-party runner: GitHub Actions or GitLab CI, Redocly Respect or Jentic’s Arazzo Runner.

Variables travel as names wired to your CI’s secret store — the snippet carries no value, ever. And the panel names compatibility gaps before you copy anything: a runner that claims an older Arazzo revision, or none at all, is said so in plain words. The product states its own boundary: “This documentation stays a static page — it schedules nothing and runs nothing on your behalf.”

The Automate-this-scenario panel: a compatibility warning about the runner's Arazzo revision, above the generated GitHub Actions job. The Automate-this-scenario panel: a compatibility warning about the runner's Arazzo revision, above the generated GitHub Actions job.
[06]THE GENERATED JOB — GAPS NAMED BEFORE YOU COPY
The generated GitLab job — secrets as names only
# .gitlab-ci.yml
# Define these as masked CI/CD variables:
#   AUTH_TOKEN
create-a-payment:
  image: python:3.12
  script:
    - pip install arazzo-runner
    - arazzo-runner execute-workflow arazzo/create-a-payment.arazzo.json
      --workflow-id create-payment --inputs "{\"auth.token\": \"$AUTH_TOKEN\"}"