# Sidaxis API documentation

Sidaxis is the human authorisation layer: prove a living person is present, record what she authorised a machine to do, and refuse anything outside it.

Two primitives. **oneface** proves a real, living person is present, on her own device. Nothing is stored: no image, no template. Speech correlated with the pulse read by the camera at the same instant proves a living person is there at that moment, and voice never says who the person is. **Mandates** record what that person authorised a machine to do — scope, ceiling, expiry — and the layer refuses anything outside it.

Sidaxis never moves money, holds funds or settles. It answers whether an action was authorised and records that the answer was given. The executor is your own system or your payment provider.

## Shape of the API

Every endpoint is a function under one base path. Function names are the contract.

```
https://api.sidaxis.com/functions/v1/<function-name>
```

Authentication is the header `x-sidaxis-api-key`, on every call. See [authentication](/authentication) for the four key forms and the one endpoint that takes a first-party user token instead.

## What you can build today

- Prove a live human is present and recognise her again — [enroll](/identity/enroll), [recognise](/identity/recognise).
- Authorise an action — login, payment, signature — against a live capture: [process-biovital-transaction](/identity/recognise#the-authorisation-sink).
- Issue, check, consume, read and revoke a mandate — [mandates](/mandates).
- Read a receipt, publicly, and see how strong the proof was — [receipts/verify](/receipts/verify).
- Mint a hosted capture session from your server — [sessions/create](/sessions/create).
- Paint the hosted screen with the merchant's own theme and check handle availability — [theme](/theme), [alias](/alias).

## Assurance belongs to the act

The strength of a proof belongs to the **act**, not to the identity. It is derived at the instant of the act and frozen on the receipt. There is no identity-level assurance column and there never will be. Three levels: `face`, `face_voice`, `face_voice_doc`. See [assurance](/assurance).

## Liveness versus document

Liveness is always of the moment and is never stored or reused — every operation requires a fresh capture. A document is a verified fact with its own validity: it does not expire every minute, it expires on the document's own date, so it is asked for once and never again while it is valid. See [document](/document).

## Built to be consumed by an agent

That is the point of the product, and it answers today. The MCP server is live at `https://api.sidaxis.com/functions/v1/mcp` with nine tools, each mapped one-to-one onto an endpoint documented here. See [MCP](/mcp).

## Refusals are not errors

A refusal is `HTTP 200` with `allowed: false` and a machine-stable `reason`. Branch on `reason`, never on the status code. See [errors and refusals](/errors).

Machine-readable:

- openapi.yaml: https://docs.sidaxis.com/openapi.yaml
- spec.json: https://docs.sidaxis.com/spec.json
- llms.txt: https://docs.sidaxis.com/llms.txt
