Security
Keys that do one job, a trail for every change
Scoped credentials, signed webhooks, an exportable audit log and data kept in its region. On from your first request.
- Permissions to scope a key
- 51
- Credential kinds, each with its reach
- 3
- HMAC on every webhook
- SHA-256
- Privacy laws in our DPA
- 5
Access
Least privilege by default.
Give each integration its own key with only the permissions it needs. Browsers get short-lived tokens with rules.
Trail
Know who did what, and prove it.
Signed deliveries, an audit log with before and after values, and alerts when something looks wrong.
Residency
Your data stays in its region.
A Swiss company with data in the EU and Brazil, and more regions coming soon.
In your code
Security from your own code.
Verify deliveries, read the audit log and handle incidents from the SDK, the CLI or plain HTTP.
import { webhooks } from "@polymorfa/sdk";
export async function POST(request: Request) {
const event = await webhooks.verify({
body: await request.arrayBuffer(),
signature: request.headers.get("x-webhook-signature") ?? "",
secret: webhookSecret,
});
// A bad signature throws before you read the payload.
await handle(event);
return new Response(null, { status: 204 });
}API surface
The Security API.
Use client tokens, read the audit log and handle incidents. Manage organization keys and project tokens in the Console.
Credentials
- POST
/Mint a client tokenplatform/ client-tokens - PUT
/Set a number's client rulesplatform/ sessions/ {session}/ client-rules
Audit and incidents
- GET
/The team's audit logplatform/ audit - GET
/Security incidentsplatform/ incidents - POST
/Acknowledge an incidentplatform/ incidents/ {incidentId}/ acknowledge - GET
/Every API request, with logs:readplatform/ projects/ {projectId}/ request-logs
Webhook secrets
- POST
/Rotate a signing secret with an overlapplatform/ webhooks/ {webhookId}/ secret-rotations
Start with a free number
Your first real number is free. Add more numbers on Pay-As-You-Go.