# Plant Hardiness API
> Work with USDA Plant Hardiness Zones: determine the hardiness zone for any location from its average annual extreme minimum temperature in Celsius or Fahrenheit (returning the zone code such as 6b, the zone number, subzone and the temperature range in both units), browse the complete reference of all 26 subzones from 1a to 13b with their temperature ranges and example regions worldwide, look up a single subzone by code, and find which common garden plants — fruits, vegetables, herbs, shrubs, trees, perennials, vines, bulbs, succulents and grasses — tolerate a given zone. Every endpoint accepts input via the query string or the request body and returns lean JSON. Pure server-side computation (no third-party upstream), so responses are instant and always available. Ideal for gardening and plant-finder apps, AgTech and landscaping tools, nurseries and education.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/hardiness-api/..."
```

## Pricing
- **Free** (Free) — 13,000 calls/Mo, 3 req/s
- **Basic** ($6/Mo) — 160,000 calls/Mo, 9 req/s
- **Pro** ($17/Mo) — 1,200,000 calls/Mo, 22 req/s
- **Mega** ($42/Mo) — 5,500,000 calls/Mo, 55 req/s

## Endpoints

### Hardiness

#### `GET /v1/from-temp` — Zone from minimum temperature

**Parameters:**
- `min_temp_c` (query, optional, string) — Avg annual extreme min temp °C Example: `-18`
- `min_temp_f` (query, optional, string) — Avg annual extreme min temp °F Example: `0`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hardiness-api/v1/from-temp?min_temp_c=-18&min_temp_f=0"
```

**Response:**
```json
{
    "data": {
        "code": "7a",
        "zone": 7,
        "input": {
            "min_temp_c": -17.8,
            "min_temp_f": 0
        },
        "subzone": "a",
        "description": "Average annual extreme minimum 0°F to 5°F (-17.8°C to -15°C)",
        "example_regions": [
            "Washington, DC",
            "Atlanta (cool)",
            "Paris"
        ],
        "temperature_range_c": {
            "max": -15,
            "min": -17.8
        },
        "temperature_range_f": {
            "max": 5,
            "min": 0
        }
    },
    "meta": {
        "timestamp": "2026-05-30T22:48:28.168Z",
        "request_id": "c0cd0afc-d5f5-4d3a-98ec-41291a7909e6"
    },
    "status": "ok",
    "message": "Zone computed",
    "success": true
}
```

#### `GET /v1/plants` — Plants suited to a zone

**Parameters:**
- `zone` (query, optional, string) — Zone number 1..13 Example: `8`
- `type` (query, optional, string) — fruit|vegetable|herb|shrub|tree|perennial|vine|bulb|succulent|grass Example: `herb`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hardiness-api/v1/plants?zone=8&type=herb"
```

**Response:**
```json
{
    "data": {
        "type": "herb",
        "zone": 8,
        "count": 5,
        "plants": [
            {
                "name": "Lavender",
                "type": "herb",
                "max_zone": 9,
                "min_zone": 5,
                "hardiness_range": "zones 5–9"
            },
            {
                "name": "Thyme",
                "type": "herb",
                "max_zone": 9,
                "min_zone": 5,
                "hardiness_range": "zones 5–9"
            },
            {
                "name": "Sage",
                "type": "herb",
                "max_zone": 10,
                "min_zone": 5,
                "hardiness_range": "zones 5–10"
            },
            {
                "name": "Rosemary",
                "type": "herb",
                "max_zone": 11,
                "min_zone": 7,
                "hardiness_range": "zones 7–11"
            },
            {
                "name": "Bay Laurel",
                "type": "herb",
                "max_zone": 11,
                "min_zone": 8,
                "hardiness_range": "zones 8–11"
            }
        ]
    },
    "meta": {
        "timestamp": "2026-05-30T22:48:28.243Z",
        "request_id": "5d05d4a9-6a64-424e-a994-f23988733ba7"
    },
    "status": "ok",
    "message": "Plants retrieved",
    "success": true
}
```

#### `GET /v1/zone` — Single subzone by code

**Parameters:**
- `code` (query, required, string) — Subzone code 1a..13b Example: `6b`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hardiness-api/v1/zone?code=6b"
```

**Response:**
```json
{
    "data": {
        "code": "6b",
        "zone": 6,
        "subzone": "b",
        "description": "Average annual extreme minimum -5°F to 0°F (-20.6°C to -17.8°C)",
        "example_regions": [
            "St. Louis, MO",
            "Berlin",
            "London (cold)"
        ],
        "temperature_range_c": {
            "max": -17.8,
            "min": -20.6
        },
        "temperature_range_f": {
            "max": 0,
            "min": -5
        }
    },
    "meta": {
        "timestamp": "2026-05-30T22:48:28.312Z",
        "request_id": "c19be7b1-376c-48f3-b855-0ac989f9a05c"
    },
    "status": "ok",
    "message": "Zone retrieved",
    "success": true
}
```

#### `GET /v1/zones` — All hardiness subzones

**Parameters:**
- `zone` (query, optional, string) — Filter by zone number 1..13 Example: `7`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hardiness-api/v1/zones?zone=7"
```

**Response:**
```json
{
    "data": {
        "count": 2,
        "zones": [
            {
                "code": "7a",
                "zone": 7,
                "subzone": "a",
                "description": "Average annual extreme minimum 0°F to 5°F (-17.8°C to -15°C)",
                "example_regions": [
                    "Washington, DC",
                    "Atlanta (cool)",
                    "Paris"
                ],
                "temperature_range_c": {
                    "max": -15,
                    "min": -17.8
                },
                "temperature_range_f": {
                    "max": 5,
                    "min": 0
                }
            },
            {
                "code": "7b",
                "zone": 7,
                "subzone": "b",
                "description": "Average annual extreme minimum 5°F to 10°F (-15°C to -12.2°C)",
                "example_regions": [
                    "Washington, DC",
                    "Atlanta (cool)",
                    "Paris"
                ],
                "temperature_range_c": {
                    "max": -12.2,
                    "min": -15
                },
                "temperature_range_f": {
                    "max": 10,
                    "min": 5
                }
            }
        ]
    },
    "meta": {
        "timestamp": "2026-05-30T22:48:28.386Z",
        "request_id": "0e755d58-b6ee-4322-aaa6-aac63c339047"
    },
    "status": "ok",
    "message": "Zones retrieved",
  
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/hardiness-api
OpenAPI spec: https://www.oanor.com/api/hardiness-api/openapi.json
