Living with Fire API
1,361 plants with fire data — open API for fire-resistant landscapes
https://lwf-api.vercel.app/api/v1
Swagger UI
Interactive docs — try endpoints live
Scalar API Reference
Clean docs with search
Plant Data Field Guide
Every field explained + JSON download
Browse Plants (JSON)
Raw JSON — paginated with images
Data Structure (JSON)
Hierarchical attribute tree
Live Example App
See the data in action
For Coding Agents
GET /api/v1/docs-raw — Full OpenAPI 3.0 spec as JSON. Feed this to your agent.
GET /plant-fields.json — Every field, attribute, and allowed value with descriptions.
Key Endpoints
GET /plants — Paginated list. ?includeImages=true ?search=abelia
GET /plants/{id}/values — All attributes for a plant, with resolved display names.
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=... — Batch values. plantIds optional.
GET /plants/{id}/risk-reduction — Fire risk score + best practices text.
GET /filter-presets — Pre-built filter configs.
GET /key-terms — Fire glossary.
GET /nurseries — Where to buy.
GET /resources — Educational links.
All prefixed with /api/v1. Pagination: ?limit=&offset=. Format: {"data":[...],"meta":{"pagination":{...}}}
For AI coding agents: GET /api/v1/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/v1/plants/{id}/values
{
"attributeName": "Water Amount",
"rawValue": "04", // stored ID
"resolved": { "value": "Low", "type": "enum" } // display name
}
// Just use resolved.value:
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/v1/plants?includeImages=true'
).then(r => r.json());
// Get a plant's attributes
const { data: values } = await fetch(
`https://lwf-api.vercel.app/api/v1/plants/${data[0].id}/values`
).then(r => r.json());
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