Living with Fire API
1,361 plants with fire data — open API for fire-resistant landscapes
https://lwf-api.vercel.app/api/v2
Swagger UI
Interactive docs — try endpoints live
Scalar API Reference
Clean docs with search
Plant Data Field Guide
Every field explained + JSON download
For Coding Agents
Copy these URLs into your AI coding agent to get started.
GET /api/v2/docs-raw — Full OpenAPI 3.0 spec as JSON
GET /plant-fields.json — Every field, attribute, and allowed value with descriptions
GET /api/v2/plants?includeImages=true — Browse all 1,361 plants as JSON
GET /api/v2/attributes/hierarchical — Full attribute tree with allowed values
GET /api/v2/plants/1b78126d-... — Test plant (Glossy abelia) with all values + images
Key Endpoints
GET /plants — Paginated list. ?includeImages=true ?search=abelia
GET /plants/{id} — Plant + images + all resolved values in one call.
resolved.value for display.GET /plants/{id}/images — All images. Primary: isPrimary: true.
GET /attributes/hierarchical — Full attribute tree with allowed values.
GET /values/bulk?attributeIds=...&plantIds=...&resolve=true — Batch values with display names. Both params optional. Default limit: 5,000.
resolve=true, returns raw IDs. Use /plants/{id} for the easiest single-plant approach.GET /plants/{id}/risk-reduction — Fire risk score + best practices text.
GET /filter-presets — Pre-built filter configs.
Supporting Data
GET /sources — Research sources and data provenance.
GET /key-terms — Fire-related glossary with definitions.
GET /nurseries — Local nurseries with contact info.
GET /resources — Educational resource links by category.
GET /risk-reduction-snippets — Editable fire risk reduction advice text.
All prefixed with /api/v2. Pagination: ?limit=&offset=. Format: {"data":[...],"meta":{"pagination":{...}}}
For AI coding agents: GET /api/v2/docs-raw (OpenAPI spec) · GET /plant-fields.json (all fields + attribute tree)
Data Structure
- Attributes define what can be measured (e.g., "Water Needs")
- Attributes have
valuesAllowedarrays (each option has an ID + display label) - Values store the selected option ID for each plant
- Multi-select attributes = multiple value rows per plant
The API resolves display names automatically. Each value has a resolved object:
// GET /api/v2/plants/{id} — values are inline on the plant object
{
"commonName": "Glossy Abelia",
"values": [
{
"attributeName": "Water Amount",
"rawValue": "04",
"resolved": { "value": "Low", "type": "enum" }
}
]
}
// Just use resolved.value:
plant.values.forEach(v => console.log(`${v.attributeName}: ${v.resolved.value}`));
resolved.value.
Quick Start
// Fetch plants with images
const { data, meta } = await fetch(
'https://lwf-api.vercel.app/api/v2/plants?includeImages=true'
).then(r => r.json());
// Get a single plant with images + all resolved values in one call
const { data: plant } = await fetch(
`https://lwf-api.vercel.app/api/v2/plants/${data[0].id}`
).then(r => r.json());
// Plant info + images + values all in one response
console.log(plant.commonName, plant.images, plant.values);
plant.values.forEach(v =>
console.log(`${v.attributeName}: ${v.resolved?.value}`)
);
Test plant: 1b78126d-1f69-44b0-a06b-47116e41270d (Glossy abelia)
Project Ideas
Fire-Safe Garden Planner
Zone layouts by flammability + water needs
Wildlife Habitat Designer
Pollinators, birds, bloom calendars
Native Plant Finder
Region-specific recs, invasive alternatives
Plant Care Assistant
Match plants to conditions, care reminders
Neighborhood Fire Map
Nursery locations, community risk scores
Ecosystem Game
Balance fire safety, water, wildlife with real data