Aryna

Aryna API Documentation

Version 1.0

Dashboard

PriceWatch API

Access comparable communities, pricing data, and rent survey insights programmatically. Build custom dashboards, mobile apps, and integrations with PriceWatch data.

Endpoints

GET

/pricewatch/portfolio

Get all user-managed communities with optional pricing summaries and comparable community counts. Perfect for portfolio dashboards and executive reports.

How to Use This Endpoint

Business Context: Build executive dashboards that display portfolio-wide rent positioning at a glance. Include pricing summaries to see average PSI (Price Sensitivity Index) across your entire portfolio, identifying under-priced or over-priced communities instantly.

Common Scenario: Your regional VP's mobile app calls this endpoint every morning to show a heatmap of all 50+ communities, color-coded by pricing health (green = competitive, yellow = at risk, red = overpriced). They can quickly identify which properties need pricing adjustments before the weekly revenue meeting.

Required Scope

pricewatch:read

Query Parameters

ParameterTypeRequiredDescription
include_pricingbooleanNoInclude latest pricing summary (default: false)
include_comp_countbooleanNoInclude comparable community counts (default: true)

Example Request

cURL

curl "https://api.aryna.ai/v1/pricewatch/portfolio?include_pricing=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

JSON

{
  "communities": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Sunset Apartments",
      "address": "123 Main St, San Francisco, CA 94102",
      "external_community_id": "PROP-001",
      "comp_count": 5,
      "latest_pricing_date": "2024-11-18",
      "pricing_summary": {
        "floor_plan_count": 8,
        "avg_market_rent_cents": 185000,
        "min_rent_cents": 125000,
        "max_rent_cents": 325000
      }
    }
  ],
  "total": 42
}

Batch Communities

GET/pricewatch/communities

Fetch multiple communities by ID in a single request. Maximum 50 communities per request. Ideal for filtered reports and mobile app property lists.

How to Use This Endpoint

Business Context: Efficiently load pricing data for a subset of properties without fetching your entire portfolio. Perfect when you need to display a specific region, market, or filtered set of communities based on user selections.

Common Scenario: Your mobile app lets regional managers filter properties by state and ZIP code. When they select "California properties," your app sends a batch request with all California community IDs, loading detailed pricing for just those 15 properties instead of all 200 in the portfolio.

Query Parameters

ids
string, required

Comma-separated community UUIDs (max 50)

include_comps
boolean, default: false

Include comp counts for each community

Example Request

curl "https://api.aryna.ai/v1/pricewatch/communities?ids=uuid1,uuid2,uuid3" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "communities": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Sunset Apartments",
      "address": "123 Main St, San Francisco, CA 94102",
      "zipcode": "94102",
      "external_community_id": "PROP-001",
      "latitude": 37.7749,
      "longitude": -122.4194,
      "website_url": "https://sunset-apartments.com",
      "comp_count": 5
    }
  ],
  "total": 3
}

Community Detail

GET/pricewatch/communities/:id

Get comprehensive details for a single community including comparable communities and pricing summary. Use for property detail pages and competitive analysis.

How to Use This Endpoint

Business Context: Load everything needed for a property detail page in one API call—community info, comparable properties, and pricing summaries. Reduces latency and provides a complete competitive picture instantly.

Common Scenario: A property manager opens the detail page for "Sunset Apartments" in your app. This endpoint returns the property's full details, its 10 comparable properties with their latest pricing, and a summary showing Sunset is priced 5% above market average—all displayed in under 500ms.

Query Parameters

include_comps
boolean, default: true

Include comparable communities list

include_pricing_summary
boolean, default: true

Include pricing summary with floor plans

Example Request

curl "https://api.aryna.ai/v1/pricewatch/communities/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "community": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Sunset Apartments",
    "address": "123 Main St, San Francisco, CA 94102",
    "zipcode": "94102",
    "comp_count": 7,
    "floor_plan_count": 10,
    "pricing_summary": {
      "latest_date": "2024-11-18",
      "avg_market_rent_cents": 185000,
      "floor_plans": [...]
    }
  },
  "comps": [...]
}

Comparable Communities

GET/pricewatch/communities/:id/comps

Get all comparable communities for a subject property. Results sorted by distance. Perfect for competitive set analysis and market positioning.

How to Use This Endpoint

Business Context: Build HUD-compliant rent surveys by pulling all comparable properties for a subject community. Analyze your competitive set to determine if your rents are aligned with the local market or if adjustments are needed.

Common Scenario: Your compliance team needs to justify a rent increase to HUD. This endpoint returns all 10 comparable properties within 0.5 miles, showing that 8 of them have raised rents by 4-6% this quarter, supporting your proposed 5% increase for affordable housing units.

Query Parameters

include_inactive
boolean, default: false

Include deactivated comparable communities

include_pricing
boolean, default: false

Include pricing summary for each comp

Example Request

