Canada Home Costs logo chc CANADA HOME COSTS

Intake API Documentation

This documentation describes the verified rate data intake API for government and utility partners.

Base URL

All endpoints are relative to:

{PUBLIC_API_BASE_URL}/api/v1/intake

Authentication

Use a bearer token issued to your organization. Keys can be rotated on request.

Authorization: Bearer <api_key>

Optional request signing (HMAC)

If enabled, include the following headers:

X-CHC-Timestamp: 1700000000
X-CHC-Signature: v1=<hex>

Signature base string:

timestamp.body

Endpoints

Method Path Description
POST /submissions Submit a new data payload
GET /submissions List submissions
GET /submissions/{id} Fetch submission details
GET /schemas/{type} Retrieve a schema definition

Warning

Do not include personal information in submissions.

Submission envelope

Requests to POST /submissions must follow this envelope. When a rate basis is percent, use decimals (0.01 = 1%).

{
  "submission_type": "property_tax|land_transfer_tax|electricity_rates",
  "jurisdiction_key": "on-toronto",
  "effective_date": "YYYY-MM-DD",
  "payload": { ... },
  "sources": ["https://..."],
  "supporting_docs": [{ "name": "Rate table PDF", "url": "https://..." }]
}

Examples

Property tax submission

curl -X POST "{PUBLIC_API_BASE_URL}/api/v1/intake/submissions" \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "submission_type": "property_tax",
    "jurisdiction_key": "on-hamilton",
    "effective_date": "2025-01-01",
    "payload": {
      "tax_year": 2025,
      "property_class": "residential",
      "scenario": {
        "scenario_key": "urban_ft_fire",
        "scenario_label": "Urban (Full-Time Fire)",
        "coverage": "complete_total",
        "requires_zone_selector": false,
        "zone_selector_label": null,
        "zone_selector_options": null
      },
      "components": [
        {
          "component_key": "municipal_general",
          "component_label": "Municipal",
          "authority_type": "municipal",
          "published_rate_value": 0.0105,
          "published_rate_basis": "per_dollar"
        },
        {
          "component_key": "education",
          "component_label": "Education",
          "authority_type": "provincial_education",
          "published_rate_value": 0.003225297,
          "published_rate_basis": "per_dollar"
        }
      ]
    },
    "sources": ["https://example.com/source.pdf"],
    "supporting_docs": [{ "name": "Rate table PDF", "url": "https://example.com/source.pdf" }]
  }'

Land transfer tax submission

curl -X POST "{PUBLIC_API_BASE_URL}/api/v1/intake/submissions" \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "submission_type": "land_transfer_tax",
    "jurisdiction_key": "on",
    "effective_date": "2026-01-01",
    "payload": {
      "province_code": "ON",
      "tax_name": "Land Transfer Tax",
      "brackets": [
        {"up_to": 55000, "rate_percent": 0.005},
        {"up_to": 250000, "rate_percent": 0.01},
        {"up_to": 400000, "rate_percent": 0.015},
        {"up_to": 2000000, "rate_percent": 0.02},
        {"greater_than": 2000000, "rate_percent": 0.025}
      ],
      "rebates": [
        {"type": "first_time_buyer", "max_amount_cad": 4000, "phase_out": null}
      ]
    },
    "sources": ["https://example.gov/ltt"],
    "supporting_docs": [{ "name": "Tax schedule", "url": "https://example.gov/ltt" }]
  }'

Schemas

Schemas are available at {PUBLIC_API_BASE_URL}/api/v1/intake/schemas/{type}. See schema reference pages for details and examples.

Last updated: February 9, 2026