Using Deepgram Management API (Java SDK)
Administrative REST APIs for project metadata, project-scoped resources, and model discovery.
When to use this product
- List or inspect projects.
- Manage project keys, members, invites, usage, or billing.
- Discover public or project-scoped STT/TTS models.
Use a different skill when:
- You want to run a live agent session →
deepgram-java-voice-agent.
- You want speech/text inference rather than project administration → use the product skills for STT, TTS, or Read.
Authentication
import com.deepgram.DeepgramClient;
DeepgramClient client = DeepgramClient.builder()
.apiKey(System.getenv("DEEPGRAM_API_KEY"))
.build();
Management endpoints require API-key auth. Temporary JWTs from auth().v1().tokens().grant() do not work for Manage APIs.
Quick start — projects
import com.deepgram.types.ListProjectsV1Response;
import com.deepgram.types.ListProjectsV1ResponseProjectsItem;
import java.util.Collections;
import java.util.List;
ListProjectsV1Response response = client.manage().v1().projects().list();
List<ListProjectsV1ResponseProjectsItem> projects = response.getProjects().orElse(Collections.emptyList());
for (ListProjectsV1ResponseProjectsItem project : projects) {
System.out.printf("%s (%s)%n",
project.getName().orElse("unnamed"),
project.getProjectId().orElse("unknown"));
}
Quick start — project models / keys
Pick a project from the list above. New accounts may have zero projects — guard against that before indexing.
if (projects.isEmpty()) {
throw new IllegalStateException("No Deepgram projects are visible to this API key.");
}
String projectId = projects.get(0).getProjectId().orElseThrow();
client.manage().v1().projects().models().list(projectId);
client.manage().v1().projects().keys().list(projectId);
client.manage().v1().projects().members().list(projectId);
client.manage().v1().projects().members().invites().list(projectId);
client.manage().v1().projects().usage().get(projectId);
client.manage().v1().projects().billing().balances().list(projectId);
Key parameters / API surface
- Top-level public models:
client.manage().v1().models().list() and .get(modelId)
- Projects:
projects().list(), get(projectId), update(projectId, ...), delete(projectId), leave(projectId)
- Keys:
projects().keys().list/create/get/delete
- Members:
projects().members().list/delete
- Invites:
projects().members().invites().list/create/delete
- Project models:
projects().models().list(projectId)
- Usage:
projects().usage().get(projectId)
- Billing:
projects().billing().balances().list(projectId)
- Requests:
projects().requests() subtree exists in the generated API surface
- Agent think-model discovery:
client.agent().v1().settings().think().models().list()
- Most clients expose
withRawResponse() alongside typed methods
API reference (layered)
- In-repo source of truth:
src/main/java/com/deepgram/resources/manage/v1/, src/main/java/com/deepgram/resources/agent/v1/settings/think/models/, and examples/manage/. There is no reference.md in this checkout.
- Canonical OpenAPI: https://developers.deepgram.com/openapi.yaml
- Context7:
/llmstxt/developers_deepgram_llms_txt
- Product docs:
Gotchas
- Use an API key, not a temporary JWT, for Manage APIs. The token-grant endpoint explicitly says those JWTs do not work here.
- Some example files are intentionally excluded from Gradle
compileExamples. manage/ListModels.java, manage/MemberPermissions.java, and manage/UsageBreakdown.java are currently excluded in build.gradle.
- Many manage examples are read-only by default. Create/delete snippets are commented out to avoid destructive calls.
- Project-scoped model discovery and global model discovery are different.
models().list() returns public models; projects().models().list(projectId) returns what a project can use.
- This checkout does not expose the Python-style persisted voice-agent configuration client. Do not promise
voice_agent.configurations.* here.
- The SDK is highly nested. For invites, the path is
projects().members().invites(), not a top-level invites() client.
Example files in this repo
examples/manage/ListProjects.java
examples/manage/ProjectModels.java
examples/manage/ManageKeys.java
examples/manage/ManageMembers.java
examples/manage/ManageInvites.java
examples/manage/GetUsage.java
examples/manage/Billing.java
examples/agent/ListModels.java
Central product skills
For cross-language Deepgram product knowledge — the consolidated API reference, documentation finder, focused runnable recipes, third-party integration examples, and MCP setup — install the central skills:
npx skills add deepgram/skills
This SDK ships language-idiomatic code skills; deepgram/skills ships cross-language product knowledge (see api, docs, recipes, examples, starters, setup-mcp).
1---2name: deepgram-java-management-api3description: Use when writing or reviewing Java code in this repo that calls Deepgram Management APIs for projects, project models, API keys, members, invites, usage, and billing. Covers `client.manage().v1().*` plus related think-model discovery under `client.agent().v1().settings().think().models()`. Use `deepgram-java-voice-agent` for live agent conversations instead of admin APIs. Triggers include "management api", "list projects", "api keys", "members", "invites", "usage", "billing", and "models".4---56# Using Deepgram Management API (Java SDK)78Administrative REST APIs for project metadata, project-scoped resources, and model discovery.910## When to use this product1112- List or inspect projects.13- Manage project keys, members, invites, usage, or billing.14- Discover public or project-scoped STT/TTS models.1516**Use a different skill when:**17- You want to run a live agent session → `deepgram-java-voice-agent`.18- You want speech/text inference rather than project administration → use the product skills for STT, TTS, or Read.1920## Authentication2122```java23import com.deepgram.DeepgramClient;2425DeepgramClient client = DeepgramClient.builder()26 .apiKey(System.getenv("DEEPGRAM_API_KEY"))27 .build();28```2930Management endpoints require API-key auth. Temporary JWTs from `auth().v1().tokens().grant()` do **not** work for Manage APIs.3132## Quick start — projects3334```java35import com.deepgram.types.ListProjectsV1Response;36import com.deepgram.types.ListProjectsV1ResponseProjectsItem;37import java.util.Collections;38import java.util.List;3940ListProjectsV1Response response = client.manage().v1().projects().list();41List<ListProjectsV1ResponseProjectsItem> projects = response.getProjects().orElse(Collections.emptyList());4243for (ListProjectsV1ResponseProjectsItem project : projects) {44 System.out.printf("%s (%s)%n",45 project.getName().orElse("unnamed"),46 project.getProjectId().orElse("unknown"));47}48```4950## Quick start — project models / keys5152Pick a project from the list above. New accounts may have zero projects — guard against that before indexing.5354```java55if (projects.isEmpty()) {56 throw new IllegalStateException("No Deepgram projects are visible to this API key.");57}58String projectId = projects.get(0).getProjectId().orElseThrow();5960client.manage().v1().projects().models().list(projectId);61client.manage().v1().projects().keys().list(projectId);62client.manage().v1().projects().members().list(projectId);63client.manage().v1().projects().members().invites().list(projectId);64client.manage().v1().projects().usage().get(projectId);65client.manage().v1().projects().billing().balances().list(projectId);66```6768## Key parameters / API surface6970- Top-level public models: `client.manage().v1().models().list()` and `.get(modelId)`71- Projects: `projects().list()`, `get(projectId)`, `update(projectId, ...)`, `delete(projectId)`, `leave(projectId)`72- Keys: `projects().keys().list/create/get/delete`73- Members: `projects().members().list/delete`74- Invites: `projects().members().invites().list/create/delete`75- Project models: `projects().models().list(projectId)`76- Usage: `projects().usage().get(projectId)`77- Billing: `projects().billing().balances().list(projectId)`78- Requests: `projects().requests()` subtree exists in the generated API surface79- Agent think-model discovery: `client.agent().v1().settings().think().models().list()`80- Most clients expose `withRawResponse()` alongside typed methods8182## API reference (layered)83841. **In-repo source of truth**: `src/main/java/com/deepgram/resources/manage/v1/`, `src/main/java/com/deepgram/resources/agent/v1/settings/think/models/`, and `examples/manage/`. There is no `reference.md` in this checkout.852. **Canonical OpenAPI**: https://developers.deepgram.com/openapi.yaml863. **Context7**: `/llmstxt/developers_deepgram_llms_txt`874. **Product docs**:88 - https://developers.deepgram.com/reference/manage/projects/list89 - https://developers.deepgram.com/reference/manage/models/list90 - https://developers.deepgram.com/reference/auth/grant-token91 - https://developers.deepgram.com/reference/voice-agent/think-models9293## Gotchas94951. **Use an API key, not a temporary JWT, for Manage APIs.** The token-grant endpoint explicitly says those JWTs do not work here.962. **Some example files are intentionally excluded from Gradle `compileExamples`.** `manage/ListModels.java`, `manage/MemberPermissions.java`, and `manage/UsageBreakdown.java` are currently excluded in `build.gradle`.973. **Many manage examples are read-only by default.** Create/delete snippets are commented out to avoid destructive calls.984. **Project-scoped model discovery and global model discovery are different.** `models().list()` returns public models; `projects().models().list(projectId)` returns what a project can use.995. **This checkout does not expose the Python-style persisted voice-agent configuration client.** Do not promise `voice_agent.configurations.*` here.1006. **The SDK is highly nested.** For invites, the path is `projects().members().invites()`, not a top-level `invites()` client.101102## Example files in this repo103104- `examples/manage/ListProjects.java`105- `examples/manage/ProjectModels.java`106- `examples/manage/ManageKeys.java`107- `examples/manage/ManageMembers.java`108- `examples/manage/ManageInvites.java`109- `examples/manage/GetUsage.java`110- `examples/manage/Billing.java`111- `examples/agent/ListModels.java`112113## Central product skills114115For cross-language Deepgram product knowledge — the consolidated API reference, documentation finder, focused runnable recipes, third-party integration examples, and MCP setup — install the central skills:116117```bash118npx skills add deepgram/skills119```120121This SDK ships language-idiomatic code skills; `deepgram/skills` ships cross-language product knowledge (see `api`, `docs`, `recipes`, `examples`, `starters`, `setup-mcp`).