Blaxel Sandboxes API

Create, start, stop, and delete secure microVM sandboxes that boot from standby in under 25ms, exposing filesystem, process, and code execution for agent runtimes. Includes sandbox previews and scoped preview tokens for shareable URLs.

OpenAPI Specification

blaxel-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Blaxel Control Plane API
  description: >-
    Representative specification of the Blaxel (formerly Beamlit) control plane
    REST API. The control plane manages agents, MCP/function servers, models,
    sandboxes, jobs, policies, integrations, and workspaces. Authenticate with a
    Bearer API key (Authorization or X-Blaxel-Authorization header) or an OAuth
    2.0 short-lived JWT. Requests may include a Blaxel-Version header
    (YYYY-MM-DD) and, for multi-workspace accounts, an X-Blaxel-Workspace header.
  termsOfService: https://blaxel.ai/terms-of-service
  contact:
    name: Blaxel Support
    email: support@blaxel.ai
  version: 'v0'
servers:
  - url: https://api.blaxel.ai/v0
security:
  - apiKey: []
  - bearerAuth: []
tags:
  - name: Agents
  - name: Functions
  - name: Models
  - name: Compute
  - name: Jobs
  - name: Policies
  - name: Integrations
  - name: Workspaces
  - name: Service Accounts
  - name: Volumes
  - name: Locations
