Resolution API
Generate consistent, deterministic IDs for taxa and locations across all BirdLife tools.
Base URL:
https://birdlife.tech/api/v1 Taxon Resolution
Convert a scientific name to a deterministic UUID. Same name always returns the same ID.
GET /api/v1/taxon/resolve?name={scientificName} Try it
{
"data": [
{
"taxonID": "62b22397-1d3e-5bc6-9df2-13a8c4149861",
"slug": "erithacus-rubecula",
"scientificName": "Erithacus rubecula",
"taxonRank": "SPECIES",
"extensions": {
"resolution.computed": "true"
}
}
],
"meta": {
"resultType": "taxon-resolve",
"queryTimestamp": "2026-07-10T12:00:00.000Z"
}
} Location Resolution
Create or find a location by coordinates. Locations within ~11m are deduplicated.
POST /api/v1/location/resolve Request body
{
"name": "Minsmere Reserve",
"latitude": 52.2456,
"longitude": 1.6234
} Try it
{
"data": [
{
"locationID": "4e39b755-b31b-5e4d-a91c-4c937303af0e",
"slug": "minsmere-reserve",
"name": "Minsmere Reserve",
"decimalLatitude": 52.2456,
"decimalLongitude": 1.6234,
"geodeticDatum": "WGS84",
"extensions": {
"resolution.matched": "true"
}
}
],
"meta": {
"resultType": "location-resolve",
"queryTimestamp": "2026-07-10T12:00:00.000Z"
}
} Rate Limiting
- 60 requests per minute per IP
- Response headers:
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset - Exceeded:
429 Too Many RequestswithRetry-Afterheader
Response Format
All responses follow the BirdLife API Response Convention:
{data[], meta} envelope with entities conforming to
birdlife-schema.
Tool-specific enrichments go in extensions (namespaced).