Abstrax

Registry API

HTTP reference for the read-only plugin registry API. For how the CLI configures and uses the registry, including trust levels and plugin status, see Registry.

The registry is hosted at plugins.useabstrax.com. The public API base URL is:

https://plugins.useabstrax.com/api/v1

API versioning is expressed in the URL path. Responses do not include a redundant top-level api_version field.

OpenAPI specification

The canonical contract is defined in the repository at:

openapi/plugin-registry.openapi.yml

Validate the specification locally:

./openapi/validate.sh

Shared JSON examples used by contract tests live in:

openapi/fixtures/

Endpoints

Method Path Description
GET /registry Registry metadata and supported platforms
GET /plugins Paginated plugin list
GET /plugins/{plugin} Plugin detail
GET /plugins/{plugin}/versions/latest Latest compatible version
GET /plugins/{plugin}/versions/{version} Specific version

Registry metadata

curl https://plugins.useabstrax.com/api/v1/registry
{
  "registry": {
    "name": "Abstrax Plugin Registry",
    "supported_plugin_protocols": [1],
    "supported_platforms": ["linux-amd64", "linux-arm64"]
  }
}

Plugin list

Query parameters:

Parameter Description
search Case-insensitive search
trust_level official, verified, or community
status active, deprecated, blocked, or all (default active)
page Page number (default 1)
per_page Page size (default 20, max 100)
{
  "plugins": [
    {
      "name": "example",
      "display_name": "Example Plugin",
      "description": "Reference plugin and SDK example for Abstrax",
      "publisher": "useabstrax",
      "trust_level": "official",
      "status": "active",
      "latest_version": "0.1.0",
      "homepage": "https://plugins.useabstrax.com/plugins/example"
    }
  ],
  "meta": {
    "current_page": 1,
    "last_page": 1,
    "per_page": 20,
    "total": 1
  }
}

The publisher field is a publisher slug, not a display name.

Latest version

Query parameters:

Parameter Description
abstrax_version Client Abstrax version for compatibility resolution
platform Required platform, for example linux-amd64
channel Release channel (default stable)
{
  "version": "0.1.0",
  "requires_abstrax": ">=0.1.0",
  "platforms": {
    "linux-amd64": {
      "url": "https://example.com/abstrax-example_0.1.0_linux_amd64.tar.gz",
      "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "size": 123456
    }
  },
  "stable": true,
  "channel": "stable",
  "protocol_version": 1,
  "release_date": "2026-06-15T12:00:00+00:00",
  "manifest_url": "https://example.com/plugin-manifest.json"
}

Error responses

All registry API errors use this structure:

{
  "error": {
    "code": "plugin_not_found",
    "message": "The requested plugin could not be found."
  }
}

Stable error codes:

Code HTTP status Meaning
plugin_not_found 404 Plugin does not exist
version_not_found 404 Version does not exist
no_compatible_version 404 No version matches constraints
unsupported_platform 404 No binary for requested platform
plugin_blocked 403 Plugin is blocked
invalid_request 422 Invalid query parameters
registry_error 5xx Internal registry failure

Release manifest format

Direct installation with abstrax plugin install <name> --manifest=<url> uses the same core fields as the version endpoint:

{
  "name": "example",
  "version": "0.1.0",
  "protocol_version": 1,
  "requires_abstrax": ">=0.1.0",
  "channel": "stable",
  "publisher": "useabstrax",
  "trust_level": "official",
  "description": "Reference plugin and SDK example for Abstrax",
  "display_name": "Example Plugin",
  "platforms": {
    "linux-amd64": {
      "url": "https://example.com/abstrax-example_0.1.0_linux_amd64.tar.gz",
      "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "size": 123456
    }
  }
}