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.

Helper Endpoints