paths:
  /agents:
    get:
      operationId: listAgents
      tags: [Agents]
      summary: List all agents in the workspace.
      responses:
        '200':
          description: A list of agents.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Agent'
    post:
      operationId: createAgent
      tags: [Agents]
      summary: Create a new agent deployment.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Agent'
      responses:
        '200':
          description: The created agent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
  /agents/{agent_name}:
    parameters:
      - $ref: '#/components/parameters/AgentName'
    get:
      operationId: getAgent
      tags: [Agents]
      summary: Get an agent by name.
      responses:
        '200':
          description: The requested agent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
    put:
      operationId: updateAgent
      tags: [Agents]
      summary: Update an agent by name.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Agent'
      responses:
        '200':
          description: The updated agent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
    delete:
      operationId: deleteAgent
      tags: [Agents]
      summary: Delete an agent by name.
      responses:
        '200':
          description: The deleted agent.
  /agents/{agent_name}/revisions:
    parameters:
      - $ref: '#/components/parameters/AgentName'
    get:
      operationId: listAgentRevisions
      tags: [Agents]
      summary: List revisions for an agent.
      responses:
        '200':
          description: A list of agent revisions.
  /functions:
    get:
      operationId: listFunctions
      tags: [Functions]
      summary: List all functions (MCP servers) in the workspace.
      responses:
        '200':
          description: A list of functions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Function'
    post:
      operationId: createFunction
      tags: [Functions]
      summary: Create a new function (MCP server).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Function'
      responses:
        '200':
          description: The created function.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Function'
  /functions/{function_name}:
    parameters:
      - $ref: '#/components/parameters/FunctionName'
    get:
      operationId: getFunction
      tags: [Functions]
      summary: Get a function by name.
      responses:
        '200':
          description: The requested function.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Function'
    put:
      operationId: updateFunction
      tags: [Functions]
      summary: Update a function by name.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Function'
      responses:
        '200':
          description: The updated function.
    delete:
      operationId: deleteFunction
      tags: [Functions]
      summary: Delete a function by name.
      responses:
        '200':
          description: The deleted function.
  /functions/{function_name}/revisions:
    parameters:
      - $ref: '#/components/parameters/FunctionName'
    get:
      operationId: listFunctionRevisions
      tags: [Functions]
      summary: List revisions for a function.
      responses:
        '200':
          description: A list of function revisions.
  /models:
    get:
      operationId: listModels
      tags: [Models]
      summary: List all model deployments in the workspace.
      responses:
        '200':
          description: A list of models.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Model'
    post:
      operationId: createModel
      tags: [Models]
      summary: Create a new model deployment behind the model gateway.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Model'
      responses:
        '200':
          description: The created model.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model'
  /models/{model_name}:
    parameters:
      - $ref: '#/components/parameters/ModelName'
    get:
      operationId: getModel
      tags: [Models]
      summary: Get a model by name.
      responses:
        '200':
          description: The requested model.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model'
    put:
      operationId: updateModel
      tags: [Models]
      summary: Update a model by name.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Model'
      responses:
        '200':
          description: The updated model.
    delete:
      operationId: deleteModel
      tags: [Models]
      summary: Delete a model by name.
      responses:
        '200':
          description: The deleted model.
  /models/{model_name}/revisions:
    parameters:
      - $ref: '#/components/parameters/ModelName'
    get:
      operationId: listModelRevisions
      tags: [Models]
      summary: List revisions for a model.
      responses:
        '200':
          description: A list of model revisions.
  /sandboxes:
    get:
      operationId: listSandboxes
      tags: [Compute]
      summary: List all sandboxes in the workspace.
      responses:
        '200':
          description: A list of sandboxes.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Sandbox'
    post:
      operationId: createSandbox
      tags: [Compute]
      summary: Create a new sandbox.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Sandbox'
      responses:
        '200':
          description: The created sandbox.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sandbox'
  /sandboxes/{sandbox_name}:
    parameters:
      - $ref: '#/components/parameters/SandboxName'
    get:
      operationId: getSandbox
      tags: [Compute]
      summary: Get a sandbox by name.
      responses:
        '200':
          description: The requested sandbox.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sandbox'
    put:
      operationId: updateSandbox
      tags: [Compute]
      summary: Update a sandbox by name.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Sandbox'
      responses:
        '200':
          description: The updated sandbox.
    delete:
      operationId: deleteSandbox
      tags: [Compute]
      summary: Delete a sandbox by name.
      responses:
        '200':
          description: The deleted sandbox.
  /sandboxes/{sandbox_name}/start:
    parameters:
      - $ref: '#/components/parameters/SandboxName'
    post:
      operationId: startSandbox
      tags: [Compute]
      summary: Start a sandbox.
      responses:
        '200':
          description: The started sandbox.
  /sandboxes/{sandbox_name}/stop:
    parameters:
      - $ref: '#/components/parameters/SandboxName'
    post:
      operationId: stopSandbox
      tags: [Compute]
      summary: Stop a sandbox.
      responses:
        '200':
          description: The stopped sandbox.
  /sandboxes/{sandbox_name}/previews:
    parameters:
      - $ref: '#/components/parameters/SandboxName'
    get:
      operationId: listSandboxPreviews
      tags: [Compute]
      summary: List previews for a sandbox.
      responses:
        '200':
          description: A list of sandbox previews.
    post:
      operationId: createSandboxPreview
      tags: [Compute]
      summary: Create a preview for a sandbox.
      responses:
        '200':
          description: The created sandbox preview.
  /sandboxes/{sandbox_name}/previews/{preview_name}/tokens:
    parameters:
      - $ref: '#/components/parameters/SandboxName'
      - name: preview_name
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: listSandboxPreviewTokens
      tags: [Compute]
      summary: List tokens for a sandbox preview.
      responses:
        '200':
          description: A list of preview tokens.
    post:
      operationId: createSandboxPreviewToken
      tags: [Compute]
      summary: Create a token for a sandbox preview.
      responses:
        '200':
          description: The created preview token.
  /jobs:
    get:
      operationId: listJobs
      tags: [Jobs]
      summary: List all jobs in the workspace.
      responses:
        '200':
          description: A list of jobs.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Job'
    post:
      operationId: createJob
      tags: [Jobs]
      summary: Create a new job.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Job'
      responses:
        '200':
          description: The created job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
  /jobs/{job_id}:
    parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getJob
      tags: [Jobs]
      summary: Get a job by id.
      responses:
        '200':
          description: The requested job.
    put:
      operationId: updateJob
      tags: [Jobs]
      summary: Update a job by id.
      responses:
        '200':
          description: The updated job.
    delete:
      operationId: deleteJob
      tags: [Jobs]
      summary: Delete a job by id.
      responses:
        '200':
          description: The deleted job.
  /jobs/{job_id}/executions:
    parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: listJobExecutions
      tags: [Jobs]
      summary: List executions for a job.
      responses:
        '200':
          description: A list of job executions.
    post:
      operationId: createJobExecution
      tags: [Jobs]
      summary: Create (run) a job execution.
      responses:
        '200':
          description: The created job execution.
  /jobs/{job_id}/executions/{execution_id}:
    parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
      - name: execution_id
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getJobExecution
      tags: [Jobs]
      summary: Get a job execution.
      responses:
        '200':
          description: The requested job execution.
    delete:
      operationId: deleteJobExecution
      tags: [Jobs]
      summary: Delete a job execution.
      responses:
        '200':
          description: The deleted job execution.
  /policies:
    get:
      operationId: listPolicies
      tags: [Policies]
      summary: List all policies in the workspace.
      responses:
        '200':
          description: A list of policies.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Policy'
    post:
      operationId: createPolicy
      tags: [Policies]
      summary: Create a new policy.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Policy'
      responses:
        '200':
          description: The created policy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Policy'
  /policies/{policy_name}:
    parameters:
      - name: policy_name
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getPolicy
      tags: [Policies]
      summary: Get a policy by name.
      responses:
        '200':
          description: The requested policy.
    put:
      operationId: updatePolicy
      tags: [Policies]
      summary: Update a policy by name.
      responses:
        '200':
          description: The updated policy.
    delete:
      operationId: deletePolicy
      tags: [Policies]
      summary: Delete a policy by name.
      responses:
        '200':
          description: The deleted policy.
  /integrations/{integration_name}:
    parameters:
      - name: integration_name
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getIntegration
      tags: [Integrations]
      summary: Get an integration by name.
      responses:
        '200':
          description: The requested integration.
  /integrations/connections:
    get:
      operationId: listIntegrationConnections
      tags: [Integrations]
      summary: List all integration connections in the workspace.
      responses:
        '200':
          description: A list of integration connections.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IntegrationConnection'
    post:
      operationId: createIntegrationConnection
      tags: [Integrations]
      summary: Create a new integration connection.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegrationConnection'
      responses:
        '200':
          description: The created integration connection.
  /integrations/connections/{connection_name}:
    parameters:
      - $ref: '#/components/parameters/ConnectionName'
    get:
      operationId: getIntegrationConnection
      tags: [Integrations]
      summary: Get an integration connection by name.
      responses:
        '200':
          description: The requested integration connection.
    put:
      operationId: updateIntegrationConnection
      tags: [Integrations]
      summary: Update an integration connection by name.
      responses:
        '200':
          description: The updated integration connection.
    delete:
      operationId: deleteIntegrationConnection
      tags: [Integrations]
      summary: Delete an integration connection by name.
      responses:
        '200':
          description: The deleted integration connection.
  /integrations/connections/{connection_name}/models:
    parameters:
      - $ref: '#/components/parameters/ConnectionName'
    get:
      operationId: listIntegrationConnectionModels
      tags: [Integrations]
      summary: List models available through an integration connection.
      responses:
        '200':
          description: A list of connection models.
  /integrations/connections/{connection_name}/endpointConfigurations:
    parameters:
      - $ref: '#/components/parameters/ConnectionName'
    get:
      operationId: getIntegrationConnectionModelEndpointConfigurations
      tags: [Integrations]
      summary: Get endpoint configurations for an integration connection.
      responses:
        '200':
          description: The endpoint configurations.
  /workspaces:
    get:
      operationId: listWorkspaces
      tags: [Workspaces]
      summary: List all workspaces the caller belongs to.
      responses:
        '200':
          description: A list of workspaces.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workspace'
    post:
      operationId: createWorkspace
      tags: [Workspaces]
      summary: Create a new workspace.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Workspace'
      responses:
        '200':
          description: The created workspace.
  /workspaces/{workspace_name}:
    parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getWorkspace
      tags: [Workspaces]
      summary: Get a workspace by name.
      responses:
        '200':
          description: The requested workspace.
    put:
      operationId: updateWorkspace
      tags: [Workspaces]
      summary: Update a workspace by name.
      responses:
        '200':
          description: The updated workspace.
    delete:
      operationId: deleteWorkspace
      tags: [Workspaces]
      summary: Delete a workspace by name.
      responses:
        '200':
          description: The deleted workspace.
  /users:
    get:
      operationId: listWorkspaceUsers
      tags: [Workspaces]
      summary: List users in the current workspace.
      responses:
        '200':
          description: A list of workspace users.
    post:
      operationId: inviteWorkspaceUser
      tags: [Workspaces]
      summary: Invite a user to the current workspace.
      responses:
        '200':
          description: The invited user.
  /service_accounts:
    get:
      operationId: getWorkspaceServiceAccounts
      tags: [Service Accounts]
      summary: List service accounts in the workspace.
      responses:
        '200':
          description: A list of service accounts.
    post:
      operationId: createWorkspaceServiceAccount
      tags: [Service Accounts]
      summary: Create a workspace service account.
      responses:
        '200':
          description: The created service account.
  /service_accounts/{client_id}/api_keys:
    parameters:
      - name: client_id
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: listApiKeysForServiceAccount
      tags: [Service Accounts]
      summary: List API keys for a service account.
      responses:
        '200':
          description: A list of API keys.
    post:
      operationId: createApiKeyForServiceAccount
      tags: [Service Accounts]
      summary: Create an API key for a service account.
      responses:
        '200':
          description: The created API key.
  /volumes:
    get:
      operationId: listVolumes
      tags: [Volumes]
      summary: List all volumes in the workspace.
      responses:
        '200':
          description: A list of volumes.
    post:
      operationId: createVolume
      tags: [Volumes]
      summary: Create a new volume.
      responses:
        '200':
          description: The created volume.
  /locations:
    get:
      operationId: listLocations
      tags: [Locations]
      summary: List available deployment locations.
      responses:
        '200':
          description: A list of locations.
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Blaxel-Authorization
      description: API key supplied as "Bearer YOUR-API-KEY".
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: OAuth 2.0 short-lived JWT access token.
  parameters:
    AgentName:
      name: agent_name
      in: path
      required: true
      schema:
        type: string
    FunctionName:
      name: function_name
      in: path
      required: true
      schema:
        type: string
    ModelName:
      name: model_name
      in: path
      required: true
      schema:
        type: string
    SandboxName:
      name: sandbox_name
      in: path
      required: true
      schema:
        type: string
    ConnectionName:
      name: connection_name
      in: path
      required: true
      schema:
        type: string
  schemas:
    Metadata:
      type: object
      properties:
        name:
          type: string
        displayName:
          type: string
        workspace:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        labels:
          type: object
          additionalProperties:
            type: string
    Agent:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            description:
              type: string
            runtime:
              type: object
            policies:
              type: array
              items:
                type: string
    Function:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            description:
              type: string
            runtime:
              type: object
            integrationConnections:
              type: array
              items:
                type: string
    Model:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            runtime:
              type: object
            integrationConnections:
              type: array
              items:
                type: string
    Sandbox:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            runtime:
              type: object
            ttl:
              type: string
            memory:
              type: integer
    Job:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            runtime:
              type: object
            maxConcurrentTasks:
              type: integer
            maxRetries:
              type: integer
            timeout:
              type: integer
    Policy:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            type:
              type: string
            locations:
              type: array
              items:
                type: object
            flavors:
              type: array
              items:
                type: object
    IntegrationConnection:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            integration:
              type: string
            config:
              type: object
            secret:
              type: object
    Workspace:
      type: object
      properties:
        name:
          type: string
        displayName:
          type: string
        region:
          type: string
        createdAt:
          type: string
          format: date-time