review_id back immediately,
the review processes asynchronously, and Flightline notifies you the moment it
reaches a terminal state. The flow is create, get notified, read the report.
1. Create a review
Attach the full case package when you create the review. A single archive is the recommended shape; individual PDFs/images are also accepted for smaller submissions.- Multipart upload
- Signed source URLs
Upload a full case archive directly with
multipart/form-data:status: "processing":
Accepted case packages:
.zip, .tar, .tar.gz, and .tgz. Inside the
package, include PDFs and common image files (.png, .jpg/.jpeg, .tif/.tiff,
.webp, .gif, .bmp). RAR/7z archives, nested archives, executables,
scripts, Office files, spreadsheets, email containers, and password-protected
or corrupt archives are not accepted.2. Get notified when it completes
Recommended: webhooks. Register a webhook endpoint once, then handle thereview.completed event (and review.failed). When review.completed
arrives, verify the signature and fetch the report. No polling required. See
Webhooks for registration and signature verification.
GET /reviews/{review_id} and read status, which moves through queued,
processing, then completed or failed. Use exponential backoff (for
example 2s, 4s, 8s, capped around 30s) rather than a tight loop. The review is
ready when report_available is true.
3. Read the report
404 while the review is still processing and
422 if it failed, so results never leak before the review is finished.
In your language
Create the review, then let thereview.completed webhook tell you it is
ready (see Webhooks for the handler and signature check):
