Review flows
Sometimes Grihafy cannot be sure about something in your floor plan. A review step pauses the analysis and asks you to confirm it. This page explains when that happens, what to send and what it means for the status and your credit.
What can be reviewed
| Review | What it is | What you send |
|---|---|---|
| North | Grihafy works out which way each room faces from the direction north points in the image. It looks for a compass or north arrow. If it is missing or unclear, the direction is uncertain. | northAngle: degrees clockwise from the top of the image to north, 0 to 359.99. If north points straight up the angle is 0; if it points right, 90. |
| Rooms | Grihafy detects the rooms in the image. Room review lets you confirm or correct them before the report is built. | acceptDetected: true to accept the detected rooms, or a corrected list of rooms (see the reference). |
Choose a review mode
You choose when to be asked with the required reviewMode field on submit. If you send northAngle yourself, Grihafy does not detect or review north.
| reviewMode | Asks you about north | Asks you about rooms |
|---|---|---|
auto | Never. | Only if the detected rooms look invalid or the image shows several flats. |
north_if_low_confidence | When north is missing or Grihafy is not confident about it. | Only if the detected rooms look invalid or the image shows several flats. |
rooms | Never. | Always. |
north_and_rooms | Always, unless you sent northAngle. | Always. |
With auto, if Grihafy cannot find north it still completes the analysis. Room directions are UNKNOWN and the credit is spent. Send northAngle or use north_if_low_confidence if your product needs directions.
How to decide
- Do you know north for every image? Send
northAngleand skip north review. - Do you want a person to confirm north when it is uncertain? Use
north_if_low_confidence. - Do you want to confirm the rooms every time? Use
rooms, ornorth_and_roomsfor both. - Otherwise use
auto. Room review can still be requested when the detected rooms look invalid or the image shows several flats, so handle it.
What a paused analysis looks like
The analysis has status review_required. review.stage says what it needs (north or rooms) and expiresAt is when it expires. If you use webhooks you also receive analysis.review_required.
{
"id": "507f1f77bcf86cd799439011",
"status": "review_required",
"review": { "stage": "north", "north": { "...": "..." }, "rooms": null },
"expiresAt": "2026-10-20T10:00:00.000Z"
}Send your answer
Send the north angle to POST /v1/analyses/{id}/north or the rooms to POST /v1/analyses/{id}/rooms. Either answers 202 and the analysis goes back to queued. If the answer does not match the stage, or the analysis already moved on, you get 409 invalid_state; read the analysis again.
curl -X POST https://api.grihafy.com/v1/analyses/<id>/north \
-H "Authorization: Bearer gfy_live_..." \
-H "Content-Type: application/json" \
-d '{"northAngle": 90}'Plans with several flats
If one image shows several flats, every review mode pauses for rooms, because only you can choose what to analyze. The room review lists each room with its flat and marks shared building areas such as lobbies and lifts. Shared areas are returned with sharedArea: true and are not scored.
- Send
primaryUnitLabelwith the rooms to choose the flat to analyze first. The default is the first flat. - Send
analyzeAllUnits: trueto queue every other flat too, with its detected rooms accepted. A flat that cannot be queued stays atreview_required. - Send
treatAsOneHome: trueif the image is one home. No flats are split.
Each other flat is its own analysis, listed in unit.siblings. Unless you queued it, it waits at review_required and you answer its review the same way. Each waiting flat sends its own analysis.review_required event, so you can ignore that event for flats you queued with analyzeAllUnits.
Statuses and your credit
The credit is held when you submit and stays held through review. Answering a review does not hold a second credit, and the other flats of a multi-flat plan do not hold credits of their own. See Credits.
queuedAccepted, waiting to start · 1 credit held
- processing: the analysis starts
- deleted: credit returned
processingBeing analysed · credit stays held
- completed: credit spent
- failed: credit returned
- review_required: a review step is needed
- cannot be deleted while processing (409 invalid_state)
review_requiredWaiting for you · credit stays held
- queued: after you send the north angle or the rooms
- expired: no response after about 7 days, credit returned
- deleted: credit returned
completedResult ready · credit spent
failedCould not be analysed · credit returned
expiredReview not answered · credit returned
If nobody answers
A paused analysis waits for about 7 days. After that it becomes expired and the credit is returned. The other flats of a multi-flat plan expire on the same deadline and send analysis.expired, but they hold no credit, so nothing is returned for them. Submit the image again if you still need it. You can also delete a paused analysis; the credit is returned.
Test keys pause too. See Sandbox for which modes pause there.