Manual review
Reviews raised on your sessions. By default this lists only reviews whose verification is still awaiting a decision, which is what a queue means and what both consoles show. Pass status to ask for something narrower, including status=resolved to read cases that have already been decided. The response carries ids and decisions, never applicant data. Cursor-paginated, newest first. limit accepts 1 to 100 and defaults to 20. To walk further, set starting_after to the id of the last record on the page you just read. has_more tells you another page exists and next_cursor is the value to pass back; on the last page has_more is false and next_cursor is null. An unknown cursor is ignored and you get the first page. Review ids are UUIDs, so starting_after takes a UUID here rather than a prefixed id. Requires the verification:read permission on the calling key.
Authorization
secretKey Secret API key, server-side only. Example: Bearer TWK_...
In: header
Query Parameters
How many records to return. 1 to 100, defaults to 20.
1 <= value <= 10020A review id; returns the page after it.
uuidWhere the review sits. queued is waiting to be picked up, resolved is closed by an approve or a reject, in_review is a legacy value that is no longer produced but still appears on older reviews, and escalated means a reviewer in the merchant console handed the decision to a senior colleague. An escalated review is still open and can still be decided through this API: escalation is a workflow inside the console and places no restriction on a server-to-server integration.
Value in
- "queued"
- "in_review"
- "resolved"
- "escalated"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/manual-reviews"{ "object": "list", "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "object": "manual_review", "session_id": "string", "status": "queued", "decision": "approve", "notes": "string", "reviewed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z" } ], "has_more": true, "next_cursor": "string"}Record where a reviewer landed. approve and reject close the review: status becomes resolved, reviewed_at is stamped, and the verification moves to approved or rejected. review is not an outcome, it means the reviewer wants another look, so the item goes back to status queued with reviewed_at still null and keeps appearing in the queue.
A SETTLED CASE IS FINAL. Once a review has been approved or rejected, a second approve or reject does NOT overwrite it: it answers 409 REVIEW_ALREADY_DECIDED and carries the decision that was reached. Exactly one of two simultaneous deciders wins, which is what stops your back office and a reviewer in the console from both settling one applicant.
Deciding review is the one exception, and it is not an outcome: it REOPENS the case, returning the verification to manual_review and clearing its verdict, so the review and the verification never disagree about whether there is still work to do. If the outcome email for the decision being reversed has not been sent yet, it is dropped rather than delivered.
Requires the verification:create permission on the calling key, the same write capability that starts a verification, not verification:read as the listing does.
A case that a colleague, the TrustWix console or the auto-decide policy has already settled answers 409 REVIEW_ALREADY_DECIDED and carries the decision that was reached. Handle it as an outcome, not as a failure: it is the expected result of two people working one queue, and it is not retryable.
Authorization
secretKey Secret API key, server-side only. Example: Bearer TWK_...
In: header
Path Parameters
The review id. Review ids are UUIDs, not prefixed ids.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/manual-reviews/497f6eca-6276-4993-bfeb-53cbbbba6f08/decision" \ -H "Content-Type: application/json" \ -d '{ "decision": "approve" }'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "object": "manual_review", "session_id": "string", "status": "queued", "decision": "approve", "notes": "string", "reviewed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z"}