API requests are authenticated using Bearer tokens. Create API keys in Settings.
Scopes: API keys can be scoped to read, write, or read,write.
Expiration: Keys can be set to expire on a specific date.
/api/v1/logs scope: writeIngest a single encrypted log entry.
{ "source": "my-app", "level": "info", "timestamp": "2026-03-29T10:00:00Z", "ciphertext": "<base64>", "iv": "<base64 12 bytes>", "ephemeral_public_key": "<base64 65 bytes>" }{ "id": "uuid-of-log-entry" }/api/v1/logs/batch scope: writeIngest up to 500 encrypted log entries in a single transaction.
{ "logs": [ { "source": "app", "level": "info", "ciphertext": "...", "iv": "...", "ephemeral_public_key": "..." }, ... ] }{ "ids": ["id1", "id2", ...], "count": 2 }/api/v1/keys/public scope: readFetch the user's active ECDH P-256 public key. SDKs use this to encrypt logs.
{ "id": "key-uuid", "public_key": "<base64 65 bytes>", "key_type": "ecdh-p256" }/api/v1/keys/public scope: writeStore a new public key. Deactivates the previous one.
{ "public_key": "<base64 65-byte uncompressed P-256 key>" }{ "id": "new-key-uuid" }/health no authHealth check endpoint. Returns server status and version.
{ "status": "ok", "version": "0.1.0" }KryptaLogs uses hybrid ECIES encryption:
Only the holder of the private key (derived from the seed phrase) can decrypt.