Quickstart
Step-by-step guide to integrating your CRM with Spot2 Ingestion.
Prerequisites
Before you begin, make sure you have:
- A REST endpoint that exposes your properties as JSON.
- The ability to add authentication (API key, bearer token, or custom header).
- Offset-based pagination implemented.
- Commercial properties (not residential).
Step 1 — Build your endpoint
Create a GET endpoint that returns your active properties as JSON:
GET https://your-crm.com/api/v1/spot2/properties
Minimum requirements:
- Content-Type:
application/json. - Authentication:
x-api-keyorAuthorization: Bearer. - Pagination: offset with
meta.nextin the response. - Each property must include at least these fields:
external_id— your unique, immutable identifier.property_type— one of:oficina,local,bodega,nave_industrial,terreno,edificio,local_en_centro_comercial.modality—rent,saleorrent_and_sale.price.rent_priceorprice.sale_price— at least one price greater than 0.price.currency— ISO 4217 code (defaultMXN).location.city— city.location.state— state.updated_at— last modified date in ISO 8601.
Optional but highly recommended:
photos— at least 1 photo URL.location.latitudeandlocation.longitude— coordinates.agent.emailoragent.phone— agent contact.
Full field details, types, validations, and examples are in Property Schema.
Step 2 — (Optional) Set up your webhook
If you want to receive notifications when a property is published or rejected, expose a POST endpoint:
POST https://your-crm.com/api/webhooks/spot2/feedback
You will receive:
item_accepted: the property was published successfully.item_rejected: the property was rejected (includesmessageswith the reasons in natural language).
If you don't set up the webhook, your properties still get published but you won't receive error notifications.
The full webhook contract is in Feedback Webhook.
Step 3 — (Optional) Implement explicit deletion
To have delistings reflected quickly on Spot2, add an endpoint that returns the IDs of deleted properties:
GET https://your-crm.com/api/v1/spot2/properties/deleted
This is optional: if you don't implement it, we detect delistings via reconciliation (comparing your feed against our records).
Details in Deletion Protocol.
Deliverables summary
| # | What you need | Required | Reference doc |
|---|---|---|---|
| 1 | GET endpoint for properties | Yes | Sync Protocol + Property Schema |
| 2 | POST endpoint for webhook | No | Feedback Webhook |
| 3 | GET endpoint for deletions | No | Deletion Protocol |
Next steps
- Property Schema: complete field reference.
- Sync Protocol: your API contract.
- Lifecycle: what happens to a property once you send it.
- QA Rules: what we validate and why.
- Examples: concrete request/response cases.