5 min read · April 1, 2026
When you embed Kopra into your product, your customers' data flows through our infrastructure. That means security is not a feature we bolt on later. It is built into every layer: data access, authentication, token generation, API endpoints, webhook delivery, and hosting.
This post walks through each security layer, so you can evaluate whether Kopra meets your production requirements.
Every row in Kopra's database is scoped to your account and, where applicable, to your customer's tenant. These identifiers are not optional filters. They are mandatory parameters enforced at the data access layer on every query.
There is no code path that retrieves data without account and tenant scoping. Even if a bug exists in one query, cross-tenant data leakage requires bypassing both the authentication middleware (which sets the account scope from a verified credential) and the data access layer (which requires it on every call).
Deleted records are excluded from all query results. This prevents accidentally exposing data that a customer has removed.
Kopra uses three distinct authentication mechanisms, each designed for a specific integration pattern.
Logged-in users interact with Kopra's management dashboard through session-based auth with HTTP-only cookies and standard CSRF protections. This is the only method that provides access to account management, billing, and field group configuration.
When you embed Kopra's field editor into your product via an iframe, authentication happens through short-lived JWT tokens. Your backend requests a token from Kopra's API, scoped to a specific account and tenant. The token is then passed to the iframe, which uses it for all subsequent requests.
Tokens contain only the minimal claims needed for data scoping. No personally identifiable information, no permissions beyond tenant scope. Tokens are cryptographically signed and verified on every request.
For REST API integrations, Kopra uses API keys passed via the X-API-Key header. Keys are generated with cryptographic randomness. Only a one-way hash is stored in the database. The raw key is shown once at creation and never stored or logged. This means that even a full database breach does not expose usable API keys.
Embed tokens have several safeguards beyond basic JWT signing:
All API routes pass through layered middleware before reaching any business logic.
Rate limiting is applied at multiple levels. Authentication-related endpoints have stricter limits than general API calls. Rate limit headers follow the standard RateLimit-* format so clients can implement backoff.
Input validation uses schema-based validation for all request bodies. Field definitions, field values, and configuration payloads are parsed and validated before they reach the database layer. Invalid input returns structured error responses with specific field-level messages.
Error handling follows HTTP semantics consistently: 400 for validation errors, 401 for missing or invalid credentials, 403 for insufficient permissions, 404 for missing resources (with tenant scoping, so you cannot probe for resources in other tenants), and 429 for rate limit violations.
Request logging records the method, path, status code, and response time for every API call, enabling anomaly detection and incident investigation.
When Kopra dispatches webhook events (on field group, field, or field value changes), each delivery is cryptographically signed using a per-endpoint secret. The signature is sent in the X-Kopra-Signature header.
Your webhook handler should verify the signature using constant-time comparison before processing the payload. See the webhooks guide for implementation examples.
Each webhook endpoint has its own secret, generated at creation. If one endpoint's secret is compromised, other endpoints remain secure. Failed deliveries retry with exponential backoff up to a maximum number of attempts before being marked as permanently failed.
Kopra is hosted in Europe, with all data stored in European data centers.
Transparency matters. Here is what is not yet in place:
These are on the roadmap. If any of them are blockers for your use case, reach out and we can discuss timelines.
Before going live with Kopra in your production environment, verify each of these:
If you have questions about any of these security layers or need details for a vendor security questionnaire, contact us at support@kopra.dev.