Create a project
Create a reusable project environment.
import Tembo from '@tembo-io/sdk';
const client = new Tembo();
const project = await client.projects.create({
name: 'x',
sizes: ['nano'],
});use tembo_rs::*;
let client = Tembo::from_env()?;
let response = client
.projects()
.create(ProjectsCreateBody {
description: None,
include_deps: None,
include_skills: None,
name: "x".to_string(),
setup_script: None,
code_repository_ids: None,
agent_instructions: None,
color: None,
icon: None,
onboarding_default: None,
run_now: None,
schedule: None,
sizes: vec![ProjectsCreateBodySiz::Nano],
})
.send()
.await?;
curl --request POST \
--url https://api.tembo.io/v1/projects \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"sizes": [],
"description": "<string>",
"includeDeps": true,
"includeSkills": true,
"setupScript": "<string>",
"codeRepositoryIds": [
"<string>"
],
"agentInstructions": "<string>",
"onboardingDefault": true,
"runNow": true
}
'import requests
url = "https://api.tembo.io/v1/projects"
payload = {
"name": "<string>",
"sizes": [],
"description": "<string>",
"includeDeps": True,
"includeSkills": True,
"setupScript": "<string>",
"codeRepositoryIds": ["<string>"],
"agentInstructions": "<string>",
"onboardingDefault": True,
"runNow": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
sizes: [],
description: '<string>',
includeDeps: true,
includeSkills: true,
setupScript: '<string>',
codeRepositoryIds: ['<string>'],
agentInstructions: '<string>',
onboardingDefault: true,
runNow: true
})
};
fetch('https://api.tembo.io/v1/projects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tembo.io/v1/projects",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'sizes' => [
],
'description' => '<string>',
'includeDeps' => true,
'includeSkills' => true,
'setupScript' => '<string>',
'codeRepositoryIds' => [
'<string>'
],
'agentInstructions' => '<string>',
'onboardingDefault' => true,
'runNow' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.tembo.io/v1/projects"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"sizes\": [],\n \"description\": \"<string>\",\n \"includeDeps\": true,\n \"includeSkills\": true,\n \"setupScript\": \"<string>\",\n \"codeRepositoryIds\": [\n \"<string>\"\n ],\n \"agentInstructions\": \"<string>\",\n \"onboardingDefault\": true,\n \"runNow\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.tembo.io/v1/projects")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"sizes\": [],\n \"description\": \"<string>\",\n \"includeDeps\": true,\n \"includeSkills\": true,\n \"setupScript\": \"<string>\",\n \"codeRepositoryIds\": [\n \"<string>\"\n ],\n \"agentInstructions\": \"<string>\",\n \"onboardingDefault\": true,\n \"runNow\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tembo.io/v1/projects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"sizes\": [],\n \"description\": \"<string>\",\n \"includeDeps\": true,\n \"includeSkills\": true,\n \"setupScript\": \"<string>\",\n \"codeRepositoryIds\": [\n \"<string>\"\n ],\n \"agentInstructions\": \"<string>\",\n \"onboardingDefault\": true,\n \"runNow\": true\n}"
response = http.request(request)
puts response.read_body{
"jobIds": [
"<string>"
],
"project": {
"createdAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"id": "<string>",
"includeDeps": true,
"includeSkills": true,
"name": "<string>",
"setupScript": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"activeSnapshots": [
{
"id": "<string>",
"size": "nano",
"builtAt": "2023-11-07T05:31:56Z"
}
],
"agentInstructions": "<string>",
"codeRepositoryIds": [
"<string>"
],
"color": "neutral",
"defaultForSizes": [
"nano"
],
"icon": "folder",
"onboardingDefault": true,
"sizes": [
"nano"
],
"warmPoolEnabled": true
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Project display name.
1 - 120Workspace VM sizes to build for this project.
1nano, micro, medium, large, xl, xxl, ultra Short project description, or null to clear it.
300Include project dependencies when building the environment. Defaults to true on creation.
Include skills in the project environment. Defaults to true on creation.
Setup script to run while building the environment, or null to clear it.
100000Repository IDs included in the project environment. On update, replaces the repository selection.
1 - 255Instructions supplied to agents using this project, or null to clear them.
20000Project display color.
neutral, red, orange, yellow, green, teal, blue, purple, pink Project display icon.
folder, code, terminal, book, brain, bug, building, cloud, globe, idea, tools, magic, processor, sandbox, server, tasks, tactics, images, database, api, mobile, package Make this project the onboarding default for the organization.
Queue initial snapshot builds immediately when a build host is available. Defaults to false.
Recurring schedule for rebuilding the project environment.
Show child attributes
Show child attributes
Was this page helpful?
import Tembo from '@tembo-io/sdk';
const client = new Tembo();
const project = await client.projects.create({
name: 'x',
sizes: ['nano'],
});use tembo_rs::*;
let client = Tembo::from_env()?;
let response = client
.projects()
.create(ProjectsCreateBody {
description: None,
include_deps: None,
include_skills: None,
name: "x".to_string(),
setup_script: None,
code_repository_ids: None,
agent_instructions: None,
color: None,
icon: None,
onboarding_default: None,
run_now: None,
schedule: None,
sizes: vec![ProjectsCreateBodySiz::Nano],
})
.send()
.await?;
curl --request POST \
--url https://api.tembo.io/v1/projects \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"sizes": [],
"description": "<string>",
"includeDeps": true,
"includeSkills": true,
"setupScript": "<string>",
"codeRepositoryIds": [
"<string>"
],
"agentInstructions": "<string>",
"onboardingDefault": true,
"runNow": true
}
'import requests
url = "https://api.tembo.io/v1/projects"
payload = {
"name": "<string>",
"sizes": [],
"description": "<string>",
"includeDeps": True,
"includeSkills": True,
"setupScript": "<string>",
"codeRepositoryIds": ["<string>"],
"agentInstructions": "<string>",
"onboardingDefault": True,
"runNow": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
sizes: [],
description: '<string>',
includeDeps: true,
includeSkills: true,
setupScript: '<string>',
codeRepositoryIds: ['<string>'],
agentInstructions: '<string>',
onboardingDefault: true,
runNow: true
})
};
fetch('https://api.tembo.io/v1/projects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tembo.io/v1/projects",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'sizes' => [
],
'description' => '<string>',
'includeDeps' => true,
'includeSkills' => true,
'setupScript' => '<string>',
'codeRepositoryIds' => [
'<string>'
],
'agentInstructions' => '<string>',
'onboardingDefault' => true,
'runNow' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.tembo.io/v1/projects"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"sizes\": [],\n \"description\": \"<string>\",\n \"includeDeps\": true,\n \"includeSkills\": true,\n \"setupScript\": \"<string>\",\n \"codeRepositoryIds\": [\n \"<string>\"\n ],\n \"agentInstructions\": \"<string>\",\n \"onboardingDefault\": true,\n \"runNow\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.tembo.io/v1/projects")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"sizes\": [],\n \"description\": \"<string>\",\n \"includeDeps\": true,\n \"includeSkills\": true,\n \"setupScript\": \"<string>\",\n \"codeRepositoryIds\": [\n \"<string>\"\n ],\n \"agentInstructions\": \"<string>\",\n \"onboardingDefault\": true,\n \"runNow\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tembo.io/v1/projects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"sizes\": [],\n \"description\": \"<string>\",\n \"includeDeps\": true,\n \"includeSkills\": true,\n \"setupScript\": \"<string>\",\n \"codeRepositoryIds\": [\n \"<string>\"\n ],\n \"agentInstructions\": \"<string>\",\n \"onboardingDefault\": true,\n \"runNow\": true\n}"
response = http.request(request)
puts response.read_body{
"jobIds": [
"<string>"
],
"project": {
"createdAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"id": "<string>",
"includeDeps": true,
"includeSkills": true,
"name": "<string>",
"setupScript": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"activeSnapshots": [
{
"id": "<string>",
"size": "nano",
"builtAt": "2023-11-07T05:31:56Z"
}
],
"agentInstructions": "<string>",
"codeRepositoryIds": [
"<string>"
],
"color": "neutral",
"defaultForSizes": [
"nano"
],
"icon": "folder",
"onboardingDefault": true,
"sizes": [
"nano"
],
"warmPoolEnabled": true
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}