dyrector.io
  • Welcome ๐Ÿ‘‹
  • Basics
    • Who is it for?
    • How it works
    • Components
    • Use cases
    • API
  • Tutorials
    • Getting started
    • Add your Node
    • Add your Registry
      • Add V2 Registry
      • Add Docker Hub Registry
      • Add GitHub Registry
      • Add GitLab Registry
      • Add Google Registry
      • Add Unchecked Registry
    • Create your Project
      • Create a versionless project
      • Create a versioned project
        • Create a Rolling Version
        • Create an Incremental Version
        • Add a version to your Versioned Project
    • Deploy your Project
    • Create Chat Notifications
    • Inject Files to a Container
  • Features
    • Core functionality
    • Templates
      • Vaultwarden
      • Strapi
      • Cal.com
      • WordPress
      • Minecraft Server
      • Google Microservices Demo
      • Self-managed GitLab
      • MLflow
      • Gitea
      • LinkAce
    • Continuous Deployment
    • Configuration management
      • Container configuration
      • Configuration bundle
    • Monitoring
    • Audit log
    • Storage
  • Self-managed
    • Quick start
    • CLI
    • Proxies
    • Environment variables
    • Self-signed certificates
  • Learn more
    • Changelog
    • Quality Assurance (QA)
    • Roadmap
      • Features in progress
      • Integrations in progress
    • Pricing
    • FAQ
      • Portainer vs. dyrector.io
    • Community
Powered by GitBook
On this page
Edit on GitHub
Export as PDF
  1. Basics

API

Last updated 1 year ago

Registries

Registries are 3rd party registries where the images of versions are located. Learn more about registries .

Projects

Versions

Versions belong to versioned projects. Versionless projects act similar to a rolling version of a versioned project.

Version/Images

Images make up a versioned project's version, or a versionless project.

Teams

Users/Me

Users/Me cover endpoints related to your user profile.

Deployments

Tokens

Tokens are the access tokens that grant you access to a user profile and the teams the profile is a member of.

Nodes

Nodes are the deployment targets. Nodes are registered by installing at least one of the agents โ€“ crane for Kubernetes, dagent for Docker. These agents connect the platform to your node. One team can have as many nodes as they like.

Audit log

Audit log is a log of team activity generated by the platform.

Health

Health refers to the status of the different services that make up the platform. It can be checked to see if the platform works properly.

Notifications

Templates

Dashboard

Dashboard summarizes the latest activities of a team.

Storages

There are two kinds of projects in dyrector.io: versionless and versioned. Versionless projects make up one deployable unit without versioning, while versioned projects come with multiple rolling or incremental versions. More details .

The purpose of versions is to separate different variations of your project. They can be either rolling or incremental. One versionless project can have multiple versions of both types. More details about rolling and incremental versions .

Teams are the shared entity of multiple users. The purpose of teams is to separate users, nodes and projects based on their needs within an organization. Team owners can assign roles. More details about teams .

Deployments are the process that gets the installation of your versions or versionless projects done on the node of your choice. More details about deployments .

Node installation takes place with Shell or PowerShell scripts, which can be created or revoked. More details .

Notifications are chat notifications in Slack, Discord, and Teams. They send an automated message about deployments, new versions, new nodes, and new users. More details .

Templates are preset applications that can be turned into a project right away. They can be deployed with minimal configuration. More details about templates .

Storages are S3 compatible memory storages. They can be used for file injection. More details .

here
here
here
here
here
here
here
here
here

Fetch data of registries.

get

Lists every registries available in the active team. Request must include teamSlug in URL. Response is an array including the name, id, type, description, and icon of the registry.Registries are 3rd party registries where the container images are stored.

Path parameters
teamSlugstringRequired
Responses
200
Data of all registries within a team listed.
application/json
403
Unauthorized request for registries.
get
GET /api/{teamSlug}/registries HTTP/1.1
Host: 
Accept: */*
[
  {
    "type": "v2",
    "id": "text",
    "name": "text",
    "description": "text",
    "icon": "text",
    "url": "text"
  }
]

Fetch data of a registry.

get

Lists the details of a registry. Request must include teamSlug and RegistryID in URL. registryId refers to the registry's ID. Response is an array including the name, id, type, description, imageNamePrefix, inUse, icon, and audit log info of the registry.

Path parameters
teamSlugstringRequired
registryIdstringRequired
Responses
200
Data of a registry listed.
application/json
400
Bad request for a registry.
403
Unauthorized request for a registry.
404
Registry not found.
get
GET /api/{teamSlug}/registries/{registryId} HTTP/1.1
Host: 
Accept: */*
{
  "type": "group",
  "details": {
    "imageNamePrefix": "text"
  },
  "id": "text",
  "name": "text",
  "description": "text",
  "icon": "text",
  "inUse": true,
  "createdAt": "2025-05-30T04:57:59.351Z",
  "updatedAt": "2025-05-30T04:57:59.351Z"
}

Delete a registry from dyrector.io.

delete

Deletes a registry with the specified registryId. teamSlug and RegistryID are required in URL.

Path parameters
teamSlugstringRequired
registryIdstringRequired
Responses
204
Registry deleted.
403
Unauthorized request for registry delete.
404
Registry not found.
delete
DELETE /api/{teamSlug}/registries/{registryId} HTTP/1.1
Host: 
Accept: */*

No content

Fetch the projects list.

get

Returns a list of a team's projects and their details. teamSlug needs to be included in URL.

Path parameters
teamSlugstringRequired
Responses
200
List of projects.
application/json
403
Unauthorized request for projects.
get
GET /api/{teamSlug}/projects HTTP/1.1
Host: 
Accept: */*
[
  {
    "type": "versionless",
    "description": "text",
    "versionCount": 1,
    "audit": {
      "createdAt": "2025-05-30T04:57:59.351Z",
      "createdBy": "text",
      "updatedAt": "2025-05-30T04:57:59.351Z",
      "updatedBy": "text"
    },
    "id": "text",
    "name": "text"
  }
]

Fetch details of a project.

get

Returns a project's details. teamSlug and ProjectID needs to be included in URL. The response should contain an array, consisting of the project's name, id, type, description, deletability, versions and version related data, including version name and id, changelog, increasibility.

Path parameters
teamSlugstringRequired
projectIdstringRequired
Responses
200
Details of a project.
application/json
400
Bad request for project details.
403
Unauthorized request for project details.
404
Project not found.
get
GET /api/{teamSlug}/projects/{projectId} HTTP/1.1
Host: 
Accept: */*
{
  "type": "versionless",
  "description": "text",
  "deletable": true,
  "versions": [
    {
      "type": "incremental",
      "audit": {
        "createdAt": "2025-05-30T04:57:59.351Z",
        "createdBy": "text",
        "updatedAt": "2025-05-30T04:57:59.351Z",
        "updatedBy": "text"
      },
      "changelog": "text",
      "default": true,
      "increasable": true,
      "id": "text",
      "name": "text"
    }
  ],
  "audit": {
    "createdAt": "2025-05-30T04:57:59.351Z",
    "createdBy": "text",
    "updatedAt": "2025-05-30T04:57:59.351Z",
    "updatedBy": "text"
  },
  "id": "text",
  "name": "text"
}

Delete a project.

delete

Deletes a project with the specified projectId. teamSlug and ProjectID are required in URL.

Path parameters
teamSlugstringRequired
projectIdstringRequired
Responses
204
Project deleted.
403
Unauthorized request for a project.
404
Project not found.
delete
DELETE /api/{teamSlug}/projects/{projectId} HTTP/1.1
Host: 
Accept: */*

No content

Convert a project to versioned.

post

Converts a project to versioned with the specified projectId. teamSlug and ProjectID are required in URL.

Path parameters
teamSlugstringRequired
projectIdstringRequired
Responses
204
Project converted.
400
Bad request for project conversion.
403
Unauthorized request for project conversion.
post
POST /api/{teamSlug}/projects/{projectId}/convert HTTP/1.1
Host: 
Accept: */*

No content

Fetch the list of all the versions under a project.

get

Returns an array containing the every version that belong to a project. teamSlug and ProjectId must be included in URL. ProjectId refers to the project's ID. Details include the version's name, id, type, audit log details, changelog, and increasibility.

Path parameters
teamSlugstringRequired
projectIdstringRequired
Query parameters
nameContainsstringOptional
Responses
200
Returns an array with every versions of a project.
application/json
403
Unauthorized request for project versions.
get
GET /api/{teamSlug}/projects/{projectId}/versions HTTP/1.1
Host: 
Accept: */*
[
  {
    "type": "incremental",
    "audit": {
      "createdAt": "2025-05-30T04:57:59.351Z",
      "createdBy": "text",
      "updatedAt": "2025-05-30T04:57:59.351Z",
      "updatedBy": "text"
    },
    "changelog": "text",
    "default": true,
    "increasable": true,
    "id": "text",
    "name": "text"
  }
]

Retrieve the details of a version of a project.

get

Returns the details of a version in the project. teamSlug and ProjectId must be included in URL. projectId refers to the project's ID, versionId refers to the version's ID. Details include the version's name, id, type, audit log details, changelog, increasibility, mutability, deletability, and all image related data, including name, id, tag, order and configuration data of the images.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Responses
200
Details of a version under a project is fetched.
application/json
400
Bad request for version details.
403
Unauthorized request for version details.
404
Version not found.
get
GET /api/{teamSlug}/projects/{projectId}/versions/{versionId} HTTP/1.1
Host: 
Accept: */*
{
  "type": "incremental",
  "audit": {
    "createdAt": "2025-05-30T04:57:59.351Z",
    "createdBy": "text",
    "updatedAt": "2025-05-30T04:57:59.351Z",
    "updatedBy": "text"
  },
  "changelog": "text",
  "default": true,
  "increasable": true,
  "id": "text",
  "name": "text",
  "mutable": true,
  "deletable": true,
  "images": [
    {
      "id": "text",
      "name": "text",
      "tag": "text",
      "order": 1,
      "config": {
        "expose": "none",
        "restartPolicy": "always",
        "networkMode": "none",
        "deploymentStrategy": "recreate",
        "name": "text",
        "environment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "secrets": [
          {
            "required": true,
            "id": "text",
            "key": "text"
          }
        ],
        "routing": {
          "domain": "text",
          "path": "text",
          "stripPath": true,
          "uploadLimit": "text"
        },
        "user": 1,
        "tty": true,
        "configContainer": {
          "image": "text",
          "volume": "text",
          "path": "text",
          "keepFiles": true
        },
        "ports": [
          {
            "id": "text",
            "internal": 1,
            "external": 1
          }
        ],
        "portRanges": [
          {
            "id": "text",
            "internal": {
              "from": 1,
              "to": 1
            },
            "external": {
              "from": 1,
              "to": 1
            }
          }
        ],
        "volumes": [
          {
            "type": "ro",
            "id": "text",
            "name": "text",
            "path": "text",
            "size": "text",
            "class": "text"
          }
        ],
        "commands": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "args": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "initContainers": [
          {
            "id": "text",
            "name": "text",
            "image": "text",
            "command": [
              {
                "id": "text",
                "key": "text"
              }
            ],
            "args": [
              {
                "id": "text",
                "key": "text"
              }
            ],
            "environment": [
              {
                "value": "text",
                "id": "text",
                "key": "text"
              }
            ],
            "useParentConfig": true,
            "volumes": [
              {
                "id": "text",
                "name": "text",
                "path": "text"
              }
            ]
          }
        ],
        "capabilities": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "storage": {
          "storageId": "text",
          "path": "text",
          "bucket": "text"
        },
        "logConfig": {
          "driver": "nodeDefault",
          "options": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ]
        },
        "networks": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "dockerLabels": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "customHeaders": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "proxyHeaders": true,
        "useLoadBalancer": true,
        "extraLBAnnotations": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "healthCheckConfig": {
          "port": 1,
          "livenessProbe": "text",
          "readinessProbe": "text",
          "startupProbe": "text"
        },
        "resourceConfig": {
          "limits": {
            "cpu": "text",
            "memory": "text"
          },
          "requests": {
            "cpu": "text",
            "memory": "text"
          }
        },
        "annotations": {
          "service": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "deployment": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "ingress": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ]
        },
        "labels": {
          "service": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "deployment": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "ingress": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ]
        }
      },
      "createdAt": "2025-05-30T04:57:59.351Z",
      "registry": {
        "type": "v2",
        "id": "text",
        "name": "text"
      }
    }
  ],
  "deployments": [
    {
      "status": "preparing",
      "note": "text",
      "updatedAt": "2025-05-30T04:57:59.351Z",
      "node": {
        "type": "docker",
        "status": "unreachable",
        "id": "text",
        "name": "text"
      },
      "id": "text",
      "prefix": "text"
    }
  ]
}

Delete a version.

delete

This call deletes a version. teamSlug, ProjectId and VersionId must be included in URL. projectId refers to the project's ID, versionId refers to the version's ID.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Responses
204
Version deleted.
403
Unauthorized request for version delete.
404
Version not found.
delete
DELETE /api/{teamSlug}/projects/{projectId}/versions/{versionId} HTTP/1.1
Host: 
Accept: */*

