Projects /
Create or update project
Required permission
Project > Projects > Manage > Create
Request body
- {object}Create a project in a Northflank region
name
string requiredThe name of the project.min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringThe description of the project.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$color
stringThe color of the project in the Northflank App.pattern^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$region
stringThe region the project will be hosted in.networking
{object}Advanced project networking settings.allowedIngressProjects
[array]Projects from which ingress request should be permitted.- stringpattern^[A-Za-z0-9-]+$
tailscale
{object}Defines this project's Tailscale sidecar settingsenabled
booleanWhether or not to inject a Tailscale sidecar for this project's resourcesrestrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, orsecrets
{object}Relevant Tailscale secretsauthKey
stringTailscale auth key (required for enabling Tailscale)options
{object}acceptRoutes
booleanAccept advertised routes from the Tailscale networkhostAliases
{object}Defines the project host alias overrides to apply to /etc/hosts in resource containersenabled
booleanEnable support for adding /etc/hosts overrides for a containerhostEntries
[array]Entries to add to /etc/hosts- {object}
ipAddress
string requiredpattern^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$hostnames
[array] required- stringpattern^(([a-z0-9][a-z0-9\-]*)|[a-z0-9]\.)*([a-z]+|xn\-\-[a-z0-9]+)\.?$
restrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, or
- {object}Create a project in a BYOC cluster
name
string requiredThe name of the project.min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringThe description of the project.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$color
stringThe color of the project in the Northflank App.pattern^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$clusterId
stringThe BYOC cluster this project will be hosted in.min length3max length20pattern^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$networking
{object}Advanced project networking settings.allowedIngressProjects
[array]Projects from which ingress request should be permitted.- stringpattern^[A-Za-z0-9-]+$
tailscale
{object}Defines this project's Tailscale sidecar settingsenabled
booleanWhether or not to inject a Tailscale sidecar for this project's resourcesrestrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, orsecrets
{object}Relevant Tailscale secretsauthKey
stringTailscale auth key (required for enabling Tailscale)options
{object}acceptRoutes
booleanAccept advertised routes from the Tailscale networkhostAliases
{object}Defines the project host alias overrides to apply to /etc/hosts in resource containersenabled
booleanEnable support for adding /etc/hosts overrides for a containerhostEntries
[array]Entries to add to /etc/hosts- {object}
ipAddress
string requiredpattern^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$hostnames
[array] required- stringpattern^(([a-z0-9][a-z0-9\-]*)|[a-z0-9]\.)*([a-z]+|xn\-\-[a-z0-9]+)\.?$
restrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, or
Response body
- {object}Response object.
data
{object} requiredResult data.id
string requiredIdentifier for the projectname
string requiredThe name of the project.min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringThe description of the project.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$color
stringThe color of the project in the Northflank App.pattern^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$region
stringThe region the project will be hosted in.clusterId
stringThe BYOC cluster this project will be hosted in.min length3max length20pattern^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$networking
{object}Advanced project networking settings.allowedIngressProjects
[array]Projects from which ingress request should be permitted.- stringpattern^[A-Za-z0-9-]+$
tailscale
{object}Defines this project's Tailscale sidecar settingsenabled
booleanWhether or not to inject a Tailscale sidecar for this project's resourcesrestrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, orsecrets
{object}Relevant Tailscale secretsauthKey
stringTailscale auth key (required for enabling Tailscale)options
{object}acceptRoutes
booleanAccept advertised routes from the Tailscale networkhostAliases
{object}Defines the project host alias overrides to apply to /etc/hosts in resource containersenabled
booleanEnable support for adding /etc/hosts overrides for a containerhostEntries
[array]Entries to add to /etc/hosts- {object}
ipAddress
string requiredpattern^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$hostnames
[array] required- stringpattern^(([a-z0-9][a-z0-9\-]*)|[a-z0-9]\.)*([a-z]+|xn\-\-[a-z0-9]+)\.?$
restrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, orcreatedAt
stringtime of creationupdatedAt
stringtime of update
PUT /v1/projects
Example request
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
--request PUT \
--data '{"name":"New Project","description":"This is a new project.","color":"#EF233C","region":"europe-west","networking":{"tailscale":{"restrictions":{"tagMatchCondition":"or"}},"hostAliases":{"restrictions":{"tagMatchCondition":"or"}}}}' \
https://api.northflank.com/v1/projects
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
--request PUT \
--data '{"name":"New Project","description":"This is a new project.","color":"#EF233C","clusterId":"gcp-cluster-1","networking":{"tailscale":{"restrictions":{"tagMatchCondition":"or"}},"hostAliases":{"restrictions":{"tagMatchCondition":"or"}}}}' \
https://api.northflank.com/v1/projects
Example response
200 OK
JSON
{
"data": {
"id": "example-project",
"name": "New Project",
"description": "This is a new project.",
"color": "#EF233C",
"region": "europe-west",
"clusterId": "gcp-cluster-1",
"networking": {
"tailscale": {
"restrictions": {
"tagMatchCondition": "or"
}
},
"hostAliases": {
"restrictions": {
"tagMatchCondition": "or"
}
}
},
"createdAt": "2000-01-01T12:00:00.000Z",
"updatedAt": "2000-01-01T12:00:00.000Z"
}
}