Lister les sessions d’un agent
GET/api/public/v1/agents/{agent_id}/sessions
curl --fail-with-body -X GET 'https://app.openlatch.ai/api/public/v1/agents/<agent_id>/sessions' \ -H "Authorization: Bearer $OPENLATCH_API_KEY"import jsonimport osimport urllib.request
request = urllib.request.Request( 'https://app.openlatch.ai/api/public/v1/agents/<agent_id>/sessions', method='GET', headers={ 'Authorization': 'Bearer ' + os.environ['OPENLATCH_API_KEY'], },)with urllib.request.urlopen(request) as response: text = response.read().decode() print(json.dumps(json.loads(text), indent=2) if text else response.status)#!/usr/bin/env bashset -euo pipefail
curl -sS --fail-with-body -X GET 'https://app.openlatch.ai/api/public/v1/agents/<agent_id>/sessions' \ -H "Authorization: Bearer $OPENLATCH_API_KEY" | jq .$headers = @{ Authorization = "Bearer $env:OPENLATCH_API_KEY"}Invoke-RestMethod -Method GET -Uri 'https://app.openlatch.ai/api/public/v1/agents/<agent_id>/sessions' -Headers $headers | ConvertTo-Json -Depth 20Autorisation
Section intitulée « Autorisation »| Rôle dans l’organisation | Ce point de terminaison |
|---|---|
owner | Autorisé |
admin | Autorisé |
editor | Autorisé |
viewer | Autorisé |
Une clé porte le rôle que son propriétaire détient dans l’organisation. Voir Authentification.
Portée de clé d’API : agents:read
Paramètres de chemin
Section intitulée « Paramètres de chemin »| Paramètre | Type | Description |
|---|---|---|
agent_id | string | Obligatoire. |
Paramètres de requête
Section intitulée « Paramètres de requête »| Paramètre | Type | Description |
|---|---|---|
page | integer | |
page_size | integer | |
q | string or null | Free-text search (case-insensitive). Matches display_name, native_session_id, initial_prompt, and session_id (prefix match on the UUID). Excludes orphan rows. |
status | string — one of active, idle, offline or null | Status filter, derived from last_event_at: active <5min, idle 5min-24h, offline >24h. |
from | string (date-time) or null | Inclusive lower bound on last_event_at (ISO 8601). |
to | string (date-time) or null | Inclusive upper bound on last_event_at (ISO 8601). |
- 200 OK — l’appel a réussi.
- 401 Unauthorized —
UNAUTHORIZED - 402 Payment Required —
license_expired - 403 Forbidden —
FEATURE_DISABLED,FORBIDDEN,INSUFFICIENT_SCOPE - 404 Not Found —
NOT_FOUND - 422 Unprocessable Content —
INVALID_ID,VALIDATION_ERROR - 429 Too Many Requests —
TOO_MANY_REQUESTS - 500 Internal Server Error —
INTERNAL_SERVER_ERROR,tenant_isolation_violation - 503 Service Unavailable —
FEATURE_STATE_UNAVAILABLE,SERVICE_UNAVAILABLE
Champs de la réponse
Section intitulée « Champs de la réponse »| Champ | Type | Description |
|---|---|---|
data | array of object | Obligatoire. |
data[].action_mix | object | Domain / file / command action counts rolled up from the agent_action_* tables. |
data[].action_mix.commands | integer | |
data[].action_mix.domains | integer | |
data[].action_mix.files | integer | |
data[].agent_display_name | string or null | Owning agent's display name. Populated only by the organization-wide GET /inventory/sessions; null on an agent's own GET /agents/{agent_id}/sessions, where the agent is already known. |
data[].agent_id | string | Obligatoire. |
data[].display_name | string or null | |
data[].event_count | integer | |
data[].first_event_at | string (date-time) | Obligatoire. |
data[].initial_prompt | string or null | First user prompt captured by the ingest normalizer. Redacted + truncated. |
data[].intent | string or null | What this session was for, in one line. The generated summary's goal when one exists, otherwise the truncated initial_prompt. The same rule resolves the session intent everywhere OpenLatch reports it, so no two reads disagree about when a summary replaces the prompt. |
data[].intent_source | string | Which of the two intent is: summary (generated), pending (queued, showing the prompt meanwhile) or initial_prompt_fallback. intent is usable text in all three cases; this field records where it came from. |
data[].is_orphan | boolean | |
data[].last_event_at | string (date-time) | Obligatoire. |
data[].native_session_id | string | Obligatoire. |
data[].platform | string | Obligatoire. Joined from the parent agents row for display convenience |
data[].session_id | string | Obligatoire. |
data[].verdicts_24h | object | Verdict counts over the last 24h for an Agent or Session. |
data[].verdicts_24h.allow | integer | Actions the policy allowed |
data[].verdicts_24h.ask | integer | Actions the policy sent to Ask |
data[].verdicts_24h.block | integer | Actions the policy blocked |
data[].verdicts_24h.total | integer | Total events in the 24h window |
page | integer | Obligatoire. |
page_size | integer | Obligatoire. |
total | integer | Obligatoire. |
Exemple de réponse
Section intitulée « Exemple de réponse »{ "data": [ { "action_mix": { "commands": 0, "domains": 0, "files": 0 }, "agent_display_name": "release-bot", "agent_id": "agt_01jbwa2k1vfrn9y42xhgxhmzj2", "display_name": "release-bot", "event_count": 0, "first_event_at": "2026-01-15T14:32:05Z", "initial_prompt": "string", "intent": "string", "intent_source": "initial_prompt_fallback", "is_orphan": false, "last_event_at": "2026-01-15T14:32:05Z", "native_session_id": "3f6c1a2e-8b4d-4c1f-9a7e-0d5b2c8e4f10", "platform": "string", "session_id": "ses_01jbwa2k1vfrn9y42xhgxhmzj2", "verdicts_24h": { "allow": 0, "ask": 0, "block": 0, "total": 0 } } ], "page": 1, "page_size": 3, "total": 3}