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

EndpointAuthDescription
POST/v1/eventssecret or publicIngest one event. Returns 201 with the event ID.
POST/v1/events/batchpublicIngest up to a batch of events in one call — used by auto-capture.
GET/v1/eventssecretList 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

EndpointAuthDescription
GET/v1/actorssecretList identified users. Supports search (name or email), limit, cursor.
GET/v1/actors/{external_id}secretFetch one actor by your external ID, including first/last seen and total events.

Sessions

EndpointAuthDescription
GET/v1/sessionssecretList browsing sessions. Supports actor_id, from, to, limit, cursor.
GET/v1/sessions/{id}secretFetch one session with its event timeline.

Errors & limits

StatusMeaning
401Missing or invalid API key
402Free tier monthly event cap reached (10,000 events)
422Validation error — e.g. malformed action name
429Rate 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.