Skip to content

Changelog

Releases of the public incheck Python SDK and any matching changes to the HTTP API. Versions follow SemVer; breaking changes only land on a major bump.

The SDK is on PyPI at pypi.org/project/incheck.


0.0.4 — 2026-05-12

/states-and-scopes metadata, surfaced through client.metadata.

Added

  • New GET /states-and-scopes endpoint on the HTTP API. Returns the canonical state / scope enumerations the gateway accepts on /chat, plus a default_state, default_scope, and a scopes_by_state map for state-specific filtering. See the API reference.
  • New client.metadata.states_and_scopes() on the SDK (sync + async) returning a typed StatesAndScopesResponse. See Discovering valid scope / state.
  • New StateOrScope and StatesAndScopesResponse Pydantic models exported from the package top level.

Changed

  • Examples across the docs now use state="California-LAC" — the actual default_state returned by the metadata endpoint — instead of a placeholder value. If you copy-pasted earlier examples, swap state to a value from client.metadata.states_and_scopes().states.

0.0.3 — 2026-05-12

Multi-Pod fan-out, multi-turn messages, ChatMessage export.

Added

  • org_id on chat.send / chat.stream now accepts a list of ids to fan retrieval across several Pods in one call. Passing a single string is unchanged. See Multi-Pod fan-out.
  • New messages= parameter on chat.send / chat.stream for multi-turn conversations. Same shape as the OpenAI / Anthropic Messages API: a list of {role: "user" | "assistant", content: str} entries alternating user / assistant and ending on assistant. The current user turn stays in the positional content argument. See Multi-turn conversations.
  • New ChatMessage model exported from the package top level:

    from incheck import ChatMessage
    

    The messages= parameter also accepts plain dicts, so call sites can use whichever shape is more convenient.

Changed

  • HTTP API: POST /chat accepts org_id: string | string[] and a new messages field with the same semantics described above.
  • Streaming non-200 responses now surface the typed exception with the actual server detail in the message, instead of bubbling ResponseNotRead from the underlying HTTP layer.

Deprecated

  • conversation_hx is now deprecated in favour of messages=. The field still works for back-compat, but you cannot send both at once (the gateway returns a typed ValidationError with HTTP 422).

0.0.2 — 2026-05-11

Two-mode chat with optional org_id.

Added

  • EMS mode on chat.send / chat.stream: omit org_id to get answers from general EMS knowledge under the provided scope and state, with no Pod onboarding required.

Changed

  • org_id on chat methods is now optional. Pass it to run in unified mode (retrieval-aware against your Pod); omit it for EMS mode.

0.0.1 — 2026-05-11

First public release.

Added

  • Sync Client and async AsyncClient over the InCheck gateway.
  • chat.send and chat.stream (SSE).
  • documents.upload convenience helper plus the lower-level initiate_upload / complete_upload / wait_for_job flow.
  • documents.list_orgs, documents.list, documents.version, documents.delete, documents.delete_version.
  • Typed exception hierarchy: AuthenticationError, PermissionError, NotFoundError, ValidationError, RateLimitError (with retry_after), APIError, APIConnectionError, JobFailedError, JobTimeoutError.