Ready
Readiness probe: verifies Postgres and Redis connectivity. Returns 503 if any fail.
API key access
curl -X GET "http://localhost:8000/api/v1/health/ready"{
"status": "ok",
"version": "string",
"checks": {
"property1": "ok",
"property2": "ok"
}
}{
"status": "ok",
"version": "string",
"checks": {
"property1": "ok",
"property2": "ok"
}
}Health
Liveness probe: the process is up. Does not touch external services.
Commit Import
Import the uploaded rows with this mapping. 409 if the import was already committed. Returns a result per row (created / updated / skipped / error, with a reason) and the summary counts. Rows matching the suppression list are imported but reported in `suppressed` (they stay uncontactable), unless `skip_suppressed` is set. With `enrich: true` and `ENRICHMENT_ASYNC=true` (off by default) the leads the import creates or updates (not suppressed ones, at most 100 per import) are also queued for enrichment as background jobs; `options.enrich` is then `true`. Otherwise the flag is ignored. With `IMPORTS_ASYNC_MIN_ROWS` set (off by default), a file with at least that many data rows is imported by a background job instead: the response is 202 with the same body, `summary.status` `processing` and empty `results`. Poll `GET /imports/{import_id}` until it is `completed` (or `failed`): it then has the counts and the skipped or failed rows (`errors`).