curl "https://api.aryna.ai/v1/pricewatch/communities/550e8400-e29b-41d4-a716-446655440000/comps?include_pricing=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "subject_community": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Sunset Apartments"
  },
  "comps": [
    {
      "id": "770e8400-e29b-41d4-a716-446655440000",
      "name": "Nearby Apartments",
      "distance_miles": 0.5,
      "pricing": {
        "floor_plan_count": 8,
        "avg_market_rent_cents": 180000
      }
    }
  ],
  "total": 7
}

Pricing History

GET/pricewatch/communities/:id/pricing

Get historical pricing data with flexible date ranges. Default to last 30 days if no parameters specified. Essential for trend analysis and historical reports.

How to Use This Endpoint

Business Context: Chart rent trends over time to identify seasonal patterns, measure the impact of renovations, or track how quickly competitors adjust pricing. Essential for revenue management and forecasting.

Common Scenario: Your revenue analyst pulls 12 months of pricing history to prepare the annual budget. They see that 2-bedroom units spiked 8% in April-May (high season) but competitors held steady, suggesting an opportunity to capture more market share by being more aggressive with seasonal adjustments next year.

Query Parameters

start_date
string (ISO date), optional

Start of date range (e.g., "2024-01-01")

end_date
string (ISO date), optional

End of date range (e.g., "2024-03-31")

days
integer, default: 30

Last N days (if no date range)

floor_plan_id
uuid, optional

Filter to specific floor plan

latest_only
boolean, default: false

Return only most recent pricing

Example Request

curl "https://api.aryna.ai/v1/pricewatch/communities/550e8400-e29b-41d4-a716-446655440000/pricing?days=90" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "community": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Sunset Apartments"
  },
  "pricing": [
    {
      "floor_plan_id": "660e8400-e29b-41d4-a716-446655440000",
      "floor_plan": {
        "bedrooms": 2,
        "bathrooms": 2,
        "floor_plan_name": "2BR/2BA Premium",
        "square_feet": 950
      },
      "as_of_date": "2024-11-18",
      "market_rent_cents": 185000,
      "net_effective_rent_cents": 180000,
      "market_rent_per_sqft_cents": 195,
      "net_effective_rent_per_sqft_cents": 189,
      "units_available": 3,
      "concessions": "1 month free"
    }
  ],
  "date_range": {
    "start": "2024-08-20",
    "end": "2024-11-18"
  },
  "total_records": 240
}

Floor Plans

GET/pricewatch/communities/:id/floor-plans

Get all floor plans for a community with latest pricing. Results sorted by bedrooms, then bathrooms. Ideal for unit mix analysis and availability reports.

How to Use This Endpoint

Business Context: Display all unit types and their current market rates on your property's leasing website or internal portal. Show prospects and property managers what each floor plan is renting for right now, including concessions.

Common Scenario: Your leasing agent portal calls this endpoint when a prospect inquires about availability. It returns all 12 floor plans (Studios through 3BR) with current asking rents, concessions (e.g., "1 month free"), and square footage—helping the agent quickly quote accurate pricing.

Example Request

curl "https://api.aryna.ai/v1/pricewatch/communities/550e8400-e29b-41d4-a716-446655440000/floor-plans" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "community": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Sunset Apartments"
  },
  "floor_plans": [
    {
      "id": "660e8400-e29b-41d4-a716-446655440000",
      "floor_plan_name": "2BR/2BA Premium",
      "bedrooms": 2,
      "bathrooms": 2.0,
      "square_feet": 950,
      "unit_count": 12,
      "latest_pricing": {
        "as_of_date": "2024-11-18",
        "market_rent_cents": 185000,
        "net_effective_rent_cents": 180000,
        "market_rent_per_sqft_cents": 195,
        "net_effective_rent_per_sqft_cents": 189,
        "units_available": 3,
        "concessions": "1 month free"
      }
    }
  ],
  "total": 10
}
GET

/pricewatch/communities/:id/vacancy

Get 14-day vacancy rate for a community based on units available in the next 14 days. Requires completed survey data. Returns vacancy percentage, available units count, and survey date.

Required Scope

pricewatch:read

Path Parameters

ParameterTypeRequiredDescription
idUUIDCommunity ID

Example Request

cURL

curl "https://api.aryna.ai/v1/pricewatch/communities/550e8400-e29b-41d4-a716-446655440000/vacancy" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

JSON

{
  "community_id": "550e8400-e29b-41d4-a716-446655440000",
  "community_name": "Sunset Towers",
  "total_units": 120,
  "vacancy_rate": 0.15,
  "vacancy_rate_formatted": "15.0%",
  "available_units_next_14_days": 18,
  "available_units_formatted": "18 units",
  "has_data": true,
  "as_of_date": "2024-11-28"
}
GET

/pricewatch/communities/:id/overview

Get comprehensive competitive positioning analysis with PSI (Pricing Position Indicator) metrics for each floor plan and portfolio-level summary statistics. Includes Overall PSI, CRI (Competitiveness Range Index), and Market Concession Pressure metrics.

Required Scope

pricewatch:read

Path Parameters

ParameterTypeRequiredDescription
idUUIDCommunity ID

Key Metrics

PSI (Pricing Position Indicator):

