RapidEye API

Get started

RapidEye partner integration guide

How the integration fits together and the six calls you need to go live.

RapidEye adds AI video inspections to any task or property-management system. You provision a workspace when you sign a customer, you send us that customer's property roster, your system asks us for a recording link when a task is created, a cleaner records a walkthrough, RapidEye processes the inspection and sends you back a report link.

This guide is written so a coding agent can implement the integration directly.

Roster first. A workspace imports its complete property list before any recording link is issued for it. A property_id that is not in the roster you sent is refused, not created.

How it works

sequenceDiagram
    participant T as Your task system
    participant P as Your backend
    participant R as RapidEye
    participant W as Cleaner

    P->>R: POST /v1/workspaces (workspace_id, name) — once, when you sign a customer
    R-->>P: 201 (company_id)
    P->>R: POST /v1/roster-imports (complete property snapshot)
    R-->>P: 202 (import_id, status_url)
    R->>R: Import applies, its active properties switch on
    T->>P: Task created
    P->>R: GET /v1/recording-link (workspace_id, task_id, property_id)
    R-->>P: 200 (recording_url)
    P->>T: Save recording_url on the task, display to cleaner
    W->>R: Cleaner taps link, records walkthrough
    R->>P: POST inspection.recording_completed webhook, signed, checklist results
    R->>P: POST inspection.completed webhook, signed, carries report_url
    P->>T: Save report_url on the task

Quickstart: the calls you need

Everything below this section is detail for these six steps. Build these and you are live; the rest of the guide is optional.

Once per customer

  1. Authenticate every request with Authorization: Bearer rapideye_pk_....
  2. POST /v1/workspaces with your workspace_id and the customer's name. Idempotent: calling it again for the same workspace_id returns the same account.
  3. POST /v1/roster-imports?workspace_id=... with a required Idempotency-Key header and a body carrying complete: true, observed_at (when you read the list), total_count (the number of properties in the array) and properties, the customer's complete list. The import runs in the background: poll the returned status_url until status is applied. A rejected or failed import carries the reason in error; send the corrected roster with a new Idempotency-Key, because a key is only for retrying the identical request. Send the full list again whenever properties are added or removed. A property missing from a later list stops accepting recordings; its history is kept.

An applied import switches the workspace on. When an import reaches applied, every property it lists as active is activated for inspections and the account is put into service. You do not need to ask us to switch anything on. Activation runs just after the import is marked applied, not in the same instant, so a link request in the first few seconds can still answer property_not_activated; wait a few seconds and ask again before doing anything else. Until the first import applies, step 4 answers roster_required, and GET /v1/workspaces/{id} shows where the account stands. If a property is still off after that, the refusal tables below say what to do.

Per task

  1. GET /v1/recording-link with workspace_id, task_id and property_id when a walkthrough is due. Put the returned recording_url on the task for the cleaner.
  2. Receive inspection.completed at your webhook when the report is ready. Verify the signature, then dedupe on event_id. If the home has a checklist, inspection.recording_completed arrives first with every item's result: seconds after the walkthrough is sealed (safely saved on our side, usually under a minute after the cleaner taps Done), and at most about 2 minutes after the seal.
  3. GET /v1/inspections/{inspection_id}/findings?workspace_id=... to read what we found and open your follow-up task.

To keep a copy of the walkthrough video, call GET /v1/inspections/{inspection_id}/video?workspace_id=... (the webhook's video_url) and download the file from the link it returns.

If you miss a webhook, GET /v1/inspections?workspace_id=...&task_id=... returns the same status and ids.

One walkthrough per task: a cleaner who reopens the link for a task already in progress resumes it.

Conventions

Item Value
Base URL https://api.rapideyeinspections.com, bare paths
Responses application/json; date-times ISO 8601 UTC. The one field named timestamp (a checklist item's moment in the video) is a number of seconds, not a date-time
Support [email protected]
IDs workspace_id, task_id, property_id in requests are yours; company_id, inspection_id and rapideye_property_id are ours