Use when writing or reviewing C# code in this repo that calls Deepgram Management APIs for projects, models, keys, members, invitations, usage, balances, and auth token grants. Covers `ClientFactory.CreateManageClient()` and `ClientFactory.CreateAuthClient()`. Unlike some other SDKs, this repo does not currently expose reusable Voice Agent configuration management endpoints.
80
100%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Administrative REST endpoints for projects, models, API keys, members, invites, usage, balances, and auth token grants.
GrantToken().Use a different skill when:
deepgram-dotnet-voice-agent.dotnet add package Deepgramusing 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.
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);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);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);Management:
GetProjects, GetProject, UpdateProject, DeleteProject, LeaveProjectGetModels, GetModel, GetProjectModels, GetProjectModelGetKeys, GetKey, CreateKey, DeleteKeyGetInvites, SendInvite, DeleteInviteGetMembers, GetMemberScopes, UpdateMemberScope, RemoveMemberGetUsageRequests, GetUsageRequest, GetUsageFields, GetUsageSummaryGetBalances, GetBalanceAuth:
GrantToken()GrantToken(GrantTokenSchema)Deepgram/Clients/Manage/v1/Client.cs, Deepgram/Clients/Auth/v1/Client.cs, Deepgram/Models/Manage/v1/*.cs, Deepgram/Models/Auth/v1/*.cs// 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.");
}client.voice_agent.configurations.* examples into C#.DeleteProject, DeleteKey, DeleteInvite, and RemoveMember should always use the verify-delete-verify pattern above.DeepgramHttpClientOptions prefers explicit accessToken over apiKey, then env vars in that order.GetProjects() before calling key/member/usage methods.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.csCross-language product knowledge (API reference, recipes, MCP setup): npx skills add deepgram/skills.
3b953f0
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.