Loading...
Animal Detect logo

Scan Image Text URL

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

Use this endpoint to extract camera-trap style text metadata from a public image URL without uploading a file. OCR endpoints are available on Core and higher plans in the normal API.

Try in Playground

Required Parameters

  • url (string) Public image URL.

Request body is JSON only. Private IPs and internal targets are blocked by URL security checks.

All Possible Response Fields

  • raw_text (string) Required. Full raw text extracted from the image before structured parsing.
  • date (string (YYYY-MM-DD)) Optional. Detected and normalized date from the image overlay.
  • time (string (HH:MM:SS, 24h)) Optional. Detected and normalized time from the image overlay.
  • temperature ({ value: number, unit: "C" | "F" }) Optional. Primary detected temperature value.
  • temperature_alt ({ value: number, unit: "C" | "F" }) Optional. Secondary detected temperature in alternate unit when available.
  • humidity ({ value: number, unit: "%" }) Optional. Detected relative humidity.
  • pressure ({ value: number, unit: string }) Optional. Detected barometric pressure and its unit.
  • moon_phase (string) Optional. Detected moon phase (normalized snake_case label).
  • camera_brand (string) Optional. Detected camera brand based on known camera patterns.
  • camera_model (string) Optional. Detected camera model based on known camera patterns.
  • burst_sequence ({ 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.
429Rate limit exceeded.
500Unexpected internal server error.
503OCR provider temporarily unavailable.
  • Fields not found during extraction are omitted from the response.
  • Parser is optimized for camera-trap overlays (date/time/environment/camera/burst). For arbitrary text, use `raw_text`.
  • Public API keys can still test OCR inside the docs playground only; that exception does not apply to direct `/api/v1` calls.
Node.js / Express
const response = await fetch('https://www.animaldetect.com/api/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

JSON
{
  "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"
}