Detect
1 credit / requestPOST /v1/detectAnalyze one camera-trap image and return detected animals with bounding boxes, labels, and taxonomy details.
Processing images regularly or at large scale?
Use this synchronous endpoint for first tests, debugging, and small workflows. For steady pipelines, larger files, or bursty camera-fleet uploads, approved customers can use Async Image Processing.
Open Async Image ProcessingExamples
const form = new FormData()
form.append('image', imageFile)
form.append('country', 'USA')
form.append('threshold', '0.2')
form.append('classify', 'true')
form.append('smooth_herd', 'true')
form.append('latitude', '56.834')
form.append('longitude', '9.994')
form.append('metadata', 'true')
form.append('top_candidate', '2')
const response = await fetch('https://api.animaldetect.com/v1/detect', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + process.env.ANIMAL_DETECT_API_KEY,
},
body: form,
})
const data = await response.json(){
"id": "5e4e5dbd-2604-46b4-bb87-8f42fd682b08",
"expires_at": "2026-03-12T09:44:20.954Z",
"annotations": [
{
"id": 0,
"bbox": [0.41, 0.82, 0.20, 0.17],
"score": 0.997,
"label": "canine family",
"taxonomy": {
"id": "3184697f-51ad-4608-9a28-9edb5500159c",
"class": "mammalia",
"order": "carnivora",
"family": "canidae",
"genus": "",
"species": ""
},
"top_candidates": [
{
"label": "red fox",
"score": 0.18,
"taxonomy": {
"id": "11111111-1111-4111-8111-111111111111",
"class": "mammalia",
"order": "carnivora",
"family": "canidae",
"genus": "vulpes",
"species": "vulpes"
}
}
]
}
],
"metadata": {
"image_width": 4000,
"image_height": 3000,
"file_size": 2456789
},
"info": {
"processing_time_ms": 919,
"model_version": "mdv1000-speciesnet",
"model_id": "mdv1000-speciesnet",
"country_processed": "USA",
"threshold_applied": 0.2
}
}Parameters
Required
Image data. Upload request body limit is 20MB; raw image budget is 10MB.
Optional
Optional geofencing hint (CCA2/CCA3/full country name).
Confidence threshold between 0.01 and 0.99. Default: 0.2.
Default: `true`. Set to `false` for detector-only `animal`, `human`, or `vehicle` labels.
When `true`, herd animals can use a precise label already found in the same image. Experimental: Denmark only.
Optional. Used only when `longitude` and `country` are also present. Adds area-level geofencing inside the country.
Optional. Used only when `latitude` and `country` are also present. Adds area-level geofencing inside the country.
Set to `true` to include available image metadata in the response.
Positive integer (1-10). With `classify=true`, returns alternative species candidates on each annotation.
Request Notes
Send multipart/form-data for files or JSON with a base64 image. Use `classify=false` for faster coarse labels. Send `latitude` and `longitude` together; they only apply when `country` is also present. Limits: 20MB request body and 10MB raw image.
Status Codes
Notes
- Best for: classical wildlife camera traps.
- Use `classify=false` for faster blank filtering. Labels become coarse: `animal`, `human`, or `vehicle`.
- `smooth_herd=true` can replace broad herd labels such as `mammal` with a precise species already present in the image. Experimental: Denmark only.
- `latitude` and `longitude` require each other and `country`. Without all three, area-level geofencing has no effect.
- `metadata=true` includes metadata only for fields found in the source image.
- `top_candidate` with `classify=true` can add ranked alternative species to each annotation.
- Use `/detect-urban` for urban, indoor, roadside, zoo, farm, or other human-modified scenes.