Browse the documentation

Opportunities (Radar)

The opportunities Radar finds between properties and clients — in the account itself and with partners — under the same display rules as the dashboard.

Routes

GET/v1/properties/{propertyId}/matches

A property's opportunities

The clients that fit the property. Only the account's own clients — partner clients never show up on your property.

Permission: radar:read

Path parameters

propertyIdstringrequired
Property id (prop-…).

Response200OK

datalist of Matchrequired
The opportunities.
nextCursorstringrequirednullable
Next page cursor (null = done).

Example

curl -X GET 'https://api.imobyflow.com.br/v1/properties/prop-3f9a1c2b7d4e/matches' \
  -H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
  -H 'Accept-Language: en'

Errors for this route

And the errors common to every route

GET/v1/leads/{leadId}/matches

A client's opportunities

The properties that fit the client — own and from partners.

Permission: radar:read

Path parameters

leadIdstringrequired
Client id (lead-…).

Response200OK

datalist of Matchrequired
The opportunities.
nextCursorstringrequirednullable
Next page cursor (null = done).

Example

curl -X GET 'https://api.imobyflow.com.br/v1/leads/lead-7c2e9a1b3d5f/matches' \
  -H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
  -H 'Accept-Language: en'

Errors for this route

And the errors common to every route

GET/v1/matches

The account's opportunities

The opportunities, newest first. Partner ones follow the dashboard display rule: without an active subscription the partner stays hidden (locked). The client's name only comes with leads:read on the key.

Permission: radar:read

Query parameters

limitinteger
Items per page: 1 to 100 (default 50).
cursorstring
The nextCursor from the previous page. The list is over when it comes back null. It is only valid for this route and this account.
statusstring
Status.one of NEW FAVORITED ARCHIVED REQUESTED
scopestring
Origin.one of INTERNAL NETWORK LAUNCH
ownerAccountIdstring
Only one broker's items.

Response200OK

datalist of Matchrequired
The opportunities.
nextCursorstringrequirednullable
Next page cursor (null = done).

Example

curl -X GET 'https://api.imobyflow.com.br/v1/matches' \
  -H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
  -H 'Accept-Language: en'

Errors for this route

And the errors common to every route

POST/v1/matches/{matchId}/dismiss

Dismiss an opportunity

The broker's decision, made in your system. A favorited opportunity cannot be dismissed.

Permission: radar:writeSupports dry runSupports Idempotency-Key

Path parameters

matchIdstringrequired
Opportunity id. It contains #: send it URL-encoded (%23).

Query parameters

dryRunboolean
true = dry run: validates and says what would happen, without writing anything.

Response200OK

dataMatchrequired
The object as it now stands.
resultMatchWriteResultrequired
The outcome.

Example

# Dry run: nothing is written. Remove ?dryRun=true to write for real.
curl -X POST 'https://api.imobyflow.com.br/v1/matches/m%23prop-3f9a1c2b7d4e%23lead-7c2e9a1b3d5f%23L/dismiss?dryRun=true' \
  -H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
  -H 'Accept-Language: en' \
  -H "Idempotency-Key: $(uuidgen)"

Errors for this route

And the errors common to every route

POST/v1/matches/{matchId}/restore

Restore an opportunity

Brings a dismissed opportunity back to new.

Permission: radar:writeSupports dry runSupports Idempotency-Key

Path parameters

matchIdstringrequired
Opportunity id. It contains #: send it URL-encoded (%23).

Query parameters

dryRunboolean
true = dry run: validates and says what would happen, without writing anything.

Response200OK

dataMatchrequired
The object as it now stands.
resultMatchWriteResultrequired
The outcome.

Example

# Dry run: nothing is written. Remove ?dryRun=true to write for real.
curl -X POST 'https://api.imobyflow.com.br/v1/matches/m%23prop-3f9a1c2b7d4e%23lead-7c2e9a1b3d5f%23L/restore?dryRun=true' \
  -H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
  -H 'Accept-Language: en' \
  -H "Idempotency-Key: $(uuidgen)"

