Coliving JSON Feed
JSON import example
This is the payload shape we ingest from host feeds. Use stable IDs where possible, omit optional fields instead of placeholders, and use /json/docs for the field-by-field guide.
`original_id` is the strongest sync key. If you cannot provide it, send `original_url` so we still have a stable fallback for updates.
Example Payload
{
"original_id": "property-01",
"original_url": "https://host.example.com/listings/property-01",
"name": "300 Mountain Road",
"property_size": 2500,
"property_size_unit": "m2",
"parking": "Parking on street (free)",
"internet_download": 300,
"internet_upload": 150,
"bedrooms": 10,
"bathrooms": 8,
"residents": 18,
"descriptions": {
"property": "Bright shared home with work-ready common areas.",
"neighborhood": "Walkable area near transit and cafes.",
"community": "Residents are social, respectful, and internationally minded."
},
"location": {
"address": "300 Mountain Road",
"zip": "90210",
"neighborhood": "Mission District",
"city": "San Francisco",
"state": "California",
"country": "United States",
"lat": 37.8081823,
"lng": -122.4141216
},
"amenities": [
{
"id": 12
}
],
"prices": {
"currency": "usd",
"security_deposit_type": "fixed",
"security_deposit": 1000,
"extra_fees": [
{
"name": "Cleaning fee",
"description": "One-time cleaning fee",
"mandatory": 1,
"type": "fixed",
"sum": 120,
"frequency": "once"
}
]
},
"room_types": [
{
"id": "private-queen-01",
"name": "Private queen room",
"room_type": "private",
"bed_type": "queen",
"application_url": "https://host.example.com/apply/private-queen-01",
"room_size": 180,
"room_size_unit": "sqft",
"max_occupancy": 2,
"gender": "mixed",
"bathroom_type": "private",
"available_at": "2026-03-16",
"rooms": [
{
"id": "room-104",
"name": "Room 104",
"description": "Quiet room with desk and closet.",
"availability": {
"ical": "https://host.example.com/ical/room-104.ics"
}
}
],
"prices": {
"base_price": 1200,
"price_jan": 1200,
"price_feb": 1200,
"price_mar": 1200,
"price_apr": 1250,
"price_may": 1250,
"price_jun": 1300,
"price_jul": 1300,
"price_aug": 1300,
"price_sep": 1250,
"price_oct": 1250,
"price_nov": 1200,
"price_dec": 1200,
"discount_90": 5,
"discount_180": 10,
"discount_360": 15
},
"amenities": [
{
"id": 34
}
],
"photos": [
{
"url": "https://assets.host.example.com/room-104.jpg",
"description": "Desk and window"
}
]
}
],
"bookings": {
"stay_min": 3,
"notice_min_days": 14,
"move_in_max_days": 90,
"application_url": "https://host.example.com/apply/property-01",
"cancellation_policy": "flexible",
"booking_rules": "No overnight guests without approval."
},
"community": {
"age_min": 25,
"age_max": 45,
"age_avg": 31,
"gender": "mixed",
"gender_ratio": 50,
"events": [
{
"id": 1061
}
],
"community_manager": {
"name": "Jeff",
"photo": "https://assets.host.example.com/community-manager.jpg",
"onsite": 1
},
"types": [
{
"id": 8
}
]
},
"media": {
"3d_tour": "https://my.matterport.com/show/?m=123456789",
"video_tour": {
"type": "youtube",
"url": "https://www.youtube.com/watch?v=fYfFgcBlxrQ"
},
"photos": {
"property": [
{
"url": "https://assets.host.example.com/property-01.jpg",
"description": "Coworking lounge"
}
],
"community": [
{
"url": "https://assets.host.example.com/community-01.jpg",
"description": "Community dinner"
}
]
}
},
"instructions": {
"check_in_earliest": "14:30",
"check_in_latest": "20:00",
"check_out_latest": "11:00",
"check_in_contact_person": "Sandra",
"check_in_telephone_country": "+1",
"check_in_telephone_number": "5551234567",
"check_in_instructions": "Use the keypad at the main entrance.",
"directions": "From the airport, take the express train to Downtown Station.",
"house_manual": "Quiet hours start at 10pm. Clean shared areas after use."
},
"faq": [
{
"question": "Is cleaning included?",
"answer": "Yes, common areas are cleaned weekly."
}
],
"rating": {
"google_places_id": "ChIJN1t_tDeuEmsRUsoyG83frY4"
}
}
Practical Notes
- This is the feed shape we ingest from hosts to create and update listings over time.
- Use stable IDs where possible. `original_id` is the strongest sync key, and `original_url` is the preferred fallback when a stable ID is not available.
- Omit optional fields instead of sending placeholders like `N/A`, empty strings, or fake coordinates.
- Enum values must match the helper endpoints exactly.
- Photo URLs and iCal URLs must be public and reachable without authentication.
- Use `\n` for new lines inside text fields.
- `faq` accepts question-and-answer objects, so hosts can send FAQ content through the JSON feed without re-entering it manually in the UI.