Access and authentication
Paid callers authenticate with Authorization: Bearer <API_KEY> or X-API-Key. Header-only key transport is required in the production checklist, and the backend enforces both IP-level and user-level rate limiting.
API
The paid API accepts one file in document or repeated documents fields, analyzes each item, and returns per-file findings, counters, and save status in one JSON response.
Paid callers authenticate with Authorization: Bearer <API_KEY> or X-API-Key. Header-only key transport is required in the production checklist, and the backend enforces both IP-level and user-level rate limiting.
The production runbook requires MySQL over TLS, Redis over TLS, background workers, aligned upload limits, and validation of 429 responses and API-key rotation before go-live.
Upload one file with document or multiple files with repeated documents form fields. The backend authenticates the caller, applies per-IP and per-user rate limits, analyzes each file, optionally stores encrypted copies for accounts with secure storage enabled, and returns per-file findings in one JSON response.
The production backend currently exposes this upload endpoint and route aliases only. The previous multi-step submission flow on this page was not accurate and has been removed.
https://portal.deltalyth.com
/api/analyze-documents
/api/analyze-documents/
/api/analyze_documents
Use multipart/form-data with a single document field or repeated documents fields. Requests above the configured MAX_FILES_PER_REQUEST limit are rejected, and accounts without remaining scan allowance receive subscription_blocked.
The API returns aggregate counts plus a results array for each analyzed file. Each item includes status, any backend error code, full flags, triggered flags, and save status.
The backend returns explicit machine-readable codes for authentication, rate limiting, upload validation, and subscription enforcement.
The production checklist and runbook require header-only API key transport, production-safe rate-limit settings, MySQL over TLS, Redis over TLS, and background workers for queue processing. Upload size limits must stay aligned between Flask and the reverse proxy.
For go-live readiness, verify 429 rate_limited behavior under burst traffic, confirm old keys are rejected after rotation, and keep MAX_UPLOAD_MB aligned with proxy limits such as client_max_body_size.