§1Service health & version
/healthz
Returns dataset version and applied schema migration. Useful as a liveness check.
Request
curl 'https://api.rootfast.org/healthz'
Response · 200
{
"ok": true,
"dataset_version": "0.0.1",
"schema_version": "001"
} Try it → https://api.rootfast.org/healthz
§2One plant, in full
/v1/plants/{usda_symbol}
Returns a plant record with growth habit, duration, native status by region, every USDA characteristic, and all Montana counties where the taxon is recorded. Resolves synonyms transparently.
Request
curl 'https://api.rootfast.org/v1/plants/PIPO'
Response · 200
{
"plant": {
"usda_symbol": "PIPO",
"scientific_name": "Pinus ponderosa Lawson & C. Lawson",
"scientific_name_canonical": "Pinus ponderosa",
"common_name": "ponderosa pine",
"family": "Pinaceae Spreng. ex Rudolphi",
"gbif_taxon_key": 5285053,
"gbif_match_type": "EXACT",
"rank": "Species",
"...": "..."
},
"growth_habits": ["Tree"],
"durations": ["Perennial"],
"native_status": [
{ "region_code": "L48", "status": "Native" },
{ "region_code": "CAN", "status": "Native" }
],
"characteristics": { "drought_tolerance": "High", "...": "..." },
"counties": [
{ "county_fips": "30031", "county_name": "Gallatin", "state_code": "MT", "nativity": "Native" }
]
} §3Plants in a county
/v1/counties/{county_fips}/plants
All taxa recorded in the given county, with nativity. FIPS is the 5-digit Census code (Gallatin County, MT is 30031).
Request
curl 'https://api.rootfast.org/v1/counties/30031/plants'
Response · 200
{
"county": {
"county_fips": "30031",
"county_name": "Gallatin",
"state_code": "MT"
},
"count": 1362,
"plants": [
{
"usda_symbol": "ABLA",
"scientific_name": "Abies lasiocarpa (Hook.) Nutt.",
"common_name": "subalpine fir",
"family": "Pinaceae Spreng. ex Rudolphi",
"nativity": "Native"
}
]
} §4List of states
/v1/states
Every state with ingested data, plus county and taxon counts. Today this returns Montana only — nationwide ingest is on the roadmap (see /about).
Request
curl 'https://api.rootfast.org/v1/states'
Response · 200
{
"count": 1,
"states": [
{
"state_code": "MT",
"state_name": "Montana",
"state_fips": "30",
"country": "US",
"county_count": 56,
"taxa_count": 3215
}
]
} Try it → https://api.rootfast.org/v1/states
§5State header
/v1/states/{state_code}
Single-state header with county and taxon counts. State code is the two-letter postal abbreviation (case-insensitive).
Request
curl 'https://api.rootfast.org/v1/states/MT'
Response · 200
{
"state": {
"state_code": "MT",
"state_name": "Montana",
"state_fips": "30",
"country": "US",
"county_count": 56,
"taxa_count": 3215
}
} §6Plants in a state
/v1/states/{state_code}/plants
Every taxon in the state, aggregated across counties. county_count is how many counties the taxon appears in; native_counties / introduced_counties / both_counties give the breakdown. nativity is the state-level rollup: "Native" if no introduced records, "Introduced" if no native records, "Both" if mixed or any county records "Both".
Request
curl 'https://api.rootfast.org/v1/states/MT/plants'
Response · 200
{
"state": {
"state_code": "MT",
"state_name": "Montana",
"state_fips": "30",
"country": "US"
},
"counts": { "taxa": 3215, "counties": 56 },
"plants": [
{
"usda_symbol": "PIPO",
"scientific_name": "Pinus ponderosa Lawson & C. Lawson",
"common_name": "ponderosa pine",
"family": "Pinaceae Spreng. ex Rudolphi",
"photo_thumb_url": null,
"county_count": 22,
"native_counties": 22,
"introduced_counties": 0,
"both_counties": 0,
"nativity": "Native"
}
]
} §7Counties in a state
/v1/states/{state_code}/counties
Lightweight listing of every county in the state with its taxa count. Useful for state-overview pages and county pickers.
Request
curl 'https://api.rootfast.org/v1/states/MT/counties'
Response · 200
{
"state": { "state_code": "MT", "state_name": "Montana", "state_fips": "30", "country": "US" },
"count": 56,
"counties": [
{
"county_fips": "30001",
"county_name": "Beaverhead",
"state_code": "MT",
"centroid_lat": 45.07,
"centroid_lon": -112.86,
"taxa_count": 755
}
]
} §8Full-text taxon search
/v1/search?q={query}
Searches across scientific name, common name, family, and genus. Returns up to 25 hits, ranked by BM25.
Request
curl 'https://api.rootfast.org/v1/search?q=ponderosa'
Response · 200
{
"query": "ponderosa",
"results": [
{ "usda_symbol": "PIPO", "scientific_name": "Pinus ponderosa Lawson & C. Lawson", "common_name": "ponderosa pine", "family": "Pinaceae Spreng. ex Rudolphi" },
{ "usda_symbol": "PIPOP", "scientific_name": "Pinus ponderosa Lawson & C. Lawson var. ponderosa C. Lawson", "common_name": "ponderosa pine", "family": "Pinaceae Spreng. ex Rudolphi" }
]
} §EErrors
Errors are plain.
Every error returns a JSON body of { "error": "<message>" }.
The HTTP status carries the meaning.
- 400
- Malformed request (e.g. missing
lat/lng). - 404
- Unknown plant symbol, county FIPS, or route.
- 500
- Database or upstream error — should be rare. Include the request URL when reporting.
§LLicense & attribution
Use it freely. Cite the sources.
The Rootfast dataset is derived from public-domain federal data. The original source records are in the public domain. The merged dataset and this API are published as a public good. No API key is required and there is no commercial gating planned.
- · USDA PLANTS — public domain
- · GBIF Backbone Taxonomy — CC0
- · Rootfast code — MIT
- · Rootfast data — CC0
If you build something with this — a tool, a garden plan, a research paper — we would love to hear about it.