# Session

The Session object of the Kaabist API.

| Field | Type | Required | Description |
|---|---|---|---|
| `id` | string | yes | pattern `^ses_[0-9a-hjkmnp-tv-z]{26}$` |
| `object` | `"session"` | yes |  |
| `name` | string | yes | pattern `^[a-z0-9][a-z0-9-]{1,62}$` |
| `origins` | string[] | yes |  |
| `status` | `"valid"`, `"expired"`, `"unknown"` | yes |  |
| `concurrency` | `"exclusive"`, `"shared"` | yes |  |
| `refresh` | object or null | yes |  |
| `refresh.program` | string | yes | min length 1 |
| `refresh.has_inputs` | boolean | yes |  |
| `last_verified_at` | string or null (date-time) | yes |  |
| `last_used_at` | string or null (date-time) | yes |  |
| `locked_by` | string or null | yes | pattern `^job_[0-9a-hjkmnp-tv-z]{26}$` |
| `created_at` | string (date-time) | yes |  |
| `updated_at` | string (date-time) | yes |  |

## Example

```json
{
  "id": "ses_01j9zqk3q7m4n5p6r7s8t9v0wx",
  "object": "session",
  "name": "acme",
  "origins": [
    "https://portal.acme.test"
  ],
  "status": "valid",
  "concurrency": "exclusive",
  "refresh": {
    "program": "acme-login",
    "has_inputs": true
  },
  "last_verified_at": "2026-09-18T10:00:00Z",
  "last_used_at": "2026-09-18T10:00:00Z",
  "locked_by": null,
  "created_at": "2026-09-18T10:00:00Z",
  "updated_at": "2026-09-18T10:00:00Z"
}
```