Formula: (Subject Rent / Avg Comp Rent) - 1. Positive values mean above market, negative means below market.

CRI (Competitiveness Range Index):

Weighted percentile rank (0-100). Interpretation: 0-30 = aggressively priced, 30-60 = market-aligned, 60-90 = premium, 90-100 = outlier.

Market Concession Pressure:

Percentage of comps offering concessions and average concession value. Indicates competitive intensity in the market.

Example Request

cURL

curl https://api.aryna.ai/v1/pricewatch/communities/550e8400-e29b-41d4-a716-446655440000/overview \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

JSON

{
  "community": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Sunset Towers",
    "address": "123 Main St, Austin, TX 78701"
  },
  "floor_plans": [
    {
      "bedrooms": 2,
      "bathrooms": 1,
      "square_feet": 850,
      "base_rent": {
        "subject_rent": 150000,
        "avg_comp_rent": 145000,
        "psi": 0.0345,
        "rent_variation": 5000,
        "rent_per_sqft_variation": 0.059,
        "percentile_rank": 70,
        "market_low": 135000,
        "market_high": 160000,
        "comps_with_data": 8
      },
      "ner": {
        "subject_rent": 145000,
        "avg_comp_rent": 140000,
        "psi": 0.0357,
        "rent_variation": 5000,
        "rent_per_sqft_variation": 0.059,
        "percentile_rank": 72,
        "market_low": 130000,
        "market_high": 155000,
        "comps_with_data": 8,
        "comps_offering_concessions": 6,
        "pct_comps_offering_concessions": 75
      }
    }
  ],
  "overall_metrics": {
    "overall_psi_base": 0.042,
    "overall_psi_ner": 0.038,
    "cri_base": 68,
    "cri_ner": 65,
    "market_concession_pressure": {
      "pct_comps_offering": 75,
      "avg_concession_value": 12000,
      "total_comps": 10,
      "comps_with_concessions": 7
    }
  }
}
GET

/pricewatch/communities/:id/vacancy-trend

Get historic vacancy trends (subject vs comp average over time) and forward projections (14d, 30d, 60d, 90d) based on available_from dates. Perfect for occupancy forecasting and portfolio vacancy analysis.

Required Scope

pricewatch:read

Example Response

JSON

{
  "community_id": "550e8400-e29b-41d4-a716-446655440000",
  "community_name": "Sunset Apartments",
  "trends": [
    {
      "date": "2024-09-01T10:00:00Z",
      "survey_id": "660e8400-e29b-41d4-a716-446655440000",
      "subject_vacancy": 12.5,
      "avg_comp_vacancy": 15.2
    },
    {
      "date": "2024-10-01T10:00:00Z",
      "survey_id": "770e8400-e29b-41d4-a716-446655440000",
      "subject_vacancy": 10.8,
      "avg_comp_vacancy": 14.1
    }
  ],
  "projections": {
    "14d": 9.5,
    "30d": 8.2,
    "60d": 7.1,
    "90d": 6.5
  },
  "total_surveys": 12
}
POST

/pricewatch/communities/:id/comps

Manually add a comparable community for a subject property. Automatically triggers data collection (Agent 2 pricing and Agent 3 enrichment). Maximum 10 comparable communities per subject property.

Required Scope

pricewatch:write

Request Body

FieldTypeRequiredDescription
namestringCommunity name
addressstringFull address
zipcodestringUS zipcode (5 or 9 digit)
website_urlstringNoCommunity website (optional)

Example Request

cURL

curl -X POST "https://api.aryna.ai/v1/pricewatch/communities/550e8400-e29b-41d4-a716-446655440000/comps" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Competitor Apartments",
    "address": "456 Oak St, Austin, TX",
    "zipcode": "78701",
    "website_url": "https://competitor.com"
  }'

Example Response (201 Created)

JSON

{
  "success": true,
  "comp_id": "660e8400-e29b-41d4-a716-446655440000",
  "message": "Comparable added successfully. Data collection in progress.",
  "actions": [
    "agent_3_enrichment_triggered",
    "agent_2_pricing_triggered"
  ]
}
PATCH

/pricewatch/communities/:id/comps/:comp_id

Activate or deactivate a comparable community for future surveys. Useful for swapping comps when hitting the 10-comp limit. Deactivated comps are not included in new surveys but historical data is preserved.

Required Scope

pricewatch:write

Request Body

FieldTypeRequiredDescription
is_included_in_surveysbooleanInclude in future surveys (true = active, false = deactivated)

Example Request

cURL

curl -X PATCH "https://api.aryna.ai/v1/pricewatch/communities/550e8400-e29b-41d4-a716-446655440000/comps/660e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "is_included_in_surveys": false
  }'

Example Response

JSON

{
  "success": true,
  "comp_id": "660e8400-e29b-41d4-a716-446655440000",
  "is_included_in_surveys": false,
  "message": "Comparable excluded from future surveys"
}

Try it in the Interactive Docs

Test these endpoints directly in your browser with our interactive OpenAPI documentation.

Open Interactive API Docs