No content

Turn version into a default one of the versioned project other versions under it will inherit images and deployments from.

put

This call turns a version into the default one, resulting other versions within this project later inherit images, deployments and their configurations from it. teamSlug, ProjectId and VersionId must be included in URL. projectId refers to the project's ID, versionId refers to the version's ID.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Responses
204
Version turned into default.
400
Bad request.
403
Unauthorized request for setting version as default.
404
Version not found.
put
PUT /api/{teamSlug}/projects/{projectId}/versions/{versionId}/default HTTP/1.1
Host: 
Accept: */*

No content

Fetch data of all images of a version.

get

Fetch details of images within a version. ProjectId refers to the project's ID, versionId refers to the version's ID. Both, and teamSlug are required in the URL.Details come in an array, including name, id, tag, order, and config details of the image.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Responses
200
Data of images listed.
application/json
403
Unauthorized request for images.
get
GET /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images HTTP/1.1
Host: 
Accept: */*
[
  {
    "id": "text",
    "name": "text",
    "tag": "text",
    "order": 1,
    "config": {
      "expose": "none",
      "restartPolicy": "always",
      "networkMode": "none",
      "deploymentStrategy": "recreate",
      "name": "text",
      "environment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "secrets": [
        {
          "required": true,
          "id": "text",
          "key": "text"
        }
      ],
      "routing": {
        "domain": "text",
        "path": "text",
        "stripPath": true,
        "uploadLimit": "text"
      },
      "user": 1,
      "tty": true,
      "configContainer": {
        "image": "text",
        "volume": "text",
        "path": "text",
        "keepFiles": true
      },
      "ports": [
        {
          "id": "text",
          "internal": 1,
          "external": 1
        }
      ],
      "portRanges": [
        {
          "id": "text",
          "internal": {
            "from": 1,
            "to": 1
          },
          "external": {
            "from": 1,
            "to": 1
          }
        }
      ],
      "volumes": [
        {
          "type": "ro",
          "id": "text",
          "name": "text",
          "path": "text",
          "size": "text",
          "class": "text"
        }
      ],
      "commands": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "args": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "initContainers": [
        {
          "id": "text",
          "name": "text",
          "image": "text",
          "command": [
            {
              "id": "text",
              "key": "text"
            }
          ],
          "args": [
            {
              "id": "text",
              "key": "text"
            }
          ],
          "environment": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "useParentConfig": true,
          "volumes": [
            {
              "id": "text",
              "name": "text",
              "path": "text"
            }
          ]
        }
      ],
      "capabilities": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "storage": {
        "storageId": "text",
        "path": "text",
        "bucket": "text"
      },
      "logConfig": {
        "driver": "nodeDefault",
        "options": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ]
      },
      "networks": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "dockerLabels": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "customHeaders": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "proxyHeaders": true,
      "useLoadBalancer": true,
      "extraLBAnnotations": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "healthCheckConfig": {
        "port": 1,
        "livenessProbe": "text",
        "readinessProbe": "text",
        "startupProbe": "text"
      },
      "resourceConfig": {
        "limits": {
          "cpu": "text",
          "memory": "text"
        },
        "requests": {
          "cpu": "text",
          "memory": "text"
        }
      },
      "annotations": {
        "service": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "deployment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "ingress": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ]
      },
      "labels": {
        "service": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "deployment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "ingress": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ]
      }
    },
    "createdAt": "2025-05-30T04:57:59.351Z",
    "registry": {
      "type": "v2",
      "id": "text",
      "name": "text"
    }
  }
]

Fetch data of an image of a version.

get

Fetch details of an image within a version. projectId refers to the project's ID, versionId refers to the version's ID, imageId refers to the image's ID. All, and teamSlug are required in the URL.Image details consists name, id, tag, order, and the config of the image.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
imageIdstringRequired
Responses
200
Data of an image.
application/json
400
Bad request for image details.
403
Unauthorized request for image details.
404
Image not found.
get
GET /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images/{imageId} HTTP/1.1
Host: 
Accept: */*
{
  "id": "text",
  "name": "text",
  "tag": "text",
  "order": 1,
  "config": {
    "expose": "none",
    "restartPolicy": "always",
    "networkMode": "none",
    "deploymentStrategy": "recreate",
    "name": "text",
    "environment": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "secrets": [
      {
        "required": true,
        "id": "text",
        "key": "text"
      }
    ],
    "routing": {
      "domain": "text",
      "path": "text",
      "stripPath": true,
      "uploadLimit": "text"
    },
    "user": 1,
    "tty": true,
    "configContainer": {
      "image": "text",
      "volume": "text",
      "path": "text",
      "keepFiles": true
    },
    "ports": [
      {
        "id": "text",
        "internal": 1,
        "external": 1
      }
    ],
    "portRanges": [
      {
        "id": "text",
        "internal": {
          "from": 1,
          "to": 1
        },
        "external": {
          "from": 1,
          "to": 1
        }
      }
    ],
    "volumes": [
      {
        "type": "ro",
        "id": "text",
        "name": "text",
        "path": "text",
        "size": "text",
        "class": "text"
      }
    ],
    "commands": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "args": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "initContainers": [
      {
        "id": "text",
        "name": "text",
        "image": "text",
        "command": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "args": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "environment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "useParentConfig": true,
        "volumes": [
          {
            "id": "text",
            "name": "text",
            "path": "text"
          }
        ]
      }
    ],
    "capabilities": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "storage": {
      "storageId": "text",
      "path": "text",
      "bucket": "text"
    },
    "logConfig": {
      "driver": "nodeDefault",
      "options": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    },
    "networks": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "dockerLabels": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "customHeaders": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "proxyHeaders": true,
    "useLoadBalancer": true,
    "extraLBAnnotations": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "healthCheckConfig": {
      "port": 1,
      "livenessProbe": "text",
      "readinessProbe": "text",
      "startupProbe": "text"
    },
    "resourceConfig": {
      "limits": {
        "cpu": "text",
        "memory": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "annotations": {
      "service": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "deployment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "ingress": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    },
    "labels": {
      "service": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "deployment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "ingress": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    }
  },
  "createdAt": "2025-05-30T04:57:59.351Z",
  "registry": {
    "type": "v2",
    "id": "text",
    "name": "text"
  }
}

Delete an image from a version.

delete

Delete an image. projectId refers to the project's ID, versionId refers to the version's ID, imageId refers to the image's ID. All, and teamSlug are required in the URL.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
imageIdstringRequired
Responses
204
Delete an image from a version.
403
Unauthorized request for an image.
404
Image not found.
delete
DELETE /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images/{imageId} HTTP/1.1
Host: 
Accept: */*

No content

Fetch data of teams the user is a member of.

get

List of teams consist of name, id, and statistics, including number of users, projects, nodes, versions, and deployments.Teams are the shared entity of multiple users. The purpose of teams is to separate users, nodes and projects based on their needs within an organization. Team owners can assign roles. More details about teams here.

Responses
200
List of teams and their statistics.
application/json
403
Unauthorized request for teams.
get
GET /api/teams HTTP/1.1
Host: 
Accept: */*
[
  {
    "statistics": {
      "users": 1,
      "projects": 1,
      "nodes": 1,
      "versions": 1,
      "deployments": 1
    },
    "id": "text",
    "name": "text",
    "slug": "text"
  }
]

Fetch data of a team the user is a member of.

get

Get the details of a team. Request must include teamId, which is the ID of the team they'd like to get the data of. Data of teams consist of name, id, and statistics, including number of users, projects, nodes, versions, and deployments. Response should include user details, as well, including name, id, role, status, email, and lastLogin.

Path parameters
teamIdstringRequired
Responses
200
Details of the team.
application/json
400
Bad request for team details.
403
Unauthorized request for team details.
404
Team not found.
get
GET /api/teams/{teamId} HTTP/1.1
Host: 
Accept: */*
{
  "statistics": {
    "users": 1,
    "projects": 1,
    "nodes": 1,
    "versions": 1,
    "deployments": 1
  },
  "id": "text",
  "name": "text",
  "slug": "text",
  "users": [
    {
      "role": "owner",
      "status": "pending",
      "email": "text",
      "lastLogin": "2025-05-30T04:57:59.351Z",
      "id": "text",
      "name": "text"
    }
  ]
}

Deletes a team.

delete

Request must include teamId. Owner access required for successful request.

Path parameters
teamIdstringRequired
Responses
204
Team deleted.
403
Unauthorized request for team delete.
404
Team not found.
delete
DELETE /api/teams/{teamId} HTTP/1.1
Host: 
Accept: */*

No content

Remove the current user from the team.

delete

Removes the current user from the team. Request must include teamId.

Path parameters
teamIdstringRequired
Responses
204
User removed from a team.
403
Unauthorized request for user removal.
404
User not found.
delete
DELETE /api/teams/{teamId}/users/leave HTTP/1.1
Host: 
Accept: */*

No content

Remove a user from the team.

delete

Removes the user from the team. Request must include teamId, userId. Admin access required for a successful request.

Path parameters
teamIdstringRequired
userIdstringRequired
Responses
204
User removed from a team.
403
Unauthorized request for user removal.
404
User not found.
delete
DELETE /api/teams/{teamId}/users/{userId} HTTP/1.1
Host: 
Accept: */*

No content

Reinvite user with a pending invite status to a team.

post

This call sends a new invitation link to a user who hasn't accepted invitation to a team.Request must include teamId, userId. Admin access required for a successful request.

Path parameters
teamIdstringRequired
userIdstringRequired
Responses
204
New invite link sent.
400
Bad request for reinvitation.
403
Unauthorized request for reinvitation.
post
POST /api/teams/{teamId}/users/{userId}/reinvite HTTP/1.1
Host: 
Accept: */*

