Speakeasy Artifacts API

REST APIs for working with Registry artifacts

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/speakeasy-artifacts-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 email required.

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

OpenAPI Specification

speakeasy-artifacts-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  description: The Subscriptions API manages subscriptions for CLI and registry events
  title: Speakeasy Artifacts API
  version: 0.4.0
servers:
- url: https://api.prod.speakeasy.com
  x-speakeasy-server-id: prod
security:
- APIKey: []
- WorkspaceIdentifier: []
- Bearer: []
tags:
- description: REST APIs for working with Registry artifacts
  name: Artifacts
paths:
  /v1/artifacts/preflight:
    post:
      summary: Get Access Token for Communicating with OCI Distribution Endpoints
      operationId: preflight
      x-speakeasy-test: false
      tags:
      - Artifacts
      requestBody:
        $ref: '#/components/requestBodies/PreflightRequest'
      responses:
        2XX:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreflightToken'
        4XX:
          $ref: '#/components/responses/default'
  /v1/artifacts/namespaces:
    get:
      summary: Each Namespace Contains Many Revisions
      operationId: getNamespaces
      tags:
      - Artifacts
      responses:
        2XX:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetNamespacesResponse'
        4XX:
          $ref: '#/components/responses/default'
  /v1/artifacts/namespaces/{namespace_name}/archive:
    post:
      summary: Set Whether a Namespace is Archived
      operationId: archiveNamespace
      x-speakeasy-name-override: setArchived
      tags:
      - Artifacts
      parameters:
      - in: path
        name: namespace_name
        required: true
        schema:
          type: string
      requestBody:
        description: Archived status
        content:
          application/json:
            schema:
              properties:
                archived:
                  type: boolean
                  default: true
              type: object
      responses:
        2XX:
          description: OK
        4XX:
          $ref: '#/components/responses/default'
  /v1/artifacts/namespaces/{namespace_name}/revisions:
    get:
      operationId: getRevisions
      tags:
      - Artifacts
      parameters:
      - in: path
        name: namespace_name
        required: true
        schema:
          type: string
      - in: query
        name: next_page_token
        schema:
          type: string
        description: Token to retrieve the next page of results
      responses:
        2XX:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRevisionsResponse'
        4XX:
          $ref: '#/components/responses/default'
  /v1/artifacts/namespaces/{namespace_name}/tags:
    get:
      operationId: getTags
      tags:
      - Artifacts
      parameters:
      - in: path
        name: namespace_name
        required: true
        schema:
          type: string
      responses:
        2XX:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTagsResponse'
        4XX:
          $ref: '#/components/responses/default'
    post:
      summary: Add Tags to an Existing Revision
      operationId: postTags
      tags:
      - Artifacts
      parameters:
      - in: path
        name: namespace_name
        required: true
        schema:
          type: string
      requestBody:
        description: A JSON representation of the tags to add
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddTags'
      responses:
        2XX:
          description: OK
        4XX:
          $ref: '#/components/responses/default'
  /v1/artifacts/namespaces/{namespace_name}/visibility:
    post:
      summary: Set Visibility of a Namespace with an Existing Metadata Entry
      operationId: setVisibility
      tags:
      - Artifacts
      parameters:
      - in: path
        name: namespace_name
        required: true
        schema:
          type: string
      requestBody:
        description: Namespace visibility
        content:
          application/json:
            schema:
              properties:
                public:
                  type: boolean
              required:
              - public
              - tags
              type: object
      responses:
        2XX:
          description: OK
        4XX:
          $ref: '#/components/responses/default'
  /v1/artifacts/remote_sources:
    get:
      summary: Get Remote Sources Attached to a Particular Namespace
      operationId: listRemoteSources
      tags:
      - Artifacts
      parameters:
      - in: query
        name: namespace_name
        required: true
        schema:
          type: string
      responses:
        2XX:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoteSource'
        4XX:
          $ref: '#/components/responses/default'
    post:
      summary: Configure a New Remote Source
      operationId: createRemoteSource
      tags:
      - Artifacts
      requestBody:
        description: The configuration for the remote source
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoteSource'
      responses:
        2XX:
          description: OK
        4XX:
          $ref: '#/components/responses/default'
  /v1/oci/v2/{organization_slug}/{workspace_slug}/{namespace_name}/manifests/{revision_reference}:
    get:
      summary: Get Manifest for a Particular Reference
      operationId: getManifest
      tags:
      - Artifacts
      parameters:
      - in: header
        name: Accept
        required: true
        schema:
          type: string
      - in: path
        name: organization_slug
        required: true
        schema:
          type: string
      - in: path
        name: workspace_slug
        required: true
        schema:
          type: string
      - in: path
        name: namespace_name
        required: true
        schema:
          type: string
      - in: path
        name: revision_reference
        required: true
        schema:
          type: string
        description: Tag or digest
      responses:
        2XX:
          description: OK
          content:
            application/vnd.oci.image.manifest.v1+json:
              schema:
                $ref: '#/components/schemas/Manifest'
        4XX:
          $ref: '#/components/responses/default'
  /v1/oci/v2/{organization_slug}/{workspace_slug}/{namespace_name}/blobs/{digest}:
    get:
      summary: Get Blob for a Particular Digest
      operationId: getBlob
      tags:
      - Artifacts
      parameters:
      - in: path
        name: organization_slug
        required: true
        schema:
          type: string
      - in: path
        name: workspace_slug
        required: true
        schema:
          type: string
      - in: path
        name: namespace_name
        required: true
        schema:
          type: string
      - in: path
        name: digest
        required: true
        schema:
          type: string
      responses:
        2XX:
          description: OK
          content:
            application/octet-stream:
              schema:
                format: binary
                title: Blob
                type: string
        4XX:
          $ref: '#/components/responses/default'
