the state of .net sdks for ai apis: official, autogenerated, or missing

i build .net clients for ai apis, so i keep a running map of which providers actually support .net developers and which leave them hand-rolling http. the short version: “no .net sdk” is no longer the main problem. the main problem now is autogenerated .net sdks that technically exist but nobody enjoys using.

here’s the field, in three buckets.

bucket 1: official, hand-maintained (the good ones)

these vendors treat .net as a first-class citizen. if you’re on one of these, you’re fine.

  • OpenAI — official .net sdk, microsoft-backed. first-class.
  • Anthropic — official c# sdk (anthropic on nuget). recent, real.
  • Azure OpenAI — microsoft’s own, obviously excellent.
  • Deepgram — official deepgram-dotnet-sdk, targets net6/7/8. voice ai done right for .net.
  • Qdrant — official .net client for the vector db.
  • Pinecone — official .net sdk, microsoft-announced, wired into semantic kernel.

takeaway: the biggest names have closed the gap. good for developers, not a market for me.

bucket 2: autogenerated or experimental (the real opportunity)

these have a .net client, but it’s machine-generated from an openapi spec (often by the community tryagi project) or, increasingly, ai-generated by the vendor themselves. they compile. they’re also not idiomatic, thinly tested, and rough where the api gets interesting (agents, streaming, wire-format quirks). enterprise .net teams feel the difference immediately.

  • Cohere — .net via tryagi autogen; no hand-crafted company client.
  • Tavily — tryagi autogen.
  • Groq — tryagi autogen (and openai-compatible, so most people just use the openai sdk).
  • Mistral — community + tryagi for chat; nothing official, and nothing covered the agents api until
    i built Mistral.Agents.Net.
  • Apify — an official .net client that the vendor openly labels “experimental, ai-generated and
    ai-maintained.” decent, but the label says it all.
  • ElevenLabs — official sdks for python, ts, kotlin, swift; .net is community only, and the realtime
    agents layer wasn’t covered until ElevenAgents.Net.

takeaway: this is the new gap. the sdk exists, but it’s autogen. “you have a .net sdk” and “your .net sdk is good” are different sentences, and enterprise buyers notice.

bucket 3: missing or community-only

no official .net at all — just a community package of varying quality, or nothing.

  • Together AI — no official .net.
  • Cartesia — no .net.
  • Firecrawl — community / autogen only.
  • Plaid — node/python/ruby/java/go official; no official .net (community Going.Plaid). and this is
    fintech, where the .net enterprise audience is huge.
  • Polygon.io — market data; no official .net.
  • Vapi / Retell / Hume / Browserbase — mostly missing.
  • AssemblyAI — special case: shipped an official c# sdk, then discontinued it in april 2025. .net
    users who adopted it are now on an unmaintained client. the clearest signal of all that .net gets
    treated as an afterthought.

takeaway: still real gaps, especially in fintech and the newer voice/agent startups whose enterprise customers are exactly the .net crowd — and vendors who shipped a .net sdk and then walked away.

the thing nobody’s saying

the industry quietly decided that “generate a .net sdk from the openapi spec” equals “support .net.” it doesn’t. autogenerated clients handle the boring 80% and fall apart on the 20% that matters — the agentic surfaces, the streaming, the wire-format quirks you only find by running against the live api. (mistral’s agents api returns function-call arguments as a json string, not an object. no generator catches that. you find it on the first real call, in production.)

if you’re a vendor with a python-first api and an autogenerated .net client, your enterprise .net users are the ones paying for that gap — in time, in bugs, in a worse first impression than your python users get. that’s fixable.

i hand-craft production .net clients and mcp servers for ai apis — idiomatic, live-verified, documented. if your .net story is a bucket-2 or bucket-3 entry, let’s talk.