No content

Fetch the current user.

post

Response includes the user, teams, and invitations.

Responses
200
Fetch the current user.
application/json
400
Bad request for current user.
403
Unauthorized request for current user.
post
POST /api/users/me HTTP/1.1
Host: 
Accept: */*
{
  "user": {
    "id": "text",
    "name": "text"
  },
  "teams": [
    {
      "role": "owner",
      "id": "text",
      "name": "text",
      "slug": "text"
    }
  ],
  "invitations": [
    {
      "id": "text",
      "name": "text",
      "slug": "text"
    }
  ]
}

Accept invitation to a team.

post

Request must include teamId.

Path parameters
teamIdstringRequired
Responses
204
Invitation accepted.
400
Bad request for team invitation.
403
Unauthorized request for team invitation.
post
POST /api/users/me/invitations/{teamId} HTTP/1.1
Host: 
Accept: */*

No content

Decline invitation to a team.

delete

Request must include teamId.

Path parameters
teamIdstringRequired
Responses
204
Invitation declined.
403
Unauthorized request for invite declination.
404
Invitation not found.
delete
DELETE /api/users/me/invitations/{teamId} HTTP/1.1
Host: 
Accept: */*

No content

Sets the onboarding tips to visible for the user.

put

Enable onboarding tips.

Responses
204
Enabled.
403
Unauthorized request for onboarding tips.
put
PUT /api/users/me/preferences/onboarding HTTP/1.1
Host: 
Accept: */*

No content

Sets the onboarding tips to hidden for the user.

delete

Disable onboarding tips.

Responses
204
Disabled.
403
Unauthorized request for onboarding tips.
delete
DELETE /api/users/me/preferences/onboarding HTTP/1.1
Host: 
Accept: */*

No content

Fetch the list of deployments.

get

Get the list of deployments. Request needs to include teamSlug in URL. A deployment should include id, prefix, status, note, audit log details, project name, id, type, version name, type, id, and node name, id, type.

Path parameters
teamSlugstringRequired
Responses
200
List of deployments.
application/json
403
Unauthorized request for deployments.
get
GET /api/{teamSlug}/deployments HTTP/1.1
Host: 
Accept: */*
[
  {
    "status": "preparing",
    "note": "text",
    "audit": {
      "createdAt": "2025-05-30T04:57:59.351Z",
      "createdBy": "text",
      "updatedAt": "2025-05-30T04:57:59.351Z",
      "updatedBy": "text"
    },
    "project": {
      "type": "versionless",
      "id": "text",
      "name": "text"
    },
    "version": {
      "type": "incremental",
      "id": "text",
      "name": "text"
    },
    "node": {
      "type": "docker",
      "id": "text",
      "name": "text"
    },
    "id": "text",
    "prefix": "text"
  }
]

Retrieve details of a deployment.

get

Get details of a certain deployment. Request must include teamSlug and deploymentId in URL. Deployment details should include id, prefix, environment, status, note, audit log details, project name, id, type, version name, type, id, and node name, id, type.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
Responses
200
Details of a deployment.
application/json
400
Bad request for deployment details.
403
Unauthorized request for deployment details.
404
Deployment not found.
get
GET /api/{teamSlug}/deployments/{deploymentId} HTTP/1.1
Host: 
Accept: */*
{
  "status": "preparing",
  "note": "text",
  "audit": {
    "createdAt": "2025-05-30T04:57:59.351Z",
    "createdBy": "text",
    "updatedAt": "2025-05-30T04:57:59.351Z",
    "updatedBy": "text"
  },
  "project": {
    "type": "versionless",
    "id": "text",
    "name": "text"
  },
  "version": {
    "type": "incremental",
    "id": "text",
    "name": "text"
  },
  "node": {
    "type": "docker",
    "id": "text",
    "name": "text"
  },
  "id": "text",
  "prefix": "text",
  "environment": [
    {
      "value": "text",
      "id": "text",
      "key": "text"
    }
  ],
  "publicKey": "text",
  "instances": [
    {
      "id": "text",
      "updatedAt": "2025-05-30T04:57:59.351Z",
      "image": {
        "id": "text",
        "name": "text",
        "tag": "text",
        "order": 1,
        "config": {
          "expose": "none",
          "restartPolicy": "always",
          "networkMode": "none",
          "deploymentStrategy": "recreate",
          "name": "text",
          "environment": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "secrets": [
            {
              "required": true,
              "id": "text",
              "key": "text"
            }
          ],
          "routing": {
            "domain": "text",
            "path": "text",
            "stripPath": true,
            "uploadLimit": "text"
          },
          "user": 1,
          "tty": true,
          "configContainer": {
            "image": "text",
            "volume": "text",
            "path": "text",
            "keepFiles": true
          },
          "ports": [
            {
              "id": "text",
              "internal": 1,
              "external": 1
            }
          ],
          "portRanges": [
            {
              "id": "text",
              "internal": {
                "from": 1,
                "to": 1
              },
              "external": {
                "from": 1,
                "to": 1
              }
            }
          ],
          "volumes": [
            {
              "type": "ro",
              "id": "text",
              "name": "text",
              "path": "text",
              "size": "text",
              "class": "text"
            }
          ],
          "commands": [
            {
              "id": "text",
              "key": "text"
            }
          ],
          "args": [
            {
              "id": "text",
              "key": "text"
            }
          ],
          "initContainers": [
            {
              "id": "text",
              "name": "text",
              "image": "text",
              "command": [
                {
                  "id": "text",
                  "key": "text"
                }
              ],
              "args": [
                {
                  "id": "text",
                  "key": "text"
                }
              ],
              "environment": [
                {
                  "value": "text",
                  "id": "text",
                  "key": "text"
                }
              ],
              "useParentConfig": true,
              "volumes": [
                {
                  "id": "text",
                  "name": "text",
                  "path": "text"
                }
              ]
            }
          ],
          "capabilities": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "storage": {
            "storageId": "text",
            "path": "text",
            "bucket": "text"
          },
          "logConfig": {
            "driver": "nodeDefault",
            "options": [
              {
                "value": "text",
                "id": "text",
                "key": "text"
              }
            ]
          },
          "networks": [
            {
              "id": "text",
              "key": "text"
            }
          ],
          "dockerLabels": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "customHeaders": [
            {
              "id": "text",
              "key": "text"
            }
          ],
          "proxyHeaders": true,
          "useLoadBalancer": true,
          "extraLBAnnotations": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "healthCheckConfig": {
            "port": 1,
            "livenessProbe": "text",
            "readinessProbe": "text",
            "startupProbe": "text"
          },
          "resourceConfig": {
            "limits": {
              "cpu": "text",
              "memory": "text"
            },
            "requests": {
              "cpu": "text",
              "memory": "text"
            }
          },
          "annotations": {
            "service": [
              {
                "value": "text",
                "id": "text",
                "key": "text"
              }
            ],
            "deployment": [
              {
                "value": "text",
                "id": "text",
                "key": "text"
              }
            ],
            "ingress": [
              {
                "value": "text",
                "id": "text",
                "key": "text"
              }
            ]
          },
          "labels": {
            "service": [
              {
                "value": "text",
                "id": "text",
                "key": "text"
              }
            ],
            "deployment": [
              {
                "value": "text",
                "id": "text",
                "key": "text"
              }
            ],
            "ingress": [
              {
                "value": "text",
                "id": "text",
                "key": "text"
              }
            ]
          }
        },
        "createdAt": "2025-05-30T04:57:59.351Z",
        "registry": {
          "type": "v2",
          "id": "text",
          "name": "text"
        }
      },
      "config": {
        "expose": "none",
        "restartPolicy": "always",
        "networkMode": "none",
        "deploymentStrategy": "recreate",
        "secrets": [
          {
            "required": true,
            "id": "text",
            "key": "text",
            "value": "text",
            "encrypted": true,
            "publicKey": "text"
          }
        ],
        "name": "text",
        "environment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "routing": {
          "domain": "text",
          "path": "text",
          "stripPath": true,
          "uploadLimit": "text"
        },
        "user": 1,
        "tty": true,
        "configContainer": {
          "image": "text",
          "volume": "text",
          "path": "text",
          "keepFiles": true
        },
        "ports": [
          {
            "id": "text",
            "internal": 1,
            "external": 1
          }
        ],
        "portRanges": [
          {
            "id": "text",
            "internal": {
              "from": 1,
              "to": 1
            },
            "external": {
              "from": 1,
              "to": 1
            }
          }
        ],
        "volumes": [
          {
            "type": "ro",
            "id": "text",
            "name": "text",
            "path": "text",
            "size": "text",
            "class": "text"
          }
        ],
        "commands": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "args": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "initContainers": [
          {
            "id": "text",
            "name": "text",
            "image": "text",
            "command": [
              {
                "id": "text",
                "key": "text"
              }
            ],
            "args": [
              {
                "id": "text",
                "key": "text"
              }
            ],
            "environment": [
              {
                "value": "text",
                "id": "text",
                "key": "text"
              }
            ],
            "useParentConfig": true,
            "volumes": [
              {
                "id": "text",
                "name": "text",
                "path": "text"
              }
            ]
          }
        ],
        "capabilities": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "storage": {
          "storageId": "text",
          "path": "text",
          "bucket": "text"
        },
        "logConfig": {
          "driver": "nodeDefault",
          "options": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ]
        },
        "networks": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "dockerLabels": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "customHeaders": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "proxyHeaders": true,
        "useLoadBalancer": true,
        "extraLBAnnotations": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "healthCheckConfig": {
          "port": 1,
          "livenessProbe": "text",
          "readinessProbe": "text",
          "startupProbe": "text"
        },
        "resourceConfig": {
          "limits": {
            "cpu": "text",
            "memory": "text"
          },
          "requests": {
            "cpu": "text",
            "memory": "text"
          }
        },
        "annotations": {
          "service": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "deployment": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "ingress": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ]
        },
        "labels": {
          "service": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "deployment": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "ingress": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ]
        }
      }
    }
  ],
  "lastTry": 1,
  "token": {
    "id": "text",
    "name": "text",
    "createdAt": "2025-05-30T04:57:59.351Z",
    "expiresAt": "2025-05-30T04:57:59.351Z"
  }
}

Delete deployment.

delete

Request must include teamSlug and deploymentId in the URL.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
Responses
204
Deployment deleted.
403
Unauthorized request for a deployment.
404
Deployment not found.
delete
DELETE /api/{teamSlug}/deployments/{deploymentId} HTTP/1.1
Host: 
Accept: */*

No content

Get details of a soon-to-be container.

get

