Betula API

Betula API as documented publicly: 137 operations. Contract generated from the documentation by API Evangelist (2026-10-28); not the provider's own document.

Operations 137

GET / GET / #
GET /namespaces Get user's namespaces #
GET /namespaces/{namespace} Get namespace #
GET /namespaces/{namespace}/pulls Get pull data #
GET /namespaces/{namespace}/pulls/exports/years Get years with data #
GET /namespaces/{namespace}/pulls/exports/years/{year}/{timespantype} Get timespans with data #
GET /namespaces/{namespace}/pulls/exports/years/{year}/{timespantype}/{timespan} Get namespace metadata for timespan #
GET /namespaces/{namespace}/pulls/exports/years/{year}/{timespantype}/{timespan}/{dataview} Get namespace data for timespan #
GET /namespaces/{namespace}/repos/{repo}/pulls Get pull data #
GET /repos/pulls Get pull data for multiple repos #
GET /token GET /token #
GET /user/repo.git/mydir/You GET /user/repo.git/mydir/You #
DELETE /v1/files Remove deletes a path. #
GET /v1/files List lists directory entries by path ascending. #
GET /v1/files/content ReadFile returns raw file content over HTTP; Stat exposes file metadata. #
PUT /v1/files/content WriteFile accepts raw content with path and mode query parameters. #
PUT /v1/files/directories Mkdir creates a directory. #
GET /v1/files/download Download streams file headers, bytes, and per-file errors. #
POST /v1/files/move Move renames or moves a path. #
GET /v1/files/stat Stat reads metadata for one path. #
POST /v1/files/upload Upload streams one or more files. #
POST /v1/identity/exchange ExchangeDockerCredential consumes an identity token once for the authenticated owner. #
GET /v1/images ListImages lists images in the caller's owner scope. #
POST /v1/images CreateImage registers pushed OCI content or disk content derived from a snapshot or sandbox. #
DELETE /v1/images/{image} DeleteImage deletes an image; deleting an already absent image succeeds. #
GET /v1/images/{image} GetImage reads one image by its resource name. #
GET /v1/images/{image}/pull-spec GetImagePullSpec returns short-lived pull material through registry-transfer support. #
GET /v1/mcp-servers/{mcpserver}/authorization GetMcpAuthorization reads the owner-scoped flow, including its pending URL, under mcp.write. #
POST /v1/mcp-servers/{mcpserver}/authorization/authorize AuthorizeMcpServer authorizes credentials for one named upstream. #
GET /v1/network-policies GetNetworkPolicies returns effective and exact views of the same installed generation. #
GET /v1/policy-logs ListPolicyLogEntries lists observed policy decisions. #
GET /v1/processes ListProcesses lists processes in creation order. #
POST /v1/processes CreateProcess starts a durable interactive process and returns its resource name. #
POST /v1/processes/exec Exec runs one command to completion. #
GET /v1/processes/{process} GetProcess reads one process by its endpoint-scoped resource name. #
GET /v1/processes/{process}/interact Interact binds the complete process name from the path to the first Attach frame. #
GET /v1/processes/{process}/output ReadOutput returns one page of retained output after a stream_sequence, the same cursor Interact resumes from, so a REST client can read what a process printed. #
POST /v1/processes/{process}/signal Signal sends one signal to an existing process. #
GET /v1/sandboxes ListSandboxes lists sandboxes in the caller's owner scope. #
POST /v1/sandboxes CreateSandbox admits a sandbox. #
DELETE /v1/sandboxes/{sandbox} DeleteSandbox returns the deleting resource while work remains, or an empty message when absent. #
GET /v1/sandboxes/{sandbox} GetSandbox reads one sandbox by its resource name. #
PATCH /v1/sandboxes/{sandbox} UpdateSandbox changes only the display label under the observed etag. #
POST /v1/sandboxes/{sandbox}/endpoint-credentials CreateEndpointCredential grants short-lived access to one sandbox endpoint. #
GET /v1/sandboxes/{sandbox}/mcp-gateway GetMcpGateway reads gateway state for the sandbox. #
POST /v1/sandboxes/{sandbox}/mcp-gateway/servers AddMcpGatewayServer adds one server to an existing ready gateway. #
GET /v1/sandboxes/{sandbox}/network-policies GetNetworkPolicies returns effective and exact views of the same installed generation. #
GET /v1/sandboxes/{sandbox}/policy-logs ListPolicyLogEntries lists observed policy decisions. #
GET /v1/sandboxes/{sandbox}/ports ListPorts lists currently published ports for one sandbox. #
POST /v1/sandboxes/{sandbox}/ports CreatePort makes one sandbox port reachable outside the sandbox. #
DELETE /v1/sandboxes/{sandbox}/ports/{port} DeletePort withdraws one published port. #
GET /v1/sandboxes/{sandbox}/ports/{port} GetPort reads one published port by its resource name. #
POST /v1/sandboxes/{sandbox}/renew-timeout RenewSandboxTimeout sets a TTL when timeout renewal is supported. #
POST /v1/sandboxes/{sandbox}/snapshots CreateSnapshot checkpoints a running sandbox; a stopped source is rejected. #
POST /v1/sandboxes/{sandbox}/ssh-certificates IssueSSHCert signs a caller-held public key for sandbox SSH access. #
POST /v1/sandboxes/{sandbox}/start StartSandbox starts a stopped sandbox; a backend that preserved memory resumes it. #
POST /v1/sandboxes/{sandbox}/stop StopSandbox stops a running sandbox; a backend advertising memory preservation hibernates it. #
GET /v1/secrets ListSecrets lists secret metadata in the caller's owner scope. #
POST /v1/secrets CreateSecret stores new secret material. #
DELETE /v1/secrets/{secret} DeleteSecret deletes a secret; deleting an already absent secret succeeds. #
GET /v1/secrets/{secret} GetSecret reads one secret's metadata; material is never returned. #
PUT /v1/secrets/{secret} UpdateSecret replaces secret metadata and material. #
GET /v1/snapshots ListSnapshots lists snapshots in the caller's owner scope. #
DELETE /v1/snapshots/{snapshot} DeleteSnapshot deletes a snapshot; deleting an already absent snapshot succeeds. #
GET /v1/snapshots/{snapshot} GetSnapshot reads one snapshot by its resource name. #
POST /v1/snapshots/{snapshot}/restore RestoreSnapshot forks a new sandbox from a snapshot. #
GET /v1/volumes ListVolumes lists volumes in the caller's owner scope. #
POST /v1/volumes CreateVolume creates a persistent volume. #
DELETE /v1/volumes/{volume} DeleteVolume deletes a volume; deleting an already absent volume succeeds. #
GET /v1/volumes/{volume} GetVolume reads one volume by its resource name. #
DELETE /v2 DELETE /v2 #
GET /v2 GET /v2 #
POST /v2 POST /v2 #
PUT /v2 PUT /v2 #
GET /v2/access-tokens List personal access tokens #
POST /v2/access-tokens Create personal access token #
DELETE /v2/access-tokens/{uuid} Delete personal access token #
GET /v2/access-tokens/{uuid} Get personal access token #
PATCH /v2/access-tokens/{uuid} Update personal access token #
GET /v2/auditlogs/{account} List audit log events #
GET /v2/auditlogs/{account}/actions List audit log actions #
POST /v2/auth/token Create access token #
POST /v2/invites/bulk Bulk create invites #
DELETE /v2/invites/{id} Cancel an invite #
PATCH /v2/invites/{id}/resend Resend an invite #
GET /v2/library/ubuntu/blobs GET /v2/library/ubuntu/blobs #
GET /v2/library/ubuntu/manifests GET /v2/library/ubuntu/manifests #
GET /v2/library/ubuntu/manifests/latest GET /v2/library/ubuntu/manifests/latest #
GET /v2/namespaces/{namespace}/repositories List repositories in a namespace #
POST /v2/namespaces/{namespace}/repositories Create a new repository #
GET /v2/namespaces/{namespace}/repositories/{repository} Get repository in a namespace #
PATCH /v2/namespaces/{namespace}/repositories/{repository}/immutabletags Update repository immutable tags #
POST /v2/namespaces/{namespace}/repositories/{repository}/immutabletags/verify Verify repository immutable tags #
GET /v2/namespaces/{namespace}/repositories/{repository}/tags List repository tags #
GET /v2/namespaces/{namespace}/repositories/{repository}/tags/{tag} Read repository tag #
GET /v2/orgs/{orgName}/access-tokens List access tokens #
POST /v2/orgs/{orgName}/access-tokens Create access token #
DELETE /v2/orgs/{orgName}/access-tokens/{accessTokenId} Delete access token #
GET /v2/orgs/{orgName}/access-tokens/{accessTokenId} Get access token #
PATCH /v2/orgs/{orgName}/access-tokens/{accessTokenId} Update access token #
GET /v2/orgs/{orgName}/groups Get groups of an organization #
POST /v2/orgs/{orgName}/groups Create a new group #
DELETE /v2/orgs/{orgName}/groups/{groupName} Delete an organization group #
GET /v2/orgs/{orgName}/groups/{groupName} Get a group of an organization #
PATCH /v2/orgs/{orgName}/groups/{groupName} Update some details for an organization group #
PUT /v2/orgs/{orgName}/groups/{groupName} Update the details for an organization group #
GET /v2/orgs/{orgName}/groups/{groupName}/members List members of a group #
POST /v2/orgs/{orgName}/groups/{groupName}/members Add a member to a group #
DELETE /v2/orgs/{orgName}/groups/{groupName}/members/{username} Remove a user from a group #
GET /v2/orgs/{orgName}/invites List org invites #
GET /v2/orgs/{orgName}/members List org members #
GET /v2/orgs/{orgName}/members/export Export org members CSV #
DELETE /v2/orgs/{orgName}/members/{username} Remove member from org #
PUT /v2/orgs/{orgName}/members/{username} Update org member (role) #
GET /v2/orgs/{orgName}/settings Get organization settings #
PUT /v2/orgs/{orgName}/settings Update organization settings #
POST /v2/repositories/{namespace}/{repository}/groups Assign a group (Team) to a repository for access #
GET /v2/scim/2.0/ResourceTypes List resource types #
GET /v2/scim/2.0/ResourceTypes/{name} Get a resource type #
GET /v2/scim/2.0/Schemas List schemas #
GET /v2/scim/2.0/Schemas/{id} Get a schema #
GET /v2/scim/2.0/ServiceProviderConfig Get service provider config #
GET /v2/scim/2.0/Users List users #
POST /v2/scim/2.0/Users Create user #
GET /v2/scim/2.0/Users/{id} Get a user #
PUT /v2/scim/2.0/Users/{id} Update a user #
POST /v2/users/2fa-login Second factor authentication #
POST /v2/users/login Create an authentication token #
POST /v2/{name}/blobs/uploads Initiate blob upload or attempt cross-repository blob mount #
DELETE /v2/{name}/blobs/uploads/{uuid} Cancel blob upload #
GET /v2/{name}/blobs/uploads/{uuid} Get blob upload status #
PATCH /v2/{name}/blobs/uploads/{uuid} Upload blob chunk #
PUT /v2/{name}/blobs/uploads/{uuid} Complete blob upload #
GET /v2/{name}/blobs/{digest} Retrieve blob #
DELETE /v2/{name}/manifests/{reference} Delete image manifest #
GET /v2/{name}/manifests/{reference} Get image manifest #
PUT /v2/{name}/manifests/{reference} Put image manifest #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/betula:betula-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

betula-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Betula API
  version: '2026-10-28'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-28: 137 operation(s) read from 5 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; Betula has published no machine-readable contract that
    the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 10
    documentation: 127
    pages-with-code: 2
    pages-read: 5
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-28'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://docs.docker.com/reference/dockerfile
  - https://docs.docker.com/reference/api/dvp/latest
  - https://docs.docker.com/reference/api/hub/latest
  - https://docs.docker.com/reference/api/registry/latest
  - https://docs.docker.com/reference/api/sandboxes/latest
servers:


# --- truncated at 32 KB (68 KB total) ---
# Full source: https://artifacts.apis.io/betula/openapi/_ae-authored/betula-openapi-generated.yml