> ## Documentation Index
> Fetch the complete documentation index at: https://docs.northaxiumdata.ca/llms.txt
> Use this file to discover all available pages before exploring further.

# Infrastructure Projects

> Retrieve a list of infrastructure projects funded by the Canadian government.

Get a standardized list of federal infrastructure funding projects, filterable by region, timeline, and project type.

### Query Parameters

<ParamField query="q" type="string">
  Full-text match across title, recipient, and location. Example: `University of Toronto`.
</ParamField>

<ParamField query="province" type="string">
  Two-letter province code. Example: `ON`.
</ParamField>

<ParamField query="program" type="string">
  Partial match on `program_en`. Example: `Canada Summer Jobs`.
</ParamField>

<ParamField query="status" type="string">
  Exact match on project status. Example: `issued`.
</ParamField>

<ParamField query="min_value" type="number">
  Minimum federal contribution. Example: `100000`.
</ParamField>

<ParamField query="max_value" type="number">
  Maximum federal contribution. Example: `5000000`.
</ParamField>

<ParamField query="issued_after" type="string">
  ISO 8601 approved-date lower bound. Example: `2023-01-01`.
</ParamField>

<ParamField query="issued_before" type="string">
  ISO 8601 approved-date upper bound. Example: `2023-12-31`.
</ParamField>

<ParamField query="sort_by" type="string">
  `value` or `date`. Default: `date`. Example: `date`.
</ParamField>

<ParamField query="sort_order" type="string">
  `asc` or `desc`. Default: `desc`. Example: `desc`.
</ParamField>

<ParamField query="limit" type="integer" default="100">
  Result limit. Default: `100`. Max: `200`. Example: `25`.
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Result offset. Default: `0`. Example: `50`.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.northaxiumdata.ca/api/v1/infrastructure_projects?province=ON&limit=10" \
    -H "X-API-Key: <your-api-key>"
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.northaxiumdata.ca/api/v1/infrastructure_projects"
  headers = {"X-API-Key": "<your-api-key>"}
  params = {
      "limit": 10,
      "province": "ON"
  }

  response = requests.get(url, headers=headers, params=params)
  print(response.json())
  ```

  ```javascript Node.js theme={null}
  const fetch = require('node-fetch');

  const url = new URL('https://api.northaxiumdata.ca/api/v1/infrastructure_projects');
  url.search = new URLSearchParams({
    limit: '10',
    province: 'ON'
  });

  fetch(url, {
    headers: {
      'X-API-Key': '<your-api-key>'
    }
  })
    .then(res => res.json())
    .then(json => console.log(json));
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "record_id": "INF-2023-8841",
        "title_en": "Ontario Line Subway Extension",
        "province": "ON",
        "location_en": "Toronto, Ontario",
        "federal_contribution": 4500000.00,
        "program_en": "Public Transit Infrastructure Fund",
        "approved_date": "2023-01-15",
        "recipient_name": "Metrolinx",
        "status": "In Progress"
      }
    ],
    "meta": {
      "total": 1,
      "limit": 10,
      "offset": 0
    }
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "code": "BAD_REQUEST",
      "message": "Invalid parameter value."
    }
  }
  ```

  ```json 401 theme={null}
  {
    "error": {
      "code": "UNAUTHORIZED",
      "message": "Missing API key. Pass your key in the X-API-Key header."
    }
  }
  ```

  ```json 404 theme={null}
  {
    "error": {
      "code": "NOT_FOUND",
      "message": "Infrastructure project not found."
    }
  }
  ```

  ```json 429 theme={null}
  {
    "error": {
      "code": "RATE_LIMITED",
      "message": "Monthly request limit exceeded."
    }
  }
  ```
</ResponseExample>