Errors for this route

And the errors common to every route

Objects

PropertySnapshot

The property snapshot in the pair — the same as the card. Fields the dashboard hides come back null.

titlestringrequirednullable
Title.
typestringrequirednullable
Subtype.
purposestringrequirednullable
Purpose of the pair.
purposeslist of stringrequired
The property's purposes.
pricenumberrequirednullable
Price (sale, or rent when the pair is a rental).
priceFrombooleanrequired
The price is a "starting at" price (new development).
rentPricenumberrequirednullable
Rent.
citystringrequirednullable
City.
neighborhoodstringrequirednullable
Neighborhood.
bedroomsintegerrequirednullable
Bedrooms.
bathroomsintegerrequirednullable
Bathrooms.
parkingSpotsintegerrequirednullable
Parking spots.
areanumberrequirednullable
Area, in m².
coverPhotostringrequirednullable
Cover photo.
listingUrlstringrequirednullable
Listing URL (null when the dashboard hides it too).
commissionPercentnumberrequirednullable
Sale commission, in %.
rentCommissionMonthsnumberrequirednullable
Rent commission, in months.
splitListingPercentnumberrequirednullable
Listing side share, in %.
lastConfirmedAtstringrequirednullable
Last availability confirmation.
deliveryDatestringrequirednullable
Delivery (new development).
developmentIdstringrequirednullable
Development.
developmentNamestringrequirednullable
Development name.

ClientSnapshot

The client snapshot in the pair.

maskedbooleanrequired
The client belongs to a partner and is masked.
statusstringrequirednullable
Funnel stage.
preApprovedbooleanrequired
Pre-approved credit.
purposeslist of stringrequired
Purposes wanted.
propertyTypeslist of stringrequired
Types wanted.
regionslist of stringrequired
Regions, spelled out.
priceMinnumberrequirednullable
Minimum.
priceMaxnumberrequirednullable
Maximum.
bedroomsintegerrequirednullable
Bedrooms.
parkingSpotsintegerrequirednullable
Parking spots.
areaMinnumberrequirednullable
Minimum area.
namestringrequirednullable
Name — only with the leads:read permission on the key and only when the dashboard shows it too. Phone, never.

Counterpart

The partner on the other side.

accountIdstringrequired
Partner's account id.
namestringrequirednullable
Name.
typestringrequirednullable
Account type.
organizationstringrequirednullable
Partner's agency.
crecistringrequirednullable
Broker license (CRECI).
creciVerifiedbooleanrequired
License verified.
phonestringrequirednullable
Phone.

Match

An opportunity: a property that fits a client.

idstringrequired
Opportunity id (m#{property}#{client}#{side}). It contains #: URL-encode it (%23) in the path.
scopestringrequired
INTERNAL (own portfolio), NETWORK (with partners) or LAUNCH (new development).one of INTERNAL NETWORK LAUNCH
statusstringrequired
NEW, FAVORITED, ARCHIVED or REQUESTED (became a partnership request).
scoreintegerrequired
Score from 0 to 100.
reasonslist of stringrequired
Why it matches.
gapslist of stringrequired
What doesn't match.
propertyIdstringrequirednullable
Property.
leadIdstringrequirednullable
Client.
ownerAccountIdstringrequirednullable
The in-house broker who gets the opportunity.
ownerNamestringrequirednullable
Their name.
lockedbooleanrequired
Partner opportunity without an active subscription — the partner stays hidden, as in the dashboard.
lostRelevancebooleanrequired
No longer matches after a change.
propertyPropertySnapshotrequirednullable
The property.
clientClientSnapshotrequirednullable
The client.
counterpartCounterpartrequirednullable
The partner (null when in-house or hidden).
createdAtstringrequired
When it was created (UTC).
updatedAtstringrequired
Last change (UTC).

MatchWriteResult

The outcome.

outcomestringrequired
APPLIED; in a dry run, WOULD_APPLY.
dryRunbooleanrequired
It was a dry run.