Skip to content
Go to Boltz API

Admin

Manage workspaces and API keys. Requires an admin API key. Admin keys have full access to all management and compute operations across all workspaces in the organization.

AdminWorkspaces

Workspaces provide isolated environments for organizing predictions and pipeline runs across teams, projects, or customers. Each workspace has independent data retention settings and can be associated with workspace API keys.

Create a workspace
client.admin.workspaces.create(WorkspaceCreateParams { data_retention, name, spending_limit } body, RequestOptionsoptions?): WorkspaceCreateResponse { id, archived_at, created_at, 4 more }
POST/compute/v1/admin/workspaces
List workspaces
client.admin.workspaces.list(WorkspaceListParams { after_id, before_id, limit, name } query?, RequestOptionsoptions?): CursorPage<WorkspaceListResponse { id, archived_at, created_at, 4 more } >
GET/compute/v1/admin/workspaces
Get a workspace
client.admin.workspaces.retrieve(stringworkspaceID, RequestOptionsoptions?): WorkspaceRetrieveResponse { id, archived_at, created_at, 4 more }
GET/compute/v1/admin/workspaces/{workspace_id}
Update a workspace
client.admin.workspaces.update(stringworkspaceID, WorkspaceUpdateParams { data_retention, name } body, RequestOptionsoptions?): WorkspaceUpdateResponse { id, archived_at, created_at, 4 more }
POST/compute/v1/admin/workspaces/{workspace_id}
Archive a workspace
client.admin.workspaces.archive(stringworkspaceID, RequestOptionsoptions?): WorkspaceArchiveResponse { id, archived_at, created_at, 4 more }
POST/compute/v1/admin/workspaces/{workspace_id}/archive
Get a workspace spending limit
client.admin.workspaces.retrieveSpendingLimit(stringworkspaceID, RequestOptionsoptions?): WorkspaceRetrieveSpendingLimitResponse { limit, type } | null
GET/compute/v1/admin/workspaces/{workspace_id}/spending-limit
Set a workspace spending limit
client.admin.workspaces.setSpendingLimit(stringworkspaceID, WorkspaceSetSpendingLimitParams { limit, type } body, RequestOptionsoptions?): WorkspaceSetSpendingLimitResponse { limit, type } | null
PUT/compute/v1/admin/workspaces/{workspace_id}/spending-limit
ModelsExpand Collapse
WorkspaceCreateResponse { id, archived_at, created_at, 4 more }
id: string

Workspace ID

archived_at: string | null
formatdate-time
created_at: string
formatdate-time
data_retention: DataRetention { unit, value }

How long result data is retained before automatic deletion. Defaults to 7 days if not specified. Maximum retention is 14 days (336 hours).

unit: "hours" | "days"

Time unit for retention duration

One of the following:
"hours"
"days"
value: number

Duration value. Maximum retention is 14 days (or 336 hours).

minimum1
is_default: boolean

Whether this is the default workspace

name: string | null

Workspace name

updated_at: string
formatdate-time
WorkspaceListResponse { id, archived_at, created_at, 4 more }
id: string

Workspace ID

archived_at: string | null
formatdate-time
created_at: string
formatdate-time
data_retention: DataRetention { unit, value }

How long result data is retained before automatic deletion. Defaults to 7 days if not specified. Maximum retention is 14 days (336 hours).

unit: "hours" | "days"

Time unit for retention duration

One of the following:
"hours"
"days"
value: number

Duration value. Maximum retention is 14 days (or 336 hours).

minimum1
is_default: boolean

Whether this is the default workspace

name: string | null

Workspace name

updated_at: string
formatdate-time
WorkspaceRetrieveResponse { id, archived_at, created_at, 4 more }
id: string

Workspace ID

archived_at: string | null
formatdate-time
created_at: string
formatdate-time
data_retention: DataRetention { unit, value }

How long result data is retained before automatic deletion. Defaults to 7 days if not specified. Maximum retention is 14 days (336 hours).

unit: "hours" | "days"

Time unit for retention duration

One of the following:
"hours"
"days"
value: number

Duration value. Maximum retention is 14 days (or 336 hours).

minimum1
is_default: boolean

Whether this is the default workspace

name: string | null

Workspace name

updated_at: string
formatdate-time
WorkspaceUpdateResponse { id, archived_at, created_at, 4 more }
id: string

Workspace ID

archived_at: string | null
formatdate-time
created_at: string
formatdate-time
data_retention: DataRetention { unit, value }

How long result data is retained before automatic deletion. Defaults to 7 days if not specified. Maximum retention is 14 days (336 hours).

unit: "hours" | "days"

Time unit for retention duration

One of the following:
"hours"
"days"
value: number

Duration value. Maximum retention is 14 days (or 336 hours).

minimum1
is_default: boolean

Whether this is the default workspace

name: string | null

Workspace name

updated_at: string
formatdate-time
WorkspaceArchiveResponse { id, archived_at, created_at, 4 more }
id: string

Workspace ID

archived_at: string | null
formatdate-time
created_at: string
formatdate-time
data_retention: DataRetention { unit, value }

How long result data is retained before automatic deletion. Defaults to 7 days if not specified. Maximum retention is 14 days (336 hours).

unit: "hours" | "days"

Time unit for retention duration

One of the following:
"hours"
"days"
value: number

Duration value. Maximum retention is 14 days (or 336 hours).

minimum1
is_default: boolean