Request must include teamSlug, deploymentId and instanceId, which refer to the ID of a deployment and the instance, in the URL. Instances are the manifestation of an image in the deployment. Response should include state, id, updatedAt, and image details including id, name, tag, order and config variables.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
instanceIdstringRequired
Responses
200
Details of an instance.
application/json
400
Bad request for instance details.
403
Unauthorized request for an instance.
404
Instance not found.
get
GET /api/{teamSlug}/deployments/{deploymentId}/instances/{instanceId} HTTP/1.1
Host: 
Accept: */*
{
  "id": "text",
  "updatedAt": "2025-05-30T04:57:59.351Z",
  "image": {
    "id": "text",
    "name": "text",
    "tag": "text",
    "order": 1,
    "config": {
      "expose": "none",
      "restartPolicy": "always",
      "networkMode": "none",
      "deploymentStrategy": "recreate",
      "name": "text",
      "environment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "secrets": [
        {
          "required": true,
          "id": "text",
          "key": "text"
        }
      ],
      "routing": {
        "domain": "text",
        "path": "text",
        "stripPath": true,
        "uploadLimit": "text"
      },
      "user": 1,
      "tty": true,
      "configContainer": {
        "image": "text",
        "volume": "text",
        "path": "text",
        "keepFiles": true
      },
      "ports": [
        {
          "id": "text",
          "internal": 1,
          "external": 1
        }
      ],
      "portRanges": [
        {
          "id": "text",
          "internal": {
            "from": 1,
            "to": 1
          },
          "external": {
            "from": 1,
            "to": 1
          }
        }
      ],
      "volumes": [
        {
          "type": "ro",
          "id": "text",
          "name": "text",
          "path": "text",
          "size": "text",
          "class": "text"
        }
      ],
      "commands": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "args": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "initContainers": [
        {
          "id": "text",
          "name": "text",
          "image": "text",
          "command": [
            {
              "id": "text",
              "key": "text"
            }
          ],
          "args": [
            {
              "id": "text",
              "key": "text"
            }
          ],
          "environment": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "useParentConfig": true,
          "volumes": [
            {
              "id": "text",
              "name": "text",
              "path": "text"
            }
          ]
        }
      ],
      "capabilities": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "storage": {
        "storageId": "text",
        "path": "text",
        "bucket": "text"
      },
      "logConfig": {
        "driver": "nodeDefault",
        "options": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ]
      },
      "networks": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "dockerLabels": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "customHeaders": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "proxyHeaders": true,
      "useLoadBalancer": true,
      "extraLBAnnotations": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "healthCheckConfig": {
        "port": 1,
        "livenessProbe": "text",
        "readinessProbe": "text",
        "startupProbe": "text"
      },
      "resourceConfig": {
        "limits": {
          "cpu": "text",
          "memory": "text"
        },
        "requests": {
          "cpu": "text",
          "memory": "text"
        }
      },
      "annotations": {
        "service": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "deployment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "ingress": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ]
      },
      "labels": {
        "service": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "deployment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "ingress": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ]
      }
    },
    "createdAt": "2025-05-30T04:57:59.351Z",
    "registry": {
      "type": "v2",
      "id": "text",
      "name": "text"
    }
  },
  "config": {
    "expose": "none",
    "restartPolicy": "always",
    "networkMode": "none",
    "deploymentStrategy": "recreate",
    "secrets": [
      {
        "required": true,
        "id": "text",
        "key": "text",
        "value": "text",
        "encrypted": true,
        "publicKey": "text"
      }
    ],
    "name": "text",
    "environment": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "routing": {
      "domain": "text",
      "path": "text",
      "stripPath": true,
      "uploadLimit": "text"
    },
    "user": 1,
    "tty": true,
    "configContainer": {
      "image": "text",
      "volume": "text",
      "path": "text",
      "keepFiles": true
    },
    "ports": [
      {
        "id": "text",
        "internal": 1,
        "external": 1
      }
    ],
    "portRanges": [
      {
        "id": "text",
        "internal": {
          "from": 1,
          "to": 1
        },
        "external": {
          "from": 1,
          "to": 1
        }
      }
    ],
    "volumes": [
      {
        "type": "ro",
        "id": "text",
        "name": "text",
        "path": "text",
        "size": "text",
        "class": "text"
      }
    ],
    "commands": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "args": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "initContainers": [
      {
        "id": "text",
        "name": "text",
        "image": "text",
        "command": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "args": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "environment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "useParentConfig": true,
        "volumes": [
          {
            "id": "text",
            "name": "text",
            "path": "text"
          }
        ]
      }
    ],
    "capabilities": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "storage": {
      "storageId": "text",
      "path": "text",
      "bucket": "text"
    },
    "logConfig": {
      "driver": "nodeDefault",
      "options": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    },
    "networks": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "dockerLabels": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "customHeaders": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "proxyHeaders": true,
    "useLoadBalancer": true,
    "extraLBAnnotations": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "healthCheckConfig": {
      "port": 1,
      "livenessProbe": "text",
      "readinessProbe": "text",
      "startupProbe": "text"
    },
    "resourceConfig": {
      "limits": {
        "cpu": "text",
        "memory": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "annotations": {
      "service": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "deployment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "ingress": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    },
    "labels": {
      "service": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "deployment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "ingress": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    }
  }
}

Fetch secrets of a soon-to-be container.

get

Request must include teamSlug, deploymentId and instanceId, which refer to the ID of a deployment and the instance, needs to be included in URL. Response should include container prefix and name, and publicKey, keys.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
instanceIdstringRequired
Responses
200
Secrets of an instance listed.
application/json
400
Bad request for instance secrets.
403
Unauthorized request for instance secrets.
404
Instance secrets not found.
get
GET /api/{teamSlug}/deployments/{deploymentId}/instances/{instanceId}/secrets HTTP/1.1
Host: 
Accept: */*
{
  "container": {
    "prefix": "text",
    "name": "text"
  },
  "publicKey": "text",
  "keys": [
    "text"
  ]
}

Fetch event log of a deployment.

get

Request must include teamSlug and deploymentId in the URL. Response should include an items array with objects of type, deploymentStatus, createdAt, log, and containerState which consists of state and instanceId.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
Query parameters
skipnumberRequired
takenumberRequired
trynumberOptional
Responses
200
Deployment event log.
application/json
400
Bad request for a deployment log.
403
Unauthorized request for a deployment log.
404
Deployment log not found.
get
GET /api/{teamSlug}/deployments/{deploymentId}/log?skip=1&take=1 HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "type": "log",
      "deploymentStatus": "preparing",
      "createdAt": "2025-05-30T04:57:59.351Z",
      "log": [
        "text"
      ],
      "containerState": {
        "state": "running",
        "instanceId": "text"
      }
    }
  ],
  "total": 1
}

Delete deployment token.

delete

Request must include teamSlug and deploymentId in the URL.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
Responses
204
Deployment token deleted.
403
Unauthorized request for a deployment token.
404
Deployment token not found.
delete
DELETE /api/{teamSlug}/deployments/{deploymentId}/token HTTP/1.1
Host: 
Accept: */*

No content

List of tokens.

get

Access token's support is to provide secure access to the HTTP api without a cookie.

Responses
200
Token list fetched.
application/json
403
Unauthorized request for tokens.
get
GET /api/tokens HTTP/1.1
Host: 
Accept: */*
[
  {
    "id": "text",
    "name": "text",
    "expiresAt": "2025-05-30T04:57:59.351Z",
    "createdAt": "2025-05-30T04:57:59.351Z"
  }
]

Fetch token details.

get

Access token's details are name, id, and the time of creation and expiration. Request must include tokenId.

Path parameters
tokenIdstringRequired
Responses
200
Token details listed.
application/json
400
Bad request for token details.
403
Unauthorized request for token details.
404
Token not found.
get
GET /api/tokens/{tokenId} HTTP/1.1
Host: 
Accept: */*
{
  "id": "text",
  "name": "text",
  "expiresAt": "2025-05-30T04:57:59.351Z",
  "createdAt": "2025-05-30T04:57:59.351Z"
}

Delete an access token.

delete

Request must include tokenId.

Path parameters
tokenIdstringRequired
Responses
204
Delete token.
403
Unauthorized request for token delete.
404
Token not found.
delete
DELETE /api/tokens/{tokenId} HTTP/1.1
Host: 
Accept: */*

No content

Get data of nodes that belong to your team.

get

Fetch data of deployment targets. Request must include teamSlug in URL. Response should include an array with the node's type, status, description, icon, address, connectedAt date, version, updating, id, and name.

Path parameters
teamSlugstringRequired
Responses
200
Data of nodes listed.
application/json
403
Unauthorized request for nodes.
get
GET /api/{teamSlug}/nodes HTTP/1.1
Host: 
Accept: */*
[
  {
    "type": "docker",
    "status": "unreachable",
    "description": "text",
    "icon": "text",
    "address": "text",
    "connectedAt": "2025-05-30T04:57:59.351Z",
    "version": "text",
    "updating": true,
    "id": "text",
    "name": "text"
  }
]

Get data of nodes that belong to your team.

get

Fetch data of a specific node. Request must include teamSlug in URL, and nodeId in body. Response should include an array with the node's type, status, description, icon, address, connectedAt date, version, updating, id, name, hasToken, and agent installation details.

Path parameters
teamSlugstringRequired
nodeIdstringRequired
Responses
200
Data of the node.
application/json
400
Bad request for node details.
403
Unauthorized request for node details.
404
Node not found.
get
GET /api/{teamSlug}/nodes/{nodeId} HTTP/1.1
Host: 
Accept: */*
{
  "type": "docker",
  "status": "unreachable",
  "description": "text",
  "icon": "text",
  "address": "text",
  "connectedAt": "2025-05-30T04:57:59.351Z",
  "version": "text",
  "updating": true,
  "id": "text",
  "name": "text",
  "hasToken": true,
  "install": {
    "command": "text",
    "script": "text",
    "expireAt": "2025-05-30T04:57:59.351Z"
  },
  "inUse": true
}

Delete node.

delete

Request must include the teamSlug in URL, and node's name in body.

Path parameters
teamSlugstringRequired
nodeIdstringRequired
Responses
204
Node deleted.
403
Unauthorized request for node delete.
404
Node not found.
delete
DELETE /api/{teamSlug}/nodes/{nodeId} HTTP/1.1
Host: 
Accept: */*

No content

Fetch install script.

get

Request must include the teamSlug in URL, and node's name in body. Response should include type, status, description, icon, address, connectedAt date, version, updating, id, name, hasToken, and install details.

Path parameters
teamSlugstringRequired
nodeIdstringRequired
Responses
200Success
text/plain
Responsestring
400
Bad request for an install script.
403
Unauthorized request for an install script.
404
Install script not found.
get
GET /api/{teamSlug}/nodes/{nodeId}/script HTTP/1.1
Host: 
Accept: */*
text

Delete node set up install script.

delete

Request must include the teamSlug in URL, and node's name in body.

Path parameters
teamSlugstringRequired
nodeIdstringRequired
Responses
204
Agent install script deleted.
403
Unauthorized request for script delete.
404
Install script not found.
delete
DELETE /api/{teamSlug}/nodes/{nodeId}/script HTTP/1.1
Host: 
Accept: */*

No content

Revoke the node's access token.

delete

Request must include the teamSlug in URL, and node's name in body.

Path parameters
teamSlugstringRequired
nodeIdstringRequired
Responses
204
Token revoked.
403
Unauthorized request for a token.
404
Token not found.
delete
DELETE /api/{teamSlug}/nodes/{nodeId}/token HTTP/1.1
Host: 
Accept: */*

No content

Update the agent.

post

Request must include the teamSlug in URL, and node's name in body.

