Loading...
Animal Detect logo

API endpoint update

New integrations should use . Existing URLs will keep working for the next few months while teams migrate.

Scan Image Text URL

1 credit / request
POST /v1/scan-image-text-url

Extract text from a public camera-trap image URL and return structured fields when they can be detected. Direct OCR API calls require Core or higher.

Try in Playground

Examples

Node.js / Express
const response = await fetch('https://api.animaldetect.com/v1/scan-image-text-url', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ' + process.env.ANIMAL_DETECT_API_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    url: 'https://example.com/camera-trap.jpg',
  }),
})

const data = await response.json()
Example Response
{
  "raw_text": "BUSHNELL 2026-02-12 09:17 PM 59F",
  "date": "2026-02-12",
  "time": "21:17:00",
  "temperature": { "value": 59, "unit": "F" },
  "camera_brand": "bushnell"
}

Parameters

Required

string

Public image URL. Fetched image limit is 10MB.

Request Notes

Send JSON only. Private IPs and internal targets are blocked. Fetched images must be 10MB or smaller.

Response Fields

string

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

string (YYYY-MM-DD)

Optional. Detected and normalized date from the image overlay.

string (HH:MM:SS, 24h)

Optional. Detected and normalized 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 (normalized 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 or blocked URL target.
401Invalid, missing, or revoked API key.
403Paid plan required in the normal API.
402Credit limit exceeded.
413Fetched image is too large.
429Rate limit exceeded.
500Unexpected internal server error.
503OCR provider temporarily unavailable.

Notes

  • Fields not found during extraction are omitted from the response.
  • Optimized 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.