Link Template or Stack
curl --request POST \
--url https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id} \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Apps & Databases
Link Template or Stack
Moves a private template, or a stack, from your account to a workspace. Owner only. Also available as /stacks/.
POST
/
v1
/
workspaces
/
{id}
/
templates
/
{template_id}
Link Template or Stack
curl --request POST \
--url https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id} \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Moves one of your private templates to the workspace. The same rules apply to a stack on
POST https://api.vertracloud.app/v1/workspaces/{id}/stacks/{stack_id}; a stack moves only when all its members are already in the workspace. Same rules as Link Application: owner only, workspaces:write scope for an API key, and the resource must be owned by the caller.
Path
string
required
Workspace ID.
string
required
Template ID. For a stack, use
/stacks/{stack_id} with the stack ID instead.Response
Empty response on success.Errors
| Status | Code | When |
|---|---|---|
| 403 | WORKSPACE_OWNER_ONLY | Caller isn’t the workspace owner. |
| 403 | PLAN_RESTRICTED_FEATURE | Owner’s plan is frozen. |
| 404 | WORKSPACE_NOT_FOUND | Workspace doesn’t exist or you’re not a member. |
| 404 | TEMPLATE_NOT_FOUND | The template doesn’t exist or isn’t owned by the caller. |
| 404 | STACK_NOT_FOUND | The stack doesn’t exist or isn’t owned by the caller. |
| 409 | STACK_MEMBER_CONFLICT | A member of the stack is not in the workspace. |
Last modified on October 28, 2026