Seeds of Hawaii

Navigation

REST API Documentation

Access the Seeds of Hawaii database programmatically via our REST API.

Overview

The Seeds of Hawaii API provides access to data on 800+ Hawaiian plant species.

Total Species
REST
API Format
JSON
Response Format

Endpoints

MethodEndpointDescription
GET/api/speciesList species with basic filters
POST/api/queryAdvanced queries and calculations
GET/api/statisticsDatabase statistics
POST/api/llmNatural language queries

Query API

The /api/query endpoint supports complex queries via POST.

POST /api/query
Content-Type: application/json

{
  "filters": {
    "federal_listing": "Endangered",
    "native_status": "Endemic",
    "island": "Maui"
  },
  "advanced": {
    "exclusive_to_island": "Maui",
    "has_measurements": true
  },
  "limit": 100,
  "offset": 0
}

Filters

filters.island

Species present on this island (may also be elsewhere)

advanced.exclusive_to_island

Species found ONLY on this island and nowhere else

filters.federal_listing

Endangered, Threatened, or Not Listed

filters.native_status

Endemic, Indigenous, or Introduced

Valid Island Names

Hawaii IslandMauiOahuKauaiMolokaiLanaiNiihauKahoolaweLaysan IslandMidway AtollKure AtollNihoaNecker IslandFrench Frigate Shoals

Calculations

Seed Volume

{
  "calculate": {
    "type": "seed_volume",
    "params": { "genus": "Hibiscus" }
  }
}

Seeds in Container

{
  "calculate": {
    "type": "seed_count_in_volume",
    "params": {
      "container_volume_ml": 250,
      "genus": "Abutilon"
    }
  }
}

Examples

cURL - Endangered Species

curl -X POST http://localhost:3000/api/query \
  -H "Content-Type: application/json" \
  -d '{"filters": {"federal_listing": "Endangered"}, "limit": 50}'

cURL - Maui Exclusive Species

curl -X POST http://localhost:3000/api/query \
  -H "Content-Type: application/json" \
  -d '{"advanced": {"exclusive_to_island": "Maui"}}'

JavaScript

const response = await fetch('/api/query', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    filters: { native_status: 'Endemic' },
    advanced: { has_measurements: true },
    limit: 100
  })
});
const data = await response.json();

Python

import requests

response = requests.post(
    'http://localhost:3000/api/query',
    json={
        'filters': {'family': 'Campanulaceae'},
        'advanced': {'exclusive_to_island': 'Oahu'}
    }
)
data = response.json()