deepgram-dotnet-management-api
Use when writing or reviewing C# code in this repo that calls Deepgram Management APIs for projects, models, keys, members, invitations, usage, balances, and…
npx skills add https://github.com/deepgram/deepgram-dotnet-sdk --skill deepgram-dotnet-management-apiUsing Deepgram Management API (.NET SDK)
Administrative REST endpoints for projects, models, API keys, members, invites, usage, balances, and auth token grants.
When to use this product
- List or mutate projects.
- List models or per-project model availability.
- Manage keys, members, invites, scopes, usage, balances.
- Mint short-lived bearer tokens with
GrantToken().
Use a different skill when:
- You want to run a live agent session →
deepgram-dotnet-voice-agent. - You want STT/TTS rather than project administration.
Authentication
dotnet add package Deepgram
using Deepgram;
Library.Initialize();
var manageClient = ClientFactory.CreateManageClient();
var authClient = ClientFactory.CreateAuthClient();
Both factory calls read credentials from the DEEPGRAM_API_KEY (or DEEPGRAM_ACCESS_TOKEN) environment variable by default. To pass them explicitly: ClientFactory.CreateManageClient(apiKey: "...", options: ...) / ClientFactory.CreateAuthClient(apiKey: "...", options: ...). DeepgramHttpClientOptions throws if neither the env var nor an explicit credential is provided.
Quick start — projects and models
using Deepgram.Models.Manage.v1;
var client = ClientFactory.CreateManageClient();
var projects = await client.GetProjects();
var projectId = projects.Projects[0].ProjectId;
var project = await client.GetProject(projectId);
var models = await client.GetModels(new ModelSchema { IncludeOutdated = true });
var projectModels = await client.GetProjectModels(projectId);
Quick start — keys / invites / members / usage
var client = ClientFactory.CreateManageClient();
var projectId = (await client.GetProjects()).Projects[0].ProjectId;
var key = await client.CreateKey(projectId, new KeySchema()
{
Comment = "MyTestKey",
Scopes = new List<string> { "member" },
});
await client.SendInvite(projectId, new InviteSchema()
{
Email = "spam@spam.com",
Scope = "member",
});
var members = await client.GetMembers(projectId);
var usage = await client.GetUsageRequests(projectId, new UsageRequestsSchema());
var balances = await client.GetBalances(projectId);
Quick start — auth token grant
using Deepgram.Models.Auth.v1;
using Deepgram.Models.Authenticate.v1;
var authClient = ClientFactory.CreateAuthClient();
var token = await authClient.GrantToken(new GrantTokenSchema
{
TtlSeconds = 300,
});
var bearerOptions = new DeepgramHttpClientOptions(accessToken: token.AccessToken);
var prerecordClient = ClientFactory.CreateListenRESTClient(options: bearerOptions);
Key methods
Management:
GetProjects,GetProject,UpdateProject,DeleteProject,LeaveProjectGetModels,GetModel,GetProjectModels,GetProjectModelGetKeys,GetKey,CreateKey,DeleteKeyGetInvites,SendInvite,DeleteInviteGetMembers,GetMemberScopes,UpdateMemberScope,RemoveMemberGetUsageRequests,GetUsageRequest,GetUsageFields,GetUsageSummaryGetBalances,GetBalance
Auth:
GrantToken()GrantToken(GrantTokenSchema)
References
- In-repo:
Deepgram/Clients/Manage/v1/Client.cs,Deepgram/Clients/Auth/v1/Client.cs,Deepgram/Models/Manage/v1/*.cs,Deepgram/Models/Auth/v1/*.cs - OpenAPI: https://developers.deepgram.com/openapi.yaml
- Product docs: https://developers.deepgram.com/reference/manage/projects/list, https://developers.deepgram.com/reference/auth/grant-token
Guard pattern for destructive operations
// 1. Verify the resource exists
var key = await client.GetKey(projectId, keyId);
Console.WriteLine($"Found key: {key.ApiKey.Comment} ({keyId})");
// 2. Delete
await client.DeleteKey(projectId, keyId);
// 3. Verify deletion succeeded
try
{
await client.GetKey(projectId, keyId);
Console.Error.WriteLine("ERROR: key still exists after deletion");
}
catch
{
Console.WriteLine("Key deleted successfully.");
}
Gotchas
- This repo does not currently expose Voice Agent configuration CRUD. Do not copy Python
client.voice_agent.configurations.*examples into C#. - Destructive methods are irreversible.
DeleteProject,DeleteKey,DeleteInvite, andRemoveMembershould always use the verify-delete-verify pattern above. - Bearer-token auth is supported.
DeepgramHttpClientOptionsprefers explicitaccessTokenoverapiKey, then env vars in that order. - Most sub-resources are project-scoped. Fetch a project ID first via
GetProjects()before calling key/member/usage methods.
Example files in this repo
examples/manage/projects/Program.csexamples/manage/models/Program.csexamples/manage/keys/Program.csexamples/manage/members/Program.csexamples/manage/scopes/Program.csexamples/manage/invitations/Program.csexamples/manage/usage/Program.csexamples/manage/balances/Program.csexamples/auth/grant-token/Program.csexamples/auth/bearer-token-workflow/Program.cs
Cross-language product knowledge (API reference, recipes, MCP setup): npx skills add deepgram/skills.