Path parameters
nodeIdstringRequired
Responses
204
Node details modified.
400
Bad request for node details.
403
Unauthorized request for node details.
post
POST /api/{teamSlug}/nodes/{nodeId}/update HTTP/1.1
Host: 
Accept: */*

No content

Fetch audit log.

get

Request must include teamSlug in URL, and its body must include skip, take, and dates of from and to. Response should include an array of items: createdAt date, event, and data.

Path parameters
teamSlugstringRequired
nodeIdstringRequired
Query parameters
skipnumberRequired
takenumberRequired
fromstring ยท date-timeRequired
tostring ยท date-timeRequired
Responses
200
Paginated list of the audit log.
application/json
400
Bad request for audit log.
403
Unauthorized request for audit log.
404
Audit log not found.
get
GET /api/{teamSlug}/nodes/{nodeId}/audit?skip=1&take=1&from=2025-05-30T04%3A57%3A59.351Z&to=2025-05-30T04%3A57%3A59.351Z HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "createdAt": "2025-05-30T04:57:59.351Z",
      "event": "text",
      "data": {}
    }
  ],
  "total": 1
}

Start a container deployed with dyrector.io on a node.

post

Request must include nodeId, prefix, and name.

Path parameters
nodeIdstringRequired
prefixstringRequired
namestringRequired
Responses
204
Container started.
400
Bad request for container starting.
403
Unauthorized request for container starting.
post
POST /api/{teamSlug}/nodes/{nodeId}/{prefix}/containers/{name}/start HTTP/1.1
Host: 
Accept: */*

No content

Stop a container deployed with dyrector.io on a node.

post

Request must include nodeId, prefix, and name.

Path parameters
nodeIdstringRequired
prefixstringRequired
namestringRequired
Responses
204
Container stopped.
400
Bad request for container stopping.
403
Unauthorized request for container stopping.
post
POST /api/{teamSlug}/nodes/{nodeId}/{prefix}/containers/{name}/stop HTTP/1.1
Host: 
Accept: */*

No content

Restart a container deployed with dyrector.io on a node.

post

Request must include nodeId, prefix, and name.

Path parameters
nodeIdstringRequired
prefixstringRequired
namestringRequired
Responses
204
Container restarted.
400
Bad request for container restarting.
403
Unauthorized request for container restarting.
post
POST /api/{teamSlug}/nodes/{nodeId}/{prefix}/containers/{name}/restart HTTP/1.1
Host: 
Accept: */*

No content

Delete containers deployed with dyrector.io, with the specified prefix on a node.

delete

Request must include nodeId, and prefix.

Path parameters
nodeIdstringRequired
prefixstringRequired
Responses
204
Containers deleted.
403
Unauthorized request for container delete.
404
Container not found.
delete
DELETE /api/{teamSlug}/nodes/{nodeId}/{prefix}/containers HTTP/1.1
Host: 
Accept: */*

No content

Delete a container deployed with dyrector.io, with the specified prefix and name on a node.

delete

Request must include nodeId, prefix, and name.

Path parameters
nodeIdstringRequired
prefixstringRequired
namestringRequired
Responses
204
Container deleted.
403
Unauthorized request for container delete.
404
Container not found.
delete
DELETE /api/{teamSlug}/nodes/{nodeId}/{prefix}/containers/{name} HTTP/1.1
Host: 
Accept: */*

No content

Fetch data of all containers on a node.

get

Request must include nodeId and prefix. Response should include id, command, createdAt, state, status, imageName, imageTag and ports of images.

Path parameters
nodeIdstringRequired
Query parameters
prefixstringRequired
Responses
200
Fetch data of containers running on a node.
application/json
403
Unauthorized request for containers.
get
GET /api/{teamSlug}/nodes/{nodeId}/containers?prefix=text HTTP/1.1
Host: 
Accept: */*
[
  {
    "state": "running",
    "id": {
      "prefix": "text",
      "name": "text"
    },
    "command": "text",
    "createdAt": "2025-05-30T04:57:59.351Z",
    "reason": "text",
    "imageName": "text",
    "imageTag": "text",
    "ports": [
      {
        "internal": 1,
        "external": 1
      }
    ]
  }
]

Start the specific container on a node.

post

Request must include nodeId, and the name of the container.

Path parameters
nodeIdstringRequired
namestringRequired
Responses
204
Container started.
400
Bad request for container starting.
403
Unauthorized request for container starting.
post
POST /api/{teamSlug}/nodes/{nodeId}/containers/{name}/start HTTP/1.1
Host: 
Accept: */*

No content

Stop the specific container on a node.

post

Request must include nodeId, and the name of the container.

Path parameters
nodeIdstringRequired
namestringRequired
Responses
204
Container stopped.
400
Bad request for container stopping.
403
Unauthorized request for container stopping.
post
POST /api/{teamSlug}/nodes/{nodeId}/containers/{name}/stop HTTP/1.1
Host: 
Accept: */*

No content

Restart the specific container on a node.

post

Request must include nodeId, and the name of the container.

Path parameters
nodeIdstringRequired
namestringRequired
Responses
204
Container restarted.
400
Bad request for container restarting.
403
Unauthorized request for container restarting.
post
POST /api/{teamSlug}/nodes/{nodeId}/containers/{name}/restart HTTP/1.1
Host: 
Accept: */*

No content

Delete the specific container from a node.

delete

Request must include nodeId, and the name of the container.

Path parameters
nodeIdstringRequired
namestringRequired
Responses
204
Container deleted.
403
Unauthorized request for container delete.
404
Container not found.
delete
DELETE /api/{teamSlug}/nodes/{nodeId}/containers/{name} HTTP/1.1
Host: 
Accept: */*

No content

Fetch audit log.

get

Request must include skip, take, and dates of from and to. Response should include an array of items: createdAt date, userId, email, serviceCall, and data.

Path parameters
teamSlugstringRequired
Query parameters
skipnumberRequired
takenumberRequired
filterstringOptional
fromstring ยท date-timeRequired
tostring ยท date-timeRequired
Responses
200
Paginated list of the audit log.
application/json
403
Unauthorized request for audit logs.
get
GET /api/{teamSlug}/audit-log?skip=1&take=1&from=2025-05-30T04%3A57%3A59.351Z&to=2025-05-30T04%3A57%3A59.351Z HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "actorType": "get",
      "context": "http",
      "method": "get",
      "createdAt": "2025-05-30T04:57:59.351Z",
      "user": {
        "id": "text",
        "email": "text"
      },
      "name": "text",
      "event": "text",
      "data": {}
    }
  ],
  "total": 1
}

Return service status of the platform.

get

Response should include status, version of the platform and lastMigration of database.

Responses
200
Service status.
application/json
get
GET /api/health HTTP/1.1
Host: 
Accept: */*
200

Service status.

{
  "status": {},
  "version": "text",
  "lastMigration": "text"
}

Retrieve notifications that belong to a team.

get

Response should include teamSlug in the URL, type, id, name, url, active, and creatorName in the body.

Path parameters
teamSlugstringRequired
Responses
200
Notifications listed.
application/json
403
Unauthorized request for notifications.
get
GET /api/{teamSlug}/notifications HTTP/1.1
Host: 
Accept: */*
[
  {
    "type": "discord",
    "id": "text",
    "name": "text",
    "url": "text",
    "active": true,
    "creatorName": "text"
  }
]

Fetch details of a notification.

get

Request must include teamSlug and notificationId parameters in URL. Response should include type, enabledEvents, id, name, url, active, and creatorName.

Path parameters
teamSlugstringRequired
notificationIdstringRequired
Responses
200
Details of notification listed.
application/json
400
Bad request for notification details.
403
Unauthorized request for notification details.
404
Notification not found.
get
GET /api/{teamSlug}/notifications/{notificationId} HTTP/1.1
Host: 
Accept: */*
{
  "type": "discord",
  "enabledEvents": [
    "deployment-created"
  ],
  "id": "text",
  "name": "text",
  "url": "text",
  "active": true,
  "creatorName": "text"
}

Delete a notification.

delete

Request must include teamSlug and notificationId in URL.

Path parameters
teamSlugstringRequired
notificationIdstringRequired
Responses
204
Notification deleted.
403
Unauthorized request for notification delete.
404
Notification not found.
delete
DELETE /api/{teamSlug}/notifications/{notificationId} HTTP/1.1
Host: 
Accept: */*

No content

Send a test message.

post

Request must include teamSlug and notificationId in URL.

Path parameters
teamSlugstringRequired
notificationIdstringRequired
Responses
204
Test message sent.
400
Bad request for a test message.
403
Unauthorized request for a test message.
post
POST /api/{teamSlug}/notifications/{notificationId}/test HTTP/1.1
Host: 
Accept: */*

No content

Return list of templates on the platform.

get

Response should include id, name, description and technologies of templates.

Responses
200
Templates listed.
application/json
403
Unauthorized request for templates.
get
GET /api/templates HTTP/1.1
Host: 
Accept: */*
[
  {
    "id": "text",
    "name": "text",
    "description": "text",
    "technologies": [
      "text"
    ]
  }
]

Retrieves the picture of the template

get

Request must include templateId.

Path parameters
templateIdstringRequired
Responses
200
Retrieve data of an image of a template.
400
Bad request for template images.
403
Unauthorized request for template images.
404
Template images not found.
get
GET /api/templates/{templateId}/image HTTP/1.1
Host: 
Accept: */*

No content

Fetch dashboard data of latest activities.

get

teamSlug is required in URL. Response should include users, number of auditLogEntries, projects, versions, deployments, failedDeployments, details of nodes, latestDeployments and auditLog entries.

Path parameters
teamSlugstringRequired
Responses
200
Dashboard data listed.
application/json
403
Unauthorized request for the dashboard.
get
GET /api/{teamSlug}/dashboard HTTP/1.1
Host: 
Accept: */*
{
  "users": 1,
  "auditLog": 1,
  "projects": 1,
  "versions": 1,
  "deployments": 1,
  "failedDeployments": 1,
  "onboarding": {
    "signUp": {
      "done": true,
      "resourceId": "text"
    },
    "createTeam": {
      "done": true,
      "resourceId": "text"
    },
    "createNode": {
      "done": true,
      "resourceId": "text"
    },
    "createProject": {
      "done": true,
      "resourceId": "text"
    },
    "createVersion": {
      "done": true,
      "resourceId": "text"
    },
    "addImages": {
      "done": true,
      "resourceId": "text"
    },
    "addDeployment": {
      "done": true,
      "resourceId": "text"
    },
    "deploy": {
      "done": true,
      "resourceId": "text"
    }
  }
}

Fetch the list of storages.

get

Response should include description, icon, url, id, and name. teamSlug is required in URL.

Path parameters
teamSlugstringRequired
Responses
200
List of storages.
application/json
403
Unauthorized request for storages.
get
GET /api/{teamSlug}/storages HTTP/1.1
Host: 
Accept: */*
[
  {
    "description": "text",
    "icon": "text",
    "url": "text",
    "id": "text",
    "name": "text"
  }
]

Fetch the name and ID of available storage options.

get

Response should include id, and name. teamSlug is required in URL.

