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)
pip install plcsaifrom 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)
dotnet add package PlcsAiusing 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.