Skip to content

Sessions (Release Health)

Public endpoint, authenticated via X-Pionne-Token. Used by SDKs to open and close a release health session (Sentry-equivalent of “release tracking”).

POST https://api.pionne.app/sessions
Content-Type: application/json
X-Pionne-Token: pio_live_…
{
"session_id": "0d8c1a47-9a87-4cc0-a8fa-3a8ce6f77c43",
"status": "ok",
"release": "1.4.2",
"environment":"production",
"app_version":"1.4.2",
"os_name": "iOS",
"user_id_anon":"a8e4...",
"duration_ms":12340,
"app_id": "fr.example.app"
}
FieldTypeNotes
session_id (req.)uuidUUID v4 generated by the SDK. Acts as the idempotence key.
status (req.)enumok, crashed, errored, abnormal, exited
releasestringLogical app version (1.4.2, 2026.05-staging)
app_versionstringNative version if different from release
os_namestringiOS, Android, Web
user_id_anonstringAnonymized ID for crash-free users computation
duration_msintSession duration before close, in milliseconds
app_idstringBundle ID. Stored for visibility — not verified server-side on this endpoint (sessions don’t carry PII, the bundle_id check stays active on /ingest).
  • Idempotent on (project_id, session_id). You can POST the same session multiple times; only status can be upgraded (never downgraded: crashed > abnormal > errored > exited > ok).
  • Rate limit: 2000 requests/min/project.
  • Immutable fields (release, environment, os_name…) are only considered on the first POST. Subsequent POSTs only update status, duration_ms and ended_at.
202 Accepted
{ "ok": true, "session_id": "0d8c1a47-…" }
CodeCase
202Session created or updated.
401Token missing / invalid.
422Invalid payload (status out-of-enum, malformed UUID…).
429Rate limit exceeded (2000/min/project).