Client SDKs

Python & C#.

Both SDKs own auth headers, automatic idempotency keys, retries on retryable errors, and SSE consumption — so you write business logic, not plumbing. Both surface the request_id.

They cover the full surface: interpret & generate (including the two-step plan → approve flow), conversations, project listing, source & live values, analyses (with wait_for_* helpers that pace themselves for the job-poll tier), exports, saving versions, and embed tokens.

Each release pins the API contract it was built against — plcsai.API_CONTRACT and PlcsClient.ApiContract. If the API has moved past it, upgrade the package.

Python (PyPI)

bash
pip install plcsai
python
from plcsai import Client

client = Client(api_key="plck_live_…")
result = client.interpret(project_id="prj_…", prompt="…")

# The assistant is interactive: branch on status rather than assuming an answer.
if result.status == "answer":
    print(result.answer, [c.path for c in result.citations])
print(result.request_id)

Requires Python 3.8+. Source & examples ship with the package.

C# (NuGet)

bash
dotnet add package PlcsAi
csharp
using PlcsAi;

var client = new PlcsClient("plck_live_…");
var result = await client.InterpretAsync("prj_…", "…");

// The assistant is interactive: pattern match rather than assuming an answer.
if (result is AnswerResponse answer)
    Console.WriteLine($"{answer.Answer}  ({answer.Citations.Count} citations)");
Console.WriteLine(result.RequestId);

Targets .NET Standard 2.0+ / .NET 8; async-first, IAsyncEnumerable<T> for streaming.