Prerequisites and API environments
Choose the hosted or local Conduit API and prepare curl, Hurl, Bruno, or frontend tooling.
Choose the API environment that matches your job, then confirm the tools you will use to send requests or validate a backend. The hosted demo is the quickest way to exercise a frontend; a local API is the right target while you implement a backend.
Choose an environment
The hosted API is available at https://api.realworld.show/api and does not require an API key. Its public content is intentionally limited: logged-out users see demo-account content, and logged-in users see their own content plus demo-account content. Use test data when registering accounts.
For backend development, point the test suites at your local server. The runner examples use http://localhost:3000/api, but the Hurl script itself defaults HOST to http://localhost:8000 when you do not set it. Set the full API base URL, including /api, to match your server.
Prepare your tools
You need a shell with curl for the request examples. To validate a backend, install the Hurl CLI or the Bruno CLI according to its project documentation; this project supplies the suites and runner scripts but does not prescribe an installation method. For frontend work, use the HTTP client built into your chosen framework and configure its base URL from the same environment decision.
Set one base URL for the workflow you are about to run.
# Hosted API for frontend or API-client work
HOST="https://api.realworld.show/api"
# Local backend alternative
# HOST="http://localhost:3000/api"The value includes /api, so an endpoint path such as /users resolves to the complete request URL.
Use curl to request the tags collection, which does not require a token.
curl --fail-with-body --silent --show-error "$HOST/tags"The hosted API returns a successful JSON response. A local backend is ready for the next step when it responds on the same base path; if it does not, check that the server is running and that HOST includes the correct port and /api prefix.
From the API specification directory, set HOST and run the Hurl runner.
HOST="http://localhost:3000/api" ./run-api-tests-hurl.shThe script passes the URL to Hurl as the host variable, runs the selected files serially, and generates a unique uid by default. With no file arguments, it runs the Hurl files in the suite. The Hurl files are the behavioral source of truth.
Run the generated Bruno collection against the same local base URL.
HOST="http://localhost:3000/api" ./run-api-tests-bruno.shThe runner enters the bruno/ directory, skips the environments folder, and runs each collection folder with the local environment. Its sandbox defaults to safe; set BRUNO_SANDBOX only when your Bruno workflow requires another documented sandbox value.
Use the hosted URL for the first authenticated request, or use the local URL for backend conformance. If you use Bruno interactively, open the bruno/ folder in the Bruno app and inspect requests against your selected environment.
The observable result is a stable base URL and a tool path that points every request at the same API implementation.
Important source precedence
The Bruno collection is generated from Hurl and kept in sync through CI. When a generated Bruno request and a Hurl assertion appear to differ, use the Hurl suite as the source of truth and investigate the generated collection rather than changing the contract from the Bruno output.