DEVELOPER INTERFACE / V1

Integrate with clear boundaries.

The imported FastAPI service provides authenticated image inference, bounded recorded-video jobs, health status and an OpenAPI schema. A reviewed checkpoint is required before inference becomes ready.

MODEL GATE CLOSED UNTIL CONFIGURED

Start the API locally

From the repository root, use the existing locked Python environment and configure a tenant-scoped API key in the process environment. The API intentionally retains its IRISEA_* names for compatibility.

cd products/perception
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install -r requirements.lock
$env:IRISEA_API_KEYS = '{"local-operator-key-change-me":{"tenant":"local","role":"operator"}}'
python -m uvicorn apps.api.main:app --host 127.0.0.1 --port 8000

Submit a permitted image

curl.exe -X POST http://127.0.0.1:8000/v1/infer/image ^
  -H "X-API-Key: %IRISEA_KEY%" ^
  -F "image=@permitted-frame.jpg" ^
  -F "rights_reference=authorized local test"

Image uploads are size- and format-checked. Results carry model/source provenance and image-space advisory evidence. Physical range and time-to-collision are not produced.

Recorded MP4 path

The local decoder accepts ISO MP4 containers up to 15 seconds and 1080p. Sampling uses 2 frames per second and the job request caps output at 32 frames. This is a bounded recorded-media workflow, not a live stream.

curl.exe -X POST http://127.0.0.1:8000/v1/videos ^
  -H "X-API-Key: %IRISEA_KEY%" ^
  -F "video=@permitted-clip.mp4" ^
  -F "rights_reference=authorized local test"

# Create a job from the returned video id with max_frames between 2 and 32.
# Poll /v1/jobs/{id}; fetch /v1/jobs/{id}/results when complete.

Versioned interface

Run the API locally, then inspect /docs for Swagger UI, /v1/schema for OpenAPI 3.1 and /health/ready for model status. Keys are server-side only; do not put them in browser code. Keep IRISEA_* variable names until a tested compatibility migration is made.