For reviews that happen inside Opus, use the Review Task. Off-Platform Review is for when the reviewer works in your application and never signs in to Opus.
Key Capabilities
Full Node Context
Your system receives the reviewed step’s inputs, outputs, schemas and execution metadata.
Your Reviewer Experience
Build the review screen in your own application, for people who have no Opus account.
Decisions You Define
The output variables you add to the task are the decision form your system fills in.
Edits Flow Downstream
Whatever your reviewer returns is what later steps consume.
When to Use It
Setting It Up
The webhook is configured per workspace when the task is connected, so the same task can point at a different endpoint in each workspace. Header values are encrypted at rest and are never shown again once saved.
How to Add an Off-Platform Review
1
Drop it into your workflow
Drag an Off-Platform Review from the sidebar and place it after the step you want reviewed.
2
Connect the step being reviewed
Set the Review Node input to the step whose output needs a human decision.
3
Point it at your endpoint
Enter the webhook URL your reviewer application listens on, plus any authentication headers it expects.
4
Define the decision fields
Add an output variable for each thing the reviewer decides. These become the form your system renders, and Opus rejects a callback returning anything you have not declared.
5
Build the review screen
Render the item from the request, collect the decision, and post it back to the callback URL that came with it.
What Opus Sends
Inside the review node
Everything the reviewer needs sits ininputs.review_node.value:
expected_output_schema is the decision form: one entry per output variable you defined, keyed by name, with the type your system must return and the display_name to label it with.
Acknowledge the request with a 200 promptly — within the configured timeout, 15 seconds by default. This only confirms receipt; the decision comes later, as a separate request.
Sending the Decision Back
Post tocallback.url, putting callback.token in the header named by callback.token_header:
- Accept as-is — pre-fill the form from
review_node.value.outputand submit it unchanged. - Accept with edits — the reviewer changes one or more fields, and those edited values are what later steps consume.
output_data must be one you declared. An undeclared field is rejected with 422, naming both what you sent and what was expected — nothing is stored and the workflow stays paused, so you can correct the payload and post again.
If the review cannot be completed at all, report a failure instead of leaving the workflow waiting:
How It Behaves
If your endpoint is unreachable
If your endpoint is unreachable
Opus retries a failed request up to 3 times with exponential backoff. Network errors and the statuses
408, 425, 429, 500, 502, 503 and 504 are treated as transient. Any other 4xx is treated as a misconfigured webhook and fails immediately. After repeated failures a circuit breaker opens for 60 seconds.One review, one decision
One review, one decision
The callback token authenticates a single decision for a single execution, and is invalidated as soon as one succeeds. A second submission is rejected with
401, so build for one reviewer per review and do not assume a request will be sent again.Keep the token server-side. It is the only credential needed to resolve the review, so it must never reach a browser.If a reviewer submits too late
If a reviewer submits too late
An execution accepts a decision only while it is still waiting. Once it has been completed or closed out by its deadline, a callback returns
401 with a message saying the execution is no longer accepting callbacks — the workflow has already moved on.Show the reviewer that the review expired, and do not let them retry.These reviews never appear in the Opus inbox
These reviews never appear in the Opus inbox
An off-platform review is resolved by your system, not by a person in Opus. Attempting to pick it up or complete it through the Opus review screens is rejected with
409. For reviewers working inside Opus, use the Review Task.Responses You May Get
Tips for Better Results
Render the form from the schema, not from hard-coded fields
Render the form from the schema, not from hard-coded fields
Build one form field per entry in
expected_output_schema, using display_name as the label and type to pick the widget. A decision field added to the task then appears in your UI without a code change.Acknowledge first, render afterwards
Acknowledge first, render afterwards
Reply
200 as soon as you have stored the request, then build the review screen. Loading related data before replying risks blowing the timeout and triggering a retry, which leaves you holding the same review twice.Show the reviewer the input, not just the output
Show the reviewer the input, not just the output
review_node.value.input is what the step was working from. A reviewer judging a drafted reply needs the customer’s original message to judge it against.Related
Off-Platform Task
Hand any step to your own system, not just a review.
Review Task
Accept or reject a step’s output inside Opus.
Human Decision Agent
Let a person choose which path the workflow takes.
Opus Human Task
Have a person complete work inside Opus.