1. Docs
  2. Reference
  3. Pulumi Cloud REST API
  4. Registry

Registry

    The Pulumi Registry hosts reusable packages and templates for infrastructure deployments. The Registry API allows you to list, retrieve, publish, and manage packages and templates in the Pulumi Registry.

    Registry Identifiers

    Resources in the Registry are identified by a three-part identifier: {source}/{publisher}/{name}.

    • Source: Indicates the package’s origin. For example:
      • pulumi: Packages published directly to the public Pulumi registry
      • opentofu: OpenTofu packages bridged to Pulumi
      • private: Organization-specific private registry packages
    • Publisher: The organization that owns the package
      • For private packages: Matches the organization’s canonical name
      • For public packages: Managed by Registry Administrators
    • Name: The unique identifier for the package within its source and publisher

    Registry Operations

    The API provides endpoints for the following operations:

    • Listing registry packages
    • Retrieving package version metadata
    • Publishing new package versions
    • Deleting package versions
    • Listing registry templates
    • Retrieving template version information
    • Publishing new template versions
    • Deleting template versions

    List Registry Packages

    List all registry packages visible to the user.

    GET /api/preview/registry/packages
    

    Parameters

    ParameterTypeInDescription
    namestringqueryOptional. Filter results to packages with this specific name
    orgLoginstringqueryOptional. Filter results to packages owned by this organization
    limitintegerqueryOptional. Number of results to retrieve per page. Default is 100
    continuationTokenstringqueryOptional. The continuation token to use for retrieving the next set of results if results were truncated

    Example

    curl \
      -H "Accept: application/vnd.pulumi+8" \
      -H "Authorization: token $PULUMI_ACCESS_TOKEN" \
      https://api.pulumi.com/api/preview/registry/packages
    

    Default response

    Status: 200 OK
    
    {
      "packages": [
        {
          "name": "aws",
          "publisher": "pulumi",
          "source": "pulumi",
          "version": "6.80.0",
          "title": "AWS",
          "description": "A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.",
          "repoUrl": "https://github.com/pulumi/pulumi-aws",
          "category": "cloud",
          "isFeatured": false,
          "packageTypes": [
            "bridged"
          ],
          "packageStatus": "ga",
          "readmeURL": "https://artifacts.pulumi.com/providers/f5de3f9d-cde1-4be0-a6c4-12fb7aa20cb8/docs/index.md",
          "schemaURL": "https://artifacts.pulumi.com/providers/f5de3f9d-cde1-4be0-a6c4-12fb7aa20cb8/schema.json",
          "createdAt": "2025-05-07T04:25:34.582Z",
          "visibility": "public"
        }
      ]
    }
    

    Get Registry Package Version

    Retrieve metadata for a specific package version.

    GET /api/preview/registry/packages/{source}/{publisher}/{name}/versions/{version}
    

    Parameters

    ParameterTypeInDescription
    sourcestringpathRegistry source
    publisherstringpathPublisher name
    namestringpathPackage name
    versionstringpathPackage version number (SemVer) or ’latest'

    Example

    curl \
      -H "Accept: application/vnd.pulumi+8" \
      -H "Authorization: token $PULUMI_ACCESS_TOKEN" \
      https://api.pulumi.com/api/preview/registry/packages/{source}/{publisher}/{name}/versions/{version}
    

    Publish Registry Package Version

    Initiates the process of publishing a new version of a package to the registry.

    POST /api/preview/registry/packages/{source}/{publisher}/{name}/versions
    

    Parameters

    ParameterTypeInDescription
    sourcestringpathRegistry source
    publisherstringpathPublisher name
    namestringpathPackage name
    versionstringbodyVersion number (SemVer) of the package to publish

    Example

    curl \
      -H "Accept: application/vnd.pulumi+8" \
      -H "Authorization: token $PULUMI_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      --request POST \
      --data '{"version":"6.0.0"}' \
      https://api.pulumi.com/api/preview/registry/packages/{source}/{publisher}/{name}/versions
    

    Default response

    Status: 202 Accepted
    
    {
      "operationID": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "uploadURLs": {
        "schema": "https://s3.aws.amazon.com/...",
        "index": "https://s3.aws.amazon.com/...",
        "installationConfiguration": "https://s3.aws.amazon.com/..."
      }
    }
    

    Complete Registry Package Publish

    Complete the package publishing process after uploading all required files.

    POST /api/preview/registry/packages/{source}/{publisher}/{name}/versions/{version}/complete
    

    Parameters

    ParameterTypeInDescription
    sourcestringpathRegistry source
    publisherstringpathPublisher name
    namestringpathPackage name
    versionstringpathPackage version identifier
    operationIDstringbodyThe operation ID received from the publish initiation

    Example

    curl \
      -H "Accept: application/vnd.pulumi+8" \
      -H "Authorization: token $PULUMI_ACCESS_TOKEN" \
      --request POST \
      --data '{"operationID":"f47ac10b-58cc-4372-a567-0e02b2c3d479"}' \
      https://api.pulumi.com/api/preview/registry/packages/{source}/{publisher}/{name}/versions/{version}/complete
    

    Delete Registry Package Version

    Delete a specific version of a package from the registry.

    DELETE /api/preview/registry/packages/{source}/{publisher}/{name}/versions/{version}
    

    Parameters

    ParameterTypeInDescription
    sourcestringpathRegistry source
    publisherstringpathPublisher name
    namestringpathPackage name
    versionstringpathPackage version identifier

    Example

    curl \
      -H "Accept: application/vnd.pulumi+8" \
      -H "Authorization: token $PULUMI_ACCESS_TOKEN" \
      --request DELETE \
      https://api.pulumi.com/preview/registry/packages/{source}/{publisher}/{name}/versions/{version}
    

    List Registry Templates

    List all registry templates visible to the user.

    GET /api/preview/registry/templates
    

    Parameters

    ParameterTypeInDescription
    orgLoginstringqueryOptional. Filter results to templates owned by this organization
    continuationTokenstringqueryOptional. The continuation token to use for retrieving the next set of results if results were truncated

    Example

    curl \
      -H "Accept: application/vnd.pulumi+8" \
      -H "Authorization: token $PULUMI_ACCESS_TOKEN" \
      https://api.pulumi.com/api/preview/registry/templates?orgLogin=my-org
    

    Default response

    Status: 200 OK
    
    {
      "templates": [
        {
          "name": "my-template",
          "publisher": "my-org",
          "source": "private",
          "displayName": "My Template",
          "description": "A template for AWS projects",
          "runtime": {
            "name": "nodejs"
          },
          "language": "typescript",
          "readmeURL": "https://artifacts.pulumi.com/templates/.../README.md",
          "downloadURL": "https://artifacts.pulumi.com/templates/.../archive.tar.gz",
          "visibility": "private",
          "createdAt": "2025-10-01T10:00:00Z"
        }
      ]
    }
    

    Get Registry Template Version

    Retrieve metadata for a specific template version.

    GET /api/preview/registry/templates/{source}/{publisher}/{name}/versions/{version}
    

    Parameters

    ParameterTypeInDescription
    sourcestringpathRegistry source (e.g., private, github, gitlab)
    publisherstringpathPublisher/organization name
    namestringpathTemplate name (URL-encoded for VCS templates with paths)
    versionstringpathTemplate version (SemVer) or ’latest'

    Example

    curl \
      -H "Accept: application/vnd.pulumi+8" \
      -H "Authorization: token $PULUMI_ACCESS_TOKEN" \
      https://api.pulumi.com/api/preview/registry/templates/private/my-org/my-template/versions/1.0.0
    

    Default response

    Status: 200 OK
    

    Registry-backed template (source: private):

    {
        "name": "my-template",
        "publisher": "my-org",
        "source": "private",
        "displayName": "My Template",
        "description": "A template for AWS projects",
        "runtime": {
          "name": "nodejs",
          "options": {
            "typescript": true
          }
        },
        "language": "typescript",
        "readmeURL": "https://artifacts.pulumi.com/templates/.../README.md",
        "downloadURL": "https://artifacts.pulumi.com/templates/.../archive.tar.gz",
        "visibility": "private",
        "createdAt": "2025-10-01T10:00:00Z",
        "metadata": {
          "category": "infrastructure",
          "framework": "aws"
        },
        "config": {
          "aws:region": {
            "description": "The AWS region to deploy into",
            "default": "us-west-2"
          }
        }
    }
    

    VCS-backed template (source: github or gitlab):

    {
        "name": "pulumi/templates/static-website-aws-yaml",
        "publisher": "pulumi",
        "source": "github",
        "displayName": "static-website-aws-yaml",
        "description": "A Pulumi YAML program to deploy a static website on AWS",
        "language": "yaml",
        "templateURL": "https://github.com/pulumi/templates/static-website-aws-yaml",
        "readmeURL": "https://api.pulumi.com/api/orgs/pulumi/template/readme?url=https%3A%2F%2Fgithub.com%2Fpulumi%2Ftemplates%2Fstatic-website-aws-yaml",
        "repoSlug": "pulumi/templates",
        "visibility": "public",
        "updatedAt": "2025-05-12T20:53:05.016991943Z"
    }
    

    Publish Registry Template Version

    Initiates the process of publishing a new version of a template to the registry.

    POST /api/preview/registry/templates/{source}/{publisher}/{name}/versions
    

    Parameters

    ParameterTypeInDescription
    sourcestringpathRegistry source (must be private for publishing)
    publisherstringpathPublisher/organization name
    namestringpathTemplate name
    versionstringbodyVersion number (SemVer) of the template to publish

    Example

    curl \
      -H "Accept: application/vnd.pulumi+8" \
      -H "Authorization: token $PULUMI_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      --request POST \
      --data '{"version":"1.0.0"}' \
      https://api.pulumi.com/api/preview/registry/templates/private/my-org/my-template/versions
    

    Default response

    Status: 202 Accepted
    
    {
      "operationID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "uploadURL": "https://s3.aws.amazon.com/..."
    }
    

    After receiving the upload URL:

    1. Upload your template archive (tar.gz) to the uploadURL
    2. Call the Complete Registry Template Publish endpoint

    Complete Registry Template Publish

    Complete the template publishing process after uploading the template archive.

    POST /api/preview/registry/templates/{source}/{publisher}/{name}/versions/{version}/complete
    

    Parameters

    ParameterTypeInDescription
    sourcestringpathRegistry source (must be private)
    publisherstringpathPublisher/organization name
    namestringpathTemplate name
    versionstringpathTemplate version identifier
    operationIDstringbodyThe operation ID received from the publish initiation

    Example

    curl \
      -H "Accept: application/vnd.pulumi+8" \
      -H "Authorization: token $PULUMI_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      --request POST \
      --data '{"operationID":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}' \
      https://api.pulumi.com/api/preview/registry/templates/private/my-org/my-template/versions/1.0.0/complete
    

    Default response

    Status: 200 OK
    

    The template version is now published and available to your organization.

    Template archive requirements

    • Must be a gzip-compressed tar archive (.tar.gz)
    • Must contain a Pulumi.yaml at the root with a template section
    • Can include a README.md (recommended) for documentation

    Delete Registry Template Version

    Delete a specific version of a template from the registry.

    DELETE /api/preview/registry/templates/{source}/{publisher}/{name}/versions/{version}
    

    Parameters

    ParameterTypeInDescription
    sourcestringpathRegistry source
    publisherstringpathPublisher name
    namestringpathTemplate name
    versionstringpathTemplate version identifier
    forcebooleanquerytrue required to delete the last version of a template, which will also delete the whole template
      Meet Neo: Your AI Platform Teammate