Update a session

⚠️
Preview — this feature is being built; the design below is the spec.
PATCH https://app.syntic.ai/v1/sessions/{session_id}

Change the title or metadata of a session. The agent, its version and the conversation are fixed once a session starts; to run a different agent, create a new session. Metadata keys you send are merged into the existing map, and a key set to null is removed.

For how this fits into a full workflow, see Sessions.

Headers

HeaderRequiredValue
AuthorizationYesBearer <key>: a private inference key (sk_live_...). See Authentication.
syntic-betaYes, while in previewagents-2026-11-01. Without it the call fails with 400 beta_required. See Versioning.
Content-TypeYesapplication/json

Path parameters

ParameterTypeDescription
session_idstringThe session id, starting with sesn_.

Body parameters

ParameterTypeRequiredNotes
titlestringNoUp to 200 characters. Shown in the Console session list.
metadataobjectNoUp to 16 keys, string values up to 512 characters. null removes a key.

Response

200 OK, Content-Type: application/json

{
  "id": "sesn_01JC7M2K4P6R8T0V2X4Z",
  "type": "session",
  "agent_id": "agt_01JC4R8W6Q2N9X3T5V7Y",
  "agent_version": 4,
  "status": "idle",
  "channel": "api",
  "title": "Refund for order 88123 (escalated)",
  "usage": {
    "input_tokens": 18234,
    "cached_input_tokens": 12288,
    "output_tokens": 1420,
    "cost_usd": "0.0436"
  },
  "outcome": null,
  "created_at": "2026-11-05T10:00:00Z",
  "last_event_at": "2026-11-05T10:04:12Z",
  "metadata": {
    "ticket": "88123",
    "tier": "gold"
  }
}
FieldTypeDescription
titlestring or nullThe new title.
metadataobjectThe merged map after the update.
statusstringUnchanged by this call.

Examples

curl -sS -X PATCH "https://app.syntic.ai/v1/sessions/sesn_01JC7M2K4P6R8T0V2X4Z" \
  -H "Authorization: Bearer $SYNTIC_API_KEY" \
  -H "syntic-beta: agents-2026-11-01" \
  -H "Content-Type: application/json" \
  -d '{
      "title": "Refund for order 88123 (escalated)",
      "metadata": {
        "tier": "gold",
        "draft": null
      }
    }'

Errors

Errors use the error envelope and carry a request_id. Codes specific to this operation:

StatustypecodeWhen
400invalid_request_errorbeta_requiredThe syntic-beta header is missing.
400invalid_request_errormetadata_too_largeMore than 16 keys, or a value over 512 characters.
409conflict_errorsession_archivedArchived sessions are read-only.
404not_found_errorsession_not_foundNo session with this id in the key’s workspace.
401authentication_errorinvalid_api_keyThe key is missing, unknown, revoked or expired.
429rate_limit_errorrate_limitedToo many requests; wait for Retry-After. See Rate-limit headers.
Was this page helpful?