Path parameters
teamSlugstringRequired
Responses
200
Name and ID of storage options listed.
application/json
400
Bad request for storage options.
403
Unauthorized request for storage options.
404
Storage options not found.
get
GET /api/{teamSlug}/storages/options HTTP/1.1
Host: 
Accept: */*
[
  {
    "id": "text",
    "name": "text"
  }
]

Return details of a storage.

get

Get the details of a storage. Request must include teamSlug and storageId in URL. Response should include description, icon, url, id, name, accessKey, secretKey, and inUse.

Path parameters
teamSlugstringRequired
storageIdstringRequired
Responses
200
Storage details.
application/json
400
Bad request for storage details.
403
Unauthorized request for storage details.
404
Storage not found.
get
GET /api/{teamSlug}/storages/{storageId} HTTP/1.1
Host: 
Accept: */*
{
  "description": "text",
  "icon": "text",
  "url": "text",
  "id": "text",
  "name": "text",
  "accessKey": "text",
  "secretKey": "text",
  "inUse": true
}

Delete a storage from dyrector.io.

delete

Deletes a storage. Request must include teamSlug and storageId in URL.

Path parameters
teamSlugstringRequired
storageIdstringRequired
Responses
204
Storage deleted.
403
Unauthorized request for storage delete.
404
Storage not found.
delete
DELETE /api/{teamSlug}/storages/{storageId} HTTP/1.1
Host: 
Accept: */*

No content

  • Registries
  • GETFetch data of registries.
  • POSTCreate a new registry.
  • GETFetch data of a registry.
  • PUTModify the details of a registry.
  • DELETEDelete a registry from dyrector.io.
  • Projects
  • GETFetch the projects list.
  • POSTCreate a new project for a team.
  • GETFetch details of a project.
  • PUTUpdate a project.
  • DELETEDelete a project.
  • POSTConvert a project to versioned.
  • Versions
  • GETFetch the list of all the versions under a project.
  • POSTCreate a new version.
  • GETRetrieve the details of a version of a project.
  • PUTModify version.
  • DELETEDelete a version.
  • PUTTurn version into a default one of the versioned project other versions under it will inherit images and deployments from.
  • POSTIncrease a the version of a versioned project with a new version.
  • Version/Images
  • GETFetch data of all images of a version.
  • POSTAdd images to a version.
  • GETFetch data of an image of a version.
  • DELETEDelete an image from a version.
  • PATCHConfigure an image of a version.
  • PUTEdit image deployment order of a version.
  • Teams
  • GETFetch data of teams the user is a member of.
  • POSTCreate new team.
  • GETFetch data of a team the user is a member of.
  • PUTModify a team's name.
  • DELETEDeletes a team.
  • POSTInvite a new user to the team.
  • PUTEdit user role.
  • DELETERemove the current user from the team.
  • DELETERemove a user from the team.
  • POSTReinvite user with a pending invite status to a team.
  • Users/Me
  • POSTFetch the current user.
  • POSTAccept invitation to a team.
  • DELETEDecline invitation to a team.
  • PUTSets the onboarding tips to visible for the user.
  • DELETESets the onboarding tips to hidden for the user.
  • Deployments
  • GETFetch the list of deployments.
  • POSTCreate new deployment.
  • GETRetrieve details of a deployment.
  • DELETEDelete deployment.
  • PATCHUpdate deployment.
  • GETGet details of a soon-to-be container.
  • PATCHUpdate instance configuration.
  • GETFetch secrets of a soon-to-be container.
  • POSTStart the deployment process.
  • POSTCopy deployment.
  • GETFetch event log of a deployment.
  • PUTCreate deployment token.
  • DELETEDelete deployment token.
  • Tokens
  • GETList of tokens.
  • POSTCreate access token.
  • GETFetch token details.
  • DELETEDelete an access token.
  • Nodes
  • GETGet data of nodes that belong to your team.
  • POSTCreate new node.
  • GETGet data of nodes that belong to your team.
  • PUTUpdate details of a node.
  • DELETEDelete node.
  • GETFetch install script.
  • POSTCreate agent install script.
  • DELETEDelete node set up install script.
  • DELETERevoke the node's access token.
  • POSTUpdate the agent.
  • GETFetch audit log.
  • POSTStart a container deployed with dyrector.io on a node.
  • POSTStop a container deployed with dyrector.io on a node.
  • POSTRestart a container deployed with dyrector.io on a node.
  • DELETEDelete containers deployed with dyrector.io, with the specified prefix on a node.
  • DELETEDelete a container deployed with dyrector.io, with the specified prefix and name on a node.
  • GETFetch data of all containers on a node.
  • POSTStart the specific container on a node.
  • POSTStop the specific container on a node.
  • POSTRestart the specific container on a node.
  • DELETEDelete the specific container from a node.
  • Audit log
  • GETFetch audit log.
  • Health
  • GETReturn service status of the platform.
  • Notifications
  • GETRetrieve notifications that belong to a team.
  • POSTCreate a new notification.
  • GETFetch details of a notification.
  • PUTModify a notification.
  • DELETEDelete a notification.
  • POSTSend a test message.
  • Templates
  • GETReturn list of templates on the platform.
  • POSTCreates a new project from the selected template.
  • GETRetrieves the picture of the template
  • Dashboard
  • GETFetch dashboard data of latest activities.
  • Storages
  • GETFetch the list of storages.
  • POSTCreate a new storage.
  • GETFetch the name and ID of available storage options.
  • GETReturn details of a storage.
  • PUTModify a storage.
  • DELETEDelete a storage from dyrector.io.

Create a new registry.

post

To add a new registry, include teamSlug in URL, body must include name, type, description, details, and icon. Type, details, and name are required. Response is an array including the name, id, type, description, imageNamePrefix, inUse, icon, and audit log info of the registry.

Path parameters
teamSlugstringRequired
Body
typestring ยท enumRequiredPossible values:
detailsone ofRequired
or
or
or
or
or
namestringRequired
descriptionstring | nullableOptional
iconstring | nullableOptional
Responses
201
New registry created.
application/json
400
Bad request for registry creation.
403
Unauthorized request for registry creation.
409
Registry name taken.
post
POST /api/{teamSlug}/registries HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 102

{
  "type": "group",
  "details": {
    "imageNamePrefix": "text"
  },
  "name": "text",
  "description": "text",
  "icon": "text"
}
{
  "type": "group",
  "details": {
    "imageNamePrefix": "text"
  },
  "id": "text",
  "name": "text",
  "description": "text",
  "icon": "text",
  "inUse": true,
  "createdAt": "2025-05-30T04:57:59.351Z",
  "updatedAt": "2025-05-30T04:57:59.351Z"
}

Modify the details of a registry.

put

Modify the name, type, description, details, and icon. RegistryId refers to the registry's ID. teamSlug and RegistryID is required in URL, body must include type, details, and name.

Path parameters
teamSlugstringRequired
registryIdstringRequired
Body
typestring ยท enumRequiredPossible values:
detailsone ofRequired
or
or
or
or
or
namestringRequired
descriptionstring | nullableOptional
iconstring | nullableOptional
Responses
204
Registry modified.
400
Bad request for registry modification.
403
Unauthorized request for registry modification.
404
Registry not found.
409
Registry name taken.
put
PUT /api/{teamSlug}/registries/{registryId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 102

{
  "type": "group",
  "details": {
    "imageNamePrefix": "text"
  },
  "name": "text",
  "description": "text",
  "icon": "text"
}

No content

Create a new project for a team.

post

Create a new project for a team. teamSlug needs to be included in URL. Newly created team has a type and a name as required variables, and optionally a description and a changelog.

Path parameters
teamSlugstringRequired
Body
typestring ยท enumRequiredPossible values:
namestringRequired
descriptionstring | nullableOptional
changelogstring | nullableOptional
Responses
201
New project created.
application/json
400
Bad request for project creation.
403
Unauthorized request for project creation.
409
Project name taken.
post
POST /api/{teamSlug}/projects HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 76

{
  "type": "versionless",
  "name": "text",
  "description": "text",
  "changelog": "text"
}
{
  "type": "versionless",
  "description": "text",
  "versionCount": 1,
  "audit": {
    "createdAt": "2025-05-30T04:57:59.351Z",
    "createdBy": "text",
    "updatedAt": "2025-05-30T04:57:59.351Z",
    "updatedBy": "text"
  },
  "id": "text",
  "name": "text"
}

Update a project.

put

Updates a project. teamSlug is required in URL, as well as projectId to identify which project is modified, name, description and changelog can be adjusted with this call.

Path parameters
teamSlugstringRequired
projectIdstringRequired
Body
namestringRequired
descriptionstring | nullableOptional
changelogstring | nullableOptional
Responses
204
Project details are modified.
400
Bad request for project details modification.
403
Unauthorized request for project details modification.
404
Project not found.
409
Project name taken.
put
PUT /api/{teamSlug}/projects/{projectId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 55

{
  "name": "text",
  "description": "text",
  "changelog": "text"
}

No content

Create a new version.

post

Creates a new version in a project. projectId refers to the project's ID. teamSlug and ProjectId must be included in URL, request's body need to include name and type of the version, changelog is optionable. Response should include the name, id, changelog, increasibility, type, and audit log details of the version.

Path parameters
teamSlugstringRequired
projectIdstringRequired
Body
typestring ยท enumRequiredPossible values:
namestringRequired
changelogstringOptional
Responses
201
New version created.
application/json
400
Bad request for version creation.
403
Unauthorized request for version creation.
409
Version name taken.
post
POST /api/{teamSlug}/projects/{projectId}/versions HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 55

{
  "type": "incremental",
  "name": "text",
  "changelog": "text"
}
{
  "type": "incremental",
  "audit": {
    "createdAt": "2025-05-30T04:57:59.351Z",
    "createdBy": "text",
    "updatedAt": "2025-05-30T04:57:59.351Z",
    "updatedBy": "text"
  },
  "changelog": "text",
  "default": true,
  "increasable": true,
  "id": "text",
  "name": "text"
}

Modify version.

put

Updates a version's name and changelog. teamSlug, ProjectId and VersionId must be included in URL. projectId refers to the project's ID, versionId refers to the version's ID.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Body
namestringRequired
changelogstringOptional
Responses
204
Changelog of a version is updated.
400
Bad request for version modification.
403
Unauthorized request for version modification.
404
Version not found.
409
Version name taken.
put
PUT /api/{teamSlug}/projects/{projectId}/versions/{versionId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 34

{
  "name": "text",
  "changelog": "text"
}

No content

Increase a the version of a versioned project with a new version.

post

Increases the version of a project with a new child version. teamSlug, ProjectId and VersionId must be included in URL. projectId refers to the project's ID, versionId refers to the version's ID. name refers to the name of the new version, and is required in the body.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Body
namestringRequired
changelogstringOptional
Responses
201
New version created.
application/json
400
Bad request for increasing version.
403
Unauthorized request for increasing version.
post
POST /api/{teamSlug}/projects/{projectId}/versions/{versionId}/increase HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 34

{
  "name": "text",
  "changelog": "text"
}
{
  "type": "incremental",
  "audit": {
    "createdAt": "2025-05-30T04:57:59.351Z",
    "createdBy": "text",
    "updatedAt": "2025-05-30T04:57:59.351Z",
    "updatedBy": "text"
  },
  "changelog": "text",
  "default": true,
  "increasable": true,
  "id": "text",
  "name": "text"
}

Add images to a version.

post

Add new images to a version. projectId refers to the project's ID, versionId refers to the version's ID. These, and teamSlug are required in the URL. registryId refers to the registry's ID, images refers to the name(s) of the images you'd like to add. These are required variables in the body.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Body
registryIdstringRequired
imagesstring[]Required
Responses
201
New image added.
application/json
400
Bad request for images.
403
Unauthorized request for images.
post
POST /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 41

[
  {
    "registryId": "text",
    "images": [
      "text"
    ]
  }
]
[
  {
    "id": "text",
    "name": "text",
    "tag": "text",
    "order": 1,
    "config": {
      "expose": "none",
      "restartPolicy": "always",
      "networkMode": "none",
      "deploymentStrategy": "recreate",
      "name": "text",
      "environment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "secrets": [
        {
          "required": true,
          "id": "text",
          "key": "text"
        }
      ],
      "routing": {
        "domain": "text",
        "path": "text",
        "stripPath": true,
        "uploadLimit": "text"
      },
      "user": 1,
      "tty": true,
      "configContainer": {
        "image": "text",
        "volume": "text",
        "path": "text",
        "keepFiles": true
      },
      "ports": [
        {
          "id": "text",
          "internal": 1,
          "external": 1
        }
      ],
      "portRanges": [
        {
          "id": "text",
          "internal": {
            "from": 1,
            "to": 1
          },
          "external": {
            "from": 1,
            "to": 1
          }
        }
      ],
      "volumes": [
        {
          "type": "ro",
          "id": "text",
          "name": "text",
          "path": "text",
          "size": "text",
          "class": "text"
        }
      ],
      "commands": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "args": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "initContainers": [
        {
          "id": "text",
          "name": "text",
          "image": "text",
          "command": [
            {
              "id": "text",
              "key": "text"
            }
          ],
          "args": [
            {
              "id": "text",
              "key": "text"
            }
          ],
          "environment": [
            {
              "value": "text",
              "id": "text",
              "key": "text"
            }
          ],
          "useParentConfig": true,
          "volumes": [
            {
              "id": "text",
              "name": "text",
              "path": "text"
            }
          ]
        }
      ],
      "capabilities": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "storage": {
        "storageId": "text",
        "path": "text",
        "bucket": "text"
      },
      "logConfig": {
        "driver": "nodeDefault",
        "options": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ]
      },
      "networks": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "dockerLabels": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "customHeaders": [
        {
          "id": "text",
          "key": "text"
        }
      ],
      "proxyHeaders": true,
      "useLoadBalancer": true,
      "extraLBAnnotations": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "healthCheckConfig": {
        "port": 1,
        "livenessProbe": "text",
        "readinessProbe": "text",
        "startupProbe": "text"
      },
      "resourceConfig": {
        "limits": {
          "cpu": "text",
          "memory": "text"
        },
        "requests": {
          "cpu": "text",
          "memory": "text"
        }
      },
      "annotations": {
        "service": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "deployment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "ingress": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ]
      },
      "labels": {
        "service": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "deployment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "ingress": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ]
      }
    },
    "createdAt": "2025-05-30T04:57:59.351Z",
    "registry": {
      "type": "v2",
      "id": "text",
      "name": "text"
    }
  }
]

Configure an image of a version.

patch

Modify the configuration variables of an image. projectId refers to the project's ID, versionId refers to the version's ID, imageId refers to the image's ID. All, and teamSlug are required in the URL. Tag refers to the version of the image, config is an object of configuration variables.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
imageIdstringRequired
Body
tagstring | nullableOptional
configall of | nullableOptional
Responses
204
Image's configure variables updated.
400
Bad request for an image.
403
Unauthorized request for an image.
404
Image not found.
patch
PATCH /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images/{imageId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 2029

{
  "tag": "text",
  "config": {
    "expose": "none",
    "restartPolicy": "always",
    "networkMode": "none",
    "deploymentStrategy": "recreate",
    "name": "text",
    "environment": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "secrets": [
      {
        "required": true,
        "id": "text",
        "key": "text"
      }
    ],
    "routing": {
      "domain": "text",
      "path": "text",
      "stripPath": true,
      "uploadLimit": "text"
    },
    "user": 1,
    "tty": true,
    "configContainer": {
      "image": "text",
      "volume": "text",
      "path": "text",
      "keepFiles": true
    },
    "ports": [
      {
        "id": "text",
        "internal": 1,
        "external": 1
      }
    ],
    "portRanges": [
      {
        "id": "text",
        "internal": {
          "from": 1,
          "to": 1
        },
        "external": {
          "from": 1,
          "to": 1
        }
      }
    ],
    "volumes": [
      {
        "type": "ro",
        "id": "text",
        "name": "text",
        "path": "text",
        "size": "text",
        "class": "text"
      }
    ],
    "commands": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "args": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "initContainers": [
      {
        "id": "text",
        "name": "text",
        "image": "text",
        "command": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "args": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "environment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "useParentConfig": true,
        "volumes": [
          {
            "id": "text",
            "name": "text",
            "path": "text"
          }
        ]
      }
    ],
    "capabilities": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "storage": {
      "storageId": "text",
      "path": "text",
      "bucket": "text"
    },
    "logConfig": {
      "driver": "nodeDefault",
      "options": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    },
    "networks": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "dockerLabels": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "customHeaders": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "proxyHeaders": true,
    "useLoadBalancer": true,
    "extraLBAnnotations": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "healthCheckConfig": {
      "port": 1,
      "livenessProbe": "text",
      "readinessProbe": "text",
      "startupProbe": "text"
    },
    "resourceConfig": {
      "limits": {
        "cpu": "text",
        "memory": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "annotations": {
      "service": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "deployment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "ingress": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    },
    "labels": {
      "service": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "deployment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "ingress": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    }
  }
}

No content

Edit image deployment order of a version.

put

Edit image deployment order of a version. projectId refers to the project's ID, versionId refers to the version's ID. Both, and teamSlug are required in the URL. Request body should include the IDs of the images in an array.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Body
string[]Optional
Responses
204
Image order modified.
400
Bad request for ordering.
403
Unauthorized request for ordering.
put
PUT /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images/order HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 8

[
  "text"
]

No content

Create new team.

post

Request must include name, which is going to be the name of the newly made team. Response should include name, id, and statistics, including number of users, projects, nodes, versions, and deployments.

Body
slugstringRequired
namestringRequired
Responses
201
New team created.
application/json
400
Bad request for team creation.
403
Unauthorized request for team creation.
409
Team name taken.
post
POST /api/teams HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 29

{
  "slug": "text",
  "name": "text"
}
{
  "statistics": {
    "users": 1,
    "projects": 1,
    "nodes": 1,
    "versions": 1,
    "deployments": 1
  },
  "id": "text",
  "name": "text",
  "slug": "text"
}

Modify a team's name.

put

Request must include teamId and name. Admin access required for a successful request.

Path parameters
teamIdstringRequired
Body
slugstringRequired
namestringRequired
Responses
204
Team name modified.
400
Bad request for team modification.
403
Unauthorized request for team modification.
404
Team not found.
409
Team name taken.
put
PUT /api/teams/{teamId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 29

{
  "slug": "text",
  "name": "text"
}

No content

Invite a new user to the team.

post

Request must include teamId, email and firstName. Admin access required for a successful request.Response should include new user's name, id, role, status, email, and lastLogin. Admin access required for a successful request.

Path parameters
teamIdstringRequired
Body
emailstringRequired
firstNamestringRequired
lastNamestringOptional
captchastringOptional
Responses
201
User invited.
application/json
400
Bad request for user invitation.
403
Unauthorized request for user invitation.
409
User is already invited to or already in the team.
post
POST /api/teams/{teamId}/users HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 70

{
  "email": "text",
  "firstName": "text",
  "lastName": "text",
  "captcha": "text"
}
{
  "role": "owner",
  "status": "pending",
  "email": "text",
  "lastLogin": "2025-05-30T04:57:59.351Z",
  "id": "text",
  "name": "text"
}

Edit user role.

put

Promotes or demotes the user. Request must include teamId, userId and role. Admin access required for a successful request.

Path parameters
teamIdstringRequired
userIdstringRequired
Body
rolestring ยท enumRequiredPossible values:
Responses
204
User's role modified.
400
Bad request for user role modification.
403
Unauthorized request for user role modification.
404
User not found.
put
PUT /api/teams/{teamId}/users/{userId}/role HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 16

{
  "role": "owner"
}

No content

Create new deployment.

post

Request must include teamSlug in URL, versionId, nodeId, and prefix, which refers to the ID of a version, a node and the prefix of the deployment, must be included in body. Response should include deployment id, prefix, status, note, and audit log details, as well as project type, id, name, version type, id, name, and node type, id, name.

Path parameters
teamSlugstringRequired
Body
versionIdstringRequired
nodeIdstringRequired
prefixstringRequired
notestring | nullableOptional
Responses
201
New deployment created.
application/json
400
Bad request for a deployment.
403
Unauthorized request for a deployment.
409
Prefix taken for the node.
post
POST /api/{teamSlug}/deployments HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 66

{
  "versionId": "text",
  "nodeId": "text",
  "prefix": "text",
  "note": "text"
}
{
  "status": "preparing",
  "note": "text",
  "audit": {
    "createdAt": "2025-05-30T04:57:59.351Z",
    "createdBy": "text",
    "updatedAt": "2025-05-30T04:57:59.351Z",
    "updatedBy": "text"
  },
  "project": {
    "type": "versionless",
    "id": "text",
    "name": "text"
  },
  "version": {
    "type": "incremental",
    "id": "text",
    "name": "text"
  },
  "node": {
    "type": "docker",
    "id": "text",
    "name": "text"
  },
  "id": "text",
  "prefix": "text"
}

Update deployment.

patch

Request must include deploymentId and teamSlug in URL.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
Body
notestring | nullableOptional
prefixstring | nullableOptional
Responses
204
Deployment modified.
400
Bad request for a deployment.
403
Unauthorized request for a deployment.
404
Deployment not found.
patch
PATCH /api/{teamSlug}/deployments/{deploymentId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 89

{
  "note": "text",
  "prefix": "text",
  "environment": [
    {
      "value": "text",
      "id": "text",
      "key": "text"
    }
  ]
}

No content

Update instance configuration.

patch

Request must include teamSlug, deploymentId, instanceId in URL, and portion of the instance configuration as config in the body. Response should include config variables in an array.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
instanceIdstringRequired
Body
Responses
204
Instance configuration updated.
400
Bad request for an instance.
403
Unauthorized request for an instance.
404
Instance not found.
patch
PATCH /api/{teamSlug}/deployments/{deploymentId}/instances/{instanceId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 2067

{
  "config": {
    "expose": "none",
    "restartPolicy": "always",
    "networkMode": "none",
    "deploymentStrategy": "recreate",
    "secrets": [
      {
        "required": true,
        "id": "text",
        "key": "text",
        "value": "text",
        "encrypted": true,
        "publicKey": "text"
      }
    ],
    "name": "text",
    "environment": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "routing": {
      "domain": "text",
      "path": "text",
      "stripPath": true,
      "uploadLimit": "text"
    },
    "user": 1,
    "tty": true,
    "configContainer": {
      "image": "text",
      "volume": "text",
      "path": "text",
      "keepFiles": true
    },
    "ports": [
      {
        "id": "text",
        "internal": 1,
        "external": 1
      }
    ],
    "portRanges": [
      {
        "id": "text",
        "internal": {
          "from": 1,
          "to": 1
        },
        "external": {
          "from": 1,
          "to": 1
        }
      }
    ],
    "volumes": [
      {
        "type": "ro",
        "id": "text",
        "name": "text",
        "path": "text",
        "size": "text",
        "class": "text"
      }
    ],
    "commands": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "args": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "initContainers": [
      {
        "id": "text",
        "name": "text",
        "image": "text",
        "command": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "args": [
          {
            "id": "text",
            "key": "text"
          }
        ],
        "environment": [
          {
            "value": "text",
            "id": "text",
            "key": "text"
          }
        ],
        "useParentConfig": true,
        "volumes": [
          {
            "id": "text",
            "name": "text",
            "path": "text"
          }
        ]
      }
    ],
    "capabilities": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "storage": {
      "storageId": "text",
      "path": "text",
      "bucket": "text"
    },
    "logConfig": {
      "driver": "nodeDefault",
      "options": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    },
    "networks": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "dockerLabels": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "customHeaders": [
      {
        "id": "text",
        "key": "text"
      }
    ],
    "proxyHeaders": true,
    "useLoadBalancer": true,
    "extraLBAnnotations": [
      {
        "value": "text",
        "id": "text",
        "key": "text"
      }
    ],
    "healthCheckConfig": {
      "port": 1,
      "livenessProbe": "text",
      "readinessProbe": "text",
      "startupProbe": "text"
    },
    "resourceConfig": {
      "limits": {
        "cpu": "text",
        "memory": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "annotations": {
      "service": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "deployment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "ingress": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    },
    "labels": {
      "service": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "deployment": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ],
      "ingress": [
        {
          "value": "text",
          "id": "text",
          "key": "text"
        }
      ]
    }
  }
}

No content

Start the deployment process.

post

Request must include teamSlug and deploymentId in the URL.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
Body
instancesstring[]Optional
Responses
204
Deployment initiated.
400
Bad request for a deployment.
403
Unauthorized request for a deployment.
post
POST /api/{teamSlug}/deployments/{deploymentId}/start HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 22

{
  "instances": [
    "text"
  ]
}

No content

Copy deployment.

post

Request must include teamSlug and deploymentId in the URL, which will be copied. The body must include the nodeId, prefix and optionally a note. Response should include deployment data: id, prefix, status, note, and miscellaneous details of audit log, project, version, and node.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
Body
nodeIdstringRequired
prefixstringRequired
notestring | nullableOptional
Responses
201
Deployment copied.
application/json
400
Bad request for a deployment.
403
Unauthorized request for a deployment.
409
Prefix taken for the node.
post
POST /api/{teamSlug}/deployments/{deploymentId}/copy HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 47

{
  "nodeId": "text",
  "prefix": "text",
  "note": "text"
}
{
  "status": "preparing",
  "note": "text",
  "audit": {
    "createdAt": "2025-05-30T04:57:59.351Z",
    "createdBy": "text",
    "updatedAt": "2025-05-30T04:57:59.351Z",
    "updatedBy": "text"
  },
  "project": {
    "type": "versionless",
    "id": "text",
    "name": "text"
  },
  "version": {
    "type": "incremental",
    "id": "text",
    "name": "text"
  },
  "node": {
    "type": "docker",
    "id": "text",
    "name": "text"
  },
  "id": "text",
  "prefix": "text"
}

Create deployment token.

put

Request must include teamSlug and deploymentId in the URL. In the body a name and optionally the expiration date as expirationInDays.

Path parameters
teamSlugstringRequired
deploymentIdstringRequired
Body
namestringRequired
expirationInDaysnumberOptional
Responses
200
Deployment token with jwt and the curl command.
application/json
201Success
application/json
400
Bad request for a deployment token.
403
Unauthorized request for a deployment token.
409
Token name taken.
put
PUT /api/{teamSlug}/deployments/{deploymentId}/token HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 36

{
  "name": "text",
  "expirationInDays": 1
}
{
  "id": "text",
  "name": "text",
  "createdAt": "2025-05-30T04:57:59.351Z",
  "expiresAt": "2025-05-30T04:57:59.351Z",
  "token": "text",
  "curl": "text"
}

Create access token.

post

Request must include name and expirationInDays.

Body
namestringRequired
expirationInDaysnumberRequired
Responses
201Success
application/json
400
Bad request for token creation.
403
Unauthorized request for token creation.
409
Token name taken.
post
POST /api/tokens HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 36

{
  "name": "text",
  "expirationInDays": 1
}
{
  "id": "text",
  "name": "text",
  "expiresAt": "2025-05-30T04:57:59.351Z",
  "createdAt": "2025-05-30T04:57:59.351Z",
  "token": "text"
}

Create new node.

post

Request must include the teamSlug in URL, and node's name in body. Response should include an array with the node's type, status, description, icon, address, connectedAt date, version, updating, id, and name.

Path parameters
teamSlugstringRequired
Body
namestringRequired
descriptionstringOptional
iconstringOptional
Responses
201
New node created.
application/json
400
Bad request for node creation.
403
Unauthorized request for node creation.
409
Node name taken.
post
POST /api/{teamSlug}/nodes HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 50

{
  "name": "text",
  "description": "text",
  "icon": "text"
}
{
  "type": "docker",
  "status": "unreachable",
  "description": "text",
  "icon": "text",
  "address": "text",
  "connectedAt": "2025-05-30T04:57:59.351Z",
  "version": "text",
  "updating": true,
  "id": "text",
  "name": "text"
}

Update details of a node.

put

Request must include the teamSlug in URL, and node's name in body, body can include description and icon.

Path parameters
teamSlugstringRequired
nodeIdstringRequired
Body
namestringRequired
descriptionstringOptional
iconstringOptional
Responses
204
Node details modified.
400
Bad request for node details.
403
Unauthorized request for node details.
404
Node not found.
409
Node name taken.
put
PUT /api/{teamSlug}/nodes/{nodeId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 50

{
  "name": "text",
  "description": "text",
  "icon": "text"
}

No content

Create agent install script.

post

Request must include teamSlug in URL and nodeId, type, and scriptType.

Path parameters
teamSlugstringRequired
nodeIdstringRequired
Body
typestring ยท enumRequiredPossible values:
scriptTypestring ยท enumRequiredPossible values:
rootPathstringOptional
Responses
200
Install script generated.
application/json
201Success
application/json
400
Bad request for an install script.
403
Unauthorized request for an install script.
post
POST /api/{teamSlug}/nodes/{nodeId}/script HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 93

{
  "type": "docker",
  "scriptType": "shell",
  "rootPath": "text",
  "dagentTraefik": {
    "acmeEmail": "text"
  }
}
{
  "command": "text",
  "script": "text",
  "expireAt": "2025-05-30T04:57:59.351Z"
}

Create a new notification.

post

Request must include teamSlug in the URL, type, enabledEvents, id, name, url, and active in the body. Response should list type, enabledEvents, id, name, url, active, and creatorName.

Path parameters
teamSlugstringRequired
Body
typestring ยท enumRequiredPossible values:
namestringRequired
urlstringRequired
activebooleanRequired
Responses
201
New notification created.
application/json
400
Bad request for a notification.
403
Unauthorized request for a notification.
409
Notification name taken.
post
POST /api/{teamSlug}/notifications HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 98

{
  "type": "discord",
  "enabledEvents": [
    "deployment-created"
  ],
  "name": "text",
  "url": "text",
  "active": true
}
{
  "type": "discord",
  "enabledEvents": [
    "deployment-created"
  ],
  "id": "text",
  "name": "text",
  "url": "text",
  "active": true,
  "creatorName": "text"
}

Modify a notification.

put

Request must include teamSlug in the URL, type, enabledEvents, id, name, url, and active in the body. Response should include type, enabledEvents, id, name, url, active, and creatorName.

Path parameters
teamSlugstringRequired
notificationIdstringRequired
Body
typestring ยท enumRequiredPossible values:
namestringRequired
urlstringRequired
activebooleanRequired
Responses
200
Notification modified.
application/json
204Success
application/json
400
Bad request for a notification.
403
Unauthorized request for a notification.
404
Notification not found.
409
Notification name taken.
put
PUT /api/{teamSlug}/notifications/{notificationId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 98

{
  "type": "discord",
  "enabledEvents": [
    "deployment-created"
  ],
  "name": "text",
  "url": "text",
  "active": true
}
{
  "type": "discord",
  "enabledEvents": [
    "deployment-created"
  ],
  "id": "text",
  "name": "text",
  "url": "text",
  "active": true,
  "creatorName": "text"
}

Creates a new project from the selected template.

post

Request must include type, id, and name. Response should include id, name, description, type, and audit log details of templates.

Body
typestring ยท enumRequiredPossible values:
idstringRequired
teamSlugstringRequired
namestringRequired
descriptionstringOptional
Responses
201
New project created.
application/json
400
Bad request for project creation.
403
Unauthorized request for project creation.
409
Project name taken.
post
POST /api/templates HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 87

{
  "type": "versionless",
  "id": "text",
  "teamSlug": "text",
  "name": "text",
  "description": "text"
}
{
  "type": "versionless",
  "description": "text",
  "audit": {
    "createdAt": "2025-05-30T04:57:59.351Z",
    "createdBy": "text",
    "updatedAt": "2025-05-30T04:57:59.351Z",
    "updatedBy": "text"
  },
  "id": "text",
  "name": "text"
}

Create a new storage.

post

Creates a new storage. Request must include teamSlug in URL, body is required to include name, and url. Request body may include description, icon, accesKey, and secretKey. Response should include description, icon, url, id, name, accessKey, secretKey, and inUse.

Path parameters
teamSlugstringRequired
Body
namestringRequired
descriptionstringOptional
iconstringOptional
urlstringRequired
accessKeystringOptional
secretKeystringOptional
Responses
201
New storage created.
application/json
400
Bad request for storage creation.
403
Unauthorized request for storage creation.
409
Storage name taken.
post
POST /api/{teamSlug}/storages HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 101

{
  "name": "text",
  "description": "text",
  "icon": "text",
  "url": "text",
  "accessKey": "text",
  "secretKey": "text"
}
{
  "description": "text",
  "icon": "text",
  "url": "text",
  "id": "text",
  "name": "text",
  "accessKey": "text",
  "secretKey": "text",
  "inUse": true
}

Modify a storage.

put

Updates a storage. Request must include teamSlugand storageId in URL. name, and url must be included in body. Request body may include description, icon, accesKey, and secretKey.

Path parameters
teamSlugstringRequired
storageIdstringRequired
Body
namestringRequired
descriptionstringOptional
iconstringOptional
urlstringRequired
accessKeystringOptional
secretKeystringOptional
Responses
204
Storage updated.
400
Bad request for storage update.
403
Unauthorized request for storage update.
404
Storage not found.
409
Storage name taken.
put
PUT /api/{teamSlug}/storages/{storageId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 101

{
  "name": "text",
  "description": "text",
  "icon": "text",
  "url": "text",
  "accessKey": "text",
  "secretKey": "text"
}

No content