Whether this is the default workspace

name: string | null

Workspace name

updated_at: string
formatdate-time
WorkspaceRetrieveSpendingLimitResponse { limit, type }

Configured lifetime workspace spending limit, or null if unset. Unset workspaces have no workspace-level cap and continue to use organization-level billing.

limit: Limit { amount, currency }
amount: number

Workspace spending limit amount in milli-USD. Tracking starts when the limit is configured; prior or already-committed unreserved work is not counted in this workspace cap ledger.

minimum0
maximum9007199254740991
currency: "MILLI_USD"

Workspace spending limits currently support milli-USD only.

type: "lifetime"
WorkspaceSetSpendingLimitResponse { limit, type }

Configured lifetime workspace spending limit, or null if unset. Unset workspaces have no workspace-level cap and continue to use organization-level billing.

limit: Limit { amount, currency }
amount: number

Workspace spending limit amount in milli-USD. Tracking starts when the limit is configured; prior or already-committed unreserved work is not counted in this workspace cap ledger.

minimum0
maximum9007199254740991
currency: "MILLI_USD"

Workspace spending limits currently support milli-USD only.

type: "lifetime"

AdminAPI Keys

API keys authenticate requests to the Boltz API. There are two key types: admin keys have full access to all management and compute operations across the organization, while workspace keys are scoped to a single workspace and can only perform compute operations (predictions, protein design, small molecule design) within that workspace. Keys can be created in live or test mode. Test keys (prefixed sk_bc_*_test_) create test-mode resources with synthetic data and no GPU cost. Every resource includes a livemode field indicating its mode.

Create a workspace API key
client.admin.apiKeys.create(APIKeyCreateParams { name, allowed_ips, expires_in_days, 2 more } body, RequestOptionsoptions?): APIKeyCreateResponse { key, key_details }
POST/compute/v1/admin/api-keys
List API keys
client.admin.apiKeys.list(APIKeyListParams { after_id, before_id, limit, workspace_id } query?, RequestOptionsoptions?): CursorPage<APIKeyListResponse { id, allowed_ips, created_at, 8 more } >
GET/compute/v1/admin/api-keys
Revoke an API key
client.admin.apiKeys.revoke(stringapiKeyID, RequestOptionsoptions?): APIKeyRevokeResponse { id, allowed_ips, created_at, 8 more }
POST/compute/v1/admin/api-keys/{api_key_id}/revoke
ModelsExpand Collapse
APIKeyCreateResponse { key, key_details }
key: string

The full API key. This is only shown once — store it securely.

key_details: KeyDetails { id, allowed_ips, created_at, 8 more }
id: string

API key ID

allowed_ips: Array<string>

IP addresses allowed to use this key. An empty array means all IPs are allowed.

created_at: string
formatdate-time
expires_at: string | null

When the key expires. Null if the key does not expire.

formatdate-time
is_active: boolean
key_prefix: string

First 12 characters of the key

key_type: "workspace"
last_used_at: string | null
formatdate-time
livemode: boolean

Whether this is a live API key (false for test keys).

name: string

API key name

workspace_id: string

Workspace this key is scoped to

APIKeyListResponse { id, allowed_ips, created_at, 8 more }
id: string

API key ID

allowed_ips: Array<string>

IP addresses allowed to use this key. An empty array means all IPs are allowed.

created_at: string
formatdate-time
expires_at: string | null

When the key expires. Null if the key does not expire.

formatdate-time
is_active: boolean
key_prefix: string

First 12 characters of the key

key_type: "admin" | "workspace"
One of the following:
"admin"
"workspace"
last_used_at: string | null
formatdate-time
livemode: boolean

Whether this is a live API key (false for test keys).

name: string

API key name

workspace_id: string | null

Workspace ID if workspace-scoped

APIKeyRevokeResponse { id, allowed_ips, created_at, 8 more }
id: string

API key ID

allowed_ips: Array<string>

IP addresses allowed to use this key. An empty array means all IPs are allowed.

created_at: string
formatdate-time
expires_at: string | null

When the key expires. Null if the key does not expire.

formatdate-time
is_active: boolean
key_prefix: string

First 12 characters of the key

key_type: "admin" | "workspace"
One of the following:
"admin"
"workspace"
last_used_at: string | null
formatdate-time
livemode: boolean

Whether this is a live API key (false for test keys).

name: string

API key name

workspace_id: string | null

Workspace ID if workspace-scoped

AdminUsage

Retrieve aggregated usage data for the organization. Usage can be grouped by workspace and/or application, and filtered by time range, workspace, and application.

Get usage data
client.admin.usage.list(UsageListParams { ending_at, starting_at, window_size, 5 more } query, RequestOptionsoptions?): OpaqueCursorPage<UsageListResponse { end_time, quantity, start_time, 2 more } >
GET/compute/v1/admin/usage
ModelsExpand Collapse
UsageListResponse { end_time, quantity, start_time, 2 more }
end_time: string
formatdate-time
quantity: number

Aggregated billed quantity for this bucket

start_time: string
formatdate-time
application?: "structure_and_binding" | "small_molecule_design" | "small_molecule_library_screen" | 4 more
One of the following:
"structure_and_binding"
"small_molecule_design"
"small_molecule_library_screen"
"protein_design"
"protein_redesign"
"protein_library_screen"
"adme"
workspace_id?: string

Present when grouped by workspace_id