Base URL

There’s no path prefix beyond /v1 — the service is meant to sit behind a gateway that handles routing/TLS/auth. Locally, that’s:

Endpoints at a glance

Request format

Both /v1/embed and /v1/compare take multipart/form-data, not JSON — you’re uploading raw image bytes, not base64-encoding them into a JSON body. Field names are documented per-endpoint.

Error format

Every error response is JSON with at minimum an error key, and a field key when the error is specific to one of multiple uploaded images (/v1/compare only):
See Architecture → ImageUtils for exactly where each check happens and why.

Upload limits

  • Per-file: 10 MB (ImageUtils::kMaxUploadBytes)
  • Total request body: 12 MB (Drogon’s setClientMaxBodySize, in main.cpp) — gives headroom for multipart boundaries/headers over two 10 MB files in /v1/compare, but two files close to the per-file limit can still combine to exceed this and get a 413 from Drogon itself (before your handler even runs).
  • Dimensions: 20px–4096px on both axes.
These are compile-time constants (src/ImageUtils.h), not currently environment-configurable. If you need different limits, that’s a code change, not a config change.