Quickstart: n8n
Import one n8n subworkflow, send a review, and resume after the human decision.
This quickstart follows one complete use case: pause an n8n workflow before generated content is published.
Before you create an API key
Have these ready:
- a running n8n instance;
- the n8n workflow step whose output needs review;
- the public HTTPS origin of n8n, such as
https://n8n.example.com.
Human In Circuit uses the n8n Wait node's resume URL as the callback. If your n8n instance is only available on localhost or a private network, Human In Circuit cannot reach it.
1. Import the review subworkflow
Download the Human In Circuit n8n subworkflow
In n8n:
- Create a workflow and choose Import from File.
- Select the downloaded JSON file.
- Save it as Human In Circuit - Request human review.
The subworkflow submits the review, pauses at an n8n Wait node, and returns the completed decision.
2. Create a Human In Circuit project
Open Human In Circuit settings, then go to:
Organization admin → Projects → New
Use a name that matches the business area, such as Marketing. Agents and workflows inside it are identified in each review request.
After creation the project opens automatically. Its permanent project key is shown under Project settings with a copy button, and is also returned by review-creation responses and callbacks.
3. Create an inbox
In the project's Inboxes section, create an inbox such as Article publishing and copy its inbox key from the card. Configure approval behavior, feedback, rejection reasons, routing, and the undo window there. The API request stays lightweight because each accepted review captures an immutable snapshot of this inbox configuration.
4. Generate the API key
In the same project, open the API keys section and choose New.
Enter a key name. Every API key belongs to exactly one project, so the project is
already fixed; the request's inbox_key selects the destination inside it.
For the callback hostname:
- leave it blank while testing to allow any public HTTPS callback URL; or
- enter your n8n hostname, such as
n8n.example.com, to restrict the key to that host.
Use only the hostname—not https:// and not a path.
Generate the key and copy the API key immediately. It is shown only once.
5. Call the subworkflow from n8n
Add an Execute Sub-workflow node to the workflow that needs approval and select the imported Human In Circuit workflow.
Provide:
api_key: the API key you just copied;circuit_url:https://humanincircuit.com;n8n_public_url: the public origin of your n8n instance;title:Approve generated article;inbox_key: the review inbox key created above;summary:An article is ready for editorial review;fields: the editable fields shown below;initial_values: the generated values shown below.
Fields:
[
{
"key": "article",
"label": "Article",
"type": "textarea",
"required": true
}
]
Initial values:
{
"article": "The generated article goes here."
}
See Review fields for every field type and option. You can also paste this body into the Review playground to see the inbox card and full mobile review before running the workflow.
6. What n8n sends
If you build or inspect the HTTP Request node, configure each part separately.
Method
POST
URL
https://humanincircuit.com/v2/reviews
Headers
Authorization: Bearer <YOUR_API_KEY>
Content-Type: application/json
Idempotency-Key: <A_STABLE_WORKFLOW_ITEM_ID>
Idempotency-Key is optional but strongly recommended. Reusing the same value returns the existing review instead of creating a duplicate when n8n retries a step.
JSON body
{
"schema_version": "review.v1",
"external_id": "article-123",
"inbox_key": "article-publishing",
"title": "Approve generated article",
"summary": "An article is ready for editorial review.",
"details_markdown": "Check the claims, tone, and final wording.",
"priority": "normal",
"metadata": {
"article_id": "article-123"
},
"fields": [
{
"key": "article",
"label": "Article",
"type": "textarea",
"description": "Edit the final article that will be published.",
"required": true
}
],
"initial_values": {
"article": "The generated article goes here."
},
"callback": {
"version": "callback.v1",
"url": "https://n8n.example.com/webhook-waiting/..."
}
}
Read the API Reference for all body fields, including priority, risk, attachments, metadata, and callback authentication. Review behavior and rejection reasons come from the workflow gate configured by an administrator.
Accepted response
{
"review_id": "d835e7dc-1f8f-4a75-a57b-0f2bd5826a1f",
"api_version": "v2",
"schema_version": "review.v1",
"callback_version": "callback.v1",
"inbox_revision": 3,
"project_key": "content-publishing",
"inbox_key": "article-publishing",
"status": "pending",
"created_at": "2026-07-23T10:30:00.000Z",
"metadata": {
"article_id": "article-123"
}
}
review_id identifies this review. project_key identifies the project that owns it.
7. Review it on mobile
Open Human In Circuit on your phone and install it from the browser:
- iPhone: Safari → Share → Add to Home Screen.
- Android: Chrome → Install app.
Open the installed app from the Home Screen, enable push notifications in Settings, then approve, reject, or edit the pending review.
8. Continue the workflow
The imported n8n subworkflow resumes with this callback body:
{
"api_version": "v2",
"schema_version": "review.v1",
"callback_version": "callback.v1",
"event_id": "54f54df3-9823-44c6-aef8-02a816941d17",
"type": "review.resolved",
"review_id": "d835e7dc-1f8f-4a75-a57b-0f2bd5826a1f",
"external_id": "article-123",
"project_key": "content-publishing",
"review": {
"schema_version": "review.v1",
"inbox_revision": 3,
"title": "Approve generated article",
"fields": [
{
"key": "article",
"label": "Article",
"type": "textarea",
"required": true
}
],
"initial_values": {
"article": "The generated article goes here."
}
},
"outcome": "approved",
"original_values": {
"article": "The generated article goes here."
},
"final_values": {
"article": "The human-approved article goes here."
},
"output": {
"article": "The human-approved article goes here."
},
"changes": [],
"rejection_reasons": [],
"note": "",
"decided_at": "2026-07-23T10:35:00.000Z",
"delivered_at": null
}
Add a Switch node after Execute Sub-workflow:
- when
outcomeisapproved, continue usingoutput; - when
outcomeisrejected, stop or regenerate usingrejection_reasonsandnote.
output and final_values contain the same human-approved values. The full
submitted review context is available under review.
If callback delivery fails, retrieve the same stored decision with:
GET https://humanincircuit.com/v2/reviews/<REVIEW_ID>
Authorization: Bearer <YOUR_API_KEY>
Continue with the full n8n integration guide or learn about callback delivery and security.
Version compatibility
New integrations use /v2 and inbox_key. Existing /v1 integrations that
send workflow_key remain supported. A review keeps its API version, review
schema, and callback schema for its entire lifetime, so the request and
callback shapes never change underneath an integration.
Review behavior is separate: editing an inbox applies the new approval behavior, feedback rules, undo window, and rejection reasons to the reviews still open in it. Reviews that have already been decided are never changed.