components:
  schemas:
    GetRevisionsResponse:
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Revision'
        next_page_token:
          type: string
      required:
      - items
      - next_page_token
    GetTagsResponse:
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
      required:
      - items
    Manifest:
      description: Returns the requested manifest file
      example:
        config:
          digest: sha256:6d1ef012b5674ad8a127ecfa9b5e6f5178d171b90ee462846974177fd9bdd39f
          mediaType: application/vnd.docker.container.image.v1+json
          size: 1512
        layers:
        - digest: sha256:5d20c808ce198565ff70b3ed23a991dd49afac45dece63474b27ce6ed036adc6
          mediaType: application/vnd.docker.image.rootfs.diff.tar.gzip
          size: 2107098
        mediaType: application/vnd.docker.distribution.manifest.v2+json
        schemaVersion: 2
      properties:
        schemaVersion:
          description: Schema version
          type: integer
        mediaType:
          description: Media type usually application/vnd.docker.distribution.manifest.v2+json if this is in the accept header
          type: string
        artifactType:
          description: Type of artifact
          type: string
        annotations:
          $ref: '#/components/schemas/Annotations'
        layers:
          description: List of V2 image layer information
          items:
            $ref: '#/components/schemas/V2Descriptor'
          type: array
    Tag:
      properties:
        id:
          type: string
          description: Format {namespace_id}/{tag}
        name:
          type: string
          description: Human readable tag name
        namespace_name:
          type: string
        revision_digest:
          type: string
      required:
      - id
      - name
      - namespace_name
      - revision_digest
    RemoteDocument:
      description: A document hosted in the registry
      properties:
        registry_url:
          type: string
      required:
      - registry_url
    GetNamespacesResponse:
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Namespace'
      required:
      - items
    V2Descriptor:
      description: V2 descriptor
      properties:
        digest:
          description: Digest
          type: string
        mediaType:
          description: Media type
          type: string
        size:
          description: Size
          type: integer
        annotations:
          $ref: '#/components/schemas/Annotations'
    RemoteSourceSubscriptionSettings:
      properties:
        base_spec_namespaces:
          type: array
          items:
            type: string
        overlay_namespaces:
          type: array
          items:
            type: string
        ignored_namespaces:
          type: array
          items:
            type: string
        output_namespace:
          type: string
      required:
      - base_spec_namespaces
      - overlay_namespaces
      - output_namespace
    RemoteSource:
      description: Remote source configuration
      properties:
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/RemoteDocument'
        overlays:
          type: array
          items:
            $ref: '#/components/schemas/RemoteDocument'
        output:
          $ref: '#/components/schemas/RemoteDocument'
      required:
      - inputs
      - output
    RevisionContentsMetadata:
      properties:
        type:
          type: string
          enum:
          - OPENAPI_BUNDLE
          - OPENAPI_OVERLAY
        workspace_id:
          type: string
          description: The workspace ID
        namespace:
          type: string
          description: The fully qualified namespace
        revision_digest:
          type: string
          description: The digest of the parent bundle
        title:
          type: string
          description: The OAS title
        description:
          type: string
          description: The OAS description
        version:
          type: string
          description: The OAS version
        hash:
          type: string
          description: The hash of the contents
        tags:
          type: array
          description: The tags contained in the OAS -- NOT the OCI tags. Will be empty if the OAS is an overlay.
          items:
            type: string
        operation_ids:
          type: array
          description: The operation IDs contained in the OAS. Will be empty if the OAS is an overlay.
          items:
            type: string
        num_overlay_actions:
          type: integer
          description: The number of overlay actions in the OAS. Will be 0 if the OAS is not an overlay.
        contains_code_samples:
          type: boolean
          description: Whether the OAS contains code samples.
        created_at:
          format: date-time
          readOnly: true
          type: string
      required:
      - workspace_id
      - namespace
      - revision_digest
      - type
      - title
      - description
      - version
      - hash
      - tags
      - operation_ids
      - num_overlay_actions
      - contains_code_samples
      - created_at
    AddTags:
      description: Request body of tags to add to a revision
      properties:
        revision_digest:
          description: revision digest to add tags too sha256:...
          type: string
        tags:
          description: string tags to add to the revision
          items:
            type: string
          type: array
      required:
      - revision_digest
      - tags
      type: object
    PreflightToken:
      description: A PreflightToken is a token that allows access to the OCI distribution endpoints.
      properties:
        auth_token:
          type: string
      required:
      - access_token
    Annotations:
      description: Annotations
      properties:
        org.opencontainers.image.created:
          type: string
          description: The time the image was created
        org.opencontainers.image.authors:
          type: string
          description: The authors of the image
        org.opencontainers.image.url:
          type: string
          description: The URL of the image
        org.opencontainers.image.documentation:
          type: string
          description: The documentation URL of the image
        org.opencontainers.image.source:
          type: string
          description: The URL to get source code for building the image
        org.opencontainers.image.version:
          type: string
          description: The version of the packaged software
        org.opencontainers.image.revision:
          type: string
          description: Source control revision identifier
        org.opencontainers.image.vendor:
          type: string
          description: Name of the distributing entity, organization or individual.
        org.opencontainers.image.licenses:
          type: string
        org.opencontainers.image.ref.name:
          type: string
          description: Name of the reference for a target
        org.opencontainers.image.title:
          type: string
          description: Human-readable title of the image
        org.opencontainers.image.description:
          type: string
          description: Human-readable description of the software packaged in the image
    Revision:
      properties:
        id:
          type: string
          description: Format {namespace_id}/{revision_digest}
        digest:
          type: string
          example: sha256:6d1ef012b5674ad8a127ecfa9b5e6f5178d171b90ee462846974177fd9bdd39f
        namespace_name:
          type: string
        tags:
          type: array
          items:
            type: string
        contents_metadata:
          $ref: '#/components/schemas/RevisionContentsMetadata'
        created_at:
          format: date-time
          readOnly: true
          type: string
        updated_at:
          format: date-time
          readOnly: true
          type: string
      required:
      - id
      - namespace_name
      - digest
      - tags
      - created_at
      - updated_at
    Error:
      description: The `Status` type defines a logical error model
      properties:
        message:
          description: A developer-facing error message.
          type: string
        status_code:
          description: The HTTP status code
          format: int32
          type: integer
      required:
      - message
      - status_code
      type: object
    Namespace:
      description: A namespace contains many revisions.
      properties:
        id:
          type: string
          description: '{organization_slug}/{workspace_slug}/{namespace_name}'
        name:
          type: string
          description: A human-readable name for the namespace.
        created_at:
          format: date-time
          readOnly: true
          type: string
        updated_at:
          format: date-time
          readOnly: true
          type: string
        public:
          readOnly: true
          type: boolean
          description: Indicates whether the namespace is publicly accessible
        archived_at:
          format: date-time
          readOnly: true
          type: string
        latest_revision_metadata:
          $ref: '#/components/schemas/RevisionContentsMetadata'
        composite_spec_metadata:
          type: object
          properties:
            subscription_id:
              type: string
              readOnly: true
              description: The subscription ID for the remote source subscription, if applicable. This indicates that the namespace is created by a remote source and thus is composite.
            subscription_settings:
              $ref: '#/components/schemas/RemoteSourceSubscriptionSettings'
          required:
          - subscription_id
          - subscription_settings
      required:
      - id
      - name
      - created_at
      - updated_at
  requestBodies:
    PreflightRequest:
      content:
        application/json:
          schema:
            type: object
            properties:
              namespace_name:
                type: string
            required:
            - namespace_name
  responses:
    default:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Default error response
  securitySchemes:
    APIKey:
      description: The API Key for the workspace
      in: header
      name: x-api-key
      type: apiKey
    WorkspaceIdentifier:
      description: The API Key for the workspace
      in: header
      name: x-workspace-identifier
      type: apiKey
    Bearer:
      description: The Bearer token for the workspace
      type: http
      scheme: bearer
externalDocs:
  url: /docs
  description: The Speakeasy Platform Documentation
x-speakeasy-globals:
  parameters:
  - name: workspace_id
    in: path
    schema:
      type: string