API endpoint update

New integrations should use . Existing URLs remain supported.

Scan Image Text

Metered / request
POST/v1/scan-image-text

Extract text from a camera trap image overlay and return structured fields when they can be detected.

Try in playground

Parameters

Required

file | base64 string

Image data. Upload request body limit is 20 MB; raw image budget is 10 MB.

Request notes

Send multipart/form-data for files or JSON with a base64 image. Limits: 20 MB request body and 10 MB raw image.

Response fields

string

Required. Full raw text extracted from the image before structured parsing.

string (YYYY-MM-DD)

Optional. Detected and normalised date from the image overlay.

string (HH:MM:SS, 24h)

Optional. Detected and normalised time from the image overlay.

{ value: number, unit: "C" | "F" }

Optional. Primary detected temperature value.

{ value: number, unit: "C" | "F" }

Optional. Secondary detected temperature in alternate unit when available.

{ value: number, unit: "%" }

Optional. Detected relative humidity.

{ value: number, unit: string }

Optional. Detected barometric pressure and its unit.

string

Optional. Detected moon phase (normalised snake_case label).

string

Optional. Detected camera brand based on known camera patterns.

string

Optional. Detected camera model based on known camera patterns.

{ current: number, total: number }

Optional. Detected burst position such as frame 2 of 3.

Status codes

200OCR and metadata extraction completed.
400Validation error (bad payload/image/base64).
401Invalid, missing, or revoked API key.
403Active API billing required in the normal API.
402Free monthly quota used up and no active API billing, or API keys paused.
413File too large for the Instant detection upload limit.
429Rate limit exceeded.
500Unexpected internal server error.
503OCR provider temporarily unavailable.

Notes

  • Fields not found during extraction are omitted from the response.
  • Optimised for camera trap overlays. For other text, use raw_text.
  • Public API keys can still test OCR inside the docs playground only; that exception does not apply to direct /v1 calls.

Examples

Node.js / Express
const form = new FormData()
form.append('image', imageFile)

const response = await fetch('https://api.animaldetect.com/v1/scan-image-text', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ' + process.env.ANIMAL_DETECT_API_KEY,
  },
  body: form,
})

const data = await response.json()
Example response
{
  "raw_text": "CAM01 2026/02/12 21:34:10 15C 72%RH",
  "date": "2026-02-12",
  "time": "21:34:10",
  "temperature": { "value": 15, "unit": "C" },
  "humidity": { "value": 72, "unit": "%" }
}