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.
- GET/v1/properties/{propertyId}/matches— A property's opportunities
- GET/v1/leads/{leadId}/matches— A client's opportunities
- GET/v1/matches— The account's opportunities
- POST/v1/matches/{matchId}/dismiss— Dismiss an opportunity
- POST/v1/matches/{matchId}/restore— Restore an opportunity
Routes
/v1/properties/{propertyId}/matchesA property's opportunities
The clients that fit the property. Only the account's own clients — partner clients never show up on your property.
radar:readPath 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
/v1/leads/{leadId}/matchesA client's opportunities
The properties that fit the client — own and from partners.
radar:readPath 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
/v1/matchesThe 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.
radar:readQuery parameters
limitinteger- Items per page: 1 to 100 (default 50).
cursorstring- The
nextCursorfrom 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
NEWFAVORITEDARCHIVEDREQUESTED scopestring- Origin.one of
INTERNALNETWORKLAUNCH 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
/v1/matches/{matchId}/dismissDismiss an opportunity
The broker's decision, made in your system. A favorited opportunity cannot be dismissed.
radar:writeSupports dry runSupports Idempotency-KeyPath parameters
matchIdstringrequired- Opportunity id. It contains
#: send it URL-encoded (%23).
Query parameters
dryRunbooleantrue= 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
/v1/matches/{matchId}/restoreRestore an opportunity
Brings a dismissed opportunity back to new.
radar:writeSupports dry runSupports Idempotency-KeyPath parameters
matchIdstringrequired- Opportunity id. It contains
#: send it URL-encoded (%23).
Query parameters
dryRunbooleantrue= 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
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:readpermission 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. scopestringrequiredINTERNAL(own portfolio),NETWORK(with partners) orLAUNCH(new development).one ofINTERNALNETWORKLAUNCHstatusstringrequiredNEW,FAVORITED,ARCHIVEDorREQUESTED(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.
outcomestringrequiredAPPLIED; in a dry run,WOULD_APPLY.dryRunbooleanrequired- It was a dry run.