Docs
API Reference
Everything the SDKs do under the hood. Base URL: https://api.softechlog.com — all endpoints are JSON over HTTPS.
Authentication
Pass your API key as a Bearer token. Key type determines what you can do:
HeadersBearer auth
# Server-side (secret key — write + read) Authorization: Bearer stl_sk_xxxxxxxxxxxx # Client-side (public key — write only, used by browser scripts) Authorization: Bearer stl_pk_xxxxxxxxxxxx
Events
| Endpoint | Auth | Description |
|---|---|---|
POST/v1/events | secret or public | Ingest one event. Returns 201 with the event ID. |
POST/v1/events/batch | public | Ingest up to a batch of events in one call — used by auto-capture. |
GET/v1/events | secret | List events, newest first, cursor-paginated. See Filtering for all query parameters. |
Ingest an event
POST /v1/eventsrequest / response
POST /v1/events
Content-Type: application/json
Authorization: Bearer stl_sk_xxxxxxxxxxxx
{
"actor": { "id": "user_123", "name": "Ari", "email": "ari@acme.co" },
"action": "member.invited",
"target": { "type": "workspace", "id": "ws_abc", "name": "Acme" },
"metadata": { "role": "admin" },
"timestamp": "2026-07-11T14:09:31Z"
}
→ 201 { "id": "9b2f…", "queued_at": "2026-07-11T14:09:31.412Z" }action must match resource.verb form — lowercase letters, digits, and underscores separated by dots (regex: ^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)+$). Invalid actions return 422.
Actors
| Endpoint | Auth | Description |
|---|---|---|
GET/v1/actors | secret | List identified users. Supports search (name or email), limit, cursor. |
GET/v1/actors/{external_id} | secret | Fetch one actor by your external ID, including first/last seen and total events. |
Sessions
| Endpoint | Auth | Description |
|---|---|---|
GET/v1/sessions | secret | List browsing sessions. Supports actor_id, from, to, limit, cursor. |
GET/v1/sessions/{id} | secret | Fetch one session with its event timeline. |
Errors & limits
| Status | Meaning |
|---|---|
401 | Missing or invalid API key |
402 | Free tier monthly event cap reached (10,000 events) |
422 | Validation error — e.g. malformed action name |
429 | Rate limited — 1,000 req/min per secret key, 200 req/min per public key |
The official SDKs handle retries, timeouts, and error swallowing for you — use the raw API only when an SDK doesn't fit.