QUICK START GUIDE
Up and running in 5 minutes
Hephaestus runs inside Postman as a collection-level script. No npm install, no build step โ just paste and run.
Prerequisites
You need Postman (free) and optionally Newman for CI runs:
- Postman โ download the desktop app (v10 or newer)
- Clone or download this repo to get templates and scripts
- Optional for CI:
npm install -g newman
npm run docs, npm run compare, etc.), run npm install in the repo root once.
Create or open your collection
You can start fresh or add Hephaestus to an existing collection.
- In Postman, click New โ Collection
- Name it (e.g. My API)
- Alternatively, import
collection/hephaestus-template.postman_collection.jsonfrom this repo โ it comes pre-wired
Load the engine into collection variables
The engine lives in two collection variables: hephaestus.v3.pre and hephaestus.v3.post. The easiest way is to run the included setup request:
- Open the ๐ ๏ธ Hephaestus System folder in the template collection
- Run ๐ง engine-update โ it fetches the latest engine from GitHub and saves it to collection variables
Or do it manually via the Collection Variables tab โ paste the contents of engine/pre-request.js into hephaestus.v3.pre and engine/post-request.js into hephaestus.v3.post.
// This is already in the template collection's Pre-request script. // It loads the engine from GitHub on first run. const version = pm.collectionVariables.get('hephaestus.version') || 'main'; // Engine is auto-loaded by engine-update.js setup request
Configure hephaestus.defaults
Open Collection Variables and set hephaestus.defaults to a JSON config. This applies to all requests in the collection.
{
"baseUrl": "https://api.example.com",
"auth": { "enabled": false, "type": "none" },
"expectedStatus": [200, 201, 202],
"maxResponseTime": 2000,
"contentType": "json",
"snapshot": { "enabled": false, "mode": "non-strict" },
"secrets": ["token", "password", "secret", "key"],
"ci": false,
"logLevel": "normal",
"softFail": false,
"envRequired": []
}
Copy the full template from setup/defaults.json in the repo. Use the init wizard to generate it interactively:
npm run init # interactive wizard โ generates defaults.json + environment template
Add your first request
Every request follows the same pattern: override object in the Pre-request and Test scripts, then eval() to run the engine.
const override = { // Optional: override baseUrl for this specific request // baseUrl: "https://other-api.example.com", // Auth override (if different from defaults) // auth: { enabled: true, type: "bearer", token: "{{prod.token}}" }, }; eval(pm.collectionVariables.get("hephaestus.v3.pre"));
const override = { expectedStatus: 200, maxResponseTime: 1000, // Check response structure assertShape: { "data.id": "number", "data.name": "string", "error": "absent", }, // Save a value for the next request varsToSave: { userId: { path: "data.id", scope: "collection", name: "lastUserId" } }, }; eval(pm.collectionVariables.get("hephaestus.v3.post"));
templates/. Copy them as starting points for every new request. The engine is the only thing that changes between releases โ your override stays the same.
Run & verify
Hit Send in Postman. Open the Console (View โ Show Postman Console) to see the Hephaestus output:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HEPHAESTUS v3.8.0 ยท POST-REQUEST
โ ๐
2026-04-07 12:34:56 UTC
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ
โ ๐ GET Get User
โ ๐ https://api.example.com/users/42
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ
โ โ
STATUS 200 โ OK
โ โฑ 124 ms ๐ฆ 1.2 KB ๐ JSON
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ
โ ๐ค RESPONSE PREVIEW
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
{ "data": { "id": 42, "name": "John Doe", ... } }
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐งฉ shape "data.id": number โ
โ ๐งฉ shape "data.name": string โ
โ ๐งฉ shape "error": absent โ
โ ๐พ SAVED 'userId' โ collection โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Check the Test Results tab to see all assertion outcomes. Green = pass. If something fails, you'll see exactly which field and why.
Run in CI with Newman
Export your collection and environment from Postman, then run with Newman:
# Install Newman once npm install -g newman # Run collection newman run collection.json \ -e environments/prod.json \ --reporter-json-export results.json \ -r json # View rich summary npm run summary -- results.json # Generate HTML report npm run report -- results.json report.html # Convert to JUnit XML for CI npm run ci-to-junit -- results.json junit.xml
bash scripts/docker-run.sh -c collection.json -e env.json -o reports/
See the full Newman + CI Guide for GitHub Actions, GitLab CI, and Jenkins examples.
What's next?
Now that you're up and running, explore the full feature set: